0

随着 Oracle 对 JDK 许可协议的更改,公司正在转向 OpenJDK。

我的问题是 - OpenJDK 的哪个发行版会是更好的选择?我正在评估 Oracle Open JDK 和 AdoptOpenJDK,它们似乎都是一个不错的选择。但是在支持方面,Oracle OpenJDK 遵循 6 个月的发布节奏,没有任何长期支持,但是 AdoptOpenJDK 具有适用于 Java 版本 8 的 LTS和 11. 因此,如果我切换到 Oracle OpenJDK,那么我将不得不按照新的发布节奏来处理带有安全补丁的数据(我不太关心新功能),但是如果我切换到 AdoptOpenJDK,那么我可以使用他们的 LTS 版本 (11) 之一,并期望新的安全补丁将应用于此版本。我主要担心的是,在切换到 OpenJDK 发行版后,我想了解最新的 Java 安全更新。

参考 https://www.reddit.com/r/java/comments/9hd97k/openjdk_vs_adoptopenjdk/

https://www.baeldung.com/oracle-jdk-vs-openjdk

4

1 回答 1

2

tl;博士

如果您想要最快速地发布关键安全补丁,请从 Azul 系统、BellSoft、Oracle、Pivo​​tal 或 Red Hat (IBM) 等供应商处购买支持计划。

为了更好地了解 Java 发布世界的当前状态,您真的应该研究文档Java Is Still Free由独立 Java 领导者和专家组成的Java Champions社区撰写。

细节

随着 Oracle 对 JDK 许可协议的更改,公司正在转向 OpenJDK。

在这里要清楚一点,您可能指的是 Oracle 将条款更改为他们的Oracle JDK产品,以便在生产中使用时需要付费。该产品仍可免费用于开发、测试等。

我的问题是 - OpenJDK 的哪个发行版会是更好的选择?

回答这取决于对您很重要的标准。但是除了需要快速安全更新之外,您没有提到任何标准(更多内容见下文)。

我正在评估 Oracle Open JDK 和 AdoptOpenJDK,它们似乎都是一个不错的选择。

明确一点:OpenJDK项目仅发布源代码,不发布构建或安装程序。许多供应商提供基于 OpenJDK 源代码的构建/安装程序。

Oracle 就是这样的供应商之一,提供三种产品:

  • Oracle JDK — 他们的品牌产品需要为生产使用付费,并提供付费支持。
  • jdk.java.net — OpenJDK 的构建,不收取任何费用且不提供任何支持。
  • GraalVM——一种特殊的产品,基于 HotSpot/OpenJDK 的 Java VM 和 JDK,用 Java 实现,支持额外的编程语言和执行模式,例如提前编译 Java 应用程序以实现快速启动和低内存占用。

这三个都是基于 OpenJDK 源代码的。第一个和最后一个提供付费支持计划。

Oracle 已公开宣布他们打算将Oracle JDK保持在与 OpenJDK 相同的功能上。作为该承诺的一部分,Oracle 赞助了 OpenJDK 项目。同时,Oracle 保留向其付费客户快速发布任何关键安全补丁的权利。他们最终会将此类补丁提交给 OpenJDK 项目。但是那些提交的补丁在发布之前可能需要更多的时间来通过 OpenJDK 流程。

AdoptOpenJDK是另一家提供 OpenJDK 源代码库的构建和安装程序的供应商。因此,同样,任何关键的安全补丁都可能不会像其他供应商向付费客户提供的补丁一样快地免费提供给公众。

这是我为帮助您选择 Java 实现供应商而制作的流程图。您有多种选择,其中一些带有支持选项。

指导您为 Java 11 实施选择供应商的流程图

然而,在支持方面,Oracle OpenJDK 遵循 6 个月的发布节奏,没有任何长期支持,但 AdoptOpenJDK 具有适用于 Java 版本 8 和 11 的 LTS。

我相信你在这里是不正确的。Oracle 确实为 Java 8 和 Java 11 维护其Oracle JDK产品的LTS 更新,向公众维护了几年,并为付费客户维护了更多年。

Java 社区在合作方面比您可能理解的要合作得多。我所知道的每个 Java 实现都很大程度上基于 OpenJDK 项目。OpenJDK 项目得到了 Oracle、Apple、IBM、SAP 和可能的其他公司的支持。亚马逊、微软和其他公司做出了贡献。快速发布培训和长期支持 (LTS)策略已被整个 Java 社区所接受。

Oracle 已将LTS 版本 8 和 11 的管理权移交给 Red Hat,但 Oracle 继续支持这两个版本。有关详细信息,请参阅Oracle Java SE 支持路线图

因此,如果我切换到 Oracle OpenJDK,那么我将不得不按照新的发布节奏来处理带有安全补丁的数据

我所知道的每个 Java 实现都遵循相同的发布节奏。

(我不太关心新功能),

那么你当然应该坚持只使用 LTS 版本。目前这将是 Java 8 和 Java 11。

如果我切换到 AdoptOpenJDK,那么我可以使用他们的 LTS 版本 (11) 之一,并期望新的安全补丁将应用于此版本。

您可以期待任何提供 Java 实现的供应商提供的安全补丁。问题是这些补丁将以多快的速度到达您手中。

我主要担心的是,我想了解最新的 Java 安全更新

然后我建议您从可靠的供应商处购买付费支持计划。你有几个选择。请参阅上图中蓝色桶的左侧。

如果您认为严重安全漏洞特别影响您的可能性非常低,或者您可能能够缓解此类漏洞,那么支持计划的成本对您来说可能不值得。在这种情况下,您将等待更新的免费版本。您可能会比付费供应商等待更长的时间。

切换到 OpenJDK 发行版后。

我所知道的今天分发的每个 Java 实现都是基于 OpenJDK 的。

这是另一个图表,列出了为您的 Java 实现选择特定供应商的可能动机。

选择 Java 供应商的动机

于 2020-03-15T05:35:34.180 回答