简而言之:
-
OpenJDK has multiple meanings and can refer to:
- Java 平台标准版 (Java SE) 的免费开源实现
-
开源存储库— Java 源代码又名 OpenJDK 项目
- 由 Oracle 维护的预构建 OpenJDK 二进制文件
- 由 OpenJDK 社区维护的预构建 OpenJDK 二进制文件
-
采用OpenJDK— 由社区维护的预构建 OpenJDK 二进制文件 (开源许可)
解释:
预构建的 OpenJDK(或发行版) — 二进制文件,由https://hg.openjdk.java.net/,作为存档或安装程序提供,适用于各种平台,并可能包含支持合同。
OpenJDK,源代码存储库(也叫OpenJDK 项目) - 是一个水银基于开源存储库,托管于https://hg.openjdk.java.net。 Java 源代码。绝大多数 Java 功能(从 VM 和核心库到编译器)都仅基于此源存储库。 Oracle 有一个替代的分支。
OpenJDK,发行版(请参阅下面的提供商列表) - 是像啤酒一样免费和某种言论自由,但是,如果您遇到问题,您无法致电 Oracle。没有支持合同。此外,Oracle 只会发布任何 OpenJDK(发行版)版本的更新(如果该版本是最新的 Java 版本),包括 LTS(长期支持)版本。 Oracle 发布 OpenJDK(发行版)12.0 版当天,即使 OpenJDK(发行版)11.0 版存在安全问题,Oracle 也不会发布 11.0 的更新。由 Oracle 单独维护。
一些 OpenJDK 项目 - 例如OpenJDK 8 and OpenJDK 11- 由 OpenJDK 社区维护,并为某些平台提供某些 OpenJDK 版本的版本。社区成员有责任发布针对这些 OpenJDK 版本中的安全漏洞的修复程序。
采用OpenJDK,发行版与 Oracle 的 OpenJDK 发行版非常相似(因为它是免费的,并且是通过编译 OpenJDK 源代码存储库中的源代码生成的版本)。 AdoptOpenJDK 作为一个实体不会向后移植补丁,即不会有与上游有本质不同的 AdoptOpenJDK“分支/版本”(除了一些用于 Win32 支持等的构建脚本补丁)。这意味着,如果社区成员(Oracle 或其他人,但不是 AdoptOpenJDK 作为实体)向后移植 OpenJDK LTS 版本更新的安全修复程序,那么 AdoptOpenJDK 将为这些成员提供构建。由 OpenJDK 社区维护。
甲骨文JDK- 是另一个发行版。从 JDK12 开始,将不再有免费版本的 OracleJDK。 Oracle 的 JDK 发行版旨在提供商业支持。您为此付费,但随后您可以依赖 Oracle 的支持。与 Oracle 的 OpenJDK 产品不同,OracleJDK 为 LTS 版本提供更长的支持。作为开发人员,您可以获得仅此特定 JDK 的个人/开发使用的免费许可证,但这主要是转移注意力,因为“只是二进制文件”基本上与 OpenJDK 二进制文件相同。我想这意味着你可以从 Oracle 网站下载 LTS JDK 的安全补丁版本,只要你保证不将它们用于商业用途。
Note。最好将 Oracle 的 OpenJDK 构建称为“Oracle OpenJDK 构建”。
Donald Smith,Oracle Java 产品经理writes:
理想情况下,我们将所有 Oracle JDK 版本简单地称为“Oracle JDK”,
根据 GPL 或商业许可,具体取决于您的
情况。然而,由于历史原因,仅存的少数
存在差异,我们将它们单独称为 Oracle 的
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 |
Free Builds from Source - the distribution source code is publicly available and one can assemble its own build
Free Binary Distributions - the distribution binaries are publicly available for download and usage
Extended Updates - aka LTS (long-term support) - Public Updates beyond the 6-month release lifecycle
Commercial Support - some providers offer extended updates and customer support to paying customers, e.g. Oracle JDK (support details)
Permissive License - the distribution license is non-protective, e.g. Apache 2.0
我应该使用哪个 Java 发行版?
在 Sun/Oracle 时代,通常是 Sun/Oracle 基于 OpenJDK 源生产专有的下游 JDK 发行版。最近,Oracle 决定仅在附带商业支持的情况下进行自己的专有构建。他们也慷慨地在他们的网站上发布了 OpenJDK 版本https://jdk.java.net/ site.
从 JDK 11 开始发生的事情是从单一供应商 (Oracle) 思维方式转变为这样的思维方式:您选择一个提供商,根据您喜欢的条件为您提供产品的分发:他们构建的平台、发布的频率和及时性、如何构建支持等。如果您不信任任何现有供应商,您甚至可以自己构建 OpenJDK。
OpenJDK 的每个版本通常都是从相同的原始上游源存储库(OpenJDK“项目”)制作的。然而,每个版本都是非常独特的 - 免费或商业、品牌或无品牌、纯或捆绑(例如,BellSoft Liberica JDK 提供捆绑的 JavaFX,从 JDK 11 开始,它已从 Oracle 版本中删除)。
如果没有环境(例如 Linux)和/或许可证要求定义特定的发行版,并且如果您想要最standardJDK 构建,那么最好的选择可能是使用 Oracle 的 OpenJDK 或 AdoptOpenJDK。
附加信息
是时候超越 Oracle 的 JDK 了斯蒂芬·科尔伯恩
Java 仍然免费作者:Java Champions 社区(发布于 2018 年 9 月 17 日)
Java 仍然免费 2.0.0作者:Java Champions 社区(2019 年 3 月 3 日发布)
Aleksey Shipilev 关于 JDK 更新Opsian 采访(2019 年 6 月 27 日发表)