问题:许可类型及如何收费?
JDK 8
Oracle 将继续提供JDK 8 免费的公共更新和自动更新,支持个人用户到 2020 年 12 月底,支持商业用户到 2019 年 1 月;换句话说如果想 Oracle 后续继续为你提供 JDK 8 的支持,那么则需要付费。Oracle目前只提供了部分平台的JDK 8的openJDK构建,多数平台只有第三方的openjdk可以用。
按照 Oracle 公布的支持路线图:
如上图绿色的部分为免费支持的openJDK版本。棕红色部分为Oracke JDK Java SE Advanced, 该系列的产品是收费的,只有在「通用计算」使用范围内是完全免费的。显然通用计算不包括商业使用。
对于最新的java 11
Oracle JDK:支持 BCL 协议,开发人员可以免费使用,但不能用于生产,生产需要商业许可,如果全额付费的话,可支持到 2026 年 9 月。
OpenJDK:支持 GPL V2+CPE协议「一般只支持到发布以后的 6 个月」,可以用于公司使用,因此,对于JDK 11 来说,应该有JDK 11.0.0,然后是两个安全补丁 11.0.1 和 11.0.2 。如果你要继续使用 Oracle 的 OpenJDK 最新构建和安全补丁,那么您将必须在发布后的一个月内迁移到 JDK 12。参见这里:oracle openjdk
GPL v2+CPE:官方Blog:java 11及以后发布许可证解释,按照解释,java 11以后,openjdk和oracle jdk本质上来说是完全一致的,只不过需要付费许可证的高级特性在openjdk中是不可用的,现在如果用了,在编译时会报错。这一点很重要,也就是说,除去高级特性的部分,openJDK和oracle JDK是可以互换的。
对于java 9和10,属于过渡版本,oracle官方也只是提供了6个月的支持期,所以可以不用考虑。
那我们怎么办?
对于需要部署jdk运行环境的企业,将不可避免的面临以下选择:
java 8:
- 要么不升级版本,只要没有关键的安全问题,就可以保持版本不变,不跟进升级。这应该是很多现有老项目的唯一选择。
- 要么选择第三方发布的可以免费使用的openJDK版本。需要付出迁移成本。
- 升级到新版本JDK,比较适合新的开发项目。
- 付费使用oracle JDK更新,属于不差钱的选择。
java 11
- 使用Oracle的openJDK,需要及时跟进版本更新,可能需要比较高的开发迁移能力。
- 使用第三方发布的JDK,取决于三方jdk的稳定性及可用度。
- 付费使用Oracle JDK。
对于纯粹的产品开发商,大多数的java产品发布时并不需要打包jdk在内,因此对于产品开发时的策略,并不太需要考虑许可协议的限制。只需要确保最终产品部署时不要依赖需要付费的高级特性或者某个特定版本,只使用openjdk兼容的部分即可。最终部署时的jdk,则完全取决于使用产品的客户的具体策略。对于大多数客户来说,免费够用应该是最佳选择。
可用的三方OpenJDK
- AdoptOpenJDK,官网地址:adoptopenjdk.net,它同样支持 GPL 协议且免费。
- Red Hat OpenJDK,Red Hat 通过 Red Hat Enterprise Linux「RHEL」提供 OpenJDK 的构建,这是一个付费的商业产品。Red Hat 构建更好地集成到操作系统中,因此它不是纯粹的 OpenJDK 构建。
- IBM, 为 Java 8 及更早版本提供并支持 JDK。他们还使用 OpenJ9 为 AdoptOpenJDK 构建提供商业付费支持。
- Azul Zulu,官网地址:zulu.org,它的核心部分就是原汁原味的 OpenJDK
- SAP, 官网地址:sap.github.io/SapMachine,SAP 根据 GPL+CE 协议为 Jdk 10 及更高版本提供 JDK。
参考:
https://www.oracle.com/technetwork/java/javase/eol-135779.html
https://yq.aliyun.com/articles/645952