What is embedded Java? This question tends to be difficult because most people and organizations--including Sun--have decided to lump so much under a single name. Java is a language and a platform. The latter is what makes categorization in the embedded space more difficult. Sun tried to partition Java into three camps: Java 2 Enterprise Edition (J2EE), Standard Edition (J2SE), and Micro Edition (J2ME). These days, embedded developers often contend with all three.
J2EE tends to be the farthest from the embedded space. Yet it's integral to embedded application success as more applications are part of a network solution, with J2EE providing centralized control and data distribution.
J2SE is the desktop standard, but it often finds its way into embedded environments. That's because it has high-end graphics support, can host its own database, and suits real-time applications. J2SE also is the platform that user interface applications, such as the Eclipse development environment, are built upon. It's found in embedded products like network switches and high-end medical devices.
J2ME, the littlest sibling, is designed for mobile and compact embedded devices. It can handle small memory environments. Also, it has a host of profiles defined to address different applications areas. MIDP Mobile Information Device Profile (MIDP), one such area, is built on the Connected Limited Device Configuration (CLDC). The alternative to CLDC is the Connected Device Configuration (CDC). From a developer's point of view, J2ME is more difficult to understand than J2SE due to all of the combinations supported by J2ME.
On the plus side, J2ME hardware is gaining power and consistency. Cell phones have added features through Java, which is now easier to use given a more standard environment and a tighter link with J2EE servers. OSGi, a platform originally designed for set-top boxes, is finding homes on portable devices because it provides a consistent environment for downloading services.
Look for more J2ME additions this year. Work is being done on the embedded rich client platform (eRCP) based on Eclipse. It targets small devices and uses the embedded Standard Widget Toolkit (eSWT). Hopefully, it will have the same effect that Eclipse has had. Eclipse is where RCP and SWT first appeared.
Check out "Java For Critical Jobs" (p. 56) for more Java enhancements. These target J2SE, but some features may make their way down into J2ME.