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.
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. Also, 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 IS LIKELY TO CONTINUE AND THE APPLICATION OF THE GNU PUBLIC LICENSE IS BEING CONSIDERED.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.
Hello.cla
..jvm
.
e.g. Hello.jvm
.cla
(NOT .class
)CLASSPATH
are ignored - all files are loaded from the same directoryC:\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!).
The DOS version does not accept command line arguments.
C:\Temp
). The VM executable is called
javavm.img
, in the subdirectory app
, and the Java
classes it loads are in the subdirectory classes
.
Copy the executable into the APP
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 run the VM you first need to install it. Select Install
from the
System menu. Now select Javavm.img
in the install dialog and press
return. You may wish to choose to install the icon in the "Last" psoition. You
should now have a JavaVM icon on you screen.
The SIBO version lists all .JVM
files in the CLASSES
directory. [This file will eventually contain the command line used to start
the application - for the moment, just create an empty file for each Java
application you wish to run.] Select one of these files and the corresponding
class file will be loaded and executed.
out
stream; a cut down Object
class; and a natively implemented
PrintStream
class. This should give you the basis to do some
computation and show the output.
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 to cut down the amount of crap that gets loaded before any of your
classes, and to cut out the surplus junk you will never use. I am currently
looking at SUN's Personal Java and Embedded Java specifications, and the ideas
behing the KVM and Java 2 Micro Edition for some approved ways of shrinking the
VM - System.out
loads an awful lot of classes!
My personal environment includes cut down versions of the String
and StringBuffer
classes so that I can use String concatention, as
produced by the Java compiler. This includes Sun code, so they cannot be
shipped with the VM.
Memory and diskspace requirements are as follows:
Description | SIBO | DOS |
---|---|---|
Executable (disk) | 40 Kbytes | 61 Kbytes |
Class files (disk) | ? bytes | ? bytes |
Runtime (memory) Screen Code Static area Data |
? Kb ? Kb ? Kb ? Kb ? bytes |
? Kb ? Kb ? Kb ? Kb ? bytes |
Using opl2java it is possible to do a round-trip: 1) take an OPL program which runs on a Psion; 2) run it through opl2java; 3) run the resulting java code on the Taurus JavaVM on your Psion. At the moment this only works in a limited capacity, but it proves that useful Java applications could be run on a Series 3.
See Appendix II for a list of supported methods and the associated Javadoc documentation provided for detailed programming information.
Missing features, bugs etc. will be fixed as part of the porting procedure, so keep checking the website for updates.
Please feel free to send any CONSTRUCTIVE comments to support at tsac.co.uk .
unknown instruction
". If you
run the DOS version with the same classes, it will report both the name and
number of the offending instruction.
native
declaration in you classes to use them:
Class | Method | Purpose |
---|---|---|
java.lang.Class | getName( String ) | Class_getName |
getPrimitiveClass( String ) | Class_getPrimitiveClass | |
java.lang.Object | clone() | Object_clone |
getClass() | Object_getClass | |
hashCode() | Object_hashCode | |
java.io.PrintStream | newLine() | PrintStream_newLine |
write( String ) | PrintStream_writeLString | |
write( int ) | PrintStream_writeI | |
java.lang.System | arraycopy( Object, int, Object, int, int ) | System_arraycopy |
Class | Method | Purpose |
---|---|---|
psion.opl.OPL | gAt( int, int ) | gAT x%, y% |
gBox( int, int ) | gBOX w%, h% | |
gCreate( int, int, int, int, int, int ) | gCREATE x%, y%, w%, h%, g%, v% | |
gFill( int, int, int ) | gFILL w%, h%, m%, | |
gGrey( int ) | gGREY m% | |
gLineBy( int, int ) | gLINEBY w%, h% | |
gPrint( String ) | gPRINT s$ |