thread groups and advanced thread control
user-defined class loaders
the Java native interface (JNI)
automatic object finalization.
Compatibility played a large part in the design of Java ME. In order
to maintain as much compatibility with Java SE as possible, the Java
ME packages were divided into two logical groupings: those that were
specific to Java ME (packages whose names start with javax ) and those
that were a subset of their Java SE counterparts which followed the same
One of the strongest features of the Java language is its security - both
at the application layer and within the virtual machine itself. The VM
security layer ensures that bytecodes are valid and safe to execute. This
works really well on servers and the desktop environment but not so
well on mobile phones with small processors and small power and
memory budgets. The solution was a hybrid approach using the concept
of pre-verification performed offline as part of the build process on the
development machine. Only after VM acceptance may the bytecodes
execute on the host hardware.
Configurations define the lowest common denominator for a horizontal
category of devices that share similarities in terms of memory budgets,
processor power and network connectivity. A configuration is the spec-
ification of a JVM and a base set of necessary class libraries which
are primarily cut-down versions of their desktop counterparts. There are
currently only two configurations:
The Connected Limited Device Configuration (CLDC) was aimed
specifically at mobile phones, two-way pagers and low-level PDAs.
The Connected Device Configuration (CDC) was aimed at devices
with more memory, better network connectivity and faster processors.
We should be clear, however, that the CDC profile doesn't really
have a role in the mobile phone space at this time. Although high-end
devices, such as Symbian OS phones, can accommodate a CDC-based
Java platform, the consumer market today is based on MIDP/CLDC
applications, so CDC is not within the scope of this topic.