JamVM is an open source, small, clearly written, interpreter-only Java virtual machine, ported to a wide variety of different platforms.
This machine has been written by Robert Lougher and used to be a popular tool for developing alternative Java system libraries, at the time when it was required. The compiled binary is comparatively very small (around 200 K executable only). It supports the full specification, including object finalization, Soft/Weak/Phantom References, class-unloading, JNI and reflections. When porting to the new platform, IO and similar features are provided through JNI.
The code is available under GPL. More can be found here.