JamVM

Latest version is JamVM 1.5.4, released on 1st January 2010. See the release notes for the changes since 1.5.3.

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 ~220K, and Intel 200K. 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

JamVMs interpreter is highly optimised, incorporating many state-of-the-art techniques such as stack-caching and direct-threading. The latest version of JamVM extends this to include a code-copying JIT compiler (also known as super-instructions). The performance is on par with a simple JIT, while retaining portability. As most of the code is written in C JamVM 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

BSD Variants

Solaris/OpenSolaris

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.98). 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
2nd January 2010.
rob at jamvm.org.uk
rlougher at users.sf.net



SourceForge.net Logo