Planetary science missions, such as those that explore Mars and Saturn, employ a variety of spacecraft such as arbiters, landers, probes, and rovers. Each of these kinds of spacecraft depends on embedded real-time control systems - systems that are increasingly being asked to do more as challenging new mission concepts are proposed. For both systems engineers and software engineers the large challenges are in analysis, design and verification of complex control systems that run on relatively limited processors. Project Golden Gate - a collaboration among NASA's Jet Propulsion Laboratory, Sun Microsystems Laboratory, and Carnegie Mellon University - is exploring those challenges in the context of real-time Java applied to space mission software. This paper describes the problem domain and our experimentation with the first commercial implementation of the real time specification for Java. The two main issues explored in this report are: (I) the effect of RTSJ's nonheap memory on the programming model, and (2) performance benchmarking of RTSJ/Linux relative to C++/VxWorks
The Real-Time Specification for Java (RTSJ) provides facilities for deterministic, real-time execution in a language that is otherwise subject to variable latencies in memory allocation and garbage collection. A major consequence of these facilities is that the normal Java practice of passing around references to objects in heap memory cannot be used in hard real-time activities. Instead, designers must think carefully about what type of non-heap memory to use and how to transfer data between components without violating RTSJ's memory-area assignment rules. This report explores the issues of programming with non-heap memory from a practitioner's view in designing and programming real-time control loops using a commercially available implementation of the RTSJ.