JamVM

Latest version is JamVM 1.5.1, released on 10th March 2008. See the release notes for the changes since 1.5.0.

JamVM is a new Java Virtual Machine which conforms to the JVM specification version 2 (blue book). In comparison to most other VM's (free and commercial) it is extremely small, with a stripped executable on PowerPC of only ~200K, and Intel 180K. However, unlike other small VMs (e.g. KVM) it is designed to support the full specification, and includes support for object finalisation, Soft/Weak/Phantom References, class-unloading, the Java Native Interface (JNI) and the Reflection API.

You can download the latest release of JamVM from the download area or have a look at the project summary page. This contains links to the public forums and facilities for bug reporting and feature requests.

I welcome feedback of any kind, e.g. bug reports, suggestions, etc. I'm always interested to hear how and if people are using JamVM so even if you don't have a problem drop me an email (email address at the bottom).

Supported Platforms

JamVM currently only includes an interpreter (keeps it small). However, the interpreter is highly optimised, and performance is on par with a simple JIT. As most of the code is written in C it is easy to port to new architectures. So far, JamVM supports and has been tested on the following OS/architectures :

Linux

Mac OS X/Darwin

JamVM may work on other Unix (or Unix-like) systems with the above processors "as is" as long as they support Posix threads, but I haven't tested.

Class Libraries

JamVM is designed to use the GNU Classpath Java class library. A number of classes are reference classes which must be modified for a particular VM. These are provided along with JamVM (see INSTALL). JamVM should always work with the latest development snapshot of Classpath (currently 0.97). It should also work with the latest version direct from CVS (but check the Classpath mailing lists for possible patches). Later snapshots of Classpath may also work, if no modifications have been made to the VM interface.

Note, JamVM will not work with the class library from Sun or IBM's Virtual Machines or OpenJDK.

Building and Installing

You can download the latest release of JamVM from the download area. This contains a README and an INSTALL file, containing full instructions.

JamVM "Features"

For those interested in the design of virtual machines, JamVM includes a number of optimisations to improve speed and reduce foot-print. A list, in no particular order, is given below.

That's it!

Robert Lougher
10th March 2008.
rob at lougher.org.uk
rlougher at users.sf.net


SourceForge.net Logo