由于最近的Oracle Java SE支持路线图政策更新(特别是2019年3月之后Oracle的$ free版本更新结束),我一直在寻找Oracle Java的替代产品。我发现OpenJDK是一种开源替代方案。而且我发现了AdoptOpenJDK(现在称为 Adoptium),它是一个预构建的二进制文件。令人困惑。
OpenJDK和Adoptium / AdoptOpenJDK有什么区别?
由于最近的Oracle Java SE支持路线图政策更新(特别是2019年3月之后Oracle的$ free版本更新结束),我一直在寻找Oracle Java的替代产品。我发现OpenJDK是一种开源替代方案。而且我发现了AdoptOpenJDK(现在称为 Adoptium),它是一个预构建的二进制文件。令人困惑。
OpenJDK和Adoptium / AdoptOpenJDK有什么区别?
Answers:
简而言之:
说明:
预先构建的OpenJDK(或发行版)-二进制文件,从http://hg.openjdk.java.net/构建,以归档文件或安装程序的形式提供,并为各种平台提供了可能的支持合同。
OpenJDK是源存储库(也称为OpenJDK项目)-是基于Mercurial的开放源存储库,托管在 http://hg.openjdk.java.net上。Java源代码。绝大多数Java功能(从VM和核心库到编译器)仅基于此源存储库。甲骨文对此有另一种选择。
OpenJDK的,分布(见下提供商列表) -是免费的啤酒和一种免费的语音,但是,你不要打电话给甲骨文,如果您有与它的问题。没有支持合同。此外,如果该发行版是最新的Java发行版,包括LTS(长期支持)发行版,则Oracle只会发行该OpenJDK(发行版)版本的更新。Oracle发布OpenJDK(发行版)12.0版的那天,即使OpenJDK(发行版)11.0版存在安全问题,Oracle也不会发布11.0版的更新。完全由Oracle维护。
一些OpenJDK项目(例如OpenJDK 8和OpenJDK 11)由OpenJDK社区维护,并为某些平台的某些OpenJDK版本提供发行版。社区成员负责发布这些OpenJDK版本中的安全漏洞修复程序。
采用OpenJDK,该发行版与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构建”。
Oracle Java产品经理Donald Smith 写道:
理想情况下,根据您的情况,根据GPL或商业许可,我们可以简单地将所有Oracle JDK构建都称为“ Oracle JDK”。但是,由于历史原因,虽然存在一些小的差异,但我们将它们分别称为Oracle的OpenJDK构建和Oracle JDK。
-------------------------------------------------- -------------------------------------- | 提供者| 免费版本| 免费二进制| 扩展| 商业| 宽容| | | 从来源| 发行| 更新| 技术支持 许可| | ------------------------------------------------- ------------------------------------- | | 采用OpenJDK | 是的 是的 是的 没有 是的 | 亚马逊– Corretto | 是的 是的 是的 没有 是的 | Azul Zulu | 没有 是的 是的 是的 是的 | BellSoft Liberica | 没有 是的 是的 是的 是的 | IBM | 没有 没有 是的 是的 是的 | jClarity | 没有 没有 是的 是的 是的 | OpenJDK | 是的 是的 是的 没有 是的 | 甲骨文JDK 没有 是的 否** | 是的 没有 | Oracle OpenJDK | 是的 是的 没有 没有 是的 | ojdkbuild | 是的 是的 没有 没有 是的 | 红帽| 是的 是的 是的 是的 是的 | SapMachine | 是的 是的 是的 是的 是的 -------------------------------------------------- --------------------------------------
从源代码免费构建 -发行源代码是公开可用的,人们可以组装自己的构建
免费的二进制发行版 -发行发行版可以公开下载和使用
扩展更新 -aka LTS(长期支持)-超过6个月发布生命周期的公开更新
商业支持 -一些提供商为付费客户提供扩展的更新和客户支持,例如Oracle JDK(支持详细信息)
许可许可证 -发行许可证是非保护性的,例如Apache 2.0
在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组装中删除了JavaFX)。
如果没有环境(例如Linux)和/或许可证要求定义了特定的发行版,并且您想要最标准的 JDK构建,则最好的选择可能是使用Oracle的OpenJDK或AdoptOpenJDK。
附加信息
是时候超越Oracle JDK了,作者是Stephen Colebourne
Java Champions社区仍然免费提供Java(发布于2018年9月17日)
Java Champions社区的Java仍然免费2.0.0(发布于2019年3月3日)
关于JDK的Aleksey Shipilev更新了Opsian的采访(于2019年6月27日发布)
更新: AdoptOpenJDK已更名为Adoptium,这是迁移到Eclipse Foundation的一部分。
OpenJDK和AdoptOpenJDK之间的区别
第一个提供源代码,另一个提供该源代码的构建。
Eclipse Foundation的Adoptium(以前称为AdoptOpenJDK)只是分发Java平台实现的多家供应商之一。这些包括:
请参阅我的此流程图,以帮助指导您为Java平台的实现选择厂商。单击/点击以缩放。
另一个资源:Azul Systems的比较矩阵很有用,在我看来似乎是正确和公平的。
这里列出了选择供应商和实施时要考虑的因素和动机。
一些供应商为您提供JIT技术的选择。
要了解有关此Java生态系统的更多信息,请阅读Java仍然免费