由于最近Oracle Java SE支持路线图策略更新(特别是在2019年3月之后结束Oracle的免费发布更新),我一直在寻找Oracle Java的替代品。我发现OpenJDK是一个开源的替代品。我还找到了AdoptOpenJDK(现在称为Adoptium),这是一个预构建的二进制文件。这谜题。

OpenJDK和Adoptium/AdoptOpenJDK有什么区别?


当前回答

更新2021 - 09

从版本8到版本16,如果Oracle在生产中使用自己的Oracle JDK产品,则需要付费,但不需要用于开发、测试和培训用途。 对于Java 17, Oracle JDK产品可以在一个新的 免费条款和条件许可,在Oracle上讨论 公司博客。

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

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

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


更新:AdoptOpenJDK已将其名称更改为Adoptium,这是其向Eclipse Foundation迁移的一部分。


OpenJDK➙源代码codeAdoptium/AdoptOpenJDK➙构建

OpenJDK和AdoptOpenJDK的区别

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

OpenJDK is an open-source project providing source-code (not builds) of an implementation of the Java platform as defined by: the Java Specifications Java Specification Request (JSR) documents published by Oracle via the Java Community Process JDK Enhancement Proposal (JEP) documents published by Oracle via the OpenJDK project AdoptOpenJDK is an organization founded by some prominent members of the Java community aimed at providing binary builds and installers at no cost for users of Java technology.

Java和OpenJDK的几个供应商

Eclipse基金会的Adoptium(以前称为AdoptOpenJDK)只是分发Java平台实现的几个供应商之一。这些包括:

Eclipse Foundation (Adoptium/AdoptOpenJDK) Azul Systems 甲骨文 红帽/ IBM BellSoft SAP Amazon AWS ……以及更多

请参阅我的流程图,以帮助您为Java平台的实现选择供应商。点击/轻按放大。

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

下面是在选择供应商和实现时需要考虑的一些因素和动机。

一些供应商为您提供了多种JIT技术。

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

其他回答

更新2021 - 09

从版本8到版本16,如果Oracle在生产中使用自己的Oracle JDK产品,则需要付费,但不需要用于开发、测试和培训用途。 对于Java 17, Oracle JDK产品可以在一个新的 免费条款和条件许可,在Oracle上讨论 公司博客。

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

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

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


更新:AdoptOpenJDK已将其名称更改为Adoptium,这是其向Eclipse Foundation迁移的一部分。


OpenJDK➙源代码codeAdoptium/AdoptOpenJDK➙构建

OpenJDK和AdoptOpenJDK的区别

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

OpenJDK is an open-source project providing source-code (not builds) of an implementation of the Java platform as defined by: the Java Specifications Java Specification Request (JSR) documents published by Oracle via the Java Community Process JDK Enhancement Proposal (JEP) documents published by Oracle via the OpenJDK project AdoptOpenJDK is an organization founded by some prominent members of the Java community aimed at providing binary builds and installers at no cost for users of Java technology.

Java和OpenJDK的几个供应商

Eclipse基金会的Adoptium(以前称为AdoptOpenJDK)只是分发Java平台实现的几个供应商之一。这些包括:

Eclipse Foundation (Adoptium/AdoptOpenJDK) Azul Systems 甲骨文 红帽/ IBM BellSoft SAP Amazon AWS ……以及更多

请参阅我的流程图,以帮助您为Java平台的实现选择供应商。点击/轻按放大。

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

下面是在选择供应商和实现时需要考虑的一些因素和动机。

一些供应商为您提供了多种JIT技术。

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

简而言之:

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


解释:

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

OpenJDK,源存储库(也称为OpenJDK项目)-是一个基于mercurial的开源存储库,托管在 https://hg.openjdk.java.net。Java源代码。绝大多数Java特性(从VM和核心库到编译器)都完全基于这个源存储库。甲骨文有一个替代的分叉。

OpenJDK, the distribution (see the list of providers below) - is free as in beer and kind of free as in speech, but, you do not get to call Oracle if you have problems with it. There is no support contract. Furthermore, Oracle will only release updates to any OpenJDK (the distribution) version if that release is the most recent Java release, including LTS (long-term support) releases. The day Oracle releases OpenJDK (the distribution) version 12.0, even if there's a security issue with OpenJDK (the distribution) version 11.0, Oracle will not release an update for 11.0. Maintained solely by Oracle.

一些OpenJDK项目(如OpenJDK 8和OpenJDK 11)由OpenJDK社区维护,并为某些平台提供了一些OpenJDK版本的发布。社区成员已经承担了发布这些OpenJDK版本中安全漏洞补丁的责任。

AdoptOpenJDK, the distribution is very similar to Oracle's OpenJDK distribution (in that it is free, and it is a build produced by compiling the sources from the OpenJDK source repository). AdoptOpenJDK as an entity will not be backporting patches, i.e. there won't be an AdoptOpenJDK 'fork/version' that is materially different from upstream (except for some build script patches for things like Win32 support). Meaning, if members of the community (Oracle or others, but not AdoptOpenJDK as an entity) backport security fixes to updates of OpenJDK LTS versions, then AdoptOpenJDK will provide builds for those. Maintained by OpenJDK community.

OracleJDK - is yet another distribution. Starting with JDK12 there will be no free version of OracleJDK. Oracle's JDK distribution offering is intended for commercial support. You pay for this, but then you get to rely on Oracle for support. Unlike Oracle's OpenJDK offering, OracleJDK comes with longer support for LTS versions. As a developer you can get a free license for personal/development use only of this particular JDK, but that's mostly a red herring, as 'just the binary' is basically the same as the OpenJDK binary. I guess it means you can download security-patched versions of LTS JDKs from Oracle's websites as long as you promise not to use them commercially.

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

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

理想情况下,我们可以简单地将所有Oracle JDK构建称为“Oracle JDK”, 在GPL或商业许可下,取决于你的 的情况。不过,由于历史原因,而小存 存在差异,我们将它们分别称为甲骨文的 OpenJDK构建和Oracle JDK。


OpenJDK提供者和比较

Provider Free Builds
from Source
Free Binary
Distributions
Extended
Updates
Commercial
Support
Permissive
License
Website
AdoptOpenJDK Yes Yes Yes No Yes https://adoptopenjdk.net
Amazon – Corretto Yes Yes Yes No Yes https://aws.amazon.com/corretto
Azul Zulu No Yes Yes Yes Yes https://www.azul.com/downloads/zulu/
BellSoft Liberica No Yes Yes Yes Yes https://bell-sw.com/java.html
IBM No No Yes Yes Yes https://www.ibm.com/developerworks/java/jdk
jClarity No No Yes Yes Yes https://www.jclarity.com/adoptopenjdk-support/
OpenJDK Yes Yes Yes No Yes https://adoptopenjdk.net/upstream.html
Oracle JDK No Yes No** Yes No https://www.oracle.com/technetwork/java/javase/downloads
Oracle OpenJDK Yes Yes No No Yes https://jdk.java.net
ojdkbuild Yes Yes No No Yes https://github.com/ojdkbuild/ojdkbuild
RedHat Yes Yes Yes Yes Yes https://developers.redhat.com/products/openjdk/overview
SapMachine Yes Yes Yes Yes Yes https://sap.github.io/SapMachine

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

免费二进制发行版——这些发行版二进制版本可供公众下载和使用

扩展更新——又名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构建中删除了它)。

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


额外的信息

是时候超越Stephen Colebourne的Oracle JDK了

Java仍然是免费的,由Java冠军社区(2018年9月17日发布)

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

Aleksey Shipilev对Opsian JDK更新的采访(发表于2019年6月27日)