OpenJDK和Adoptium / AdoptOpenJDK之间的区别

米哈伊尔·霍洛德科夫(Mikhail Kholodkov):

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

OpenJDK和Adoptium / AdoptOpenJDK有什么区别?

米哈伊尔·霍洛德科夫(Mikhail Kholodkov):

简而言之:

  • 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的,分布(见下提供商列表) -是免费的啤酒和一种免费的语音,但是,你不要打电话给甲骨文,如果您有与它的问题。没有支持合同。而且,如果Oracle OpenJDK是最新的Java版本,包括LTS(长期支持)版本,则Oracle只会发布该版本的更新。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 | 没有 没有 是的 是的 是的 
| SapMachine | 是的 是的 是的 是的 是的
| jClarity | 没有 没有 是的 是的 是的 
| OpenJDK | 是的 是的 是的 没有 是的 
| 甲骨文JDK | 没有 是的 否** | 是的 没有 
| Oracle OpenJDK | 是的 是的 没有 没有 是的 
| ojdkbuild | 是的 是的 没有 没有 是的 
| 红帽| 是的 是的 是的 是的 是的 
-------------------------------------------------- --------------------------------------

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

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

扩展更新 -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日发布)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章