Real-time Java: Difference between revisions

Content deleted Content added
Added {{more footnotes}} and {{primary sources}} tags to article (TW)
m top: sp, rm selflink
Line 1:
{{more footnotes|date=June 2017}}
{{primary sources|date=June 2017}}
'''Real time Java''' is a catch-all term for a combination of technologies that enables programmers to write [[Computercomputer program|program]]s that meet the demands of [[Realreal-time computing|real-time]] [[systems]] in the [[Java (programming language)|Java programming language]].
 
Java's sophisticated [[memory management]], native support for [[Thread (computer science)|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:
 
* Real time Java supports a strict [[Preemption_preemption (computing)|priority based]] [[Threadthread (computer science)|threading]] model,
* because Java threads support priorities, Java [[Locklock (software engineering)|locking]] mechanisms support [[priority inversion]] avoidance techniques, such as [[priority inheritance]] or the [[priority ceiling protocol]], and
* event handling.
 
To overcome typical real time difficulties, the [[Java Community Process|Java Community]] introduced a specification for real-time Java, JSR001. A number of implementations of the resulting ''[[Real-time specification for Java|Real-Time Specification for Java]]'' (''RTSJ'') have emerged, including a [[Referencereference implementation (computing)|reference implementation]] from [[TimeSys|Timesys]], [[IBM]]'s WebSphere Real Time, [[Sun Microsystems]]'s Java SE Real-Time Systems,<ref>[http://java.sun.com/javase/technologies/realtime/index.jsp Java SE Real-Time Systems]</ref> [http://www.ptc.com/developer-tools/perc PTC Perc] from [[PTC, Inc.]], 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]]. The latest specification, 2.0, supports direct device access and deterministic garbage collection as well.