Введение
Свободные реализации Java — это программные проекты, которые реализуют технологии Java от Oracle и распространяются под лицензиями свободного программного обеспечения, что делает их свободным программным обеспечением. Компания Sun выпустила большую часть исходного кода Java как свободное программное обеспечение в мае 2007 года, поэтому его теперь можно почти рассматривать как свободную реализацию Java. Реализации Java включают в себя компиляторы, среды выполнения, библиотеки классов и т.д. Сторонники свободного и открытого программного обеспечения называют свободные или открытые виртуальные машины Java свободными средами выполнения или свободными Java-средами выполнения. Некоторые сторонники этого движения предпочитают не использовать термин "Java" из-за связанных с ним проблем с товарными знаками. Поэтому, несмотря на то, что это "движение за свободную Java", они избегают термина "свободные Java-среды выполнения".
Free Java implementations are software projects that implement Oracle's Java technologies and are distributed under free software licences, making them free software. Sun released most of its Java source code as free software in May 2007, so it can now almost be considered a free Java implementation. Java implementations include compilers, runtimes, class libraries, etc. Advocates of free and open source software refer to free or open source Java virtual machine software as free runtimes or free Java runtimes. Some advocates in this movement prefer not to use the term "Java" as it has trademark issues associated with it. Hence, even though it is a "free Java movement", the term "free Java runtimes" is avoided by them.
С середины 1990-х до 2006 года
Первым свободным проектом, предлагавшим значительные части функциональности платформы Java, вероятно, был guavac, разработка которого началась до ноября 1995 года. С тех пор движение свободного программного обеспечения создало другие компиляторы Java, наиболее заметным из которых является GNU Compiler for Java. К другим относятся Eclipse Java Compiler (ECJ), поддерживаемый Eclipse Foundation, и Jikes, который больше не активно поддерживается. Начиная с версии 4.3 GNU Compiler Collection, GCJ (его Java-компилятор) использует ECJ в качестве фронтенда для разбора Java-кода. Примеры свободных сред выполнения включают Kaffe, SableVM и gcj. GNU Classpath – основная библиотека классов свободного программного обеспечения для Java. Большинство свободных сред выполнения используют GNU Classpath в качестве своей библиотеки классов. В мае 2005 года был анонсирован Apache Harmony, однако проект выбрал лицензию Apache, которая в то время была несовместима со всеми существующими свободными реализациями Java. Другим событием в мае 2005 года стало объявление о том, что OpenOffice.org 2.0 будет зависеть от функций Java, которые не могли предоставить свободные реализации. После возникших споров OpenOffice.org принял руководство, требующее его работы со свободными реализациями Java. Примечательными приложениями, которые уже работали со свободными реализациями Java до ноября 2006 года, являются OpenOffice.org и Vuze, оба из которых работают при компиляции с помощью GCJ.
Объявление Sun за ноябрь 2006 года
13 ноября 2006 года компания Sun выпустила свой компилятор javac под лицензией GNU General Public License. По состоянию на сентябрь 2007 года, помимо javac, Sun также опубликовала исходный код HotSpot (виртуальной машины) и почти всю библиотеку классов Java как свободное программное обеспечение. Выполнив свое обещание выпустить полностью собираемый JDK, основанный преимущественно на свободном и открытом исходном коде в первой половине 2007 года, Sun опубликовала полный исходный код библиотеки классов под лицензией GPL 8 мая 2007 года, за исключением некоторых ограниченных частей, лицензированных Sun у третьих сторон, которые не желали распространять свой код под лицензией свободного программного обеспечения. Sun заявила о намерении заменить оставшиеся проприетарные и закрытые части исходного кода альтернативными реализациями и сделать библиотеку классов полностью свободной и открытой. Поскольку в JDK присутствует код с ограничениями по лицензированию, Sun продолжит использовать его в коммерческих релизах до тех пор, пока он не будет заменен полностью функциональными альтернативами с открытым исходным кодом.