Real time Java
Encyclopedia
Real time Java is a catch-all term for a combination of technologies that allows programmers to write program
s that meet the demands of Real time
systems in the Java programming language
.
Java's sophisticated memory management
, native support for threading
and concurrency, type safety
, and relative simplicity have created a demand for its use in many domains. Its capabilities have been enhanced to support real time computational needs:
To overcome typical real time difficulties, the Java Community
introduced a specification for real-time Java, JSR001. A number of implementations of the resulting Real-Time Specification for Java (RTSJ) have emerged, including a reference implementation from Timesys
, IBM
's WebSphere Real Time, Sun Microsystems
's Java SE Real-Time Systems, Aonix
PERC or JamaicaVM
from aicas
.
The RTSJ addressed the critical issues by mandating a minimum specification for the threading model (and allowing other models to be plugged into the VM) and by providing for areas of memory
that are not subject to garbage collection, along with threads that are not preemptable by the garbage collector. These areas are instead managed using region-based memory management
.
s and behavioral specifications that allow for real-time programming in the Java programming language
. RTSJ 1.0 was developed as JSR 1 under the Java Community Process
, which approved the new standard in November, 2001. , RTSJ 1.1 is being developed under JSR 282.
Computer program
A computer program is a sequence of instructions written to perform a specified task with a computer. A computer requires programs to function, typically executing the program's instructions in a central processor. The program has an executable form that the computer can use directly to execute...
s that meet the demands of Real time
Real-time computing
In computer science, real-time computing , or reactive computing, is the study of hardware and software systems that are subject to a "real-time constraint"— e.g. operational deadlines from event to system response. Real-time programs must guarantee response within strict time constraints...
systems in the Java programming language
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
.
Java's sophisticated memory management
Memory management
Memory management is the act of managing computer memory. The essential requirement of memory management is to provide ways to dynamically allocate portions of memory to programs at their request, and freeing it for reuse when no longer needed. This is critical to the computer system.Several...
, native support for threading
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
and concurrency, type safety
Type safety
In computer science, type safety is the extent to which a programming language discourages or prevents type errors. A type error is erroneous or undesirable program behaviour caused by a discrepancy between differing data types...
, and relative simplicity have created a demand for its use in many domains. Its capabilities have been enhanced to support real time computational needs:
- Java supports a strict priority basedPreemption (computing)In computing, preemption is the act of temporarily interrupting a task being carried out by a computer system, without requiring its cooperation, and with the intention of resuming the task at a later time. Such a change is known as a context switch...
threadingThread (computer science)In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
model.
- Because Java threads support priorities, Java locking mechanisms support priority inversionPriority inversionIn computer science, priority inversion is a problematic scenario in scheduling when a higher priority task is indirectly preempted by a lower priority task effectively "inverting" the relative priorities of the two tasks....
avoidance techniques, such as priority inheritancePriority inheritanceIn real-time computing, priority inheritance is a method for eliminating priority inversion problems. Using this programming method, a process scheduling algorithm will increase the priority of a process to the maximum priority of any process waiting for any resource on which the process has a...
or the priority ceiling protocolPriority ceiling protocolIn real-time computing, the priority ceiling protocol is a synchronization protocol for shared resources to avoid unbounded priority inversion and mutual deadlock due to wrong nesting of critical sections...
.
To overcome typical real time difficulties, the Java Community
Java Community Process
The Java Community Process or JCP, established in 1998, is a formalized process that allows interested parties to get involved in the definition of future versions and features of the Java platform....
introduced a specification for real-time Java, JSR001. A number of implementations of the resulting Real-Time Specification for Java (RTSJ) have emerged, including a reference implementation from Timesys
TimeSys
Timesys is a privately owned company that helps software development teams build and maintain a custom Linux platform for a wide variety of embedded processors from semiconductor manufacturers such as Atmel, Freescale, Intel, Texas Instruments, and Xilinx....
, IBM
IBM
International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...
's WebSphere Real Time, Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
's Java SE Real-Time Systems, Aonix
Aonix
In January 2010, Aonix and Artisan Software Tools agreed to merge, forming a new company to be called Atego.Atego is a software development corporation headquartered in the USA and the United Kingdom with subsidiaries in France, Germany, and the Italy.- Aonix history :Aonix was formed in November...
PERC or JamaicaVM
JamaicaVM
The JamaicaVM is a virtual machine and build environment for developing and running realtime Java programs. It includes a deterministic garbage collector and implements the RTSJ. It is designed for use in realtime and embedded systems.- See also :*Aicas...
from aicas
Aicas
aicas GmbH is a software corporation headquartered in the Germany with subsidiaries in France and the USA.aicas provides Java technology and analysis tools for realtime and embedded systems...
.
The RTSJ addressed the critical issues by mandating a minimum specification for the threading model (and allowing other models to be plugged into the VM) and by providing for areas of memory
Memory
In psychology, memory is an organism's ability to store, retain, and recall information and experiences. Traditional studies of memory began in the fields of philosophy, including techniques of artificially enhancing memory....
that are not subject to garbage collection, along with threads that are not preemptable by the garbage collector. These areas are instead managed using region-based memory management
Region-based memory management
In computer science, region-based memory management is a type of memory management in which each allocated object is assigned to a region. A region, also called a zone, arena, or memory context, is a collection of allocated objects that can be efficiently deallocated all at once...
.
Real-Time Specification for Java
The Real-Time Specification for Java (RTSJ) is a set of interfaceInterface (computer science)
In the field of computer science, an interface is a tool and concept that refers to a point of interaction between components, and is applicable at the level of both hardware and software...
s and behavioral specifications that allow for real-time programming in the Java programming language
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
. RTSJ 1.0 was developed as JSR 1 under the Java Community Process
Java Community Process
The Java Community Process or JCP, established in 1998, is a formalized process that allows interested parties to get involved in the definition of future versions and features of the Java platform....
, which approved the new standard in November, 2001. , RTSJ 1.1 is being developed under JSR 282.
See also
- Functional specificationFunctional specificationA functional specification in systems engineering and software development is the documentation that describes the requested behavior of an engineering system...
- JavolutionJavolutionJavolution is a real-time library aiming to make Java applications faster and more time predictable. Indeed, time-predictability can easily be ruined by the use of the standard library Javolution is a real-time library aiming to make Java applications faster and more time predictable. Indeed,...
- RTSJ Compliant Java Library (open-source)
External links
- Real-Time Specification for Java (RTSJ)
- JSR-1
- IBM WebSphere Real Time a fully conformant RTSJ SE VM
- JamaicaVM an RTSJ SE implementation with deterministic garbage collection
- PERC a real-time VM based on Java Standard Edition rather than RTSJ
- Sun Java SE Real-Time System
- Apogee real-time Java with real-time GC
- Timesys RTSJ implementation and testing toolkit
- jRate (Java Real-Time Extension) an open-source extension of the GNU GCJ compiler front-end and runtime system which adds support for most of the features required by the RTSJ.
- DDC-I Scorpion Java real-time Java SE, with safety-critical and secure versions.
- International Workshop on Java Technologies for Real-time and Embedded Systems (JTRES 2006) JTRES 2007 JTRES 2008
- LJRT Lund Java based Real-Time
- Ovm
- Fiji VM real-time Java
- Real-time Java VMs