United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Resources

JAVA EMBEDDED - JAVA SE DOCUMENTATION


 


Java Logo

 

Red Triangle  JAVA SE FOR EMBEDDED DOCUMENTATION

The Java Platform, Standard Edition (Java SE) is a complete platform for application development and deployment. Java SE for Embedded is based on Java SE and provides specific features and support for embedded systems.

README - Java SE for Embedded 7 Update 2

Release Notes - Java SE for Embedded 7 Update 2

README - Java SE for Embedded 6 Update 30

Release Notes - Java SE for Embedded 6 Update 30

README - Java SE for Embedded 7

Release Notes - Java SE for Embedded 7

README - Java SE for Embedded 6 Update 27

Release Notes - Java SE for Embedded 6 Update 27

README - Java SE for Embedded 6 Update 25

Release Notes - Java SE for Embedded 6 Update 25

Release Notes - Java SE for Embedded 6 Update 21

Release Notes - Java SE for Embedded 6 Update 10

Installing Linux on an ARM-based BeagleBoard
 

 

Refer to the Systems Requirements page for minimum platform requirements for all releases of Java SE for Embedded. 

For comments and questions, please contact Java SE for Embedded Engineering and Marketing.

 

 
  
Red Triangle  JAVA SE FOR EMBEDDED SYSTEM REQUIREMENTS

Java SE for Embedded supports the traditional Java SE desktop and server platforms. These supported platforms can be found at: SE 6 Supported System Configurations and SE 5 Supported System Configurations.

Additionally, Java SE for Embedded supports platforms that are specifically targeted for embedded markets. These platforms are ARM, Power Architecture and x86. Custom builds for other platforms may be developed by our Engineering Services team - for more information please contact us. Summarized below are the Supported System Configurations for the currently available for Java SE for Embedded releases.

 

Java SE for Embedded 7 on ARM EABI, Little-Endian, Linux

CPU ARM v5 ARM v6/v7 ARM v7

OS* Linux: kernel 2.6.28 or higher; glibc 2.9 or higher Linux: kernel 2.6.28 or higher; glibc 2.9 or higher Linux: kernel 2.6.28 or higher; glibc 2.9 or higher

  
FP Soft Float Hard Float (VFP) Hard Float (VFP)

Headful No No Yes. X11R6 or higher

  
RAM 32MB or more for Java 32MB or more for Java 64MB or more for Java

ROM/Flash/Disk 41MB or more for Java 41MB or more for Java 48MB or more for Java

Java SE for Embedded version 7 Update 2 (B13) >> Download 7 Update 2 (B13)  >> Download
7 Update 2
(B13) Server Compiler (ARM v7 only) >> Download
7 Update 2 (B13) >> Download


Java SE for Embedded 7 on Power Architecture, Big-Endian, Linux

CPU e600 core e500v2 core

OS* Linux: kernel 2.6.28 or higher; glibc 2.9 or higher Linux: kernel 2.6.23 or higher; glibc 2.5 or higher

FP Classic HW FP Embedded FP

Headful No No

RAM 32MB or more for Java 32MB or more for Java

ROM/Flash/Disk 37MB or more for Java 37MB or more for Java

Java SE for Embedded version 7 Update 2 (B13) >> Download 7 Update 2 (B13) >> Download

  

Java SE for Embedded 7 on x86 Linux

CPU x86

OS* Linux: kernel 2.6.28 or higher; glibc 2.9 or higher

Headful No

RAM 32MB or more for Java

ROM/Flash/Disk 41MB or more for Java

Java SE for Embedded version 7 Update 2 (B13) >> Download

  

 
Java SE for Embedded 6 on ARM EABI, Little-Endian, Linux

CPU ARM v5 ARM v6/v7 ARM v7

OS* Linux: kernel 2.6.28 or higher; glibc 2.9 or higher Linux: kernel 2.6.28 or higher; glibc 2.9 or higher Linux: kernel 2.6.28 or higher; glibc 2.9 or higher

  
FP Soft Float Hard Float (VFP) Hard Float (VFP)

Headful No No Yes. X11R6 or higher

  
RAM 32MB or more for Java 32MB or more for Java 46MB or more for Java

ROM/Flash/Disk 37MB or more for Java 37MB or more for Java 37MB or more for Java

Java SE for Embedded version 6 Update 30 (B12) >> Download 6 Update 30 (B12) >> Download
6 Update 30 (B12) >> Download


Java SE for Embedded 6 on Power Architecture, Big-Endian, Linux

CPU e600 core e500v2 core

OS* Linux: kernel 2.6.28 or higher; glibc 2.9 or higher Linux: kernel 2.6.23 or higher; glibc 2.5 or higher

