Taurus JavaVM Specification
I am currently in the advanced stages of developing a "clean room" Java™
VM for use on low power devices with minimal memory and conservative processing
speed (typically Psion Series 3x, 5x and older Acorn and PC desktops). The VM
is designed to be as small as possible - the full Wintel version is currently
only 200K in size with the cut-down SIBO version weighing in at just 40K.
The VM is written entirely in C for portability. It started as the product of a bit of
home research into "how Java works" after I had been programming in Java for over a year.
A year or so on, it really does run Java bytecode and has been ported to several platforms.
The alpha release does not include:
The features for the alpha release are:
- AWT - this requires many native methods and extensive ties to the host OS.
- Garbage Collection - this is a science in itself - it will also need special
treatment for really small machines.
- Threads - until the VM is complete, tested and optimised a little, multiple
threads will of limited use - eventual support for "green" threads may be possible.
- JIT - a JIT will have to be built for each target processor - this will be time
consuming, and will need extensive testing - even people like Symantec still have bugs
in their JITs!
- Verifier - the class verifier does a lot of work, which is only necessary if you
are going to run Applets - the assumption has been made that as you will be loading
classes off disk, so only limited verification is necessary - this should also make the VM smaller.
I am pleased to say that several alpha versions are now available for
Linux-i386, Cygwin, RISC OS, SIBO and DOS (see status
page for more information on the project status, and the
project diary for an up-to-date report on what's
happening). The Taurus JavaVM is provided under the GNU Public License.
An additional Windows based low-level debugger providing detailed disassembly
and execution monitoring - yes, you can watch the VM stack as individual
bytecodes get executed. This is only available for the Wintel VM and is not
Obtaining a copy
Linux-i386, Cygwin, Wintel and RISC OS - The Release Notes
are available online. The Linux-i386, Cygwin, Wintel and RISC OS versions can be freely
downloaded from here.
Linux-i386, Cygwin, Wintel and RISC OS Sources - The sources to the freely
downloadable from here. A Makefile is provided for
Linux, Cygwin and RISC OS users and a Visual Studio Workspace for Wintel users.
SIBO and DOS - The Release Notes are available
online. Both versions can be downloaded from here.
As this is a "clean room" job, I have no licence agreement with Sun, and cannot
therefore redistribute any of their code. so you'll have to grab
classes.zip from the JDK if you want to be able to do anything
useful with the VM. The SIBO and DOS versions come with a set of test classes
allowing basic I/O.
The Psion versions are taking longer to develop, as I don't have the Psion
SIBO C SDK to develop on. The Series 3x version is being built on BCC and the
Series 5 versionc is being built on Symbian's ER5 SDK - I have now obtained
a Series 5, so watch this space for EPOC32 binaries.
Memory is already tight on my Series 3a, so I will be looking at some sneaky techniques
to run classes directly from disk (after all disk IS really memory anyway!).
One fun application for Java is my OPL to Java translator which allows you to
play with old OPL code on your desktop's Java VM. The SIBO version of the
Taurus JavaVM includes a special native library which allows it to run
translated OPL code.
If you have any questions, comments, suggestions, offers of help, or simply
want to send a cash donation, please email me at