Taurus Java Virtual Machive v0.10a DEMO

The following release notes are applicable to the above version of the Taurus Java Virtual Machive. The copyright notice is applicable to any version of the VM unless stated otherwise.

Copyright notice

Taurus Software hereby grants you a non-exclusive, non-transferable limited licence (without the right to sub-licence) under Taurus Software's intellectual property rights. The licence entitles you to freely use, for personal, non-commercial use only, but not to distribute, the Taurus Java Virtual Machine. All binaries and code remain exclusively copyright Taurus Software.

The Taurus Java Virtual Machine has been produced, as a "clean room" implementation, in accordance with Sun Microsystems, Inc.'s (SUN) licence agreement for "The Java Virtual Machine" specification. In accordance with this agreement the virtual machine distribution does NOT, to the author's knowledge, contain ANY material which is copyrighted by SUN. As such the class files relied upon by the virtual machine must be obtained separately, directly from SUN. The use of this specifcation does not in any way imply that the software conforms to it, nor does it imply that it will ever wholey do so. The Taurus Java Virtual Machine does not, and will not, ever pretend to be "Java compliant", it will always remain as closer approximation as time and money will allow. Users of this software do so at their own risk. Developers of any Java software should NEVER use this as a reference platform.

Taurus Java Virtual Machine is a trademark of Taurus Software. Sun, Sun Microsystems, the Sun logo, Java, JavaSoft are all trademarks or registered trademarks of Sun Microsystems, Inc. All other product names mentioned herein are the trademarks of their respective owners.

THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRIGEMENT. TAURUS SOFTWARE ACCEPTS NO RESPONSIBILTY FOR ANY DAMANGE, OF ANY KIND, CAUSED BY THE USE, OR MIS-USE OF THIS SOFTWARE. BY USING THIS SOFTWARE YOU AGREE TO THE LICENCING TERMS HEREIN.

TAURUS SOFTWARE RESERVES THE RIGHT TO REVOKE THIS LICENCE AT ANY TIME, FOR ANY REASON. THE "FREE" STATUS OF THIS SOFTWARE IS TEMPORARY, DUE TO THE TIME AND EFFORT DEVOTED TO THIS PROJECT IT IS LIKELY TO BECOME "SHAREWARE", BUT IS UNLIKELY TO BE MADE INTO A COMMERCIAL PRODUCT.

All references to Taurus Software directly refer to the non-profit freeware/shareware software development unit run from the UK by myself. Any conflict with names of companies inside or outside of the UK is unintentional and should be disregarded.

Platform Support

The Taurus Java Virtual Machine version 0.10 alpha demo is provided in binary form only for the following platforms:
  • 80x86 DOS (will run under Win 3.1x, Win 9x, Win NT)
  • EPOC16 (will run on all SIBO platforms, tested on Psion Series 3a)
Both of these are demos of the real VM, which is still undergoing porting. If you require the full Wintel binary, then please email . Details of the full version (which the ports will eventually implement), can be found in the release notes.

Java Support

The demo release provides a very limited subset implementation of the SUN Java Virtual Machine Specification. The key features of this release are as follows:
  • Loading and execution of Java applications - the VM can load and begin executing any Java application - at the moment it must be called Hello.cla.
  • Dynamic loading - classes are loaded as needed, exceptions or errors are reported when a class cannot be found
  • Can write strings to the screen
There are few major restrictions on this demo release:
  • Can interpret only a few Java virtual instructions - see Appendix I
  • Classfiles must be named using 8.3 filenames - the file extension for classes is .cla (NOT .class)
  • Package names and CLASSPATH are ignored - all files are loaded from the same directory
  • No support for Java Exceptions, Applets, AWT, Threads or Garbage Collection
Note: The full release is very much further along than this - porting is hard work!

Windows Installation

Unpack the downloaded ZIP file containing the VM into a suitable directory (e.g. C:\JavaVM). The VM executable is called javavm.com and the classes it loads are in the subdirectory classes. Run the VM from this directory (it looks for the classes directory relative to where you start it!).

SIBO Installation

Unpack the downloaded ZIP file containing the VM into a temporary directory (e.g. C:\Temp). The VM executable is called javavm.img, in the subdirectory img, and the Java classes it loads are in the subdirectory classes.

Copy the executable into the IMG directory on the Psion (create one if you don't have one). Copy the classes into a new directory called CLASSES on your Psion. Note that the VM uses the absolute path to find classes, so CLASSES must be created on the RamDisk (M:).

To start the VM you need to use RunImg (install it from the standard applications if you haven't already done so).

Minimum requirements

The VM can function in a much smaller environment than provided by the JDK classes. The VM really only needs the following class and methods to function:

java.lang.Object as all classes derive from it, either directly or indirectly.

The classes provided with the VM implement some very basic functionality:

Object.cla java.lang.Object empty, it just needs to exist!
System.cla java.lang.System one static field, out, for System.out calls
PrintStr.cla java.lang.PrintStream one native method, println( String )

To make your own environment, you need to implement a set of Java classes similar to those provided by Sun. The main reason for doing this on a small platform is the amount of crap that gets loaded before any of your classes. I am currently looking at the Personal Java and Embedded Java specifications for some ideas on how to shrink the VM - System.out loads an awful lot of classes!

Memory and diskspace requirements are as follows:

DescriptionSIBODOS
Executable (disk)24 Kbytes34 Kbytes
Class files (disk)844 bytes844 bytes
Runtime (memory)
   Screen
   Code
   Static area
   Data
45 Kb
10 Kb
? Kb
? Kb
2144 bytes
? Kb
? Kb
? Kb
? Kb
2144 bytes

Support

The VM is offered with no warranty and no support. I cannot guarentee it will run on your machine, and any programs written specifically to run on the Taurus VM are not guarenteed to run on future versions.

Missing features, bugs etc. will be fixed as part of the porting procedure, so keep checking the website for updates.

Feedback

The primary reason for releasing such an early access demo is to get feedback aimed at getting the features you want working on the platforms you want. The demo is VERY RESTRICTIVE I know, but most of the core functionality is in place, it really only remains to finish porting the VM instruction set (mainly conversion from ANSI to K&R C) and native methods (which mostly require a re-write).

Please feel free to send any CONSTRUCTIVE comments to .

Appendix I

The following instructions are implemented by the demo VM:

nopldc (String)aloadaload_0/1/2/3
dupreturngetstaticputstatic
invokevirtualinvokespecialinvokestaticnew

All other instructions will cause the VM to exit and report the error "unknown instruction". The DOS version will report both the name and number of the offending instruction.


Last updated 9th May 1999
Comments