Java
Java SE
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.
Comparisons with Standard Java SE
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.
The following list summarizes known bugs in this release.
-Xcomp option)
Compared to the Java SE 1.4.2 Linux ARM releases, this Java SE for Embedded 6 release adds the following:
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:
mov_slow)far_call)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/dspif GStreamer built. Separate GStreamer native code into a separate library. Remove GStreamer library in reduced-headless build.Note: The variables
JAVASE_GSTREAMER_INCLUDESandJAVASE_GSTREAMER_LIBDIRhave been replaced withJAVASE_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.
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
-serveroption 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.
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
pluginsdirectory 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.soIn 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).
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.
Download the release by following applicable links starting from the Java SE for Embedded Downloads page.
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.
Download the SDK by following applicable links from the JavaFX Downloads page.
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
PATHenvironment variable to include<JAVA_HOME>/binand<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).
Click the "Download Source Code" button to obtain the source code. The name of the downloaded file is
Reversi.zip.Unzip
Reversi.zipto some directory, referred to hereafter as<APPL_DIR>.From a shell, run the following commands:
cd <APPL_DIR>/Reversi find . -name "Main.fx" -printThe result should be
./src/reversi/Main.fxStep 5: Compile and create the package.
From a shell, run the following commands:
cd <APPL_DIR>/Reversi javafxpackager -src src -appClass reversi.MainNote that while the path to
Main.fx, namelysrc/reversi/Main.fx, includes "src", the name of the application class (containing the main method), namelyreversi.Main, does not include "src".Step 6: Run the JavaFX application.
cd <APPL_DIR>/Reversi javafx -jar dist/Main.jar
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.
The Java Runtime Environment (JRE) and the JavaFX runtime environment are products of Oracle Corporation.