在去年的 Java One 上,Mark Cavage 当时宣布 Oracle 将逐步开源 Oracle JDK
的专有功能澳门葡萄京官方网站,(商业特性)。Oracle
Java 平台产品管理高级总监 Donald Smith
曾在一篇博客文章中写道,他们的目的是让
OpenJDK 版本和 Oracle JDK 二进制文件之间没有技术差异。

原标题:Java 11 将至,除了 Oracle JDK 还有这些版本!

澳门葡萄京官方网站 1

但关于 OpenJDK 和 Oracle JDK
以及其他服务商提供的变种版本,各自的许可证是什么,又都提供哪些服务和支持,让许多
Java 开发者理不清头绪,容易混淆。Oracle 7 月份启用新的 Java SE
订阅模式的消息一出,更是让许多开发者认为是不是代表
Java 以后要收费?

原文:

style=”font-size: 16px;”>

作者: style=”font-size: 16px;”>Stephen Colebourne

编译:OSC-局长

译文:开源中国(oschina2013)

如需转载请在文中注明上述信息

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

为解答 Java 社区的疑惑,超过30位 Java
社区领袖和专家共同创建了一个 Google
文档,里面详细描述了各版本之间的区别,并对一些常见问题进行了答疑。文档分为“短版本”和“长版本”,建议所有
Java 开发者研读。

澳门葡萄京官方网站 2

我们曾报道过,甲骨文已经改进了Java
SE(标准版)的商业支持计划,由之前企业一次性支付永久许可费用加年度支持费用的模式,改为新的订阅模式(

澳门葡萄京官方网站 3

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

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

文档中强调,开发者仍然可以免费获得 Oracle JDK、Oracle 的 OpenJDK
,以及其他服务商提供的 OpenJDK:

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

Oracle JDK

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

OpenJDK 社区创建并维护 (GPLv2+CE 许可)
Java SE 规范的开源参考实现(RI),受 JCP(Java Community
Process)管理,并根据 JSR(Java Specification
Request)发布未来每个版本。

有不同服务商提供不同的 Java SE 实现(如 Azul、Eclipse、IBM、Red
Hat、Oracle、SAP 和其他公司),其中最通用的是 Oracle JDK 。

OpenJDK builds

OpenJDK builds by Oracle

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

虽然 Java 11 LTS 已发布,但更多的开发者还停留在上一个 LTS 版本 —— Java 8
。关于开发者最为关注的 Java 8 的许可问题,文档给出了解答:

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

AdoptOpenJDK builds

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

Oracle 将在2020年12月前为个人桌面用户继续提供 Oracle JDK 8
的公共更新。若是商业用途,则在2019年1月之后不会再有免费的商业版本更新。但是,自
Java SE 9 以后,Oracle 还提供了 OpenJDK
版本,可免费用于商业用途,并且还有其他服务商提供的免费 OpenJDK
版本可供选择,如 AdoptOpenJDK、Azul、IBM、Red Hat、Linux distros 等。

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

AdoptOpenJDK OpenJ9 builds

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

也就是说,如果届时你想继续免费使用 Java
8,你可以:

要注意的是,如果提供者没有从 Oracle
获得商业许可,不能将该构建版本称为”Java SE”。例如,通过 TCK 兼容性测试的
AdoptOpenJDK 不是”Java SE”,而是兼容 Java SE 的 JDK或兼容 Java SE 规范的
JDK。还要注意,认证程序目前是基于信任基础的 —— 结果不会提交给 JCP/Oracle
用于检查,也不会被公开。详细说明可查看:

Red Hat OpenJDK builds

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

  • 不再更新,继续无限期地使用 Oracle JDK 8 ;

  • 使用来自其他服务商的免费 Java SE 8 / OpenJDK 8 二进制分发版。

Other Linux OpenJDK builds

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

上面也有提到,由于 Oracle 在7月份改变了 Java SE 的商业支持模式,所以从
Java 11 开始,支持方式有所不同:

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

Azul Zulu

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

Oracle OpenJDK – 使用 GPLv2 + CE 许可,可用于商业用途;
Oracle JDK – 使用付费商业许可(个人和非商业使用免费)。

澳门葡萄京官方网站 4

IBM

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

最后附上各版本支持路线图:

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

SAP

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

澳门葡萄京官方网站 5

Oracle JDK

总结

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

编译自:
作者:Stephen
Colebourne

(文/开源中国)    

澳门葡萄京官方网站 6

从 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)中内置的版本。返回搜狐,查看更多

责任编辑: