A hoary falsehood about Java is that it is unsuitable for hard real-time applications, due to the need for garbage collection (GC). The Real-Time Specification for Java (RTSJ) that is now eight years old should have put this to rest, yet the falsehood still circulates in many circles. For this reason, the paper should be required reading for anyone who is interested in or involved in teaching real-time systems, especially to those interested in understanding RTSJ and what an implementation really looks like.
This paper actually comprises two papers, one sandwiching the other. The outer portion consists of Sections 1, 2, 5, 6, and 7. It describes details of what appears to be the first use of an RTSJ implementation in an avionics application--the Boeing ScanEagle unmanned aerial vehicle. This accomplishment is very real and not just the result of simulated workloads; that is, it controlled an unmanned aerial vehicle in a capstone demonstration at White Sands in December 2004.
The inner portion consists of a very large Section 3 and a smaller Section 4. Section 3 starts with a description of the out-of-order execution parallel virtual machine (OVM), an open-source framework for experimenting with Java VM implementations. Components needed for an RTSJ implementation were written for this framework and the design decisions, along with implications of those decisions, are described throughout. Subsections 3.6 to 3.9 are particularly valuable for those interested in what synchronization and memory management (where GC and non-GC memory areas are coresident) look like in real-time Java. Section 4 provides performance data on throughput, scheduling latency, and avionics benchmarks.
There is much else of interest in the paper: the use of Java to implement a Java Virtual Machine, hardware for the ground and capstone tests, and the implementation of POSIX asynchronous input/output (I/O). It makes for a rewarding read.