Oracle撒手下的Java和OpenJDK更新项目该怎么走?

Posted InfoQ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle撒手下的Java和OpenJDK更新项目该怎么走?相关的知识,希望对你有一定的参考价值。

作者 | Andrew Haley
译者 | 薛命灯
编辑 | 小智

在 Java 9 之前,一个版本被宣布为首选版本之前,存在一个“培育”(bedded-in)新 GA 版本的重叠期。在此期间,上一个版本将会继续进行免费更新。为确保新旧版本间的干净切换,即便旧版本已不再是首选版本,通常也会继续维护 12 个月以上。但是随着 Java 版本发布更改为遵循严格的时间表后,事实上宣告了传统的免费支持期将寿终正寝。

Oracle 对 Java 8 的官方支持时间持续到 2020 年 12 月,之后将不再为个人桌面用户提供 Oracle JDK 8 的修复更新;在 2019 年 1 月之后,不再提供免费的商业版本更新,届时想要继续获得 Oracle 的商业支持和维护,需付费订阅。不过开发者还可以选择由第三方服务商提供的 Java SE 实现,比如 Azul、Eclipse、IBM、Red Hat、Oracle、SAP 等等。

通常来说,在实践中,只有直接依赖全新特性的团队,才会立刻迁移到新版本。其它团队即便非常热衷于升级,一般也会等待至少数个小更新发布之后。现代软件平台的复杂性,使得.0.0 版本在实现中完全可能存在一些小缺陷。

很多团队并不想冒险去做即刻更新。原有的宽松版本发布方式,很好地迎合了应用所有者应对风险的各种偏好。如果一个新版本中包含了用户望眼欲穿的新特性,例如 Java 8 的 lambda 特性,那么新版本的采纳曲线就会表现为相对陡峭。而对于那些“锦上添花”式的新版本,采纳曲线则相对平缓。

但就目前情况看,Oracle 将不会再提供任何用于“培育”并继续支持新版本 Java 的宽限期。另一方面看,新版本一旦发布就会成为默认版本。生产企业如果希望继续得到 Oracle 的免费支持,那么需要立刻切换到新版本上。

然而现实情况是,世界上绝大多数 Java 用户使用的都是非商业购买的 Java 版本,他们并未与 Oracle 或任何其它供应商签署正式的支持合同。Oracle 的这一战略可以解释为尝试扭转这种状况,迫使企业客户转向签订商业支持合同。

在这种情况下,红帽 Java 平台团队的首席工程师 Andrew Haley 近日表示,红帽计划在 2023 年之前继续提供对 OpenJDK 8 的支持:

在我看来,这算比较正常的。几年前,OpenJDK 6 更新(jdk6u)项目被 Oracle 放弃,我接管了它,然后 OpenJDK 7 也发生了同样的事情。最后,Azul 的 Andrew Brygin 接管了 OpenJDK 6。由来自多个组织成员组成的 OpenJDK Vulnerability Group 就重要的安全问题进行协作。在广大的 OpenJDK 社区和我的团队(Red Hat)的帮助下,我们定期为关键 bug 和安全漏洞提供更新。我觉得这样的过程同样适用于 OpenJDK 8 和下一个长期支持版本,即 OpenJDK 11。

如果可以得到社区的支持,我很高兴能够领导 JDK 8 更新项目和 JDK 11 更新项目。

在 Red Hat,我们打算为客户提供 OpenJDK 8 支持,直到 2023 年。我们的政策是“上游优先”,这意味着 OpenJDK 8 将继续为关键 bug 和安全漏洞提供更新,而 JDK 11 也差不多。

除了目前正在为 OpenJDK 更新提供帮助的人员和组织之外,我还收到了来自其他组织的帮助,特别是 Amazon Web Services。这是个好消息,但可能需要一段时间才能让每个人都步入正轨。

还有一个问题是将 OpenJDK 后续版本的重要功能反向移植到较低版本的 JDK 中(如 JDK 8)。虽然拥有新功能(特别是与性能相关的)无疑是件好事,但我们的首要任务应该是不破坏任何东西:我们必须记住,只有当我们十分确定不存在不必要风险的情况下才能进行反向移植。我们还必须考虑到维护负担问题。因此,对于每个提案,我们要抓住它们的优点,而且我认为我们不能对这些事情采取一刀切的策略。

现在的一个问题是人们将如何免费下载已编译的 OpenJDK 二进制文件,而不是只能下载到 OpenJDK 源代码。我相信 OpenJDK 更新项目本身应该承诺在发布时提供二进制文件。(如果你使用了某种 Linux 发行版,我强烈建议你使用系统及其软件包管理器提供的 OpenJDK:这样可以获得更好的集成,并且更容易进行更新。人们可能会担心他们选择的发行版不会正确构建、测试和打包 OpenJDK。但话说回来,如果你不相信它构建的软件包,那就根本不应该使用这个发行版。)

所以,当我们谈论 OpenJDK 二进制文件时,其实主要指的是 Windows 和 macOS。如何以及在何处构建二进制文件应该由 JDK 更新项目来决定。我的团队(Red Hat)很乐意定期提供 Windows 和 Linux 二进制文件的下载,但可能需要其他人来帮我们在 macOS 上进行构建和测试。我相信我们可以完成这项工作,而且可以继续得到 Java 用户的信任。

在没有 Oracle 工程师支持的情况下保持 Java 更新对 Java 社区来说是一个挑战,但我相信这是我们应该去热情拥抱的。对社区来说,这是一个展示我们做事能力的千载难逢的好机会。真正开放和透明的 OpenJDK 更新项目将激励更广泛的用户参与,并给所有 Java 用户带来好处。

英文原文:

https://developers.redhat.com/blog/2018/09/24/the-future-of-java-and-openjdk-updates-without-oracle-support/

今日荐文

Java 11 正式发布,新特性解读




最后,推荐极客时间《Java 核心技术 36 讲》专栏,作者为前 Oracle 首席工程师杨晓峰,目前已有 2.5w+订阅!专栏共五大模块,重点围绕“术”与“道”,为你讲解 Java 核心知识点,让你搞定 Java 面试,顺利提升 Java 技能。

长按下图二维码,微信支付,立即订阅。


「阅读原文」,立即试读或订阅

以上是关于Oracle撒手下的Java和OpenJDK更新项目该怎么走?的主要内容,如果未能解决你的问题,请参考以下文章

红帽取代 Oracle,接管 OpenJDK 8 和 OpenJDK 11 | 极客头条

openjdk到底是啥东西啊?有啥作用啊?是否说在linux下编写java程序必须安装openjdk啊?谢谢回答。

CentOS 7卸载自带的OpenJDK并安装Oracle Java JDK 8

面试官 | Oracle JDK 和 OpenJDK 有什么区别?

具有休眠依赖项的 Jar 文件无法使用 jdk 9+(openjdk 12)执行

Ubuntu 16.04安装Java JDK