OpenJDK与Adoptium / AdoptOpenJDK之间的区别


182

由于最近的Oracle Java SE支持路线图政策更新(特别是2019年3月之后Oracle的$ free版本更新结束),我一直在寻找Oracle Java的替代产品。我发现OpenJDK是一种开源替代方案。而且我发现了AdoptOpenJDK现在称为 Adoptium),它是一个预构建的二进制文件。令人困惑。

OpenJDK和Adoptium / AdoptOpenJDK有什么区别?


更新:AdoptOpenJDK已更名为Adoptium,这是迁移到Eclipse Foundation的一部分
罗勒·布尔克

Answers:


271

简而言之:

  • OpenJDK具有多种含义,可以参考:
    • Java平台标准版(Java SE)的免费和开源实现
    • 开源存储库 — Java源代码(也称为OpenJDK项目)
    • 由Oracle维护的预构建OpenJDK二进制文件
    • 由OpenJDK社区维护的预构建的OpenJDK二进制文件
  • AdoptOpenJDK —由社区维护的预构建OpenJDK二进制文件(开放源代码许可

说明:

预先构建的OpenJDK(或发行版)-二进制文件,从http://hg.openjdk.java.net/构建,以归档文件或安装程序的形式提供,并为各种平台提供了可能的支持合同。

OpenJDK是源存储库(也称为OpenJDK项目)-是基于Mercurial的开放源存储库,托管在 http://hg.openjdk.java.net上。Java源代码。绝大多数Java功能(从VM和核心库到编译器)仅基于此源存储库。甲骨文对此有另一种选择。

OpenJDK的,分布(见下提供商列表) -是免费的啤酒和一种免费的语音,但是,你不要打电话给甲骨文,如果您有与它的问题。没有支持合同。此外,如果该发行版是最新的Java发行版,包括LTS(长期支持)发行版,则Oracle只会发行该OpenJDK(发行版)版本的更新。Oracle发布OpenJDK(发行版)12.0版的那天,即使OpenJDK(发行版)11.0版存在安全问题,Oracle也不会发布11.0版的更新。完全由Oracle维护。

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

采用OpenJDK,该发行版与Oracle的OpenJDK发行版非常相似(因为它是免费的,并且是通过编译来自OpenJDK源代码库的源代码生成的构建)。将AdoptOpenJDK作为一个实体不会向后移植补丁程序,即不会有与上游有实质性区别的AdoptOpenJDK'fork / version'(除了一些诸如Win32支持之类的构建脚本补丁程序外)。这意味着,如果社区成员(Oracle或其他人,但不是AdoptOpenJDK作为一个实体)向后移植安全修补程序以更新OpenJDK LTS版本,则AdoptOpenJDK将为其提供构建。由OpenJDK社区维护。

OracleJDK-是另一个发行版。从JDK12开始,将没有免费版本的OracleJDK。Oracle的JDK发行产品旨在提供商业支持。您为此付费,但随后您就可以依靠Oracle获得支持。与Oracle的OpenJDK产品不同,OracleJDK对LTS版本提供了更长的支持。作为开发人员,您只能获得此特定JDK的个人/开发使用免费许可证,但这主要是一个红鲱鱼,因为“仅二进制文件”与OpenJDK二进制文件基本上相同。我想这意味着您可以从Oracle网站下载LTS JDK的安全修补程序版本,只要您保证不将其商业使用即可。

注意。最好将Oracle的OpenJDK构建称为“ Oracle OpenJDK构建”。

Oracle Java产品经理Donald Smith 写道

理想情况下,根据您的情况,根据GPL或商业许可,我们可以简单地将所有Oracle JDK构建都称为“ Oracle JDK”。但是,由于历史原因,虽然存在一些小的差异,但我们将它们分别称为Oracle的OpenJDK构建和Oracle JDK。


OpenJDK提供程序和比较

-------------------------------------------------- --------------------------------------
| 提供者| 免费版本| 免费二进制| 扩展| 商业| 宽容|
| | 从来源| 发行| 更新| 技术支持 许可|
| ------------------------------------------------- ------------------------------------- |
| 采用OpenJDK | 是的 是的 是的 没有 是的
| 亚马逊– Corretto | 是的 是的 是的 没有 是的
| Azul Zulu | 没有 是的 是的 是的 是的
| BellSoft Liberica | 没有 是的 是的 是的 是的
| IBM | 没有 没有 是的 是的 是的
| jClarity | 没有 没有 是的 是的 是的
| OpenJDK | 是的 是的 是的 没有 是的
| 甲骨文JDK 没有 是的 否** | 是的 没有
| Oracle OpenJDK | 是的 是的 没有 没有 是的
| ojdkbuild | 是的 是的 没有 没有 是的
| 红帽| 是的 是的 是的 是的 是的
| SapMachine | 是的 是的 是的 是的 是的
-------------------------------------------------- --------------------------------------

源代码免费构建 -发行源代码是公开可用的,人们可以组装自己的构建

免费的二进制发行版 -发行发行版可以公开下载和使用

扩展更新 -aka LTS(长期支持)-超过6个月发布生命周期的公开更新

商业支持 -一些提供商为付费客户提供扩展的更新和客户支持,例如Oracle JDK(支持详细信息

许可许可证 -发行许可证是非保护性的,例如Apache 2.0


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

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

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

OpenJDK的每个构建通常都由相同的原始上游源存储库(OpenJDK“项目”)制成。但是,每个构建都是非常独特的-免费的或商业的,有品牌的或无品牌的,纯净的或捆绑的(例如,BellSoft Liberica JDK提供捆绑的JavaFX,从JDK 11开始从Oracle组装中删除了JavaFX)。

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


附加信息

是时候超越Oracle JDK了,作者是Stephen Colebourne

Java Champions社区仍然免费提供Java(发布于2018年9月17日)

Java Champions社区的Java仍然免费2.0.0(发布于2019年3月3日)

关于JDK的Aleksey Shipilev更新了Opsian的采访(于2019年6月27日发布)


8
您可能还提到其他供应商提供基于OpenJDK的Java实现,例如Azul SystemsZuluZing产品。另一个是Eclipse OpenJ9项目。
罗勒·布尔克


1
@MikhailKholodkov关于Apache许可的信息不正确。使用Apache License 2.0到AdoptOpenJDK的链接仅适用于他们为帮助生成二进制文件而编写的构建脚本。二进制文件是使用GPL和链接例外许可证从OpenJDK项目获得的源代码构建的。
罗勒·布尔克

2
@GarrettWilson AdoptOpenJDK仅做两件事:(a)使用OpenJDK提供的源代码构建二进制文件和安装程序,以及(b)在这些二进制文件上运行测试。AdoptOpenJDK并没有维持的源代码库实现Java平台。因此:OpenJDK仅是源代码,AdoptOpenJDK仅是二进制文件和安装程序。AdoptOpenJDK作者仅为其构建工具和测试套件编写代码。除了AdoptOpenJDK外,其他几家公司还提供基于OpenJDK项目提供的源代码的构建:Azul Systems,Oracle,BellSoft,Amazon AWS,RedHat / IBM,SAP等。
罗勒·布尔克

1
@GarretWilson我应该补充说,AdoptOpenJDK做第三件事:(c)创建并维护工具以支持我先前的评论中提到的构建和测试。
罗勒·布尔克

62

更新: AdoptOpenJDK已更名为Adoptium,这是迁移到Eclipse Foundation的一部分


OpenJDK的 ➙源代码
Adoptium / AdoptOpenJDK ➙构建

OpenJDK和AdoptOpenJDK之间的区别

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

Java和OpenJDK的多家供应商

Eclipse Foundation的Adoptium(以前称为AdoptOpenJDK)只是分发Java平台实现的多家供应商之一。这些包括:

  • Eclipse Foundation(Adoptium / AdoptOpenJDK)
  • Azul系统
  • 甲骨文
  • 红帽/ IBM
  • 贝尔软件
  • 树液
  • 亚马逊AWS
  • … 和更多

请参阅我的此流程图,以帮助指导您为Java平台的实现选择厂商。单击/点击以缩放。

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

另一个资源:Azul Systems的比较矩阵很有用,在我看来似乎是正确和公平的。

这里列出了选择供应商和实施时要考虑的因素和动机。

选择Java供应商的动机

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

该图显示了HotSpot和JRockit合并的历史,以及AdoptOpenJDK中都提供的OpenJ9

要了解有关此Java生态系统的更多信息,请阅读Java仍然免费


1
如果“ OpenJDK”是指源,那么hub.docker.com/_/openjdkhub.docker.com/_/adoptopenjdk有什么区别
bcoughlan

1
@bcoughlan您必须询问这两种产品的发布者:Docker,Inc.您链接的网页声称第二个页面由AdoptOpenJDK项目维护,而第一个页面则由“ Docker社区”维护。第一个在徽标和命名的使用上具有误导性,因为它可能给您留下了OpenJDK项目产生它的印象,而事实并非如此。第一个甚至可能违反OpenJDK给出的商标声明中的第2条,但我不是律师。
罗勒·布尔克

1
@SanderVerhagen您可以在OpenJDK网站上提供指向该下载页面的链接吗?我找不到这样的提议。我确实在另一个网站jdk.java.net上找到了针对Windows,macOS和Linux的Oracle OpenJDK JDK二进制文件的链接。该站点及其二进制下载由Oracle提供,而不是由OpenJDK项目提供给社区。如主页所说:Java开发工具包是从Oracle构建的。我将这个产品显示为流程图蓝色桶中右上角的第二个气泡。
罗勒·布尔克

1
@SanderVerhagen 我怀疑,您的链接会转到OpenJDK之外的其他网站。该网站jdk.java.net/14不是在OpenJDK网站的一部分,也不是OpenJDK项目的一部分。换句话说,openjdk.java.net不是jdk.java.net。再次查看流程图中蓝色桶顶部的两个气泡。左上方的Oracle产品是其商业产品。右上角的Oracle产品是其GPL许可的免费版本-您的链接指向该特定产品。
罗勒·布尔克

1
@SanderVerhagen我怀疑您对产品命名感到困惑。“ Java”一词是Oracle的商标,只能在得到其许可的情况下使用。因此,大多数供应商都不使用该商标。相反,大多数供应商使用术语“ OpenJDK”作为其命名的一部分,而不是“ Java”。这些供应商正在从OpenJDK项目获得的源代码进行构建。在OpenJDK的项目只提供源代码,不建立,不安装。对于构建/安装程序,您必须自己制作或从供应商那里购买。我建议阅读Java仍然免费
罗勒·布尔克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.