OpenJDK和AdoptOpenJDK之间的区别

时间:2018-09-20 19:10:59

标签: java sdk

由于最近的Oracle Java SE Support Roadmap策略更新(尤其是2019年3月之后Oracle的$ free版本更新结束),我一直在寻找Oracle Java的替代产品。我发现OpenJDK是开源替代方案。而且我发现了AdoptOpenJDK,它是一个预构建的二进制文件。令人困惑。

OpenJDK和AdoptOpenJDK有什么区别?

2 个答案:

答案 0 :(得分:74)

简而言之:

  • OpenJDK 具有多种含义,可以称为:
    • Java平台标准版(Java SE)的免费开源实现
    • open source repository-Java源代码,也称为OpenJDK项目
    • Oracle提供的预构建的OpenJDK二进制文件
  • 采用OpenJDK 由社区提供的预构建的OpenJDK二进制文件。

说明:

预构建的OpenJDK (或分发)-由http://hg.openjdk.java.net/构建的二进制文件,以zip或安装程序的形式提供,适用于各种平台,并带有可能的支持合同。

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

OpenJDK,发行版(请参阅下面的提供程序列表)-为free as in beer,种类为free as in speech,但是如果您有,请不要致电Oracle问题。没有支持合同。此外,Oracle仅会发布对任何OpenJDK(发行版)版本的更新,前提是该版本是最新的Java版本(包括LTS)。甲骨文发布OpenJDK(发行版)12.0版的那天,即使OpenJDK(发行版)11.0版存在安全问题,Oracle也不会发布11.0版的更新。完全由Oracle维护。

采用OpenJDK,发行版-与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 writes的Java产品经理Donald Smith:

  

理想情况下,我们将所有Oracle JDK构建简称为“ Oracle   JDK”,取决于您的GPL或商业许可   情况。但是,由于历史原因,剩下的一小部分   存在差异,我们将它们分别称为Oracle的   OpenJDK和Oracle JDK构建。


OpenJDK提供程序和比较

---------------------------------------------------------------------------
|     Provider      | Free Builds | Free Binary   | Extended | Commercial |
|                   | from Source | Distributions | Updates* | Support    |  
|-------------------------------------------------------------------------|               
| AdoptOpenJDK      |    Yes      |    Yes        |   Yes    |   No       |
| Azul              |    No       |    Yes        |   Yes    |   Yes      |
| IBM               |    No       |    No         |   Yes    |   Yes      |
| Mercurial         |    Yes      |    Yes        |   No     |   No       |
| Oracle            |    No       |    Yes        |   No**   |   Yes      |
| RedHat            |    Yes      |    Yes        |   Yes    |   Yes      |
| SapMachine        |    Yes      |    Yes        |   Yes    |   Yes      |
| Amazon – Corretto |    Yes      |    Yes        |   Yes    |   No       |
---------------------------------------------------------------------------

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

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


其他信息

Time to look beyond Oracle's JDK,作者Stephen Colebourne

Java Is Still Free,由Java Champions社区发布(于2018年9月17日发布)

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

答案 1 :(得分:9)

OpenJDK ➙源代码
AdoptOpenJDK ➙构建

  

OpenJDK与AdoptOpenJDK之间的区别

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

Java和OpenJDK的多家供应商

AdoptOpenJDK 只是分发Java平台实现的多家供应商之一。

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

Flowchart guiding you in choosing a vendor for a Java 11 implementation

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

Motivations in choosing a vendor for Java