This article is outdated. Please update this article to reflect recent events or newly available information. (September 2011)
This article is about the Java Virtual Machine. For the Bulgarian band, see Kaffe (band).
1.1.9 / February 26, 2008 (2008-02-26)
C and Java
Java Virtual Machine
GNU General Public License
Kaffe is a clean room design of a Java Virtual Machine. It comes with a subset of the Java Platform, Standard Edition (Java SE), Java API, and tools needed to provide a Java runtime environment. Like most other Free Java virtual machines, Kaffe uses GNU Classpath as its class library.
Kaffe, first released in 1996, was the original open-source Java implementation. Initially developed as part of another project, it grew so popular that developers Tim Wilkinson and Peter Mehlitz founded Transvirtual Technologies, Inc. with Kaffe as the company's flagship product. In July 1998, Transvirtual released Kaffe OpenVM under a GNU General Public License. Now it is developed by a world-wide team of programmers. Beside the mailing list, the developers can often be reached via IRC in the #kaffe channel on irc.freenode.net.
Kaffe is a lean and portable virtual machine, although it is significantly slower than commercial implementations. When compared to the reference implementation of the Java Virtual Machine written by Sun Microsystems, Kaffe is significantly smaller; it thus appeals to embedded system developers. It comes with just-in-time compilers for many of the CPU architectures, and has been ported to more than 70 system platforms in total. It runs on devices ranging from embedded SuperH devices to IBM zSeries mainframe computers, and it will even run on a PlayStation 2.
Unlike other implementations, in the past Kaffe used GNU Multi-Precision Library (GMP) to support arbitrary precision arithmetics. This feature has been removed from release 1.1.9, causing protests from people that claim they used Kaffe for the sole reason GMP arithmetic being faster than the typical pure java implementation, available in other distributions. The capability was removed to reduce the maintenance work, expecting that interested people will integrate GMP support into GNU Classpath or OpenJDK. Subsequently GNU Classpath introduced GMP support in version 0.98.