Conﬁgurations and proﬁles are the main elements that comprise J2ME’s modular design. These two elements enable support for the plethora of devices that
A J2ME conﬁguration deﬁnes a minimum Java platform for a family of devices.
Members of a given family all have similar requirements for memory and processing power.
A conﬁguration is really a speciﬁcation that identiﬁes the systemlevel facilities available, such as a
set of Java language features,
the characteristics and features of the virtual machine present,
and the minimum Java libraries that are supported.
Software developers can expect a certain level of system support
to be available for a family of devices that uses a particular conﬁguration.
A conﬁguration also speciﬁes a minimum set of features for a category of devices.
Device manufacturers implement proﬁles to provide a real platform for a family
of devices that have the capabilities that a given conﬁguration speciﬁes.
The other J2ME building block, the proﬁle, speciﬁes the application-level interface
for a particular class of devices. A proﬁle implementation consists of a set of Java
class libraries that provide this application-level interface. Thus, a proﬁle theoretically could specify all kinds of functionality and services.
This is not the intention of its creators, however. The creators of J2ME intend that
a proﬁle should address the needs of a speciﬁc device category or vertical market
pertaining to that device category. The idea is not to place a plethora of unrelated
application level features in a proﬁle. Rather, the main goal is to guarantee interoperability—which doesn’t necessarily imply compatibility between different manufacturers’ implementations—between all devices of the same category or vertical
market family to deﬁne a standard platform for Java application development.
For example, a proﬁle might support a network communication facility for the
popular Short Message Service (SMS) standard widely used by mobile phones.
Because the SMS standard is a ubiquitous feature of mobile telephony, it makes
sense to deﬁne this service in a proﬁle that targets mobile phones, rather than to
build it into a conﬁguration.
A proﬁle is implemented on top of a conﬁguration, one step closer to the implementation of real-world applications.
Typically, a proﬁle includes libraries that are
more speciﬁc to the characteristics of the category of devices they represent than
are the libraries that comprise conﬁgurations.
Applications are then built on top
of the conﬁguration and proﬁle; they can use only the class libraries provided by
these two lower-level speciﬁcations. Proﬁles can be built on top of one another. A
J2ME platform implementation, however, can contain only one conﬁguration.
Figure 1.1 shows the conceptual layers that comprise the J2ME platform.
So far, these notions of conﬁgurations, proﬁles, and platform deﬁnitions is somewhat abstract. The next section gives you a more concrete description of the characteristics of actual environments.
Conﬁgurations and Proﬁles
A conﬁguration speciﬁes three basic elements:
• a set of Java programming language features
• a set of Java virtual machine features
• a set of supported Java libraries and application programming
Hope this will help you to understand J2ME Architecture.