FP Classic HW FP Embedded FP

Headful No No

RAM 32MB or more for Java 32MB or more for Java

ROM/Flash/Disk 37MB or more for Java 37MB or more for Java

Java SE for Embedded version 6 Update 30 (B12) >> Download 6 Update 30 (B12) >> Download

 

Java SE for Embedded 6 on x86 Linux

CPU x86

OS* Linux: kernel 2.6.28 or higher; glibc 2.9 or higher

Headful No

RAM 32MB or more for Java

ROM/Flash/Disk 37MB or more for Java

Java SE for Embedded version 6 Update 30 (B12) >> Download

 

Java SE for Embedded 5 on Windows XP-Embedded

CPU x86

OS Windows XP-Embedded SP2

Headful Yes

Installation SLD

RAM 64MB or more for Java

ROM/Flash/Disk 40MB or more for Java

Java SE for Embedded version 5 Update 10 >> Download

* The minimum kernel and glibc versions stated above are based on testing on representative systems.  However, some embedded boards,  particularly newer multi-core systems, may require more recent kernel, glibc versions than the minimums listed above.  Check with your platform sources, including system vendor, Linux vendor, general kernel, glibc, third-party libraries release/patch info, to ensure that are you are running the correct kernel, glibc and third-party libraries versions for your platform.


 



Red Triangle  JAVA SE FOR EMBEDDED FAQ

 Answers to frequently asked questions regarding embedded use of Java SE are described below.

These are summarized on this page earlier. 

Q2. How is Java SE for Embedded functionally different from standard Java SE?

Java SE for Embedded is derived from Java SE. It supports the same platforms and functionality as Java SE. Additionally, it provides specific features and support for the embedded market. These embedded-specific features and support currently include additional platforms, small footprint JREs, headless configurations and memory optimizations. All Java SE for Embedded offerings are Java SE compliant.

SE Functionality Specific for Embedded

Embedded systems can differ from traditional Java SE Desktop and Server configurations in a few key areas. These include RAM, permanent local storage (Disk, ROM or Compact Flash), KVM resources (Keyboard, Video, Mouse) and platform support (CPU and OS). For each of these areas, Java SE for Embedded provides specific support for embedded devices:

Headless Support
Java SE for Embedded provides a Headless option to support embedded devices that do not have a display monitor, keyboard or mouse. The functionality to receive keyboard and mouse input and render on a display is removed. The rest of Java SE functionality is still available including the underlying graphics support that enables printing and binary file generation.

Small Footprint JRE
Through additional compression and optional file removal, Java SE for Embedded can provide a reduced footprint JRE required by some embedded systems. The removed files include those not needed by headless as well as many others including tools and character converters. This reduction results in a JRE that is less than one-half the footprint of the full JRE - as low as 30MB for Java SE 5.0.

JRE size is release and platform dependent, but here's an example using 5.0 Update 6 for Linux x86:

 
JRE ROM Footprint
Full JRE installed
68 MB
Small Footprint JRE installed
29.5MB
 

The Small Footprint JRE is still TCK compliant.

Memory Optimizations
Java SE for Embedded provides enhanced handling for embedded devices, through memory ergonomics and other modifications.

Low Memory Ergonomics
On start-up in low memory environments, Java SE for Embedded can reduce the default size of VM memory allocations. This reduction is for the three largest memory areas allocated by the VM: the PermGen, Java Heap and Code Cache.

The VM dynamically sets the size of the allocation based on a percentage of the physical memory available at start-up but limited by a cap:

 
Memory
Area
Memory
Content
Allocation
Pct     Cap
PermGen
Java Class Data
50%   64MB
Java Heap
Read/Write Java Objects
50%   64MB
Code Cache
JIT compiled code
12%   32MB
 

As an example, upon starting up in an embedded device with 32MB physical memory, the VM will allocate 16MB for the PermGen, 16MB for the Java Heap and 4MB for the Code Cache.

The dynamic settings can be overridden using these flags:

 
Memory
Area
Command-Line
Flag
PermGen
-XX:MaxPermSize=yy
Java Heap
-Xmxyy
Code Cache
-XX:ReservedCodeCacheSize=yy
 

Where yy is size in bytes e.g. -Xmx64m specifies a 64MB Java Heap.

Other Memory Savings
Java SE Embedded provides a 12MB RAM savings by eliminating the use of MMAP when loading jar files and removing a static table for threads.

Additional Platform Support

Java SE for Embedded supports the traditional Java SE desktop and server platforms. This includes:

CPU: x86, x64, SPARC 32-bit and 64-bit
OS: Linux, Windows and Solaris


