Premium
Introduction to the Special Issue on Java Technologies for Real‐Time and Embedded Systems
Author(s) -
Vitek Jan,
Kalibera Tomas
Publication year - 2011
Publication title -
concurrency and computation: practice and experience
Language(s) - English
Resource type - Journals
SCImago Journal Rank - 0.309
H-Index - 67
eISSN - 1532-0634
pISSN - 1532-0626
DOI - 10.1002/cpe.1769
Subject(s) - computer science , java , concurrency , citation , library science , world wide web , operating system
Java has proven to be a popular language in application domains ranging from desktop applications to large enterprise servers. For almost a decade, the industrial and academic research community have collaborated to turn Java into a language suitable also for real-time processing. The RealTime Specification for Java (RTSJ) and the upcoming definition of a Safety-Critical Java (SCJ) profile are standards that attempt to position Java as a key technology for developing applications with stringent time constraints. The International Workshop on Java Technologies for Real-Time and Embedded Systems (JTRES) is dedicated to research on Java for embedded real-time systems. JTRES was started in 2003 and has been held yearly since. This special issue regroups selected and extended papers from the eighth workshop in the series. JTRES 2010 was organized in Prague, Czech Republic by researchers from Charles University and Purdue University. The key distinguishing aspect of real-time processing is that timing is part of correctness. A realtime system has to react to external events within given time bounds. It is highly desirable that the timeliness of real-time systems be proven mathematically as a part of schedulability analysis, and not just through testing. The core input to schedulability analysis is the worst-case execution time (WCET) of a piece of code that implements a particular activity. Although analysis tools exist for languages such as C or Ada, they can only cope with very simple programs and require human assistance in the form of annotations. Java’s programming constructs such as virtual dispatch and dynamic memory management are beyond the reach of current tools. A particular source of complexity are the caches used in general-purpose processors. Recently, there have been attempts to design a completely new hardware for real-time systems, including CPU and caches, that would be more amenable to the WCET analysis. The first paper in this special issue by Huber et al. [1] focuses on the design of a new cache that is aware of both the specificity of Java and the Java garbage collection technology and that is mindful with the WCET analysis. The upcoming profile of SCJ aims to modify, mostly to restrict, the RTSJ and to promote certification of Java-based safety-critical systems. SCJ defines three levels of features where Level 0 is the most restrictive and the easiest to certify. It is based on the notion of a cyclic executive without preemption and is intended for uniprocessors. Currently, multiprocessors are making inroads into real-time systems. The second paper of this special issue, by Ravn and Schoeberl [2], proposes automated generation of cyclic schedules for multicores. The proposal depends on system-wide clock and supports task migration between processors and mutual exclusion for shared data. The third paper in this special issue, by Stilkerich et al. [3], presents an ahead-of-time compiling virtual machine for the OSEK/VDX operating system. KESO implements a subset of Java that can be mapped to OSEK. The restrictions include that threads of the application are allocated statically. KESO is a multi-JVM, allowing groups of tasks to be spatially isolated, that is, each group can have its own memory domain with a specific memory policy. All static data are domain specific, and thus, static data for Java libraries are replicated in domains. The JVM supports an immortal memory and a nonmoving mark-sweep collector. Tasks from different domains can communicate using a custom remote procedure call-based mechanism. The RTSJ supports two core abstractions for schedulable activities, real-time threads, and asynchronous event handlers. Threads are intended for activities that span most of the execution of the application. Event handlers are intended for activities that respond to external events that can happen at completely or partially unknown times. The SCJ has been designed only with the abstraction of an event handler, however, with a close correspondence to threads. The motivations for this decision are analyzed in detail in the fourth paper of this issue, by Wellings and Kim [4]. The paper