Modern mobile devices come in more flavors than maybe spiders on earth and are increasingly creating webs of their own by connecting with each other and to the Internet through technologies such as WLAN, GPRS/EDGE and 3G/UMTS. This diversity is a huge challenge for application developers, who have to modify or port their applications to make them run on various mobile platforms.
But didn't Java eliminate that problem years back?
In the desktop world, Java and various other languages have been able to make applications independent of the platform, but what about mobile platforms? The same technologies are also available in the embedded world of mobile devices, but with modifications, as mobile devices have some inherent limitations:
1. They have slower processors than their present day desktop cousins, however, compared to PCs of the mid-90s, they are still way ahead.
2. They have limited amount of primary memory (RAM) and secondary storage (Flash), but are lucky they dont need to deal with memory hogs such as Windows Vista.
Java Platform, Micro Edition
One of the leading technologies in this area, which is widely supported, is the Java Platform--Micro Edition (Java ME). Formerly, this was known as J2ME. The advantage of using this platform is the same as that associated with the standard Java technology – platform independent applications. The programming language remains Java, but there are limitations and modifications. The Java ME platform is layered and modularized as follows (see Figure 1):
1. The Virtual Machine (VM): This is the core of the Java runtime environment and is responsible for executing the Java code, independent of the underlying OS and processor. For the Micro Edition, the VM is modified to run in resource constraint devices and is often called the KVM or kilo-virtual-machine due to its smaller size. For less resource constrained devices such as Digital TVs or Smartphones, the standard Java Virtual Machine (JVM) is used.
2. The Configuration: This is the most basic set of libraries for broad range of devices. There are two configurations defined by the Java ME platform:
a. Connected Limited Device Configuration (CLDC): This is a set of libraries for the most resource constrained devices such as low and mid range mobile phones.
b. Connected Device Configuration (CDC): This is a set of libraries for devices with more processing capabilities such as high end mobile phones (smartphones) and digital TVs.
3. The Profile: The profile is a set of APIs specific to devices such as a Mobile Phone or a Digital TV. For example, the common profile for the mobile device is called the Mobile Information Device Profile (MIDP) and runs on CLDC. On the other hand, the profiles available for the CDC are the Foundation Profile, the Personal Basis Profile and the Personal Profile.
4. Optional Packages: These are additional libraries for richer user experience such as multimedia and 3D.
The layered architecture allows the device manufacturers an easy way to configure the capabilities provided by Java ME on their mobile platforms.
 |
|
Figure 1: Java ME Architecture
|