title.
 
 
Home -- > Introduction to Java ME (J2ME)   

Introduction to Java ME (J2ME)

Java ME (J2ME) stands for Java 2 MicroEdition. Whereas J2EE (Java 2 Enterprise Edition) refers to the specs that govern the use of java in distributed server side environments, and while J2SE (Java 2 Standard Edition) addresses the needs of the desktop, Java ME (J2ME) targets the extremely diverse array of consumer and handheld devices that have suddenly proliferated like wildfire in recent years.

The relationship between the three can be thought of as a superset-subset one, with Java ME (J2ME) being a subset of J2SE, while itself being a subset of J2EE.

The Java Family.


The problem for SUN and its partners was the extremely diverse range of devices that the Java ME (J2ME) was supposed to target, with the minimal devices having as little as 1 kb of RAM and 24 kb of ROM (and small or no screens), while the larger, more capable devices had nearly the capabilities of desktops. Java ME (J2ME) needed to be extremely flexible in meeting the demands of all these target devices.

On the one hand, they wanted some portability going from one small device to another. On the other hand, the range of these devices in terms of memory, speed, and other capabilities was daunting.

They could have:

  1. Created an all-encompassing architecture that would have contained every single available and possible API, BUT this would mean that lower end devices would be overburdened because of their memory constraints.

  2. Created an architecture for the lowest common-denominator, which would mean stripping most everything out of the Java ME (J2ME).

They decide on neither --- What they finally decided on was to make the Java ME (J2ME) extrememly modular, with particular profiles targeted at specific devices, BUT with most portability maintained across configurations.

Configurations and Profiles

These two are what make the Java ME (J2ME) extremely flexible and modular, but at the same time they cause lots of confusion among beginner programmers.

Configurations are targeted towards a horizontal group of devices, meaning devices that have similar memory constraints, similar user interface requirements, similar network capabilities, etc. It's the minimum platform (VM, core java classes) that will support a relatively broad range of similar devices (e.g. low and medium end PDAs and cellphones could be placed in the same configuration because they may have similar requirements and needs as noted above). There are two current configurations: The CDC (Connected Device Configuration), for capable devices such as Symbian EPOC Communicators and high end PDAs; and CLDC (Connected Limited Device Configuration), for low end PDas and such limited devices as cell phones, pagers, and smart cards.

Profiles sit on top of a configuration and will not work without the underlying configuration. Profiles target devices in a specific vertical market (e.g. MIDP profile, which is part of the CLDC configuration targets low end cellphones. There is a PDA profile in the works which will also be in the CLDC). Profiles contain the java classes that focus on specific implementations such as user interface components and record managment (ie. where and how to store persistent data).

The image below represents the relationships between the different Java ME (J2ME) configurations and profiles. Click on the respective profiles/configurations for more information. The different profiles are based upon two configuration: the CDC (Connected Device Configuration) for high end devices, and the CLDC (Connected Limited Device Configuration), for resource constrained devices like basic cell phones and pagers.

The Java ME (J2ME) Family.

return to previous page.

pixel
Home | Java ME (J2ME) Notes | Java ME (J2ME) Resources | Contact Us
pixel
Copyright © 2006 RimLife Technologies LLC
All Rights Reserved. Java, Java ME (J2ME), are the trademarks of Sun Microsystems Inc.
Legal Stuff