javavm
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.

Features
The features for the alpha release are:

The alpha release does not include:
  • 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.
Availability
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.

Debugger
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 freely downloadable.

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.

Runtime Environment
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.

Psions
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!).

opl2java
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.

Contact
If you have any questions, comments, suggestions, offers of help, or simply want to send a cash donation, please email me at