总之:
-
OpenJDK具有多种含义,可以指:
- Java Platform, Standard Edition (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 和核心库到编译器)都完全基于此源存储库。Oracle有另一个分支。
OpenJDK,发行版(请参阅下面的提供商列表) - 像啤酒一样免费,并且像语音一样免费,但是,如果您遇到问题,则无法调用Oracle。没有支持合同。此外,Oracle只会在任何OpenJDK(发行版)版本发布更新,前提是该版本是最新的Java版本,包括LTS(长期支持)版本。Oracle 发布 OpenJDK(发行版)版本 12.0 的那一天,即使 OpenJDK(发行版)版本 11.0 存在安全问题,Oracle 也不会发布 11.0 的更新。完全由甲骨文维护。
一些OpenJDK项目 - 如OpenJDK 8和OpenJDK 11 - 由OpenJDK社区维护,并为某些平台的某些OpenJDK版本提供版本。社区成员已经负责发布这些OpenJDK版本中安全漏洞的修复程序。
AdoptOpenJDK,该发行版与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 builds”。
Oracle Java产品经理Donald Smith写道:
理想情况下,我们将所有Oracle JDK版本简单地称为“Oracle JDK”,无论是在GPL下还是在商业许可证下,具体取决于您的情况。但是,由于历史原因,虽然存在微小的剩余差异,但我们将分别将它们称为Oracle的OpenJDK构建和Oracle JDK。
OpenJDK 提供程序和比较
来自源代码的免费构建 - 分发源代码是公开的,人们可以组装自己的构建
免费二进制分发 - 分发二进制文件可公开下载和使用
扩展更新 - 又名 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“项目”)创建的。然而,每个版本都非常独特 - $free或商业,品牌或无品牌,纯或捆绑(例如,BellSoft Liberica JDK提供捆绑的JavaFX,从JDK 11开始从Oracle版本中删除)。
如果没有环境(例如Linux)和/或许可证要求定义特定的发行版,并且如果您想要最标准的JDK构建,那么最好的选择可能是使用Oracle的OpenJDK或AdoptOpenJDK。
附加信息
是时候超越斯蒂芬·科尔伯恩的甲骨文JDK了
Java Is Still Free by Java Champions community (发表于2018年9月17日)
Java仍然是免费的2.0.0,由Java Champions社区提供(发布于2019年3月3日)
阿列克谢·希皮列夫关于JDK更新Opsian的采访(发表于2019年6月27日)