simpleRTJ
a small footprint Java VM for embedded and consumer devices

Home Downloads

 

simpleRTJ

 

Features

Specially optimized to run on the embedded systems with limited memory resources. On average the simpleRTJ will not require more than 18-24KB of code space to run.
Designed to run as a stand-alone miniature Java operating system. No other RTOS is required to be present in the memory.
Implemented thread support with object's monitor locking and wait/notify synchronization. A timer interrupt should be available to provide VM with time base for the pre-emptive time sliced thread scheduler.
Uses optimized java.lang package to preserve small memory footprint of the Java applications.
Implements support for the javax.events package. This package allows to handle responses to asynchronous events (some interrupts, comms, keypad,...) in Java code. Also included are classes for creating software timers (single shot and periodic).
Supports String and StringBuffer objects.
Exception handling is fully implemented.
Interfaces are fully supported.
Multidimensional arrays are supported.
Includes compacting, three color mark & sweep automatic garbage collector.
Uses simplified native interface to provide fast invocation time for the native methods.
Large number of startup configuration options for specifying the heap size, number of references, threads, software timers, etc.
The simpleRTJ code can be built separately from the native code. This feature allows VM to be programmed into the EPROM/FLASH and the native code and Java application loaded into the RAM when needed.
Number of compilation options allow to control the size of char data type, inclusion of floating point, presence of garbage collector, etc. These options can be used to tailor VM to specific needs of the target platform and the Java applications. 
Supports the following memory models:
- linear 64KB
- banked 64KB
- linear up to 16MB
Can execute Java applications of up to 16MB in size
 

Limitations

64-bit data types (long, double) are not supported.
Support for the java.lang.Class object is not provided. The symbolic references required by the Class object are removed during the Java application link phase.
Not all of standard java packages are included. As simpleRTJ will usually run on embedded systems with limited resources only essential packages/classes are included. Additional packages can be added when required.
JNI is not supported due to its complexity and runtime overhead. 
A simple and fast native interface is provided instead

 

simpleRTJ Size

The following table provides an informative sizes of the simpleRTJ built for various target processors. 
Note
that these sizes are only approximate and the actual size significantly depends on the compiler's capability to optimize code for the size and the internal architecture of the processor. VM results in smaller size for the 32-bit processors, while the 8-bit ones require more code. The 8051 has the largest VM size due to its old and inefficient 8-bit internal architecture with only one 16-bit register. 

VM configuration options

The simpleRTJ has been compiled with the following compilation options allowing to execute Java programs in the:
- multi-threaded environment 
- with garbage collection 
- with multidimensional arrays
- no floating point support
- runtime exceptions and notifications with textual messages

Processor Compiler Code RO data RW data
68HC11 IAR 17K  1K 0.1K
H8/300 GNU GCC 19K 2K 0.2K
i186  Borland 5.1 24K 2K 0.2K
i386  Borland 5.1 17K 2K 0.2K
68K GNU GCC 18K 2K 0.2K
8051 Tasking 35K 1K 0.1K
M.CORE GNU GCC  15K  2K 0.2K
AT91R40008 (thumb mode) ARM Devel. Suite 12K 2K 0.2K
68HC16 Cosmic 17K 2K 0.2K

The requirement for the "C" run-time stack is less 100 bytes.

 

 

Copyright © 2000-2010

Java and all Java-based marks are trademarks or registered trademarks of Oracle, and all other
trademarks and logos are trademarks or registered trademarks of their respective owners.