Release Notes
Sun Java Real-Time System 2.1
  

This document summarizes the functionality and issues of the Sun Java™ Real-Time System (Java RTS) 2.1.

Java RTS is Sun's implementation of the Real-Time Specification for Java (RTSJ). The specification details for this implementation are described in Java RTS Implementation Details.

Java RTS 2.1 complies with JSR-01 Technology Compatibility Kit (TCK) 1.0.2 version SE 3.0.11c, which tests the behavior of implementations of RTSJ version 1.0.2.

Readme File: Links to all the Java RTS technical documents

Contents

Operating System Support for Solaris OS
Operating System Support for Linux OS
Known Issues
Java Virtual Machine Support
Functionality and Issues of Java SE 5.0
Enhancements in This Java RTS Release
General Differences from Java HotSpot VM
Functionality and Issues Specific to Java RTS
Contact Us

Operating System Support for Solaris OS

Java RTS 2.1 is supported on an UltraSPARC® processor or on a Sun x86/x64 platform running one of the following operating systems:

  • Solaris™ 10 Operating System update 4, also called Solaris 10 8/07 (OS kernel version Generic_127112-01 on x86, Generic_120011-14 on SPARC)

  • Solaris™ 10 Operating System update 5, also called Solaris 10 5/08 (OS kernel version Generic_137112-02 on x86, Generic_127127-11 on SPARC)

Refer to the content of the /etc/release file to determine the exact version of Solaris that is installed on your machine.

The OS kernel version is reported by the command uname -v.

Note: Drivers are specific to a particular version of the Solaris Operating System. If you attempt to install a package on a version of Solaris OS where it is not certified, that is, not in the above list, you will receive a warning message. You can continue the installation on that version, but such an installation constitutes an unsupported configuration. In this case, incompatibilities in the cyclic driver package and Solaris OS version may adversely affect the behavior of the operating system.


Operating System Support for Linux OS

Java RTS 2.1 was tested on the x86/x64 platform running one of the following operating systems:

  • SUSE Linux Enterprise Real Time 10 Service Pack 2 (SP2) (released and supported)
    http://www.novell.com/products/realtime/
    (Note: Linux kernel version should begin with "2.6.22".)

  • Red Hat Enterprise MRG 1.0.1 Errata (released and supported)
    http://www.redhat.com/mrg
    (Note: The Java RTS 2.1 criteria were met on the Red Hat MRG 1.0.1 Errata release with the 2.6.24.7-74el5rt Linux kernel version.)

