根据甲骨文博客Oracle JDK Releases for Java 11 and Later
从 Java 11 开始,Oracle 将在开源 GNU General Public License v2, with the Classpath Exception (GPLv2+CPE) 下提供 JDK 版本,并为那些将 Oracle JDK 用作 Oracle 产品或服务的一部分或不希望使用开源的用户提供商业许可软件。这种使用开源许可证和商业许可证的组合取代了历史上结合了免费和付费商业条款的“BCL”许可证。
将为每个许可证提供不同的版本,但除了一些外观和包装差异外,这些版本在功能上是相同的,如下所述。
从 BCL 到 GPL
十多年来,Binary Code License for Oracle Java SE technologies (“BCL”) 一直是 Oracle Java SE 技术的主要许可。 BCL 允许在某些条件下免费使用。为了简化后续工作,Oracle 从 Java 9 开始使用providing open source licensed OpenJDK builds,使用与 Linux 平台相同的许可模型。如果您习惯于免费获取 Oracle Java SE 二进制文件,您可以继续使用 Oracle 的 OpenJDK 构建版本,网址为 jdk.java.net。如果您习惯于将 Oracle Java SE 二进制文件作为商业产品或服务的一部分从 Oracle 获取,那么您可以继续通过My Oracle Support (MOS) 和其他位置获取 Oracle JDK 版本。
功能相同且可互换...
Oracle 的 BCL 许可 JDK 历史上包含 OpenJDK 构建中不可用的“商业功能”。 As promised 然而,在过去一年中,Oracle 为 OpenJDK 社区贡献了这些功能,包括:
因此,从 Java 11 开始,Oracle JDK 构建和 OpenJDK builds 将基本相同。
...但在外观和包装方面存在一些差异
确实仍然存在少量差异,有些是有意的和装饰性的,有些只是因为需要更多时间与 OpenJDK 贡献者讨论。
- Oracle JDK 11 在使用 -XX:+UnlockCommercialFeatures 选项时会发出警告,而在 OpenJDK 构建中,此选项会导致错误。这个选项从来都不是 OpenJDK 的一部分,现在添加它没有意义,因为 OpenJDK 中没有商业功能。保留此差异是为了使 Oracle JDK 10 及更早版本的用户更容易迁移到 Oracle JDK 11 及更高版本。
- Oracle JDK 11 可以配置为向“Advanced Management Console”工具提供使用日志数据,这是一个单独的商业 Oracle 产品。我们将与其他 OpenJDK 贡献者合作,讨论这些使用数据在未来版本的 OpenJDK 中如何有用(如果有的话)。这种差异主要是为了在做出此类决定之前为 Oracle 客户提供一致的体验。
- javac --release 命令对 Java 9 和 Java 10 目标的行为不同,因为在这些版本中,Oracle JDK 包含一些不属于相应 OpenJDK 版本的附加模块:
- javafx.base
- javafx.controls
- javafx.fxml
- javafx.graphics
- javafx.media
- javafx.web
- java.jnlp
- jdk.jfr
- jdk.management.cmm
- jdk.management.jfr
- jdk.management.resource
- jdk.packager.services
- jdk.snmp
这种差异仍然存在,以便为特定类型的旧式使用提供一致的体验。这些模块要么现在作为OpenJFX 的一部分单独提供,要么现在在 OpenJDK 和 Oracle JDK 中,因为它们是 Oracle 为 OpenJDK 贡献的商业功能(例如,Flight Recorder),或者从 Oracle JDK 11 中删除(例如, JNLP)。
- java --version 和 java -fullversion 命令的输出将区分 Oracle JDK 构建和 OpenJDK 构建,以便支持团队可以诊断任何可能存在的问题。具体来说,使用 Oracle JDK 11 构建运行 java --version 会导致:
java 11 2018-09-25
Java(TM) SE 运行时环境 18.9(内部版本 11+28)
Java HotSpot(TM) 64 位服务器 VM 18.9(内部版本 11+28,混合模式)
对于 OpenJDK 11 构建:
openjdk 版本“11” 2018-09-25
OpenJDK 运行时环境 18.9(内部版本 11+28)
OpenJDK 64-Bit Server VM 18.9(build 11+28,混合模式)
- Oracle JDK 一直要求第三方加密提供程序由已知证书签名。 OpenJDK 中的加密框架具有开放的加密接口,这意味着它不限制可以使用哪些提供程序。 Oracle JDK 11 将继续require 有效签名,Oracle OpenJDK 构建将继续允许使用有效签名或未签名的第三方加密提供程序。
- Oracle JDK 11 将继续包括安装程序、品牌和 JRE 打包,以提供与旧桌面使用一致的体验。 Oracle OpenJDK 构建目前以 zip 和 tar.gz 文件的形式提供,同时正在考虑替代分发格式。