自由的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编译。

参考资料 

Java虚拟机
自由虚拟化软件