Java Real-Time System v2.1 Released
Today, Sun released the Java Real-Time System, version 2.1. This version adds support for Linux with real-time kernels (namely SUSE Linux Enterprise Real-Time 10, and the soon-to-be-released Red Hat MRG), in addition to Solaris 10 on x86/x64 and SPARC. You can download an evaluation copy at http://java.sun.com/javase/technologies/realtime/index.jsp.
To see me talking about Java RTS 2.1 for Linux, and running a demonstration application on it, take a look at this video from this year's JavaOne: http://blogs.sun.com/SDNChannel/entry/real_time_java_is_predictable
In summary, Java RTS 2.1 provides the following enhancements to the previous version:
- Support for applications running on the Linux Operating System, as well as Solaris 10. Officially supported are SUSE Linux Enterprise Real-Time (http://www.novell.com/products/realtime/) and Red Hat MRG (http://www.redhat.com/mrg/).
- Support for several of the Java SE Serviceability Agent (SA) tools. They are described in the Java RTS Tools, Tuning, and Troubleshooting Guide.
- Several new probes in the DTrace probe provider (named jrts) for Java RTS. The document Java RTS DTrace Provider contains a detailed description of these probes and how to use them, as well as several sample scripts.
- The new Thread Scheduling Visualizer tool, which is described in the Java RTS Thread Scheduling Visualizer Guide.
- The new Java™ VisualVM tool can display information about an application running with Java RTS. See http://java.sun.com/javase/6/docs/technotes/guides/visualvm/index.html.
- Additional command-line parameters to allow finer user-controlled tuning of the RTGC activity. See the "Command-Line Options" section in the Java RTS Garbage Collection Guide for a detailed explanation.
- Improved tooling to track immortal memory allocation, including a new MBean (for coarse-grained analysis) and a new DTrace probe (for fine-grained analysis). The new MBean is visible in JConsole as Immortal MemoryPool. The new DTrace probe is one of many new probes in the jrts probe provider.
- New Initialization-Time-Compilation (ITC) API. With the ITC compilation mode, you specify methods to be compiled when their classes are initialized, classes to be preloaded, and classes to be preinitialized. Previously, these specifications could only be made on the command line, at VM start-up. This new API allows the Java RTS application to perform these specifications also during run-time. This flexibility is especially useful in user-defined class-loader-based architectures. See the Java RTS Compilation Guide.
- Minor bug fixes and clean-up.
To see what others, such as Jim Connors from Sun, and Paul Perrone from Perrone Robotics, are doing with Solaris and Java RTS, take a look at http://blogs.sun.com/jtc/entry/fast_booting_solaris. Also, to run Java RTS in secure environment, such as with government or military applications, there is a need to install it into a Solaris zone, such as the one used for Solaris with Trusted Extensions. To understand how to implement this, Jim Connors has an excellent description here: http://blogs.sun.com/jtc/entry/real_time_java_in_a
In order to run Java RTS on Linux, and achieve true real-time, deterministic, behavior, you need a Linux kernel with POSIX Real-time support. For the most part, any distribution with a kernel version of 2.6.21 or later is needed. However, for distributions such as Debian and Ubuntu, you should install the complete set of extensions with the following command:
$ sudo apt-get install linux-rt
Afterwards, you should see the following text when you execute the command, uname -a, on Ubuntu with the RT package installed:
Linux ubuntu-desktop 2.6.24-19-rt #1 SMP PREEMPT RT
(Thanks to Gail Yamanaka for the information about this release)