Next: 6 Real-Time Core Extensions
Up: JaRTS: A Portable Implementation
Previous: 4 Requirements to an
Currently there are two leading Specifications adding real-time
capabilities to Java. Firstly the Real-Time Specification
(RTSJ) [3] for Java produced by the Real-Time for Java Expert Group
under the auspices of the Java Community Process [18]. In
December 2001 the first reference implementation for the Real-Time
Specification has been released by TimeSys [13]. Secondly
the Real-Time Core Extensions (RTCE) [4] produced by
the Real-Time Java Working Group
supported by HP, Microsoft and
other corporations. Both specifications cover the necessary
enhancements to enable Java for real-time tasks:
- Thread scheduling and synchronization: The
Java Language Specification [1] does not define the thread scheduling
exactly. In addition the ten priorities provided by Java are not enough for most
real-time tasks.
- Memory management: Automatic memory management
of Java mostly leads to unpredictable timely behavior. There is no definition of
worst-case memory allocation times and even concurrent garbage collectors are
not preemptible without latencies.
- Asynchrony: Hardware
interrupts and software events can occur asynchronously in real-time systems and
require an immediate change of the control flow.
- Hardware access: Java does not provide direct access to
hardware registers, physical memory and handling of hardware
interrupts.
RTSJ implementations require modifications of the Java Virtual Machine
(JVM) internals. The application developer can choose the thread
scheduling algorithm and there are several strategies for memory
management. The approach of RTCE is different. Instead of modifying
the whole JVM RTCE can be implemented as a real-time add-on working
closely with an arbitrary existing JVM.
Next: 6 Real-Time Core Extensions
Up: JaRTS: A Portable Implementation
Previous: 4 Requirements to an
Urs Gleim
2002-05-29