昨天,在Habré上发表了“请勿使用Oracle JDK 11陷入陷阱”一文的翻译 ,然后讨论了“用Java付费”,但并非一切乍看上去都令人恐惧-以下是Oracle博客中该出版物的翻译,其中包括许可和发行的官方立场JDK版本11+。总结
从Java 11开始,Oracle将根据
GNU通用公共许可证v2,具有类路径异常(GPLv2 + CPE)和商业许可证的形式发布JDK,以供那些将Oracle JDK用作Oracle产品或服务的一部分或不想使用开源的人使用软件。 操作系统许可和商业许可的这种结合取代了旧的
BCL (Oracle二进制代码许可),后者由商业和免费使用条款组成。
将为每个许可证提供单独的程序集,但是这些程序集在
功能上将
相同 ,除了一些外观上的区别以及二进制文件的打包方式有所不同之外,下面将详细介绍。
从BCL到GPL
甲骨文Java SE的BCL许可证已被用来许可Oracle Java SE技术十多年了。 在某些条件下,BCL允许不收取使用费而使用。 为了简化进一步的工作,从Java 9开始,Oracle开始在Linux平台使用的OS许可下提供OpenJDK程序集
(Linux内核以GNU GPLv2许可分发) 。 如果您习惯于免费使用Oracle Java SE二进制文件,则可以继续使用jdk.java.net上提供的OpenJDK二进制文件继续这样做。 如果您习惯于将Oracle Java SE二进制文件用作Oracle商业产品或服务的一部分,则可以继续通过
My Oracle Support (MOS)或其他方式接收Oracle JDK版本。
功能相同且可互换...
BCL许可的Oracle JDK历史上包含OpenJDK构建中不可用的“商业功能”。 按照承诺,在过去的一年中,Oracle已将这些功能添加到OpenJDK中,包括:
因此,从Java 11及更高版本开始,Oracle JDK和OpenJDK程序集将基本相同。
...但是在化妆品和包装上有所不同
仍然存在少量差异,其中一些是有意的和修饰性的,而有些则需要更多时间与OpenJDK贡献者进行讨论。
- 使用
-XX:+UnlockCommercialFeatures
,Oracle JDK 11将显示警告,而在OpenJDK中,此选项将导致错误。 该选项从未成为OpenJDK的一部分,因此添加它没有任何意义,因为OpenJDK中没有任何商业功能。 这种差异仍然使Oralce JDK 10或更早版本的用户更容易升级到Oracle JDK 11或更高版本。 - 可以将Oracle JDK 11配置为向高级管理控制台 (一种单独的商业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或从Oracle JDK 11中删除的商业功能(例如,JNLP)。- Oracle JDK和OpenJDK构建之间的
java --version
和java -fullversion
的输出将有所不同,因此支持团队可以诊断出现的任何问题。 特别是,使用Oracle JDK 11构建运行java --version
将输出:
Java 11 2018年9月25日
Java(TM)SE Runtime Environment 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位服务器VM 18.9(内部版本11 + 28,混合模式)
- Oracle JDK一直要求第三方加密提供者使用众所周知的证书进行签名。 OpenJDK中的密码学具有开放的接口,这意味着对使用的加密提供程序没有任何限制。 Oracle JDK 11将继续要求有效的签名,并且OpenJDK程序集将继续允许使用具有有效签名和不具有签名的第三方加密提供程序。
- Oracle JDK 11将继续包括安装程序,品牌和JRE,以与旧版桌面应用程序兼容。 OpenJDK程序集现在可作为zip和tar.gz文件使用,同时正在考虑其他分发格式。
我们怎么称呼它们?
理想情况下,根据您的情况,根据GPL或商业许可,我们可以将所有Oracle JDK程序集称为“ Oracle JDK”。 但是,由于历史原因,尽管存在细微的差异,但我们将分别引用它们:OpenJDK和Oracle JDK。