JamaicaVM -- User Documentation
The Virtual Machine for Real-time and Embedded Systems
Copyright
© 1999-2004 aicas GmbH, Karlsruhe
Table of Contents
1.
Introduction
Hard Realtime Execution Guarantees
Minimal footprint
ROMable code
Native code support
Dynamic Linking
Portability
Fast Execution
Tools for Realtime and Embedded System Development
Contact
2.
Installation
On Linux Systems
Installation with root privileges
Installation for a single user without root privileges
On Sun/Solaris Systems
On Windows
Jamaica Directory structure
3.
Jamaica Builder
Function of the Builder tool
Builder Usage
General
Classes, files and paths
Smart linking
Compilation
Memory and threads
Profiling
Native code
Analyzing
Miscellaneous
Example
Cross Compiling Environments
Optimized for embedded systems
Smart linking for minimal memory requirements:
4.
Configuration of the Memory Management
Usage of the Memory Analyser tool
Building using the Memory Analyser
Measuring an application's memory requirements
Fine-tuning the final executable application
Constant Garbage Collection Work
Comparing dynamic mode and constant garbage collection work
Determination of the Worst-Case-Execution-Time of an allocation
Determining the number of blocks needed for an allocation
Numblocks usage
General
Classes, files, and paths
Smart linking and compaction
Memory and threads settings
Examples
5.
Profiling using the Builder
6.
Jamaica and the Java Native Interface (JNI)
Using JNI
Jamaicah usage
General
Classes, files, and paths
7.
Performance Optimizations
Code Size vs. Runtime Performance
Using Smart Linking
Using Compilation
Using Profiling
Optimizing RAM Memory Demand
Measuring RAM requirements
Memory for Application's Data Structures
Memory for Internal Data of the VM
Memory Required for Threads
Summary
8.
Realtime Specification for Java
Realtime programming with the RTSJ
Realtime Garbage Collection
Relaxations in JamaicaVM
Use of Memory Areas
Thread priorities
Runtime checks for NoHeapRealtimeThread
Static Initializers
Class PhysicalMemoryManager
Strict RTSJ Semantics
Use of Memory Areas
Thread priorities
Runtime checks for NoHeapRealtimeThread
Static Initializers
Class PhysicalMemoryManager
Limitations of RTSJ implementation
Literature
9.
The Jamaica Binary Interface
Java Native Interface vs. Jamaica Binary Interface
Caveats when using JBI
Synchronization points
Asynchronous execution
Saving references for the garbage collector
Using JBI
Types used by JBI
Accessing Java Arrays in JBI
Accessing Java Object Fields in JBI
Calling Java Methods from JBI code
Throwing exceptioncs from JBI code
10.
JamaicaVM Plug-in for
Eclipse
Getting Eclipse and the JamaicaVM Plug-in
Installing
Eclipse
Installing the JamaicaVM Plug-in
Plug-in set up
Working with the Plug-in
Workbench Integration
Visual elements added to the workbench
Builder Launch Configuration Dialog
Target Site Configuration
JamaicaVM
11.
FAQ - Frequently Asked Questions
A.
Targets
SUN Solaris
Limitations
VxWorks
Installation
Loading an application
Starting an application
Linking the application to the VxWorks kernel image
Limitations
Special hints
RTEMS
Installation
RTEMS Configuration
Running an application
INTEGRITY
Installation
Linker Directives File
Additional Target configuration
Windows
Limitations
B.
Exitcodes
C.
Environment variables
D.
The Java API
List of Tables
4-1.
Typical number of blocks for objects
7-1.
Libraries that can be specified via
-setLibaries
7-2.
Summary
B-1.
Standard exitcodes
B-2.
Exitcodes of errors
B-3.
Exitcodes of internal errors
C-1.
JamaicaVM environment variables
C-2.
JamaicaVM Builder environment variables
C-3.
JamaicaH environment variables
C-4.
Numblocks environment variables
List of Figures
3-1.
A simple Java programme
JNITest.java.
An example class for JNI
JNITest.h.
The C header files for JNI methods are generated by
jamaicah
JNITest.c.
The C implementation of the native function
JNITest.write_HW_Register
Next
Introduction