OpenJDK

OpenJDK
开发人员 Oracle ,OpenJDK和Java社区, Red HatAzul SystemsIBMMicrosoftAmazonAppleSAP
初始发行 2007年5月8日
稳定版本
21 / 2023年9月19日
存储库
写在 C ++Java
作业系统 LinuxFreeBSDMacOSMicrosoft WindowsOpenIndiana ;正在进行的其他几个端口
类型 Java平台
执照 仅GPL-2.0链接异常
网站 OpenJDK .org

OpenJDKOpen Java Development套件)是Java平台,标准版(Java SE)的免费开放源代码实现。这是Sun Microsystems始于2006年的努力的结果。该实施是在仅GPL-2.0的下进行许可的,具有链接例外。如果不是GPL链接例外,链接到Java类库的组件将受到GPL许可证的条款。自版7版以来,OpenJDK是Java SE的官方参考实现

成分

OpenJDK项目产生了许多组件:最重要的是虚拟机热点), Java类库和Java编译器( Javac )。

OpenJDK中未包含构成Oracle Java的一部分的Web浏览器插件和Web启动。 Sun先前表示,他们会尝试开源这些组件,但Sun和Oracle都没有这样做。截至2016年,当前唯一可用的免费插件和Web启动实现是IceDTEA提供的。

OpenJDK 9+使用GRAALVM (JEP 295)支持AOT汇编jaotc )。实验-XX:+EnableJVMCIProduct Flag可以使用Graal JIT(JEP 317)。

OpenJDK版本

OpenJDK最初仅基于JDK 7版本的Java平台。

自JDK 10以来,生产Java SE平台开源参考实现的努力已转移到JDK项目。与过去的JDK发行项目(仅生产一个功能发行版,然后终止)不同,这个长期运行的项目将产生所有未来的JDK功能发行版,并根据严格的基于时间的模型每六个月发行一次功能发布。

OpenJDK构建

由于Oracle不再发布长期支持(LTS)的更新,并在允许的许可下发布,其他人已经开始提供构建。 Linux发行版始终提供自己的构建,Windows现在还提供一个,可以在Windows软件包管理器中安装。例如,安装OpenJDK 17:

winget安装microsoft.openjdk.17


建造 组织 LTS 允许
执照
TCK
测试
建造
未修改
商业的
支持
领养
(2021年移居Eclipse Temurin)
是的 是的 是的 选修的 可选(IBM)
阿里巴巴龙韦尔 阿里巴巴 是的 是的
亚马逊Corretto 亚马逊 是的 是的 是的 是的 可选(在AWS上)
Azul Zulu Azul系统 是的 是的 是的 选修的
Bellsoft Liberica JDK 贝尔索夫 是的 是的 是的 选修的
Eclipse Temurin 收养 是的 是的 是的 可选(Azul,IBM,红帽)
IBM Java SDK
(在版本11中移至IBM Semeru运行时认证版)
IBM 是的 是的 是的
IBM Semeru运行时认证版 IBM 是的 是的 可选(IBM)
IBM Semeru Runtime Open Edition IBM 是的 是的 可选(IBM)
喷气桥运行时 喷气桥 是的 是的
Microsoft build of OpenJDK 微软 是的 是的 是的 可选(在Azure上)
Ojdkbuild
(停产)
是的 是的 是的
OpenLogic OpenJDK OpenLogic 是的 是的 选修的
GRAALVM社区版 graalvm 是的 是的
Oracle Graalvm企业版 Oracle 是的 是的 是的
Oracle Java SE Oracle 是的 是的 是的
Oracle OpenJDK Oracle 是的 是的
openjdk的红帽建造 红帽 是的 是的 是的 是的
SAP SAPMACHINE 树液 是的 是的 是的 可选(用于SAP产品)
Tencent Konajdk 腾讯 是的 是的 是的 选修的

冰茶和包含在软件分布中

为了捆绑Fedora和其他免费Linux发行版的OpenJDK,OpenJDK只需使用免费软件组件即可构建。由于类库中的固定组件以及构建系统中隐式假设的构建,即用于构建OpenJDK的JDK是Sun JDK,因此这是不可能的。为了实现开放性, Red Hat于2007年6月开始了ICEDTEA项目。它以OpenJDK/ GNU Class Paths Hybrid的生活开始,可用于引导OpenJDK,用GNU Class Pather的代码代替了支出。

