640?wx_fmt=gif

640?wx_fmt=other

Java 11 计划于本月,即 9 月 25 日发布。与 Java 10 不同,Java 11 不仅提供了长期支持,还将作为 Java 平台的参考实现。新的长期支持版本每三年发布一次,根据后续的发布计划,Java 17 将于 2021 年发布。

之前,甲骨文已经改进了Java SE(标准版)的商业支持计划,由之前企业一次性支付永久许可费用加年度支持费用的模式,改为新的订阅模式(Java SE Subscription),当然个人使用和非商业使用可继续享受免费支持,无需订阅。

在本文中,我们不妨了解一下 Oracle JDK 之外的 JDK,以及围绕 OpenJDK 构建的生态系统所拥有的深度。本文将为大家介绍一些主流的 OpenJDK 变种版本。


640?wx_fmt=png

OpenJDK builds


实际上,JDK 只有一组源代码。源代码使用 Mercurial(分布式版本控制系统)托管在 OpenJDK。任何人都可以获取该源码,并通过源码构建一个变种版本发布到网络上。但是需要一个独有的认证程序(Certification Process)来确保构建的变种版本是有效的。

这个认证程序是由 JCP(Java Community Process)组织审核的,后者会提供技术兼容性工具包(TCK,有时也称为 JCK)。如果一个组织构建了一个 OpenJDK 的变种版本,并通过了 TCK 的兼容性测试,则可将构建的这个变种版本称为“Java SE compatible”(兼容 Java SE 的 JDK)。

要注意的是,如果提供者没有从 Oracle 获得商业许可,不能将该构建版本称为“Java SE”。

例如,通过 TCK 兼容性测试的 Adopt Open JDK 不是“Java SE”,而是兼容 Java SE 的 JDK或兼容 Java SE 规范的 JDK。

还要注意,认证程序目前是基于信任基础的 —— 结果不会提交给 JCP/Oracle 用于检查,也不会被公开。详细说明可查看:

  • https://blog.joda.org/2018/09/time-to-look-beyond-oracles-jdk.html?showComment=1536303755275#c5934330550793525320

总的来说,OpenJDK + 变种版本的提供者,将一个源码库转换为许多不同的变种构建版本。

640?wx_fmt=png

在将 OpenJDK 源码转换为变种版本的过程中,提供者可能会添加一些额外的标记或实用程序,但注意不要影响后面的认证程序。例如,提供者无法为 API 添加一个新的公共方法,或一项新的语言特性。


640?wx_fmt=png

Oracle JDK


从 Java 11 开始,这是一个提供付费支持的品牌商业版本。当然个人使用和非商业使用仍可继续享受免费支持(Oracle JDK 仍将为开发、测试、原型或展示目的的使用提供免费支持),不需要商业支持或企业管理工具的人可以选择使用 Oracle 的 OpenJDK 构建。Oracle 计划在 2026 年后提供全额付费的服务支持,详情:

  • http://www.oracle.com/technetwork/java/javase/eol-135779.html

要注意的是,与过去不同,Oracle JDK 并不比 OpenJDK “更好”(前提是两者都处于相同的安全补丁级别)。


640?wx_fmt=png

OpenJDK builds by Oracle


这些是免费的、完全无品牌的 OpenJDK 版本,基于 GPL 开源协议(+Classpath Extension),公司可安全且放心使用。这些版本仅在发布后的六个月内可以使用。

要继续使用由 Oracle 的 OpenJDK 构建版本和安全补丁,需要在发布新版本后的一个月内升级至新版本。


640?wx_fmt=png

AdoptOpenJDK builds


这些版本也是免费的、完全无品牌的 OpenJDK 版本,基于 GPL 开源协议(+Classpath Extension),以免费软件的形式提供社区版的 OpenJDK 二进制包,公司也可安全且放心使用。

与由 Oracle 的 OpenJDK 构建版本不同,这些版本会提供更长的支持,像 Java 11 一样,至少提供 4 年的免费长期支持(LTS)计划。

Adopt Open JDK 是一个由社区驱动的项目,如果其他群组在 OpenJDK 的源码仓库中创建和发布了安全修复程序,它们也会提供构建。 IBM 和 Red Hat 也曾表示他们打算提供这些安全补丁。


640?wx_fmt=png

AdoptOpenJDK OpenJ9 builds


除了标准的 OpenJDK 构建外,Adopt Open JDK 还提供了使用 OpenJ9 而非 HotSpot 的版本。OpenJ9 最初是由 IBM 实现的 JVM,现在已开源并交由 Eclipse 运作。


640?wx_fmt=png

Red Hat OpenJDK builds


Red Hat 通过 Red Hat Enterprise Linux (RHEL) 提供了 OpenJDK 的变种构建版本,这也是提供付费支持的商业版本,详情:

  • https://access.redhat.com/articles/1299013

他们在为 OpenJDK 提供安全补丁方面做得非常好,而且 Red Hat 还为 Java 6 和 7 提供安全更新。Red Hat 构建的版本能更好地集成到操作系统中,所以它称不上是纯粹的 OpenJDK 版本(尽管你也不会注意到差异)。


640?wx_fmt=png

Other Linux OpenJDK builds


不同的 Linux 发行版拥有不同的方式来访问 OpenJDK。这里是一些常见的发行版:Debian、Fedora、 Arch、 Ubuntu。


640?wx_fmt=png

Azul Zulu


Zulu 是 OpenJDK 的免费版本,但同时提供商业付费支持。当然不购买收费的技术支持的话,Azul 也有为 Zulu 提供免费的社区技术支持。Azul 有一个广泛的计划以支持 Zulu 商业化,包括支持 Java 9、13 和 15 ,这点与其他的提供者有不同之处,详情:

  • https://www.azul.com/products/azul_support_roadmap/


640?wx_fmt=png

IBM


IBM 为 Java 8 及更早版本提供并支持 JDK。他们还使用 OpenJ9 为 Adopt Open JDK 构建提供商业付费支持。


640?wx_fmt=png

SAP


SAP 使用 GPL + CE 许可证为 Java 10 及更高版本提供 JDK。他们还有一个商业的闭源 JVM。不过没有找到任何有关支持生命周期的信息。


640?wx_fmt=png

总结


现在有很多不同的 OpenJDK 变种版本,它们都基于原始的上游代码仓库。但每个构建版本都提供了独有的选择 —— 免费或商业,品牌或非品牌。可以选择当然很好,但如果你追求的是“标准”,那么目前我最好的建议是使用 Oracle 的 OpenJDK 构建版本、AdoptOpenJDK 构建版本或操作系统(Linux)中内置的版本。

声明:本文经授权转自开源中国,OSC-局长

640?wx_fmt=gif

640?wx_fmt=gif

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