转载

Java 11 将至,不妨了解一下 Oracle JDK 之外的版本

Java 11 将至,不妨了解一下 Oracle JDK 之外的版本

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

我们曾报道过,甲骨文已经改进了Java SE(标准版)的商业支持计划,由之前企业一次性支付永久许可费用加年度支持费用的模式,改为新的订阅模式( Java SE Subscription ),当然个人使用和非商业使用可继续享受免费支持,无需订阅。在本文中,我们不妨了解一下 Oracle JDK 之外的 JDK,以及围绕 OpenJDK 构建的生态系统所拥有的深度。本文将为大家介绍一些主流的 OpenJDK 变种版本。

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 兼容性测试 的 AdoptOpenJDK 不是"Java SE",而是兼容 Java SE 的 JDK或兼容 Java SE 规范的 JDK。还要注意,认证程序目前是基于信任基础的 —— 结果不会提交给 JCP/Oracle 用于检查,也不会被公开。 详细说明可点此查看 。

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

Java 11 将至,不妨了解一下 Oracle JDK 之外的版本

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

Oracle JDK

从 Java 11 开始,这是一个提供付费支持的品牌商业版本。当然个人使用和非商业使用仍可继续享受免费支持(Oracle JDK 仍将为开发、测试、原型或展示目的的使用提供免费支持),不需要商业支持或企业管理工具的人可以选择使用 Oracle 的 OpenJDK 构建。Oracle 计划在 2026 年后提供全额付费的服务支持( 详情 )。要注意的是,与过去不同,Oracle JDK 并不比 OpenJDK “更好”(前提是两者都处于相同的安全补丁级别)。

OpenJDK builds by Oracle

这些是免费的、完全无品牌的 OpenJDK 版本,基于 GPL 开源协议(+ Classpath Extension ),公司可安全且放心使用。这些版本仅在发布后的六个月内可以使用。要继续使用由 Oracle 的 OpenJDK 构建版本和安全补丁,需要在发布新版本后的一个月内升级至新版本。

AdoptOpenJDK builds

这些版本也是免费的、完全无品牌的 OpenJDK 版本,基于 GPL 开源协议(+ Classpath Extension ),以免费软件的形式提供社区版的 OpenJDK 二进制包,公司也可安全且放心使用。与由 Oracle 的 OpenJDK 构建版本不同,这些版本会提供更长的支持,像 Java 11 一样,至少提供 4 年的免费 长期支持 (LTS)计划。AdoptOpenJDK 是一个由 社区驱动 的项目,如果其他群组在 OpenJDK 的源码仓库中创建和发布了安全修复程序,它们也会提供构建。 IBM 和 Red Hat 也曾表示他们打算提供这些安全补丁。

AdoptOpenJDK OpenJ9 builds

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

Red Hat OpenJDK builds

Red Hat 通过 Red Hat Enterprise Linux (RHEL) 提供了 OpenJDK 的变种构建版本,这也是提供付费支持的商业版本( 详情 )。他们在为 OpenJDK 提供安全补丁方面做得非常好,而且 Red Hat 还为 Java 6 和 7 提供安全更新。Red Hat 构建的版本能 更好地集成到 操作系统中,所以它称不上是纯粹的 OpenJDK 版本(尽管你也不会注意到差异)。

Other Linux OpenJDK builds

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

Azul Zulu

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

IBM

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

SAP

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

总结

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

编译自: https://blog.joda.org/2018/09/time-to-look-beyond-oracles-jdk.html

作者: Stephen Colebourne

原文  https://www.oschina.net/news/99836/time-to-look-beyond-oracles-jdk
正文到此结束
Loading...