A JVM Implementation in Java

In a 1998 seminar at the University of Oregon, we started the implementation of a JVM in Java for instruction purposes. Even though the implementation is not complete, several people expressed interest, so here is what is available.

What is missing

Mostly support for Java libraries and LOTS of cleaning up. The JVM specification only requires the implementation of an interpreter for the bytecodes. But as is well known much of the functionality of Java comes from the libraries, many of which require JVM support. I've also run out of time and didn't implement a couple of instructions and lots of other little things. If I ever have a couple of weeks to devote to this project, I believe I can get the implementation in good shape.

Javadoc documentation

Jar file

Update (July 2007): A small product based on this OJVM was released at www.hacker.org/worm. It is a programming game where people write bots to play the old Light Cycle game from Tron. A derivative of the OJVM is included in the SDK available from that page that fixes a few bugs, includes a couple of more instructions, and has support for instruction counting.