Release Notes

Java SE for Embedded 6 Runtime Environment

This document summarizes the functionality and issues of Java SE for Embedded 6. Java SE for Embedded 6 Update 10 is based on the Java Platform 6 Update 10, Standard Edition (Java SE 6 Update 10) and provides specific features and support for embedded systems.

To ensure that you have the most recent updates of the technical documents for Java SE for Embedded, check the latest versions on the Java SE for Embedded Product Documentation web site.

Contents

Platform Support

Known Bugs and Issues

What's New in this Release

Comparisons with Standard Java SE

How to Enable Java Plug-in

How to Run JavaFX Applications

Contact Us


Platform Support

 

The release of Java SE for Embedded 6 was tested on Linux ARM v5, v6, and v7 systems with the requirements as specified on the Java SE for Embedded System Requirements web page. For ARM v5, headless systems were tested; for ARM v6/v7, both headless and headful systems were tested.

Some of the information in this document describes support or issues concerning graphics, window managers, audio, and so forth, and therefore only applies to the headful releases.

[Contents]


Known Bugs and Issues

 

The following list summarizes known bugs in this release.

  • JVMTI Pop Frame functionality doesn't work (only seen with the -Xcomp option)
  • vfp java should fail gracefuly when run on sflt system

[Contents]


What's New in this Release

 

Compared to the Java SE 1.4.2 Linux ARM releases, this Java SE for Embedded 6 release adds the following:

  • Java SE 6 Update 10 features and bug fixes
  • Headful support, that is, Swing, AWT, Java 2D™, Java Plug-in
  • Support for Java HotSpot™ VM including client (C1) JIT
  • GStreamer Audio Support for headful systems. The implementation depends on the GStreamer support in the underlying operating system.
  • Performance improvements
  • Bug fixes

