OpenJDK
![]() | |
开发人员 | Oracle ,OpenJDK和Java社区, Red Hat , Azul Systems , IBM , Microsoft , Amazon , Apple , SAP |
---|---|
初始发行 | 2007年5月8日 |
稳定版本 | 21 ![]() |
存储库 | |
写在 | C ++和Java |
作业系统 | Linux , FreeBSD , MacOS , Microsoft Windows , OpenIndiana ;正在进行的其他几个端口 |
类型 | Java平台 |
执照 | 仅GPL-2.0链接异常 |
网站 | OpenJDK .org |
OpenJDK ( Open 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也可在OpenSuse , Red 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代码授权使用其使用。 。
历史
太阳的承诺和最初释放
Sun于2006年在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 (后来又转移到Git和Github ),这是将其释放到开源社区的过程的一部分。
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项目。