Real-time Java
Real-time Java is a catch-all term for a combination of technologies that enables programmers to write programs that meet the demands of real-time systems in the Java programming language.
Java's sophisticated memory management, native support for threading and concurrency, type safety, and relative simplicity have created a demand for its use in many domains. Its capabilities have been enhanced to support real-time computational needs:
- Real-time Java supports a strict priority-based threading model,
- because Java threads support priorities, Java locking mechanisms support priority inversion avoidance techniques, such as priority inheritance or the priority ceiling protocol, and
- event handling.
When the Java Community was formed, the very first effort was the specification for real-time Java, JSR001. A number of implementations of the resulting Real-time specification for Java have emerged, including a reference implementation from Timesys, IBM's WebSphere Real Time, Sun Microsystems's Java SE Real-Time Systems, PTC Perc from PTC, Inc., or JamaicaVM from aicas.
The RTSJ addressed the critical issues by mandating a minimum specification for the threading model and by providing for areas of memory that are not subject to garbage collection, along with threads that are not preemptable by the garbage collector. These areas are instead managed using region-based memory management. The latest specification, 2.0, supports direct device access and deterministic garbage collection as well.