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.
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.
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
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
Use ARM v7
movt instructions to perform the following:
Store oops in
NMethod on ARM v5, v6 and address them by LDR Rd, [PC, ...] instruction.
polling_page address with an immediate literal instead of
ldr (without mmaping to special address for now).
Avoid buffer overflow problem in
Fixes for Matchbox window manager support of
Matchbox window manager workaround - permit access to the dialog close button when it is available.
To add a dialog, modify the theme (
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>
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_LIBDIRhave 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.
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.so
In the above command,
<JAVA_HOME>represents the directory where you installed the headful Java SE for Embedded 6 bundle (for example,
<MOZILLA_DIR>represents the directory where you installed your web browser (for example,
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.
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
Step 3: Change the setting of the
PATHenvironment variable to include
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.zipto some directory, referred to hereafter as
From a shell, run the following commands:cd <APPL_DIR>/Reversi find . -name "Main.fx" -print
The result should be
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
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
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.