2007年11月5日,Red Hat签署了Sun贡献者协议和OpenJDK社区TCK许可证。本协议的第一个好处之一是与IceDea项目更加一致,该项目将Fedora ,Linux Distribution和Jboss (应用程序服务器,Linux环境中的技术)汇总在一起。 ICEDTEA为OpenJDK项目中剩余的几个专有部分提供了免费的软件替代方案。

2008年5月, Fedora 9和Ubuntu 8.04分布完全基于免费开源代码。 Fedora 9是基于Sun而不是OpenJDK7的OpenJDK6来源,这是第一个使用ICEDTEA6发货的版本。它也是第一个将OpenJDK用于软件包名称的人(通过OpenJDK商标协议)而不是ICEDTEA。 ubuntu也首先包装了iCEDTEA7,然后再搬到iCedTea6。 ICEDTEA6的包装也是为Debian创建的,并包括在Lenny中。 2008年7月12日, Debian接受了不稳定的OpenJDK-6,后来被包括在马stable中。 OpenJDK也可在OpenSuseRed Hat Enterprise Linux和Rhel衍生产品(例如CentOS)上使用。

2008年6月,Red Hat宣布,使用ICEDTEA 6建造的Fedora 9上的OpenJDK包装的二进制文件通过了技术兼容套件测试,并可能声称是完全兼容的Java 6实施。 2009年7月, Ubuntu 9.04的ICEDTEA 6二元构建通过了Java SE 6 TCK中的所有兼容性测试。

自2008年8月以来,OpenJDK 7在MACOS和其他BSD变体中可用。

Android Nougat上,OpenJDK取代了现在删除的Apache Harmony作为移动操作系统源代码中的Java库。 Google因使用Harmony的重新实施版权重新实施版权和专利侵权而与Oracle进行了法律纠纷。同时还指出,这种变化是在Android和其他平台上的Java之间创建一个更一致的平台,但该公司承认该开关是由诉讼激励的,认为Oracle已通过将其通过GPL许可使用OpenJDK代码授权使用其使用。 。

历史

太阳的承诺和最初释放

Sun2006年在Javaone宣布,Java将成为开源软件,2006年10月25日,在Oracle OpenWorld会议上, Jonathan Schwartz表示,该公司打算在30至60天内宣布核心Java平台的开放式外源。

Sun于2006年11月13日在GNU通用公共许可下发布了Java热点虚拟机和编译器作为免费软件,并承诺将在2007年3月之前将JDK的其余部分(包括Java运行时环境)放在GPL下。 ,“除了一些Sun没有权利以GPL下以源形式发布的组件外,除了。根据自由软件的倡导者理查德·斯塔尔曼(Richard Stallman)的说法,这将结束“ Java陷阱”,他认为适用于Java的供应商锁定,并在Java中编写的程序。

班级库的发布

在他们承诺发布Java开发套件(JDK)几乎完全基于2007年上半年的免费和开源代码之后,Sun于2007年5月8日在GPL下发布了Java类库的完整源代码,除了对于某些有限的部分,第三方已将其许可给太阳,而Sun无法在GPL下重新许可。收支平衡零件列表中包括Java图形用户界面(GUI)的几个主要组件。 Sun表示,它计划用替代实现代替其余的专有组件,并使集体库完全免费。

当最初于2007年5月发布时,OpenJDK类图书馆的4%仍然是专有的。在2008年5月出现OpenJDK 6时,仍保留了不到1%( SNMP实现,这不是Java规范的一部分),这使得在没有任何二进制插件的情况下可以构建OpenJDK。二进制插头的需求随后从OpenJDK 7中删除,作为2009年4月B53的一部分。

在第一年的过程中,这是通过Sun Microsystems和OpenJDK社区的作品而成为可能的。每个负担要幺以免费和开源软件释放,要幺替换为替代方案。从2010年12月开始,所有所谓的二进制插头都被开源替换替代,使整个JDK开源,并且不再需要二进制插头

社区改进

