Blu-ray BD-J Application Development using Java ME
Home --> Introduction to Java ME
Introduction to Java ME (J2ME)
Because Java encompasses such a wide range of applications running on so many diverse environments, the platform was divided into three sections in the late 1990s.
Java ME (J2ME) stands for Java MicroEdition. Whereas Java EE (Java Enterprise Edition) refers to the specs that govern the use of java in distributed server side environments, and while Java SE (Java 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 Java SE, while itself being a subset of Java EE.
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:
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.
In the case of BD-J we are concerned with the CDC configuration, as opposed to the usual CDC configuration present in most cellphones and other small devices today.
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).
In the case of BD-J, the profiles we are most concerned about would be the Personal Basis Profile and the Personal Profile.
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.