Dec 8, 2011
This document summarizes the functionality and known issues of Java SE for Embedded 7 Update 2 (7u2). Java SE for Embedded 7 Update 2 is based on Java Platform Standard Edition 7 Update 2 (Java SE 7u2) 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.
This release of Java SE for Embedded 7 Update 2 was tested on Linux for ARM, Power Architecture and x86 systems. The requirements of these systems are specified at Java SE for Embedded System Requirements. For ARM, testing was done on the v5, v6 and v7 architectures. Power Architecture systems based on e600 core and e500v2 core architectures were tested. Headless mode was tested on all systems; headful mode was tested on ARM v7.
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 release on ARMv7.
Power Architecture Support
Java SE for Embedded 7 Update 2 provides support for Power Architecture on Linux. For Power Architecture, the previous Java SE for Embedded release was based on Java SE 6u27.
Serviceability Improvements in Java SE for Embedded
Starting with Java SE for Embedded 7u2, the native library libattach.so
is included with the Java SE for Embedded JRE. This addition enables the functionality of the following serviceability commands:
Command | Functionality |
---|---|
jmap -dump:options PID |
dumps Java heap (in HPROF format) |
jmap -histo PID |
prints a histogram (stats) of the heap, organized by Java class |
jstack PID |
prints Java stack traces of Java threads |
jstack -l PID |
like jstack PID , but prints additional information about locks |
It is necessary to first import tools.jar
from a JDK (any platform) into the Java SE for Embedded JRE installation since the jstack and jmap underlying functionality is provided in tools.jar
of the JDK and not in the JRE. The JDK and JRE must have the same release version (for example, 7u2).
Once you have copied tools.jar
from the JDK, you can access the above jmap
and jstack
functionality using the below commands. Note that these commands need to be executed locally on the embedded device running Java SE for Embedded. If the embedded device is headless, the local execution can be accomplished through a remote terminal connection to the device (using for example telnet
or ssh
).
java -cp TOOLS_JAR_PATH/tools.jar sun.tools.jmap.JMap -dump:options PID
java -cp TOOLS_JAR_PATH/tools.jar sun.tools.jmap.JMap -histo PID
java -cp TOOLS_JAR_PATH/tools.jar sun.tools.jstack.JStack PID
java -cp TOOLS_JAR_PATH/tools.jar sun.tools.jstack.JStack -l PID
where:
tools.jar
jmap
The enhanced serviceability functionality provided by adding libattach.so
to the Java SE for Embedded JRE is limited to the four commands listed previously. For more information on jmap
and jstack
, including usage and output, see JDK Tools and Utilities.
The Server Compiler is Java SE's highly optimizing bytecode compiler. Until this release, Java SE for Embedded on ARM only supported the Hotspot Client compiler: the lightly optimizing and less resource hungry bytecode compiler. Now, Java SE for Embedded 7 Update 2 brings Server Compiler support on ARM.
The Server Compiler on ARM technology is restricted to ARM version 7 processors with hardfloat (vfp) support.
ARM and PPC ReservedCodeCacheSize Maximum Value is 32 Megabytes
In Java SE for Embedded 7 Update 2, the ARM and Power Architecture ReservedCodeCacheSize
maximum value is 32 megabytes. The reason for ReservedCodeCacheSize
limitation is an architecture restriction on branch offset. The limitation can be overcome by using a non-optimized sequence of instructions. However, this approach introduces a significant performance drop. Currently, JavaVM supports a maximum of 32 megabytes of ReservedCodeCacheSize
for ARM and Power Architecture.
OpenGL Limitation
The headful version of Java SE for Embedded 7 Update 2 on Linux ARM does not support the OpenGL acceleration pipeline for Java2D.
Bug Database - In most cases, the bug ID number for each bug fixed is a link to the detailed bug report on the Bug Database web site. Bug Database enables you to file your own bug reports, add comments to existing bug reports, and vote for the bugs you consider most important.
Java SE for Embedded 7 Update 2 is based on Java SE 7 Update 2. Refer to Java SE 7 Update 2 Release Notes for additional information on relevant bug fixes.
Java SE for Embedded derives from Java SE, but provides specific features and support for the embedded market on a limited set of supported platforms. The embedded-specific features and support include additional platforms, small footprint JREs (optional files removed), headless configurations, and memory optimizations.
All Java SE for Embedded offerings are Java SE compliant.
On most platforms, 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 (unless as specified in the Server Compiler Technology section).
For more information on functionality that is generally common to both Standard Java SE 7 and Java SE for Embedded 7, including the Java language, HotSpot VM, Libraries and Tools, see the Java SE Documentation.
See also the Java SE 7 Release Notes for release information on the Java SE 7 platform.
For more information on functionality that is specific to Java SE for Embedded 7, see SE Functionality Specific for Embedded.
The headful version of Java SE for Embedded 7 Update 2 on ARMv7 supports Java™ Plug-in technology. (See Applet Developer's Guide for more infomration.) We have verified that Java SE for Embedded 7 Update 2 works with the Firefox 3.6 web browser. 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.
A symbolic link needs to be created in order to get the Java Plug-in to work. This link should point 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 7 Update 2 bundle (for example, /usr/java/ejre1.7.0_2
), and <MOZILLA_DIR>
represents the directory where you installed your web browser (for example, /usr/lib/mozilla
).