The following list shows the changes that have been made and the defects that have been fixed in this release:

  • Compare-And-Swap (CAS) improvements resulting in better reliability for Java level atomic operations and locking on ARMv5/Linux platforms.

  • Use of native vfork() calls instead of native , fork() calls for Runtime.exec() and similar calls from Java, resulting in better stability and reliability in multi-threaded scenarios.
    The use of vfork also reduces peak memory and swap consumption during Runtime.exec()operations.

  • Fix for a bug in frame::interpreter_frame_result() implementation on ARM that could cause unexpected values to be returned when using JVMTI's JDI interface.

  • Fix for a bug where the template interpreter did not 8-byte align the stack pointer (as required by ARM EABI) when calling C/C++ routines from the assembly code.

  • Add support for the template based interpreter.

  • Add support for /dev/memnotify driver. (Requires functionality only available in Qualcomm kernels.)

  • Find ARM CPU architecture by uname() call.

  • Use ARM v7 movw/ movt instructions to perform the following:

    • Build large integer constants ( mov_slow)
    • Calculate static branch targets ( far_call)
    • Build oop constants ( mov_oop)

     

  • Store oops in oop_section of NMethod on ARM v5, v6 and address them by LDR Rd, [PC, ...] instruction.

  • Get polling_page address with an immediate literal instead of ldr (without mmaping to special address for now).

  • Avoid buffer overflow problem in JNI_FastGetField.

  • Fixes for Matchbox window manager support of isFrameStateSupported().

  • Matchbox window manager workaround - permit access to the dialog close button when it is available.

    To add a dialog, modify the theme ( /usr/share/theme/THEMENAME/matchbox/theme.xml).

    In the section <frame id="dialog"> add:

                       
    
    
    <button x="-40" y="0" w="40" h="50" action="close" > 
    <active pixmap="titlebarclosebuttonpressed" /> 
    <inactive pixmap="titlebarclosebutton"/> 
    </button> 
    </blockquote>
                    
    • Fix for setRelativeTo() in Matchbox window manager.

    • GStreamer code cleanup, implementation of SourceDataLine support, remove ALSA library and attempts to open /dev/dsp if GStreamer built. Separate GStreamer native code into a separate library. Remove GStreamer library in reduced-headless build.

      Note: The variables JAVASE_GSTREAMER_INCLUDES and JAVASE_GSTREAMER_LIBDIR have been replaced with JAVASE_GSTREAMER_ROOT. For example: setenv JAVASE_GSTREAMER_ROOT /java/embedded/buildtools/gstreamer/linux/armv7.

    • Fix for graphical performance degradation when splash screen used. Backport from JDK 7.

    [Contents]


    Comparisons with Standard Java SE

     

    Java SE for Embedded derives from Java SE. It can support the same platforms and functionality as Java SE. In addition, Java SE for Embedded provides specific features and support for the embedded market. The embedded-specific features and support include additional platforms, small footprint JREs, headless configurations, and memory optimizations.

    All Java SE for Embedded offerings are Java SE compliant.

    Java SE for Embedded 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 more information on functionality that is generally common to both Standard Java SE 6 and Java SE for Embedded 6, including the Java language, HotSpot VM, Libraries and Tools, see the Java SE Documentation.

    See also the Java SE 6 Release Notes for release information on the Java SE 6 platform.

    For more information on functionality that is specific to Java SE for Embedded 6, see SE Functionality Specific for Embedded.

    [Contents]


    How to Enable Java Plug-in

     

    The headful version of Java SE for Embedded 6 on ARM v6/v7 supports the Java™ Plug-in technology. We have verified that it works with the CoolFox web browser; it likely works with the FireFox web browser (on which CoolFox is based) as well. Mozilla's Gecko rendering engine version 1.9.0 FCS or later is required. Non-Mozilla web browsers, including the WebKit rendering engine (used in some non-Mozilla web browsers), are not supported at the time of this writing.

    It is important to realize that a symbolic link needs to be created in order to get the Java Plug-in to work. This link points from the browser's plugins directory to the Java Plug-in shared library included in the JRE and it can be created with the following command from a shell:

    ln -s <JAVA_HOME>/lib/arm/libnpjp2.so <MOZILLA_DIR>/plugins/libnpjp2.so
    

    In the above command, <JAVA_HOME> represents the directory where you installed the headful Java SE for Embedded 6 bundle (for example, /usr/java/ejre1.6.0_10), and <MOZILLA_DIR> represents the directory where you installed your web browser (for example, /usr/lib/mozilla).

    [Contents]


    How to Run JavaFX Applications

     

    JavaFX™ support in Java SE for Embedded (headful version) on Linux ARM is still under development at the time of this writing.

    However, you can run simple JavaFX applications on Java SE for Embedded 6 Update 10 on Linux ARM v6, although with some limitations. JavaFX applications cannot be run from a web browser on the Linux ARM platform. You must manually download the JavaFX 1.2 Software Development Kit (SDK), compile the sample applications included, and run the applications from a shell. These steps are explained in detail below.

    Note that MultiMedia, Audio, and OpenGL graphics acceleration are not enabled for JavaFX applications on Java SE for Embedded 6 Update 10 on Linux ARM.

    The following procedure outlines the steps required to run simple Java FX applications from a shell on Java SE for Embedded 6 Update 10 (headful version) on Linux ARM v6, for example, on a netbook device.

    • Step 1: Obtain and install the Java SE for Embedded 6 Update 10 (headful version) release for Linux ARM v6.

      1. Download the release by following applicable links starting from the Java SE for Embedded Downloads page.

      2. Unzip and untar the bundle as described in Installation Notes in the Readme document. The installation directory will be referred to as <JAVA_HOME> hereafter.

    • Step 2: Obtain and install the JavaFX 1.2 SDK.

      1. Download the SDK by following applicable links from the JavaFX Downloads page.

      2. Make sure to also click the "Installation Instructions" link and follow these instructions. The installation directory you choose will be referred to as <JAVAFX_HOME> hereafter.

    • Step 3: Change the setting of the PATH environment variable to include <JAVA_HOME>/bin and <JAVAFX_HOME>/bin.

    • Step 4: Download a simple JavaFX application, for example, Reversi at http://javafx.com/samples/Reversi/index.html. (This particular example will be used hereafter).

      1. Click the "Download Source Code" button to obtain the source code. The name of the downloaded file is Reversi.zip.

      2. Unzip Reversi.zip to some directory, referred to hereafter as <APPL_DIR>.

      3. From a shell, run the following commands:

        cd <APPL_DIR>/Reversi
        find . -name "Main.fx" -print
        

        The result should be ./src/reversi/Main.fx

    • Step 5: Compile and create the package.

      From a shell, run the following commands:

      cd  <APPL_DIR>/Reversi
      javafxpackager -src src -appClass reversi.Main
      

      Note that while the path to Main.fx, namely src/reversi/Main.fx, includes "src", the name of the application class (containing the main method), namely reversi.Main, does not include "src".

    • Step 6: Run the JavaFX application.

      cd  <APPL_DIR>/Reversi
      javafx -jar dist/Main.jar
      

    [Contents]


    Contact Us

     

    For any inquiries related to the Java SE for Embedded product, whether technical (for example, any problems or bugs encountered) or non-technical (for example, questions or issues related to licensing), please contact the Java SE for Embedded team.

    [Contents]


    The Java™ Runtime Environment (JRE) and the JavaFX™ runtime environment are products of Oracle Corporation.