Open Source Virtual Machine projects

Project Name Author License JDK Version Platforms Language Threads GC JIT
Kaffe Tim Wilkinson, et al. GPL 1.2 (partly) x86, sparc, m68k, arm, mips, alpha, ppc, parisc

Windows,

Unix variants, DOS
C OS Threads Conservative Mark/Sweep Slow as hell

Kaffe is a cleanroom, open source implementation of a Java virtual machine and class libraries.

This is the oldest and by far the most complete clean room open source Java virtual machine implementation. However, the performance leaves a lot to be desired.

LaTTe MASS Lab, Seoul National University BSD-like 1.1 (No AWT) Sparc C OS Threads Fast incremental Adaptive

LaTTe is a virtual machine which is able to execute Java bytecode. It includes a novel JIT compiler targeted to RISC machines (specifically the UltraSPARC). The JIT compiler generates RISC code of good quality through a clever mapping of Java stack operands to registers with a negligible overhead. Additionally, the runtime components of LaTTe, including thread synchronization, exception handling, and garbage collection, have been optimized. As a result, the performance of LaTTe is competitive with that of Sun's JDK 1.2 production release and JDK 1.3 release candidate client/server VMs (HotSpot).

Originally based on Kaffe, this has come a long way.

Open Runtime Platform Intel Research ? ? x86 on Linux, Windows C ? Multiple Multilevel

ORP, Open Runtime Platform, implements advanced JIT and GC interfaces. These interfaces allow the JIT, GC and remaining runtime system to be developed in complete isolation and at independent rates. A major benefit is that JIT and GC researchers are relieved of the intractable task of developing a full system before they can innovate in their area of expertise.

The basic system incorporates a fast code generating JIT as well as an optimizing JIT. It also includes several GC algorithms, ranging from a simple mark-sweep algorithm to an advanced train algorithm.

Blackdown JDK for Linux Blackdown development team Sun CSL 1.3 ppc, x86, s390, sparc, arm C Green / Native Conservative Mark/Sweep None

Blackdown was the first group to port Java 1.0, 1.1, and then 1.2 to Linux.

Basically an uninspiring reference implementation, but the only one for Linux until fairly recently.

kissme John Leuner, et al. GPL 1.2 (Classpath, No AWT) x86, Linux C, JIT is in Java OS Threads Conservative Mark/Sweep None yet, plan to write in Java

kissme started its life as a Honours project by Stephen Tjasink while he was studying at the University of Cape Town. Initially the JVM was developed for a set-top box that came with a TV Satellite Decoder. To fulfill this goal the JVM was designed to run on a slow processor and with limited memory. One of unconventional aspects of the project was the need to store class files in ROM. The JVM was modified to be able to store the runtime class information on the ROM and then load it again when booting.

When Stephen did his Masters degree the next year, he decided to extend the VM to support orthogonal persistence. Persistent programming languages allow the programmer to indicate which objects in memory should be saved on secondary storage. The runtime (or a compiled in library) will ensure that the data is saved automatically and transparently on disk. When the program restarts it can retrieve this information transparently.

It uses Classpath libraries. JIT work started in February 2000, still not completed.

SableVM Sable group at McGill GPL 1.2 (Classpath) x86, Linux C ? Precise copying collector None

SableVM is an open-source virtual machine for Java, intended as a research framework for efficient execution of Java bytecode. The framework is essentially composed of an extensible bytecode interpreter using state-of-the-art and innovative techniques.

Interpreter-only, just barely runs "Hello, world!". However, they have some interesting techniques for run time services (thin locks, etc.)

Japhar Petter, et al. LGPL 1.2 (Classpath) x86, sparc, arm

Unix variants,

Win32, BeOS
C ? ? (None?) None

Japhar is the Hungry Programmers' Java VM. It has been built from the ground up without consulting Sun's sources.

Development seems to be slow. Moving from version 0.08 to 0.09 took 18 months (?).

CACAO Andreas Krall ? 1.0.2 Alpha C ? ? Simple

CACAO is 64 bit just-in-time (JIT) compiler for Java. It translates Java byte code on demand into native code for the ALPHA processor.