It also supports platforms specific for embedded such as the ARM and Power Architecture microprocessors. Please contact us if you don't see the platform you need.

Q3. How does it differ from Java ME?

Java ME and Java SE for Embedded address different segments of the embedded market. The Java ME CLDC and CDC offerings are designed for resource-limited devices including cell phones, handsets and media players. The APIs of CLDC and CDC are more limited than Java SE but enable these ME offerings to support devices with small footprints. Java SE for Embedded provides the rich functionality of Java SE and is targeted at higher-end embedded devices - generally, those devices with at least 32MB RAM and 32MB of ROM.

Q4. What platforms does Java SE for Embedded support?

Java SE is supported on close to 30 different ISA/OS platforms and can be used for embedded purposes besides desktop and server purposes.  The hardware (ISA) platforms include x86, x64, and SPARC (32 and 64 bit).  The OS platforms include Linux, Windows and Solaris.  Java SE for Embedded releases are special Java SE releases in that these have been customized (footprint-reduced, and more) specifically for embedded use and may be commercially deployed for such use only.  Typical hardware platforms on which Java SE for Embedded is supported include ARM, Power Architecture and x86.  The OS platform is Linux; for x86, Windows XP-Embedded is also a supported OS.  A headful version of Java SE for Embedded is available on ARMv7/Linux and Windows XP-Embedded.  A headless version is available on all supported Linux platforms.  For further details, please see the System Requirements for Java SE for Embedded.
 

Q5. I don't see the platform I need supported, what can I do?

If your project has different hardware (cpu, memory) or OS requirements please contact us. There may be options, including other products and engineering services, we can offer to help you with a solution.

Q6. What are the RAM and ROM/Disk requirements for Java SE for Embedded?

Memory footprint requirements are dependent on the platform (OS, swapping, etc), SE release, SE functionality (e.g. headless or not) and application. The RAM and ROM/Disk/Flash requirements are summarized earlier on this page. 

Q7. How does Java SE for Embedded compare in performance with C/C++?

Though ultimately performance is application dependent, Java SE applications perform on par with C/C++ applications. Many third party tests have demonstrated Java to be equal or better than C/C++ performance. Java's dynamic just-in-time compilation and aggressive in-lining generates code that can be better optimized than static C/C++ compilation.

Q8. How do I call my native drivers and applications?

The Java SE specification provides an interface to native drivers and C or C++ functions called the Java Native Interface (JNI). JNI works by creating a Java-visible wrapper around the native code, a new header file to cross-reference the wrapper, and then a call from the Java program which allows parameters to be passed and received by the native code.

Q9. How do I debug my Java application for embedded use?

There is a full set of APIs and tools that enable you to debug your Java application. Both local and remote debugging is supported. There are also APIs, tools and resources for observability, management and performance profiling. A good starting point for all these activities is the Troubleshooting Java SE webpage.

Q10. How is Java SE for Embedded licensed?

Java SE is free to use for development of embedded applications. We provide affordable licensing for deploying Java SE in an embedded device or as part of a embedded-based system. Please contact us when you are ready to deploy or if you have already deployed but not sure you have the correct license.

Q11. Does deploying Java SE for embedded devices or purposes require a royalty?

Yes. Oracle's license for Java SE enables it to be freely used for general purpose desktops or servers. If Java SE is bundled as part of a dedicated solution that involves or controls hardware of some kind, then it's likely an embedded application and is subject to modest royalty payments.

Q12. How do I determine how much royalty I'll owe on my embedded offering that includes Java SE?

Please contact us to set up an appointment with our specialized OEM sales team. They have the necessary information to determine the pricing for your product. Oracle's embedded royalty model seeks to match royalty costs to the price/volume of your product so that you can keep costs low and use Java SE on the wide range of SE-capable products.

Q13. Do I have to pay to develop my embedded application for Java SE?

No - developing with Java SE for embedded or non-embedded purposes is free, as are the NetBeans tools best suited for the job. You can and should sign a royalty agreement with Oracle during the development phase, but you do not owe any royalty payments until you actually ship your product.

Q14. How do I get started?

It's easy. There are 3 main steps:

  1. Download - Starting from the downloads page, choose the latest Java SE release from either embedded-only platforms or all (Embedded, Desktop, Server) Java SE platforms. Please contact us if you don't see what you need.
  2. Develop - Try Java SE on your platform. Develop your embedded application with it - development is free. If you're new to Java, there's a lot of help including our tutorials, blueprints, documentation and training as well as extensive resources from the Java community.
  3. Deploy - Ready to deploy? Contact us to find out about our licensing, support and partner programs.