Java 2 Micro Editions
Sun's Java 2 Micro Edition (J2ME) delivers an embedded development framework that can be enhanced incrementally. The Java Virtual Machine (JVM) is the base on which configurations are built, and profiles are built on configurations. Applications are typically built on a profile, although it's possible to build on a configuration.
The simplest configuration specified is the Connected Limited Device Configuration (CLDC). It incorporates a basic user interface and basic connectivity support. The CLDC is built on the K virtual machine (KVM), which is a basic JVM. The Mobile Information Device Profile (MIDP) is based upon this simple configuration, and is now finding a home in Internet cellphone devices.
The Connected Device Configuration (CDC) is a superset of the CLDC. It targets devices with fast, reliable network connectivity and a user interface based on the Java Abstract Window Toolkit (AWT). The Personal profile is the most common application base. It's built on the Foundation profile. This combination is showing up in Internet appliances.
Configurations and profiles are specified by a Java Specification Request (JSR). The Java Community Process (JCP) develops and approves JSRs.
Java leads the pack for platform-based development. It spans the development space from tiny smart-card environments to enterprise servers running the Java 2 Enterprise Edition (J2EE). Current Java 2 technology is based on the 1.3 version of the Java Developers Kit (JDK).
The Java 2 Micro Edition (J2ME) covers the medium- to high-end embedded space. It builds on the Java 1 specifications for PersonalJava and EmbeddedJava that are implemented using JDK 1.2 or earlier versions.
Java implementations and development tools of various scope run on almost every available processor and operating system. Java applications compile to Java byte codes. Java is one of the few environments with processors specifically designed to execute its code directly. A number of implementations support native instruction sets in addition to Java.
Although Java applications are often interpreted, hardware boosts aren't the only technology used to improve performance. Just-in-time (JIT) compilation to native code, ahead-of-time (AOT) compilation, and dynamic code recompilation are only a few of the technologies employed in Java environments.
Java's support for garbage collection improves programmer productivity. But it's just one aspect of an environment that supports everything from real-time operating systems to the Java Debug Wire Protocol (JDWP), which is especially useful for headless embedded devices.
Embedded Java technology encompasses a vast array of existing and developing technologies. Java Beans support componetized development while the Java Embedded Server (JES) provides a modular Internet platform, allowing developers to quickly create networked devices.
The Jini network technology provides a way for devices to advertise and locate network services. Interest in Jini has hit a number of highs and lows, but it remains a useful technology.
Sun still has significant control over the Java platform. The Java Community Process (JCP) provides significant transparency when it comes to developing standards, however. J2ME profiles and configurations are defined in Java Specification Requests (JSRs). JSRs are pending for a number of new profiles.
Java enjoys significant third-party support in all areas, making it one of the most desirable development platforms around.
Check out java.sun.com for more information.