Check out the new USENIX Web site. next up previous
Next: 7 JaRTS: basic concept Up: JaRTS: A Portable Implementation Previous: 5 Real-time Java approaches

6 Real-Time Core Extensions

For our requirements--portability and scalability--the Real-Time Core Extensions are the more suitable approach. The real-time part is small and can be implemented to be easy to port. Beyond that it can be used as a stand-alone solution as well as in combination with an off-the-shelf JVM. The separation of a non-real-time and a real-time runtime environment allows an implementation on operating systems implementing the Interrupt Abstraction approach.

According to the RTCE specification real-time parts of the application run in a runtime environment--called Core Java1--separated from the standard Java runtime environment--called Baseline Java (figure 1). The Core part can also be used as a stand-alone runtime environment. It has its own set of class libraries (org.rtwg.*), which are also separated from the standard Java class hierarchy. Root of the Core class tree is not java.lang.Object but org.rtjwg.CoreObject. This library contains special classes for handing thread scheduling, interrupts, memory, I/O and event handling. The Core runtime environment runs with a higher priority than the Baseline Java. In so doing it is assured that the Baseline threads and garbage collection has no influence on the real-time behavior of Core threads.

Figure 1: separation of real-time and non-real-time parts
\includegraphics[scale=0.5]{images/baseline_core}

The classes of the Core library are shown in figure 2. They provide only basic functionality. The standard Baseline Java can access dedicated methods of Core objects, which are marked as "Core-Baseline Methods" (more details below). There is a small Baseline library for this communication, shown in figure 3. A detailed documentation of those libraries can be found in [4].

Figure 2: Core API
\fbox{
\begin{minipage}{6cm}
\ttfamily
\begin{tabbing}
xxx\quad \= xxx\quad \= \...
...t\\
\>\\
\emph{Interfaces:}\\
\>PCP \\
\>Atomic
\end{tabbing}\end{minipage}}

Figure 3: Baseline API
\fbox{
\begin{minipage}{6cm}
\ttfamily
\begin{tabbing}
xxx\quad \= xxx\quad \= \...
...NotFoundException\\
\>CoreBaselineRuntimeException
\end{tabbing}\end{minipage}}


next up previous
Next: 7 JaRTS: basic concept Up: JaRTS: A Portable Implementation Previous: 5 Real-time Java approaches
Urs Gleim 2002-05-29