OpenJDK和AdoptOpenJDK之间的区别

Mik*_*kov 110 java sdk

由于最近的Oracle Java SE支持路线图政策更新(特别是在2019年3月之后Oracle的免费发布更新结束),我一直在寻找Oracle Java的替代方案.我发现OpenJDK是一个开源替代品.我找到了AdoptOpenJDK,这是一个预建的二进制文件.它很困惑.

OpenJDK和AdoptOpenJDK有什么区别?

Mik*_*kov 180

简而言之:

  • OpenJDK有多种含义,可以称为:
    • Java平台标准版(Java SE)的免费和开源实现
    • 开源存储库 - Java源代码又名OpenJDK项目
    • Oracle提供的预构建的OpenJDK二进制文件
  • AdoptOpenJDK预构建的OpenJDK二进制文件由社区提供.

说明:

预构建的OpenJDK(或发行版) - 由http://hg.openjdk.java.net/构建的二进制文件,以zip或安装程序提供,提供给各种平台,并提供可能的支持合同.

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

OpenJDK,发行版(参见下面的提供商列表) - 在啤酒中免费的,在演讲中免费的,但是,如果您遇到问题,就不能打电话给Oracle.没有支持合同.此外,如果该版本是最新的Java版本(包括LTS),Oracle将仅发布对任何OpenJDK(发行版)版本的更新.oracle发布OpenJDK(发行版)12.0版,即使OpenJDK(发行版)11.0存在安全问题,Oracle也不会发布11.0的更新.完全由Oracle维护.

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

还有OracleJDK--另一个发行版,从JDK12开始,没有免费版本.Oracle的JDK发行版旨在提供商业支持.你支付这笔费用,但是你确实可以依靠Oracle来获得支持.与Oracle的OpenJDK产品不同,OracleJDK产品确实提供了对LTS版本的更长支持.作为开发人员,您可以获得仅用于此特定JDK的个人/开发使用的免费许可,但这主要是一个红色鲱鱼,因为"只是二进制"基本上与OpenJDK二进制文件相同.我想这意味着只要您承诺不在商业上使用它们,您就可以从Oracle网站下载安全修补版本的LTS JDK.

注意.最好是通过Oracle调用OpenJDK构建,即"Oracle OpenJDK构建".

Oracle的Java产品经理Donald Smith 写道:

理想情况下,我们只需根据您的具体情况,将所有Oracle JDK构建称为"Oracle JDK",或者根据GPL或商业许可.但是,由于历史原因,虽然存在小的剩余差异,但我们将分别将它们作为Oracle的OpenJDK构建和Oracle JDK引用.


OpenJDK提供商和比较

----------------------------------------------------------------------------------------
|     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      |
----------------------------------------------------------------------------------------

*扩展更新 - 超过6个月发布生命周期的公共更新

**Oracle为付费客户提供扩展更新(和支持),即仅限Oracle JDK


附加信息

时间超越Oracle的JDK作者Stephen Colebourne

Java Champions社区仍然免费提供Java

  • 您可能会提到其他供应商提供基于OpenJDK的Java实现,例如来自[Azul Systems](http://www.Azul.com/)的*Zulu*和*Zing*产品.另一个是[Eclipse OpenJ9](https://developer.ibm.com/code/open/projects/eclipse-openj9/)项目. (6认同)
  • @GarrettWilson AdoptOpenJDK 只做两件事:(a) 使用 OpenJDK 提供的源代码构建二进制文件和安装程序,以及 (b) 对这些二进制文件运行测试。AdoptOpenJDK *不*维护用于实现 Java 平台的源代码存储库。所以:OpenJDK 只是源代码,AdoptOpenJDK 只是二进制文件+安装程序。AdoptOpenJDK 作者仅为其构建工具和测试套件编写代码。除了 AdoptOpenJDK 之外,其他几家公司也提供基于 OpenJDK 项目提供的源代码的构建:Azul Systems、Oracle、BellSoft、Amazon AWS、RedHat/IBM、SAP 等。 (3认同)
  • @DmitriyPopov 这是允许的 - https://github.com/AdoptOpenJDK/openjdk-build/blob/master/LICENSE (2认同)
  • @GarretWilson 我应该补充一点,AdoptOpenJDK 做了第三件事:(c) [创建和维护工具](https://github.com/AdoptOpenJDK/) 以支持我之前评论中提到的构建和测试。 (2认同)

Bas*_*que 108

更新: AdoptOpenJDK已更名为Adoptium,作为其向 Eclipse Foundation 迁移的一部分。


开放式JDK ? 源代码
采用/采用OpenJDK?建造

OpenJDK 和 AdaptOpenJDK 的区别

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

多家 Java 和 OpenJDK 供应商

Adoptium of the Eclipse Foundation,以前称为AdoptOpenJDK,只是分发 Java 平台实现的几个供应商之一。这些包括:

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

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

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

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

以下是选择供应商和实施时要考虑的考虑因素和动机列表。

选择 Java 供应商的动机

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

图表显示了 HotSpot 和 JRockit 合并的历史,以及在 AdoptOpenJDK 中都可用的 OpenJ9

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

  • @bcoughlan 您必须询问这两个产品的发布者:Docker, Inc。您链接的网页声称第二个产品由 AdoptOpenJDK 项目维护,而第一个产品由“Docker 社区”维护。第一个在徽标和命名的使用上具有误导性,因为它可能会给您留下 OpenJDK 项目生产它的印象,但事实并非如此。第一个甚至可能违反了[OpenJDK 给出的商标声明的第 2 项](https://openjdk.java.net/legal/openjdk-trademark-notice.html),但我不是律师。 (3认同)