OpenJDK 和 Adoptium/AdoptOpenJDK 之间的区别

Difference between OpenJDK and Adoptium/AdoptOpenJDK

由于最近 Oracle Java SE Support Roadmap policy update (end of $free release updates from Oracle after March 2019 in particular), I've been searching for alternatives to Oracle Java. I've found that OpenJDK is an open-source alternative. And I've found AdoptOpenJDK, now known 作为 Adoptium,它是一个 预构建的二进制文件 。不解。

OpenJDK 和 Adoptium/AdoptOpenJDK 有什么区别?

简而言之:

  • OpenJDK有多重含义,可以参考:
    • Java 平台标准版(Java SE)的免费开源实施
    • open source repository — Java 源代码又名 OpenJDK 项目
    • 预建的 OpenJDK 由 Oracle 维护的二进制文件
    • 由 OpenJDK 社区维护的预构建 OpenJDK 二进制文件
  • AdoptOpenJDK — 社区维护的预构建 OpenJDK 二进制文件 (open source licensed)

解释:

Prebuilt OpenJDK(或发行版)— 二进制文件,从 http://hg.openjdk.java.net/ 构建,作为存档或安装程序提供,适用于各种平台,具有可能的支持合同。

OpenJDK,源存储库(也称为OpenJDK项目)-是一个Mercurial 基于开源存储库,托管于 http://hg.openjdk.java.net。 Java 源代码。绝大多数 Java 功能(从 VM 和核心库到编译器)都完全基于此源存储库。 Oracle 对此有一个替代分支。

OpenJDK,分发(请参阅下面的提供商列表)- free as in beer and kind of free as in speech,但是,您无法调用 Oracle,如果你有问题。没有支持合同。此外,如果 OpenJDK(发行版)版本是最新的 Java 版本,Oracle 将只发布更新,包括 LTS(长期支持)版本。 Oracle 发布 OpenJDK(发行版)12.0 版的那一天,即使 OpenJDK(发行版)11.0 版存在安全问题,Oracle 也不会发布 11.0 的更新。由 Oracle 单独维护。

一些 OpenJDK 项目 - 例如 OpenJDK 8 and OpenJDK 11 - 由 OpenJDK 社区维护,并为某些平台的某些 OpenJDK 版本提供发布。社区成员负责发布这些 OpenJDK 版本中安全漏洞的修复程序。

AdoptOpenJDK,发行版 与 Oracle 的 OpenJDK 发行版非常相似(因为它是免费的,并且是由从 OpenJDK 源代码库编译源代码)。 AdoptOpenJDK 作为一个实体不会向后移植补丁,即不会有与上游有本质区别的 AdoptOpenJDK 'fork/version'(除了一些构建脚本补丁,例如 Win32支持)。意思是,如果社区成员(Oracle 或其他人,但不是作为实体的 AdoptOpenJDK)向后移植安全修复到 OpenJDK LTS 版本的更新,那么 AdoptOpenJDK 将为那些。由 OpenJDK 社区维护。

OracleJDK - 是另一个发行版。从 JDK12 开始,将没有免费版本的 OracleJDK。 Oracle 的 JDK 分发产品旨在提供商业支持。您为此付费,但随后您将依赖 Oracle 提供支持。与 Oracle 的 OpenJDK 产品不同,OracleJDK 对 LTS 版本提供更长的支持。作为开发人员,您可以获得 personal/development 仅使用此特定 JDK 的免费许可,但这主要是转移注意力,因为 'just the binary' 与 Open[=220= 基本相同] 二进制。我想这意味着您可以从 Oracle 的网站下载 LTS JDKs 的安全补丁版本,只要您保证不将它们用于商业用途。

。最好将 Oracle 的 OpenJDK 构建称为 "Oracle OpenJDK builds".

Donald Smith,Java Oracle 产品经理 writes:

Ideally, we would simply refer to all Oracle JDK builds as the "Oracle JDK", either under the GPL or the commercial license, depending on your situation. However, for historical reasons, while the small remaining differences exist, we will refer to them separately as Oracle’s OpenJDK builds and the Oracle JDK.


打开JDK 提供商和比较

