Safety-Critical Java Introduction

Safety-Critical Java is a new JSR-302 specification for a Safety-Critical standard on the Java platform.

A good introductory paper to the Safety-Critical Java implementation is Java for Safety-Critical Applications.

Look also at TCK for SCJ paper.


oSCJ Webpage Launched

Recently, we have launched our Open Safety-Critical Java (oSCJ) Project. This project is based on the JSR302 Safety-Critical Java Specification, 

As the first result, an oSCJ Home Page was launched:

More news to come soon, the first release is coming January 2010. Stay tuned.


A New Real-time VM Was Born - Fiji VM

The new virtual machine for real-time world is here. Fiji VM technology enables developers to:
  • Seamlessly integrate pure Java code into real-time, safety-critical, and mission-critical systems.
  • Deploy on a broad range of hardware and operating systems, ranging from ARM and ERC32 to PowerPC and x86/x86_64, from RTEMS to Linux or Darwin.
  • Boot Java from bare hardware - for small footprint (100KB) applications, Fiji VM provides the unique ability to boot Java from bare hardware.
  • Execute Java with deterministic garbage collection, as well as full support for safe GC-less allocation.
  • Achieve high performance execution. From the peformance perspective, Fiji VM seems very promising, having only 40% slow down comparing to C.
Fiji VM library choicesFiji VM technology offers a variety of footprint and library options to the developer, if extremely small footprint (100KB) is desired, Fiji offers Fiji HardRTJ library.

To give you a better picture, here is how FijiVM fits into the whole stuck:

fiji diagram
Fiji VM 1.0 release is coming in December 2009. More at Fiji Systems LLC home page.


A Component Framework for RTSJ

The following slides are presenting SOLEIL - a component framework for RTSJ-based systems.

These slides were used also during my PhD defense:


A PhD thesis about RTSJ

My PhD thesis focused on RTSJ is titled:

SOLEIL : An Integrated Approach for Designing and Developing Component-based Real-time Java Systems

The defense of this thesis will take plate at INRIA Lille, France on September 14, 1:30 pm. Visitors are welcomed.

The thesis can be downloaded from: SOLEIL thesis download.


A New Real-time Java Book

Recently, a new book about RTSJ has been published:


Real-Time Java™ Programming with Java RTS

by Eric J. Bruno; Greg Bollella, Prentice Hall, 2009

Read it online here.


Real-time Java Programming - Introduction

New to the world of real-time and real-time Java programming?

Look at my Real-time Java programming in 10 minutes presentation:

When searching for more information about real-time programming in general, try the
Douglas E. Jensen Tutorial.


JTRES’09 Workshop

“This is the place to be.”      

Greg Bollella

JTRES is a workshop of Java Technologies for Real-Time and Embedded Systems. Annually, RTSJ professionals, researchers and fans are meeting to discuss, exchange…

We will be there too, presenting our CDx paper - an open-source RTSJ benchmark.

This year in Madrid, Spain. See more at JTRES Home Page.


CDx : A Family of Real-time Java Benchmarks

Collision Detector (CDx) is our new open-source Real-time Java
The key features of the CDx benchmark are:
  • the first open-source RTSJ benchmark,
  • highly configurable for different VMs,
  • provides various workflows,
  • a large case study suitable for learning and experimenting with RTSJ.
Find more at our new webpage presenting CDx:


Real-time Java VMs

Although real-time Java is becoming well known, the specific Virtual Machines implementing its functionalities are still known only to the community. There is no list of VMs supporting real-time features, furthermore, every VM is implementing a different subset of RTSJ. 
Therefore, I am posting a list of RTSJ-compatible VMs that are available up to this date (sorted by first release date).
  • TimeSys RTSJ Reference Implementation Only licensed for non-commercial use. Runs on X86/Linux. Available at www.timesys.com.
  • Java RTS Sun - Java SE Real-time (Java RTS). Runs on Sparc/Solaris (Beta for SUSE Linux Enterprise Realtime 10, and Red Hat Enterprise MRG 1.0.). Available at http://java.sun.com/javase/technologies/realtime/rts/.
  • IBM WebSphere Real Time. IBM WebSphere Real Time V2 for Real Time Linux, running on main-line real-time Linux distributions (Red Hat MRG and Novell SLERT). However, there are limitations on the hardware supported. The main reason for the hardware limitation is that the supported models have modified firmware to allow better control over SMI event prioritization, in order to achieve determinism of the underlying hardware. Availale at www.ibm.com/software/webservers/realtime/.
Furthermore, other real-time, Java-like platforms have been developed, either commercial or academic projects. Usually, these VMs are not fully compliant with RTSJ.
  • OVM is an academia research project at Purdue University that implements RT VM. Available at http://www.ovmj.org
  • JamaicaVM implements RTSJ and a deterministic garbage collector. Runs on various platforms. Available at http://www.aicas.com/jamaica.html.
  • jRate (Java Real-Time Extension) is an extension of the GNU GCJ compiler front-end and runtime system which adds support for most of the features required by the RTSJ. Available at http://jrate.sourceforge.net/.
  • Aonix PERC is a commercial project targeting many hard real-time, safety critical and embedded systems. The PERC platform is introducing many trade-offs and therefore is not fully compliant with RTSJ, however, allows developers to target a broader scope of applications rather than having strict limitations as it is the case of RTSJ. Available at www.aonix.com/perc.
  • aJ100 is a hardware coded JVM. Available at www.ajile.com.
  • JRockit Real-Time JRockit Enterprise Java Runtime provided by ORACLE is a Java VM featuring real-time garbage collection suitable for soft real-time systems. Available at www.oracle.com/jrockit.
  • IBM/Apogee Aphelion is comprised of reliable and high performance JREs for deploying Java applications on devices based on embedded systems. Supports many OS platforms, further details at http://www.apogee.com/
  • [UPDATE: 07/2011] LJRT - Lund Java based Real-Time, http://www.robot.lth.se/java
  • [UPDATE: 07/2011] FijiVM - FijiVM, http://www.fiji-systems.com/, more also at this post.
Source: Real-time Java programming book, discussions in the Real-time Java Group.
Please, let me know if there is any VM missing in this list.


Why This Blog?

The goal of this blog is to inform about the new technologies and trends in the domain of Real-time Java programming. Currently, there is no consistent source of information about RT Java, this blog will try to close this gap.

During the past few years, I have gathered some links, documents, experience and knowledge about Real-time Java. I would like to share them in this blog.

Anyone who would like to contribute and become a co-author is welcomed!