'

A survey and comparison of concurrency and real-time programming support in Java, Ada, and Posix

Unlike sequential programming, the debate over whose programming language support was largely settled in the Structured Programming revolution of the early 1970s, concurrency and especially real-time programming remain subjects that elicit considerable controversy. Different languages have taken different approaches; some languages ignore the matter, believing that these topics are more in the realm of an operating system or real-time kernel.

This tutorial identifies the issues that underlie concurrency and real-timeprogramming and describes how they are addressed by Java, Ada, and Posix. It will cover thread/task lifetime properties (creation, termination), mutual exclusion, coordination / communication, asynchrony, dealing with time, and scheduling, with a focus on real-time requirements such as management of priority inversion. Some common examples (e.g. bounded buffers, periodic activities) will be used to illustrate the different approaches, which will be compared with respect to software engineering support (readability, reliability), predictability and performance. The Java approach will presented in terms of the two current proposed real-timeextensions: the Real-Time Specification for Java (from the Sun-sponsored Real-Time for Java Expert Group) and the Real-Time Core Extensions (from the J-Consortium). The main emphasis will be on uniprocessor systems.

Topics include:

'