自由的Java实现

自由的Java实现是用来实现Oracle Java，并在自由软件许可证下发布的软件。Sun公司在2007年5月将大部分Java的实现代码以开源协议发布，所以Oracle Java基本上是开源实现，但是从2019年4月16日起，Oracle Java颁布了新的许可协议，这将会对Oracle Java的商业使用造成影响。Java实现包括编译器、运行时、类库等。自由软件的倡导者们将自由的Java虚拟机称为自由Java运行时或自由的运行时。

一些自由软件运动的倡导者不愿意使用“Java”一词，因为它存在版权问题。因此，即使是“自由Java运动”，他们也避免使用“自由Java运行时”一词。

20世纪90年代中期到2006年
第一个提供大量Java平台功能的自由软件项目是Guavac，它在1995年11月左右开始。此后，自由软件运动开发了其他Java编译器，最著名的是GNU Java编译器。其他还包括由Eclipse基金会维护的Eclipse Java编译器（ECJ）和不再积极维护的Jikes。从GCC4.3开始，GCJ（GCC所附带的Java编译器）使用ECJ解析器前端来解析Java，但GCJ于不久后停止开发。

自由的运行时的例子则包括Kaffe、SableVM和gcj。

GNU Classpath是Java的主要自由类库。大多数自由的运行时都使用GNU Classpath作为其类库。

2005年5月，Apache Harmony宣布成立，然而，该项目选择了Apache许可证，而Apache许可证在当时与所有现有的自由Java实现不兼容。

2005年5月的另一个事件是OpenOffice.org宣布OpenOffice 2.0将依赖于某些特定的Java功能，而这些功能是自由软件实现无法提供的。在争议之后，OpenOffice.org采用了一个指导方针，要求它能够与自由的Java实现相兼容。

在2006年11月之前已经与自由软件Java实现合作的著名应用程序包括OpenOffice.org和Vuze，这两个应用程序都可以使用GCJ编译。

2006年11月的公告
2006年11月13日，Sun公司根據GNU General Public License發布了其編譯器javac。

截至2007年9月，Sun除了釋出javac外，也將 HotSpot 和幾乎所有Java Class Library的程式碼作為自由軟體發布。

根據他們承諾於2007年上半年基本完全基於自由和開放原始碼代碼釋出一個完全可構建的JDK，OpenJDK FAQ  Sun 於2007年5月8日釋出了類庫的完整源代碼，除了一些有限的部分，這些部分是由Sun 從第三方獲得許可，這些第三方不希望他們的代碼在自由軟件許可下釋出。  Sun已經表示，它的目標是用替代實現來取代其餘專有和封閉源代碼的部分，並使類庫完全免費和開源。由於JDK中有一些受限代碼，Sun將繼續在商業發行版中使用該代碼，直到被完全功能齊全的免費和開源替代方案取代為止。

2007年5月的代碼發布之後

截至2008年5月，類別庫中僅有的專有部分是（在OpenJDK 7中截至2007年5月佔4%，在OpenJDK 6中截至2008年5月佔不到1%）是SNMP實現部分。

自2007年5月首次發布以來，昇陽電腦在社區的幫助下，已經釋出了幾乎所有受限制的程式碼，並提供了免費軟體（或替代的免費軟體）。

 所有音頻引擎代碼，包括軟體合成器，都已作為開源碼發布。 專門為 OpenJDK 開發的新合成器 Gervill 取代了封閉源軟體合成器。
 所有在該類別庫中使用的密碼學類別均已作為自由軟體發布。
 FreeType 已取代了縮放和光柵化字體的程式碼。
 LittleCMS 已取代原生的顏色管理系統。 在JDK中有一個可插拔的層，因此商業版本可以使用舊的顏色管理系統，而OpenJDK可以使用LittleCMS。
 在phoneME項目中使用的開放原始碼Pisces渲染器已取代抗鋸齒圖形光柵化程式碼。phoneme.dev.java.net/  這段程式碼功能正常，但仍需要一些效能增強。
 JavaScript 外掛程式碼已開源（JavaScript 引擎自始至終都是開源的）。

由於先前存在負擔的元件，無法僅使用免費軟體元件建構OpenJDK。為了在整個類別庫變為免費之前能夠做到這一點，並且能夠在Fedora Core和其他自由Linux發行版中捆綁OpenJDK，紅帽公司已經啟動了一個名為IcedTea的專案。這基本上是一個OpenJDK/GNU Classpath混合體，可以用於使用僅免費軟體來啟動OpenJDK。

截至 2008 年 3 月，Fedora 9 發行版已使用 OpenJDK 6 取代 OpenJDK 7 的 IcedTea 實作。 這種改變的一些聲明原因包括:

 昇陽電腦已經取代了IcedTea提供的大多數替代方案，現在所剩下的受限制代碼佔類庫的少於1%（這段代碼對運行OpenJDK並不必要）。
 OpenJDK 6 是穩定分支，而 OpenJDK 7 不穩定，預計直到 2009 年才會發布穩定版本。
 昇陽電腦已經獲得了OpenJDK商標在Fedora中使用的許可。

在2008年6月，宣布IcedTea 6（作為 Fedora 9 上打包的OpenJDK版本）已通過了技術相容性套件的測試，可以宣稱是完全相容的Java 6實作。

在2013年9月，Azul Systems推出了Zulu，這是一個免費的、開源的OpenJDK 版本，適用於Windows Server和Microsoft Azure雲端。後續版本增加了對Mac OS X、多個Linux版本和Java平台標準版8的支援。Zulu已經通過OpenJDK社區技術兼容性套件認證，符合Java SE 8、7和6。Core

Amazon已發布了Amazon Corretto，這是一個無需費用的多平台、可投入生產使用的Open Java Development Kit發行版。它是在GPL v2下釋出的，並附有Classpath Exception的GPL連結例外。Java 8和Java 11的長期支持版本可用。它於2019年1月31日首次公開發布。

在 2017 年，Eclipse Foundation 推出了 AdoptOpenJDK，現在更名為 Adoptium，其主要目標是 "促進並支援用於整個 Java 生態系統的高品質運行時和相關技術"

另請參閱

 Java
 Javac
 HotSpot
 Apache Harmony
 OpenJDK
 GNU Classpath 和 GCJ
 IcedTea
 JamVM
 IKVM.NET
 List of Java virtual machines
 Comparison of Java virtual machines
 Adoptium

 参考资料 

Category:Java虚拟机
Category:自由虛擬化軟體