Our initial test and support plans do not include other Linux distributions. However, since this release of Java RTS uses the real-time POSIX programming interface, it is possible that other properly configured Linux distributions that implement this interface can also run Java RTS 2.1. Temporal correctness is still being worked on by the Linux community, but currently the OS configuration needs to include a 2.6.21 Linux kernel or later with the latest RT patch. (See the site http://www.kernel.org/pub/linux/kernel/projects/rt/ to obtain the appropriate RT patch.) In addition, Java RTS will not run on a system with a glibc version prior to 2.4; furthermore, to reduce issues with priority inversion, Java RTS needs either a system with glibc 2.5 or later, or else a system that has explicitly patched glibc with the necessary priority-inheritance mutex support from 2.5.

[Contents]


Known Issues

With SUSE Linux Enterprise Real Time 10 Service Pack 2 (SP2), Java RTS 2.1 for Linux is impacted by the following bugs:

  • Determinism/Performance Issues:

    • Bug 351645 - pthread mutexes/condvars process private attribute not passed to kernel futex calls
      (https://bugzilla.novell.com/show_bug.cgi?id=351645)

      Novell provides a fix to this problem with an alternate libpthread library installed in /opt/novell/glibc2.4-nptl2.7/lib/libpthread.so.0 as part of the package libpthread-alt. If the application is run with the Java RTS launchers, then this alternate libpthread, if available, is used. If the JVM is embedded in the application, then the application must explicitly preload this library. Note that if you are running on a 64-bit system, you must install the 32-bit version of the library, namely libpthread-alt-32bit, since Java RTS is a 32-bit application.

      On a 64-bit system, if the application spawns a 64-bit process (for example, with Runtime.exec()), error messages reporting failed attempts to preload libpthread.so.0 might appear. These messages can be ignored.

    • Bug 366853 - mmap may keep mmap_sem for a long time
      (https://bugzilla.novell.com/show_bug.cgi?id=366853)

    • Bug 372898 - Libc's implementation of condition variables subject to priority inversion
      (https://bugzilla.novell.com/show_bug.cgi?id=372898)

With Red Hat Enterprise MRG 1.0.1 Errata, Java RTS 2.1 for Linux is impacted by the following bugs:

(Solaris OS only) When DTrace is used to monitor the Java RTS VM, timestamps produced by DTrace can sometimes have wrong values due to the following bugs:

[Contents]


Java Virtual Machine Support

Java RTS provides only the 32-bit "client" version of the Java virtual machine; the 64-bit version is not supported, and using the -server option has no effect.

For the best temporal performance, we recommend installing Java RTS on a machine featuring at least two processors.

[Contents]


Functionality and Issues of Java SE 5.0

Java RTS 2.1 is generally based on the Java Platform, Standard Edition (Java™ SE) version 5.0 Update 16. Java SE 5.0 (also known as J2SE™ 5.0 or 1.5.0) is a major release of the Java platform containing new features and enhancements in many functional areas. Update releases are bug fix releases, which can include reliability, performance, and security fixes. The features, bugs, and workarounds of the Java SE 5.0 release and the additional fixes provided by Update 16 can be found at the J2SE 5.0 Release Notes web site.

We are aware of the CR 6682380 (Foreach loop with generics inside finally block crashes javac with -target 1.5). This is a compiler bug, which is fixed in a future version of Java SE. (See http://bugs.sun.com/view_bug.do?bug_id=6682380.)

[Contents]


Enhancements in This Java RTS Release

Java RTS 2.1 provides the following enhancements to the previous version:

  • Support for applications running on the Linux Operating System.

  • 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.

  • Support for Java Statically Defined Tracing.

  • Minor bug fixes and clean-up.

[Contents]


General Differences from Java HotSpot VM

General differences in the behavior of Java RTS as compared with the Java HotSpot™ Virtual Machine are as follows:

  • The Java HotSpot VM defines a large number of unsupported, but often well known, command-line options that can affect its behavior in various ways. Many of these options are incompatible with the Java RTS VM and should not be used. See the Java RTS Command-Line Options document for the available options with Java RTS.

  • The default values for the command-line parameters have been tuned for Java RTS and might differ from the default values in the Java HotSpot VM. For example, the default values for -Xms and -Xmx have been increased for Java RTS.

  • All the memory that is specified by the -Xms and -Xmx parameters is acquired and locked at initialization of the VM.

  • Java RTS has limited support for the monitoring, management, and troubleshooting tools. See the Java RTS Tools, Tuning, and Troubleshooting Guide.

  • Because of NHRTs, classes and interned strings are never garbage-collected. The RTSJ also prevents objects allocated in static initializers from being garbage-collected. You should be aware that such objects are allocated in immortal memory and survive until the JVM exits.

  • The only compiler that Java RTS provides is the client compiler. The server compiler depends on non-deterministic optimization and has therefore been deactivated.

  • Just-In-Time (JIT) compilation is asynchronous by default. See the Compilation Guide for details.

  • Java RTS provides the implementation of variants of inline caches and virtual method inlining. These variants are especially intended for use with the Real-Time Garbage Collector. See the Compilation Guide for details.

  • Java RTS does not support the Java™ Virtual Machine Profiler Interface (JVMPI).

[Contents]


Functionality and Issues Specific to Java RTS

Java RTS differs in functionality from Java SE and the Java HotSpot VM in a number of areas, including clocks, timers, class initialization, memory management, and scheduling. In addition, certain issues, such as programming considerations, limitations, bugs, and workarounds, are applicable only to Java RTS. The Technical Information document summarizes the functionality and issues that are specific to Java RTS.

[Contents]


Contact Us

Please report any problems or bugs you might encounter to the Java RTS team.

[Contents]

Copyright © 2009 Sun Microsystems, Inc. All Rights Reserved.