----------------------------------------------------------------------------------------
|     Provider      | Free Builds | Free Binary   | Extended | Commercial | Permissive |
|                   | from Source | Distributions | Updates  | Support    | License    |
|--------------------------------------------------------------------------------------|
| AdoptOpenJDK      |    Yes      |    Yes        |   Yes    |   No       |   Yes      |
| Amazon – Corretto |    Yes      |    Yes        |   Yes    |   No       |   Yes      |
| Azul Zulu         |    No       |    Yes        |   Yes    |   Yes      |   Yes      |
| BellSoft Liberica |    No       |    Yes        |   Yes    |   Yes      |   Yes      |
| IBM               |    No       |    No         |   Yes    |   Yes      |   Yes      |
| jClarity          |    No       |    No         |   Yes    |   Yes      |   Yes      |
| OpenJDK           |    Yes      |    Yes        |   Yes    |   No       |   Yes      |
| Oracle JDK        |    No       |    Yes        |   No**   |   Yes      |   No       |
| Oracle OpenJDK    |    Yes      |    Yes        |   No     |   No       |   Yes      |
| ojdkbuild         |    Yes      |    Yes        |   No     |   No       |   Yes      |
| RedHat            |    Yes      |    Yes        |   Yes    |   Yes      |   Yes      |
| SapMachine        |    Yes      |    Yes        |   Yes    |   Yes      |   Yes      |
----------------------------------------------------------------------------------------

从源免费构建 - 分发源代码是公开的,可以assemble自己构建

免费二进制分发版 - 分发二进制文件公开可供下载和使用

扩展更新 - 又名 LTS(长期支持)- Public 超过 6 个月发布生命周期的更新

商业支持 - 一些提供商为付费客户提供扩展更新和客户支持,例如甲骨文 JDK (support details)

许可许可 - 分发许可是非保护性的,例如阿帕奇 2.0


我应该使用哪个 Java 发行版?

在 Sun/Oracle 的日子里,通常 Sun/Oracle 生产基于 OpenJDK 来源的专有下游 JDK 发行版。最近,Oracle 决定仅在附带商业支持的情况下进行自己的专有构建。他们也慷慨地在他们的 https://jdk.java.net/ 网站上发布了 OpenJDK 版本。

从 JDK 11 开始发生的事情是从单一供应商 (Oracle) 思维模式转变为您 select 为您提供产品分发的供应商的思维模式,在条件下您喜欢:他们构建的平台、发布的频率和及时性、支持的结构等。如果您不信任任何现有供应商,您甚至可以自己构建 OpenJDK。

OpenJDK 的每个构建通常都来自相同的原始上游源存储库(OpenJDK“项目”)。然而,每个构建都是非常独特的——$免费或商业、品牌或非品牌、纯或捆绑(例如,BellSoft Liberica JDK 提供捆绑的 JavaFX,从 JDK 开始从 Oracle 构建中删除11).

如果没有环境(例如,Linux)and/or 许可证要求定义了特定的分发,并且如果您想要最 标准 JDK 构建, 那么最好的选择可能是使用 Oracle 的 OpenJDK 或 AdoptOpenJDK.


附加信息

Time to look beyond Oracle's JDK 作者:斯蒂芬·科尔伯恩

Java Is Still Free 作者 Java Champions 社区(2018 年 9 月 17 日发布)

Java is Still Free 2.0.0 作者 Java Champions 社区(2019 年 3 月 3 日发布)

Aleksey Shipilev about JDK updates Opsian 采访(2019 年 6 月 27 日发布)

更新 2021-09

根据我的初读,这个新许可证似乎使生产使用免费(连同开发、测试和培训使用),除了捆绑销售的收费产品外Oracle JDK 产品。但我不是律师,所以请自行阅读条款并根据需要咨询法律建议。

请记住,许多其他供应商继续提供 Java 规范的实现,如下面的流程图所示。其中一些供应商出售支持计划,可以选择或作为使用其产品的要求。不要假设,请始终阅读您获得的任何发行版的详细要求。

2021 年的另一项更新:将 Microsoft 添加到下面的供应商列表中。


更新: AdoptOpenJDK 已更名为 Adoptium,作为其 move to the Eclipse Foundation.

的一部分

打开JDK➙源代码
Adoptium/AdoptOpenJDK➙构建

Difference between OpenJDK and AdoptOpenJDK

第一个提供 源代码,另一个提供该源代码的 builds

Java 和 OpenJDK

的几家供应商

Adoptium of Eclipse Foundation,前身为AdoptOpenJDK,只是其中的几家厂商之一Java 平台的分发实现。其中包括:

  • Eclipse 基础 (Adoptium/AdoptOpenJDK)
  • Azul 系统
  • 甲骨文
  • 红帽/IBM
  • 贝尔软件
  • SAP
  • 亚马逊 AWS
  • ……还有更多

请参阅我的流程图,以帮助指导您选择供应商来实施 Java 平台。 Click/tap 缩放。

另一个资源:Azul Systems 的 This comparison matrix 很有用,而且在我看来是真实和公平的。

这里列出了选择供应商和实施时要考虑的注意事项和动机。

一些供应商为您提供 JIT 技术选择。

要了解有关此 Java 生态系统的更多信息,请阅读 Java Is Still Free