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