Free Java implementations


Free Java implementations

Free Java implementations are software projects that implement Sun Microsystem's Java technologies and are distributed under free software licences, thus 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.

AdvocatesWho of free and open source software refer to free or open source Java virtual machine software as free runtimes or free Java runtimes.

Some advocatesWho 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.

Mid-90s to 2006

Probably the first free project to offer substantial parts of Java platform functionality was guavac, which began some time before November 1995. [cite web
url=http://www.ccs.neu.edu/research/demeter/course/f96/hw/1/guavac-info
title=Announcing: guavac 0.2.5, A free compiler for the Java language
date=1996-09-07
accessdate=2007-06-24
] [cite web
url=http://fresh.t-systems-sfr.com/unix/src/www/guavac-1.2.tar.gz:a/guavac-1.2/compiler/ChangeLog
title=Changelog of guavac, showing the first release happening in January 1996
quote=Wed Nov 22 05:43:07 1995 [...] CompilerMain.C, Compiler. C, Compiler.h, lexer.l, parser.y: Initial revision
]

Since then, the free software movement developed other java compilers, most notably the GNU Compiler for Java. Others include ECJ the Eclipse Java Compiler, which is maintained by the Eclipse Foundation, and Jikes, which is no longer actively maintained. With the upcoming GCC 4.3 release, GCJ (GCC for Java) will use ECJ parser front-end, for parsing Java. [cite web
url=http://gcc.gnu.org/gcc-4.3/changes.html
title=GCC 4.3 Release Series -- Changes, New Features, and Fixes
accessdate=2007-10-08
]

Examples of free runtime environments include Kaffe, SableVM, and gcj.

GNU Classpath is the main free software class library for Java. Most free runtimes use GNU Classpath as their class library.

In May 2005, Apache Harmony was announced, however, the project chose the Apache License, which was at the time incompatible with all existing free Java implementations.

Another event in May 2005 was the announcement that OpenOffice.org 2.0 would depend on Java features which free software implementations couldn't provide. Red Hat solved this problem by extending the free software implementations to be adequate for their purposes.

Notable applications that already worked with free software Java implementations before November 2006 include OpenOffice.org and Vuze, both of which work when compiled with GCJ.

un's November 2006 announcement

In 13 November 2006, Sun released its compiler, javac, under the GNU General Public License.

As of September 2007, as well as javac, Sun has released the code of HotSpot (the virtual machine) and almost all the Java Class Library as free software.

Following their promise to release a fully buildable JDK based almost completely on free and open source code in the first half of 2007 [ [http://www.sun.com/software/opensource/java/faq.jsp#b4 OpenJDK FAQ] ] , Sun released the complete source code of the Class library under the GPL on May 8, 2007, except some limited parts that were licensed by Sun from 3rd parties who did not want their code to be released under a free software licence. [cite web
url=http://mail.openjdk.java.net/pipermail/announce/2007-May.txt
title=Open JDK is here!
publisher=Sun Microsystems
date=2007-05-08
accessdate=2007-05-09
] Sun has stated that it aims to replace the parts that remain proprietary and closed source with alternative implementations and make the class library completely free and open source. Since there's some encumbered code in the JDK, Sun will continue to use that code in commercial releases until it's replaced by fully-functional free and open-source alternatives.

After the May 2007 code release

As of May 2008, the only part of the Class library that remains proprietary and closed-source (4% as of May 2007 for OpenJDK 7 [cite web
url=http://fitzsim.org/blog/?p=17
title=Plans for OpenJDK
last=Fitzsimmons|first=Thomas
date=2007-05-18
accessdate=2007-05-22
] , and less than 1% as of May 2008 and OpenJDK 6cite web
url=http://langel.wordpress.com/2008/03/13/openjdk-in-fedora-9/
title=OpenJDK to replace IcedTea in Fedora 9
last=Angel|first=Lillian
date=2008-03-13
accessdate=2008-04-05
] cite web
url=http://developer.redhatmagazine.com/2008/03/12/openjdk-to-replace-icedtea-in-fedora-9/
title=OpenJDK in Fedora 9!
last=Wade|first=Karsten
publisher=redhatmagazine.com
quote="Thomas Fitzsimmons updated the Fedora 9 release notes source pages to reflect that Fedora 9 would ship with OpenJDK 6 instead of the IcedTea implementation of OpenJDK 7. Fedora 9 (Sulphur) is due to release in May 2008."
date=2008-03-13
accessdate=2008-04-05
] ) is [cite web
url=http://weblogs.java.net/blog/robogeek/archive/2007/10/openjdk_encumbr.html
title=Plans for OpenJDK
last=Herron|first=David
date=2007-10-04
accessdate=2007-10-09
] cite web
url=http://mail.openjdk.java.net/pipermail/jdk6-dev/2008-May/000058.html
title=OpenJDK 6 b10 source posted
date=2008-05-30
accessdate=2008-06-01
] :
* The SNMP implementation.

