Java ME technology was originally created in order to deal with the constraints associated with building applications for small devices. For this purpose Oracle defined the basics for Java ME technology to fit such a limited environment and make it possible to create Java applications running on small devices with limited memory, display and power capacity.
Java ME platform is a collection of technologies and specifications that can be combined to construct a complete Java runtime environment specifically to fit the requirements of a particular device or market. This offers a flexibility and co-existence for all the players in the eco-system to seamlessly cooperate to offer the most appealing experience for the end-user.
The Java ME technology is based on three elements;
a configuration provides the most basic set of libraries and virtual machine capabilities for a broad range of devices,
a profile is a set of APIs that support a narrower range of devices, and
an optional package is a set of technology-specific APIs.
Over time the Java ME platform has been divided into two base configurations, one to fit small mobile devices and one to be targeted towards more capable devices like smart-phones and set top boxes.
The figure below represents an overview of the components of Java ME technology and how it relates to the other Java Technologies.
The Java Platform
Configuration for Small Devices - The Connected Limited Device Configuration (CLDC)
The configuration targeting resource-constraint devices like mobile phones is called the Connected Limited Device Configuration (CLDC). It is specifically designed to meet the needs for a Java platform to run on devices with limited memory, processing power and graphical capabilities. On top of the different configurations Java ME platform also specifies a number of profiles defining a set of higher-level APIs that further define the application. A widely adopted example is to combine the CLDC with the Mobile Information Device Profile (MIDP) to provide a complete Java application environment for mobile phones and other devices with similar capabilities.
With the configuration and profiles the actual application then resides, using the different available APIs in the profile. For a CLDC and MIDP environment, which is typically what most mobile devices today are implemented with, a MIDlet is then created. A MIDlet is the application created by a Java ME software developer, such as a game, a business application or other mobile features. These MIDlets can be written once and run on every available device conforming with the specifications for Java ME technology. The MIDlet can reside on a repository somewhere in the ecosystem and the end user can search for a specific type of application and having it downloaded over the air to his/her device.
CDC - The Connected Device Configuration
Configuration for More Capable Devices and SmartPhones - The Connected Device Configuration (CDC)
The configuration targeted larger devices with more capacity, like high-end smartphones, embedded devices, and set-top boxes, is called the Connected Device Configuration (CDC). The goals of the CDC is to leverage technology skills and developer tools based on the Java Platform Standard Edition (SE), and to support the feature sets of a broad range of connected devices while fitting within their resource constraints.
Looking at the benefits the CDC brings to the different groups in the value-chain the following can be said:
Enterprises benefit from using network-based applications that extend the reach of business logic to mobile customers, partners and workers.
Users will benefit from the compatibility and security of Java technology.
Developers benefit from the safety and productivity of the Java programming language and the rich APIs in the Java platform.
On the CDC there are three different defined profiles:
The Foundation Profile (JSR 219)
The Personal Basis Profile (JSR 217) and
The Personal Profile (JSR 216)
For each of these profiles there are in turn a set of optional packages on which the actual application runs.
Why Java ME Platform?
The Java ME Platform is a truly open solution for building mobile applications. It comprises a number of specified components, which have been defined by the industry through the Java Community Process (JCP). Java ME is designed to provide portability of applications between platforms.
The Java ME technology ecosystem revolves around a number of different players in the industry, all participating in the continuous improvement and development of the platform through the JCP. End users are constantly demanding new features and additional capabilities to their services, which content developers strive to create. Original Equipment Manufacturers (OEMs) design devices that are capable of hosting these new services and features. Carriers deploy these services onto their mobile environment and further drive the exploration of new business.
Java Mobile Eco-System
This constant evolution ensures that the Java platform will continue to serve the needs of everyone involved in the eco-system.