Real-time and embedded applications cover an extremely wide variety of domains, each with stringent requirements, including highly precise timing characteristics, small memory footprints, flexible sensor and actuator interfaces, and robust safety characteristics. Processing in such application domains often involves distributed processing in which communication and synchronization and their resulting integration present additional challenges.
A major part of the cost of creating such real-time and embedded applications is spent in the often complex software development, integration, verification, and validation of the resulting systems. A vast majority of all microprocessors are now used for real-time and embedded applications, and higher-level programming languages and middleware are needed to develop software for these applications, timely and safely. The Java programming language has become an attractive choice because of its excellent software engineering characteristics. Yet, standard Java is unsuitable for developing hard real-time embedded systems, mainly due to underspecification of thread scheduling and the presence of garbage collection. These problems are addressed by the Real-Time Specification for Java. Interest in real-time Java in both the research community and the industry has increased significantly, because of its challenges and its potential impact on the development of embedded and real-time applications.
The Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES) is dedicated to research on Java for embedded real-time systems. JTRES 2011, the 9th workshop in the series, was organized in York, UK by the Real-time Systems Group of the University of York. This special issue of Concurrency and Computation: Practice and Experience brings four invited papers from the JTRES 2011. These papers have been expanded and carefully peer reviewed. The papers highlight topics of special interest: multiprocessor and distributed real-time Java, as well as verification of real-time Java programs.
In Supporting lock-based multiprocessor resource sharing protocols in real-time programming languages , Lin, Wellings, and Burns survey currently available resource sharing protocols for multiprocessor applications. Because there are no obvious best solutions, the authors continue with the design for a framework where programmers may define and implement their own policies. This is illustrated and evaluated with Ada as base language.
Shared memory solutions may become a bottleneck in multicore systems; this is one motivation for the paper by Meawad, Iyer, Schoeberl, and Vitek on Micro-transactions for concurrent data structures . In this paper, the authors demonstrate that it is feasible with suitable hardware support to build efficient and predictable transactional memories. Also, the hardware support is not very expensive as shown by a prototype implementation in the field-programmable gate array-based Java Optimized Processor system.
For Java, garbage collection is another issue when moving to multiprocessors with shared memory. Although predictable real-time garbage collectors have been developed, the multiprocessor setting requires rethinking the problem as done in Design and analysis of a hard real-time garbage collector for a Java chip multi-processor , which summarizes key contributions from Puffitsch’ doctoral thesis. The experimental parts of this work once more uses extensions to the Java Optimized Processor system.
A contribution within the area of verification is Haddad and Leavens’ Specifying subtypes in Safety Critical Java programs. . This paper addresses the intricate problem of specifying timing properties they conform with inheritance, where subtype methods use more time to execute because they extend corresponding supertype methods. This is done within the Java Modeling Language context.
As editors, we thank the authors contributing to this special issue and also extend our gratitude to all the reviewers whose dedication ensured a good selection of articles and made this special issue possible.