You can see a list of the system requirements here.
Java SE 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 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 Embedded provides specific support for embedded devices:
Java SE 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 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:
|Full JRE installed||68 MB|
|Small Footprint JRE installed||29.5MB|
The Small Footprint JRE is still TCK compliant.
Java SE Embedded provides enhanced handling for embedded devices, through memory ergonomics and other modifications.
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 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.
Java ME and Java SE 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 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.
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). Linux is the supported OS platform. Java SE 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 Embedded is supported include ARM, Power Architecture and x86. Linux is the supported OS platform for each platform architecture. A headful version of Java SE Embedded is available on ARMv7/Linux. A headless version is available on all supported Linux platforms. For further details, please see the System Requirements for Java SE 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 on the System Requirements page.
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.
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.
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.
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.
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..
No - developing with Java SE 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.
It's easy. There are 3 main steps: