Karlsruhe, Germany – Version 3.2 of JamaicaVM, the high performance Java Virtual Machine for real time and embedded systems, is now available from Aicas Systems.
JamaicaVM 3.2 supports the main features of Java 5 and provides developers of embedded systems and real time applications with more standard classes than before. In particular, the type safety of applications can be maintained more easily by using generics and enumerations, further improving application reliability.
JamaicaVM 3.2 has a new scheduler supporting real time priorities within the VM on operation systems which do not provide native real time priorities, such as Linux.
Thread switch latency remains in the microsecond range as in earlier versions. Other performance improvements include memory management, the interpreter, and the JNI native API calling interface. The average time needed for object allocation has been significantly reduced compared with the previous versions of JamaicaVM, giving graphic applications particular benefit.
The default options of JamaicaVM have been improved to provide good performance out of the box. Using additional optimizations, the performance can be enhanced further and, depending on the application, a footprint of smaller than 800 KB is possible.
Included is an extensive tool chain for optimizing both an application and its VM environment. Among other things, it provides an optimizing static compiler and a profiler which work hand in hand. First, the profiler analyses a Java application and records the performance of each method used by the application. Then, the compiler can be set to compile just the most critical methods directly in hardware specific native code.
As a result, the execution time of the program is thereby significantly improved without drastically enlarging the application. As Java byte code is considerably more compact than machine code for common architectures, it normally makes sense not to compile the whole application.
With the aid of the profiler the best ratio of compiled to interpreted code can be used to optimize both performance and code size. For example, compiling 20% of time critical application code and interpreting the rest often yields most of the performance gains possible through compilation.
The detection of runtime errors has also been extended. If a deadlock occurs, JamaicaVM now throws an exception while the application is running, enabling the user to easily locate the error in the application.
Furthermore, fatal POSIX signals can now be handled as RTSJ events, allowing even segmentation faults in native code of the application to be handled. Both features are very useful for debugging and robustness.
In tandem with the new JamaicaVM, aicas has developed a ThreadMonitor for use with JamaicaVM 3.2. With the aid of this new tool, a Java application running on the target system can be monitored across a TCP/IP connection within the accuracy of the CPU cycle counter. This gives a developer a clear picture of how threads interact in any application running on the JamaicaVM.
Evaluation versions of JamaicaVM 3.2 are available on the aicas website.
Bernard Cole is site editor for