OpenJDK是Java平台标准版(Java SE)的免费开源实现,完全自由,开放源码。它是Sun Microsystems在2006年开始的一项努力的结果,于2009年4月15日正式发布。OpenJDK是Java SE的官方参考实现,自版本7以来一直如此。该软件只能在i386和
AMD64机器上运行。OpenJDK的实现根据GPL-2.0-only许可证进行许可,但有一个链接例外。如果没有GPL链接例外,链接到Java类库的组件将受到GPL许可证的条款约束。
甲骨文公司在2010年收购Sun Microsystems之后接管了这个专案。
OpenJDK做为GPL许可(GPL-licensed)的Java平台的开源化实现,Sun正式发布它已经六年有余。从发布那一时刻起,Java社区的大众们就又开始努力学习,以适应这个新的开源代码基础(code-base)。
Sun发布的OpenJDK只能运行在i386和
AMD64机器上。OpenJDK可以运行在系统上,特别是那些基于PowerPC的机器上。为了解决这个问题,发起了IcedTea项目来完成移植。该项目基于Sun的
C++解释程序,为OpenJDK向PowerPC移植构造了一个单独的解释程序。后来成为Zero,它是一个真正可移植的“零汇编程序”的版本。想到的,一个纯的解释程序确实要慢于Java实现中常用到的高性能的JIT(Just In
时间)编译器,但正在努力提高其性能。
OpenJDK项目生成许多重要组件,包括
虚拟机(HotSpot)、Java类库和
JAVA编译器(
javac)。OpenJDK最初仅基于Java平台的JDK 7版本。自
JDK 10以来,生成Java SE平台开源参考实现的工作已移交给JDK项目。此长期进行的项目将生成所有未来的JDK特性版本,并将在一个基于时间的严格模型下每六个月发运一个特性版本。
IcedTea项目为了将OpenJDK捆绑到
fedora和其他免费Linux发行版中而启动,它提供了OpenJDK项目中剩下的少数专有部分的
自由软件备用版本。2008年5月,Fedora 9和Ubuntu 8.04发行版本中包含了基于完全自由开放源码代码的IcedTea 6。OpenJDK也可用于openSUSE、Red Hat Enterprise Linux和基于
Red Hat Enterprise Linux的衍生产品(如
centos)。在Android Nougat中,OpenJDK已取代现已停止的Apache Harmony,成为这个移动操作系统的源码中Java库。
OpenJDK的历史始于2006年,当时Sun Microsystems宣布Java将成为免费开源软件。2007年,Sun发布了Java类库的完整源码,并承诺用备用实现替换剩余的专有组件。2008年,OpenJDK 6通过了技术兼容性套件(TCK)测试,成为一个完全兼容的Java 6实现。2010年,IBM决定加入
Oracle数据库的OpenJDK项目,而
苹果公司和Oracle宣布了适用于Mac OS X的OpenJDK项目。2011年,
思爱普 AG宣布已正式加入OpenJDK项目。OpenJDK获得外部贡献的数量还在增长,2018年发布的OpenJDK 11获得了20%的外部修复,并增加了17个新问题报告(JEP),其中有3个是由社区作出的贡献。
OpenJDK的兼容性和移植性得到了社区的广泛支持。例如,Red Hat与Sun签署了协议,使得
fedora、JBoss和OpenJDK项目更紧密结合在一起。Porters小组在OpenJDK中成立,旨在协助将OpenJDK移植到不同的处理器架构和操作系统。此外,
微软与Azul Systems合作创建了Zulu,即适用于Windows Azure云用户的OpenJDK版本。从2016年4月起,
GitHub中出现了微软Windows的OpenJDK非受支持社区版本,该版本位于项目ojdkbuild中。2020年,针对Itanium平台上的
openvms,已经发布了一个用于OpenJDK 8的移植版本。