OpenJDK和AdoptOpenJDK有什么区别?
> OpenJDK有多种含义,可以称为:
> Java平台标准版(Java SE)的免费和开源实现
> open source repository – Java源代码又名OpenJDK项目
>由Oracle维护的预构建的OpenJDK二进制文件
> AdoptOpenJDK – 社区维护的预建OpenJDK二进制文件(open source licensed)
说明:
预构建的OpenJDK(或发行版) – 二进制文件,建于http://hg.openjdk.java.net/,作为存档或安装程序提供,提供给各种平台,并提供可能的支持合同.
OpenJDK,源存储库(也称为OpenJDK项目) – 是一个基于Mercurial的开源存储库,托管在
http://hg.openjdk.java.net. Java源代码.绝大多数Java功能(从VM和核心库到编译器)仅基于此源存储库. Oracle有另一个分支.
OpenJDK,发行版(参见下面的提供商列表) – 是free as in beer,类似于free as in speech,但是,如果你遇到问题,你就不能打电话给Oracle.没有支持合同.此外,如果该版本是最新的Java版本(包括LTS(长期支持)版本),Oracle将仅发布对任何OpenJDK(发行版)版本的更新.当天oracle发布OpenJDK(发行版)12.0版,即使OpenJDK(发行版)11.0存在安全问题,Oracle也不会发布11.0的更新.完全由Oracle维护.
AdoptOpenJDK,分发 – 非常类似于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:
Ideally, we would simply refer to all Oracle JDK builds as the “Oracle
JDK,” either under the GPL or the commercial license depending on your
situation. However, for historical reasons while the small remaining
differences exist, we will refer to them separately as Oracle’s
OpenJDK builds, and the Oracle JDK.
OpenJDK提供商和比较
> AdoptOpenJDK – https://adoptopenjdk.net
>亚马逊 – Corretto – https://aws.amazon.com/corretto
> Azul Zulu – https://www.azul.com/downloads/zulu/
> BellSoft Liberica – https://bell-sw.com/java.html
> IBM – https://www.ibm.com/developerworks/java/jdk
> jClarity – https://www.jclarity.com/adoptopenjdk-support/
> Oracle JDK – https://www.oracle.com/technetwork/java/javase/downloads
> Oracle OpenJDK – http://jdk.java.net
> ojdkbuild – https://github.com/ojdkbuild/ojdkbuild
> RedHat – https://developers.redhat.com/products/openjdk/overview
> SapMachine – https://sap.github.io/SapMachine
---------------------------------------------------------------------------------------- | Provider | Free Builds | Free Binary | Extended | Commercial | Permissive | | | from Source | Distributions | Updates | Support | License | |--------------------------------------------------------------------------------------| | AdoptOpenJDK | Yes | Yes | Yes | No | Yes | | Amazon – Corretto | Yes | Yes | Yes | No | Yes | | Azul Zulu | No | Yes | Yes | Yes | Yes | | BellSoft Liberica | No | Yes | Yes | Yes | Yes | | IBM | No | No | Yes | Yes | Yes | | jClarity | No | No | Yes | Yes | Yes | | Oracle JDK | No | Yes | No** | Yes | No | | Oracle OpenJDK | Yes | Yes | No | No | Yes | | ojdkbuild | Yes | Yes | No | No | Yes | | RedHat | Yes | Yes | Yes | Yes | Yes | | SapMachine | Yes | Yes | Yes | Yes | Yes | ----------------------------------------------------------------------------------------
免费构建源 – 分发源代码是公开可用的,可以组装自己的构建
免费二进制分发 – 分发二进制文件可公开下载和使用
扩展更新 – 又名LTS(长期支持) – 超过6个月发布生命周期的公共更新
商业支持 – 一些提供商为付费客户提供扩展更新和客户支持,例如Oracle JDK(support details)
许可许可 – 分发许可是非保护性的,例如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,已从Oracle构建中删除,从JDK 11开始).
如果没有环境(例如,Linux)和/或许可证要求定义特定的分发,并且如果您想要最标准的JDK构建,那么最好的选择可能是使用Oracle的OpenJDK或AdoptOpenJDK.
附加信息
Time to look beyond Oracle’s JDK by Stephen Colebourne
Java Champions社区Java Is Still Free(2018年9月17日发布)
Java Champions社区Java is Still Free 2.0.0(2019年3月3日发布)
Aleksey Shipilev about JDK updates Opsian采访(发表于2019年6月27日)
转载注明原文:java – OpenJDK和AdoptOpenJDK之间的区别 - 乐贴网