Real time Java
||This article includes a list of references, but its sources remain unclear because it has insufficient inline citations. (June 2017) (Learn how and when to remove this template message)|
|This article relies too much on references to primary sources. (June 2017) (Learn how and when to remove this template message)|
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.
To overcome typical real time difficulties, the Java Community introduced a specification for real-time Java, JSR001. A number of implementations of the resulting Real-time specification for Java (RTSJ) 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 allowing other models to be plugged into the VM) 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.
Real-Time Specification for Java
The Real-Time Specification for Java (RTSJ) is a set of interfaces and behavioral refinements that enable real-time computer programming in the Java programming language. RTSJ 1.0 was developed as JSR 1 under the Java Community Process, which approved the new standard in November, 2001. RTSJ 2.0 is being developed under JSR 282. A draft version is available at JSR 282 JCP Page. More information can be found at RTSJ 2.0
- Real-Time Specification for Java 2.0 (RTSJ 2.0)
- Real-Time Specification for Java (RTSJ)
- IBM WebSphere Real Time a fully conformant RTSJ SE VM
- JamaicaVM an RTSJ SE implementation with deterministic garbage collection
- PTC Perc a real-time VM based on Java Standard Edition but with a patented deterministic garbage collection technology rather than RTSJ
- Sun Java SE Real-Time System
- Apogee real-time Java with real-time GC (discontinued)
- Timesys RTSJ implementation and testing toolkit
- jRate (Java Real-Time Extension) an open-source extension of the GNU GCJ compiler front-end and runtime system which adds support for most of the features required by the RTSJ.
- International Workshop on Java Technologies for Realtime and Embedded Systems (JTRES 2005) JTRES 2006 JTRES 2007 JTRES 2008 JTRES 2009 JTRES 2010 JTRES 2011 JTRES 2012 JTRES 2013 JTRES 2014 JTRES 2015
- LJRT Lund Java based Real-Time LJRT open source
- Fiji VM real-time Java
- Real-time Java VMs