Ravenscar‐Java: a high‐integrity profile for real‐time Java

For many, Java is the antithesis of a high integrity programming language. Its combination of object-oriented programming features, its automatic garbage collection, and its poor support for real-time multi-threading are all seen as particular impediments. The Real-Time Specification for Java has introduced many new features that help in the real-time domain. However, the expressive power of these features means that very complex programming models can be created, necessitating complexity in the supporting real-time virtual machine. Consequently, Java, with the real-time extensions as they stand, seems too complex for confident use in high integrity systems. This paper presents a Java profile for the development of software-intensive high integrity real-time systems. This restricted programming model removes language features with high overheads and complex semantics, on which it is hard to perform timing and functional analyses. The profile fits within the J2ME framework and is consistent with well-known guidelines for high integrity software development, such as those defined by the U.S. Nuclear Regulatory Commission.

[1]  Alan Burns,et al.  The Ravenscar tasking profile for high integrity real-time programs , 1998, SIGAda '98.

[2]  Klaus Havelund,et al.  Model Checking Programs , 2004, Automated Software Engineering.

[3]  Nancy G. Leveson,et al.  Software safety in embedded computer systems , 1991, CACM.

[4]  F E O'Neill,et al.  USE OF THE C LANGUAGE IN VEHICLE BASED SOFTWARE , 1998 .

[5]  Pieter H. Hartel,et al.  Formalizing the safety of Java, the Java virtual machine, and Java card , 2001, CSUR.

[6]  Jonathan P. Bowen,et al.  High-Integrity System Specification and Design , 1999, Formal Approaches to Computing and Information Technology (FACIT).

[7]  Alan Burns,et al.  The Ravenscar tasking profile for high integrity real-time programs , 1998 .

[8]  Andy J. Wellings,et al.  A profile for high-integrity real-time Java programs , 2001, Fourth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing. ISORC 2001.

[9]  Benjamin M. Brosgol,et al.  Asynchronous transfer of control in the Real-Time Specification for Java/sup TM/ , 2002, Proceedings Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing. ISIRC 2002.

[10]  B. Dobbing The Ravenscar profile for high-integrity Java programs? , 2001, IRTAW '00.

[11]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[12]  Ricardo J. Hassan,et al.  Asynchronous transfer of control in the real-time specification for java™ , 2002 .

[13]  Jonathan P. Bowen,et al.  High-Integrity System Specification and Design , 1999 .

[14]  Alan Burns,et al.  Portable worst-case execution time analysis using Java Byte Code , 2000, Proceedings 12th Euromicro Conference on Real-Time Systems. Euromicro RTS 2000.

[15]  John Barnes,et al.  High Integrity Ada: The Spark Approach , 1997 .

[16]  David Lorge Parnas,et al.  Evaluation of safety-critical software , 1990, CACM.

[17]  M. Hecht,et al.  Review Guidelines for Software Languages for use in Nuclear Power Plant Safety Systems , 1997 .

[18]  Li Gong,et al.  Inside Java 2 Platform Security: Architecture, API Design, and Implementation , 1999 .

[19]  Alexandru Nicolau,et al.  Java annotation-aware just-in-time (AJIT) complilation system , 1999, JAVA '99.

[20]  Andy J. Wellings,et al.  Addressing dynamic dispatching issues in WCET analysis for object-oriented hard real-time systems , 2002, Proceedings Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing. ISIRC 2002.

[21]  K. Rustan M. Leino,et al.  ESC/Java User's Manual , 2000 .

[22]  James W. Layland,et al.  Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment , 1989, JACM.

[23]  Taehyoun Kim,et al.  Scheduling garbage collector for embedded real-time systems , 1999, LCTES '99.

[24]  Ian Sommerville,et al.  Software engineering (6th ed.) , 2001 .

[25]  Andy J. Wellings,et al.  Assessment of the Java programming language for use in high integrity systems , 2003, SIGP.

[26]  Sophia Drossopoulou,et al.  Describing the Semantics of Java and Proving Type Soundness , 1999, Formal Syntax and Semantics of Java.

[27]  Alan Burns,et al.  Applying new scheduling theory to static priority pre-emptive scheduling , 1993, Softw. Eng. J..

[28]  Nancy G Leveson,et al.  Software safety: why, what, and how , 1986, CSUR.

[29]  James Gosling,et al.  The Real-Time Specification for Java , 2000, Computer.