This doesn't seem to be in development anymore.

Open Source JIT compiler projects

Project Name Author License VM Platforms Language
OpenJIT Tokyo Institute of Technology BSD-like Any Sparc Java
The OpenJIT project is an ongoing Java (the programming language) JIT compiler project as a collaborative effort between Tokyo Institute of Technology and Fujitsu Laboratory, partly sponsored by the Information Promotion Agency of Japan. OpenJIT is a "reflective" JIT compiler in that not only it is almost entirely written in Java, but also that it bootstraps and compiles itself during execution of the user program, and compiler components coexist as first-class objects in user heap space. Thus, users can tailor and customize the compilation of classes at runtime for variety of purposes such as application-specific optimization and partial evaluation, dynamic, compiler-assisted environment adaptation of programs, debugging, language extension and experimentation, and other types of advanced compiler-based research and applications. OpenJIT even allows full dynamic update of itself by loading the compiler classes on the fly from the network.
TYA Albrecht Kleine GPL Blackdown, BSD x86 C

TYA is a JIT-compiler designed as an add-on to the Blackdown and BSD ports of JDK 1.1 and JDK 1.2 for x86-Linux and FreeBSD. TYA is ``100% unofficial'', in no way related to Sun.

Really, really slow JIT.

shuJIT Kazuyuki Shudo ? Linux, BSD x86 C

ShuJIT is a Just In Time compiler (JIT) for Sun Microsystems' Java Virtual Machine (JVM) (i.e. JDK, JRE) and Intel IA-32 (x86) processors. It works on Linux and FreeBSD.

Performance is average. He has my photo on his page, from Java Grande 2000.

ElectricalFire Mozilla.org Netscape PL Mozilla x86 C

ElectricalFire is a Java Virtual Machine that uses JIT (Just In Time) compilation techniques to accelerate Java code execution. ElectricalFire was designed from the start to generate high-performance machine code and to be portable to many different processor architectures.

It hasn't been updated in over a year. This project is dead.

A team of programmers two months to get Sieve to compile correctly...

Briki Kaffe
Briki is a now defunct research project to implement an optimizing JIT, which was based on Kaffe.

Open Source VM extension projects

Alta ? GPL ? ? ? ? ? ?
The Alta Virtual Machine is a Java-compatible Virtual Machine designed to provide nested process services to Java applications. Alta is based on Kaffe.
Guaran???? GPL
Guaran???? is a reflective architecture that aims at simplicity, flexibility, security and reuse of meta-level code. It uses Kaffe as its base.
Kiev GPL
Kiev is a compiler which extends and unite Java and Prolog. A version of Kaffe is used as a virtual machine to provide support for extended bytecode.
PJama University of Glasgow and SunLabs ? 1.1.7 N/A N/A N/A N/A N/a

The PJama started in September 1995 with funding from Sun Microsystems for an investigation into the feasability of support for orthogonal persistence in the programming language Java. A subsequent PJava project proposal for "PJava: High Performance Orthogonally Persistent Java Servers", highly-rated by the EPSRC (Engineering and Physical Sciences Research Council), provides further funding.

Based on the standard JDK 1.1.7 source code.

The project ended in September 2000.

Other Related Open Source projects

gcj RedHat GPL
GCJ is a portable, optimizing, ahead-of-time compiler for the Java Programming Language. It can compile...
  • Java source code to native machine code,
  • Java source code to Java bytecode (class files),
  • and Java bytecode to native machine code.
Jikes Dave Shields and Phillipe Charles BSD-like
Jikes is a compiler that translates Java source files as defined in The Java Language Specification into the bytecoded instruction set and binary format defined in The Java Virtual Machine Specification. Features include:
  • strict adherence to the language specification,
  • extremely fast compile speed,
  • built-in dependence analysis, allowing incremental compilation and automatic makefile generation.
GNU Classpath ??? GPL
GNU Classpath is a set of essential libraries for supporting the Java language. The goal is to provide a free replacement for Sun's proprietary class libraries so that the GNU system can run programs written in the Java language.
Mauve ??? GPL
The Mauve Project is a collaborative effort to write a free test suite for the Java class libraries.

Non-open source stuff