Since the first May 2007 release, Sun Microsystems, with the help of the community, has released as Open-source or replaced with Open-source alternatives almost all the encumbered code:
* All the audio engine code, including the software synthetizer, has been released as Open-source [ [http://openjdk.java.net/projects/audio-engine/ audio-engine project page] ] . The closed-source software synthesizer has been replaced by a new synthesizer developed specifically for OpenJDK called "Gervill" [cite web
url=https://gervill.dev.java.net/
title=Gervill - Software Synthesizer
accessdate=2008-06-01
] ,
* All cryptography classes used in the Class library have been released as Open-source [cite web
url=http://mail.openjdk.java.net/pipermail/security-dev/2007-September/000015.html
title=Crypto has been added to OpenJDK
date=2007-09-27
accessdate=2007-10-07
] ,
* The code that scales and rasterizes fonts has been replaced by FreeType [ [http://openjdk.java.net/projects/font-scaler/ font-scaler projectpage] ] [http://openjdk.java.net/groups/2d/ Java2D project page] ] [cite web
url=http://mail.openjdk.java.net/pipermail/font-scaler-dev/2007-August/000011.html
title=Freetype font rasteriser
date=2007-08-07
accessdate=2007-11-24
]
* The native color management system has been replaced by LittleCMS . There is a pluggable layer in the JDK, so that the commercial version can use the old color management system and OpenJDK can use LittleCMS.
* The anti-aliasing graphics rasterizer code has been replaced by the Open-sourced Pisces renderer used in the phoneME project [ [https://phoneme.dev.java.net/ phoneme.dev.java.net/] ] [ [http://openjdk.java.net/projects/graphics-rasterizer/ graphics-rasterizer project page] ] . This code is fully functional, but still needs some performance enhancements [cite web
url=http://mail.openjdk.java.net/pipermail/2d-dev/2007-October/000078.html
title=Open Source rasterizer
publisher=Sun Microsystems
last=Graham|first=Jim
date=2007-10-03
accessdate=2007-05-09
] ,
* The Javascript plugin has been open-sourced (the JavaScript engine itself was open-sourced from the beginning) [cite web
url=http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=85
title=Javascript is encumbered and there is no javascript plugin support.
publisher=IcedTea
quote="Changing Summary. JavaScript is no longer encumbered, but we still need liveconnect support."
date=2008-03-11
accessdate=2008-06-01
] .

Because of these encumbered components, it was not possible to build OpenJDK only with Free Software components. In order to be able to do this before the whole class library is made free, and to be able to bundle OpenJDK in Fedora Core and other free Linux distributions, a project called IcedTea has been started by Red Hat. It is basically an OpenJDK/GNU Classpath hybrid that can be used to bootstrap OpenJDK using only Free Software. [cite web
url=http://article.gmane.org/gmane.comp.java.openjdk.distro-packaging.devel/5
title=Experimental Build Repository at icedtea.classpath.org
date=2007-06-07
last=Andrew|first=Haley
accessdate=2007-06-09
] [cite web
url=http://developer.classpath.org/pipermail/classpath/2007-June/002109.html
title=Experimental Build Repository at icedtea.classpath.org
last=Mark|first=Wielaard
date=2007-06-07
accessdate=2007-06-09
]

As of March 2008, the Fedora 9 distribution has been released with OpenJDK 6 instead of IcedTea. Some of the stated reasons for this changes are:
* Sun has replaced most of the encumbrances for which IcedTea was providing replacements (there is less than 1% of encumbered code in the class library, and this code is not necessary to run OpenJDK).
* OpenJDK 6 is a stable branch, whereas OpenJDK 7 is unstable and not expected to ship a stable release until 2009.
* Sun has licensed the OpenJDK trademark for use in Fedora.

On June 2008, it was announced that IcedTea6 (as the packaged version of OpenJDK on Fedora 9) has passed the Technology Compatibility Kit tests and can claim to be a fully compatible Java 6 implementation [cite web
url=http://blog.softwhere.org/archives/196
title=Java is finally Free and Open
date=2008-06-19
last=Rick|first=Sharples
] .

See also

* Java (software platform)
* Javac
* HotSpot
* OpenJDK
* GNU Classpath, GCJ, and GIJ
* IcedTea
* List of Java virtual machines

References

External links

* [http://www.gnu.org/philosophy/java-trap.html Free But Shackled - The Java Trap]
* [http://developer.classpath.org/support/ Escaping the Java Tr
]
* [http://www.infoq.com/news/2007/06/openjdk-hybrids Hybrids Combine GNU Classpath and OpenJDK]
* [http://meetings-archive.debian.net/pub/debian-meetings/2007/debconf7/low/115_State_of_the_Coffee_Cup.ogg Hour long 2007 video of a workshop with Sun, GGJ, and GNU Classpath developers]
* [http://wiki.debian.org/Java/ResolveJavaNaming Java Trademark Issues]


Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Java Platform, Micro Edition — Java editions Java Card Micro Edition (ME) Standard Edition (SE) Enterprise Edition (EE) …   Wikipedia

  • Java Management Extensions — (JMX) is a Java technology that supplies tools for managing and monitoring applications, system objects, devices (e. g. printers) and service oriented networks. Those resources are represented by objects called MBeans (for Managed Bean). In… …   Wikipedia

  • Java (software platform) — Not to be confused with JavaScript. Java Original author(s) Oracle Corporation Developer(s) James Gosling / Sun Microsystems …   Wikipedia

  • Java Class Library — The Java Class Library is a set of dynamically loadable libraries that Java applications can call at runtime. Because the Java Platform is not dependent on any specific operating system, applications cannot rely on any of the existing libraries.… …   Wikipedia

  • Free Software Foundation — infobox organization image border = size = 300px caption = msize = mcaption = abbreviation = FSF motto = Free Software, Free Society formation = 1985 10 04 extinction = n/a type = NGO and Non profit organization status = Foundation purpose =… …   Wikipedia

  • Java class file — This article is about the data format. For classes in Java, see Class (computer programming). Class Filename extension .class Developed by Sun Microsystems Type of format Bytecode In the Java programming language, source files (.java files) are… …   Wikipedia

  • Java (programming language) — infobox programming language name = Java paradigm = Object oriented, structured, imperative year = 1995 designer = Sun Microsystems latest release version = Java Standard Edition 6 (1.6.0) latest release date = latest test version = latest test… …   Wikipedia

  • Java Web Services Development Pack — The Java Web Services Development Pack (JWSDP) is a free software development kit (SDK) for developing Web Services, Web applications and Java applications with the newest technologies for Java.JWSDP has been… …   Wikipedia

  • Java (informatique) — Java (langage) Pour les articles homonymes, voir Java.  Ne doit pas être confondu avec JavaScript …   Wikipédia en Français

  • Java (langage de programmation) — Java (langage) Pour les articles homonymes, voir Java.  Ne doit pas être confondu avec JavaScript …   Wikipédia en Français


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.