2007年11月5日, Red Hat宣布与Sun达成协议,签署了Sun的广泛贡献者协议(该协议涵盖了所有Red Hat Engineers的所有由Sun-Led的免费和开源软件项目)和Sun的OpenJDK社区技术兼容性套件(TCK(TCK) )许可协议(该协议使公司访问测试套件,该套件确定基于OpenJDK的项目是否符合Java SE 6规格)。

同样在2007年11月,搬运工集团是在OpenJDK上创建的,以帮助努力将OpenJDK移植到不同的处理器架构操作系统。由Kurt Miller和Greg Lewis和Mac OS X Porting Project(基于BSD One)领导的BSD Porting项目(由Landon Fuller的BSD One)领导,这表示有兴趣通过Porters Group加入OpenJDK。截至2008年1月,这都是邮件列表讨论的一部分。在搬运工集团上进行正式化的另一个项目是Bryan Varner领导的Haiku Java团队。

2007年12月,Sun将OpenJDK的修订控制Teamware转移到Mercurial (后来又转移到GitGithub ),这是将其释放到开源社区的过程的一部分。

OpenJDK具有相对严格的接受代码贡献的程序:每个提议的贡献都必须由另一个OpenJDK委员会审查,并且贡献者必须签署Sun/Oracle贡献者协议(SCA/OCA)。最好还应该进行JTREG测试,证明该错误已修复。最初,外部补丁提交过程很慢,直到2008年9月,对代码库的承诺才由太阳工程师制作。该过程有所改善,截至2010年,从OpenJDK 7到OpenJDK 6的简单补丁和备用运动可以在数小时内而不是几天内进行。

2011年,首次发布了OpenJDK 6.0到OS/2的非正式港口。该端口包含在OS/2衍生物Arcaos中。

2013年9月25日,Microsoft和Azul Systems合作创建了Zulu,这是Windows Azure Cloud的用户的OpenJDK构建。 Zulu可从社区网站Zulu.org免费下载。也可以通过Canonical的Juju Charm商店,Docker Hub和Azul Systems存储库在Amazon Web服务上获得Zulu。 Azul为OpenJDK项目贡献了错误修复和增强功能,并在员工上拥有几个项目承诺。 Red Hat在2017年初辞职了OpenJDK 6的领导,然后由Azul Systems提出。

自2016年4月以来,在ojdkbuild的Github上的Microsoft Windows的OpenJDK构建了无支撑的社区构建,并以Oracle JDK的更新发布。从Build 8U151开启,MSI-Installer提供了一个可选的组件,用于基于ICEDTEA-WEB项目使用Java Web启动

2020年,发布了ITANIUM平台上的OpenVM的OpenJDK 8港口。

自项目成立以来,对OpenJDK的外部贡献数量正在增加。 2018年9月发布的OpenJDK 11收到了20%的外部修复程序,并带来了17个新的JEP(功能),其中3个由社区贡献。即JEP 315:“改善Aarch64 Interinsics”(由Bellsoft贡献),JEP 318:“ Epsilon:No-Op垃圾收集器”(由Red Hat)和JEP 331:“低头堆型分析”(由Google贡献)(由Google贡献) 。

与IBM,Apple和SAP合作

2010年10月11日, IBM是迄今为止Apache Harmony项目的最大参与者,决定加入Oracle参加OpenJDK项目,实际上将其努力从Harmony转移到OpenJDK。 IBM Linux和开源负责人Bob Sutor博客说:“ IBM将将其开发工作从Apache Project Harmony转移到OpenJDK”。

2010年11月12日, Apple Inc. (拆除自己的Java运行时端口仅三周后),Oracle Corporation宣布了Mac OS X的OpenJDK项目。苹果将为Java SE所需的大多数关键组件,工具和技术贡献7在Mac OS X上实现,包括基于32位和64位热点的Java虚拟机,类库,网络堆栈和新图形客户端的基础。

2011年1月11日,Mac OS X端口项目是在OpenJDK上创建的, Apple对该项目做出了第一个公共贡献。最初的Apple贡献建立在OpenJDK BSD端口上。

2011年7月, SAP AG宣布SAP正式加入了OpenJDK项目。

也可以看看