J2ME is the little brother of the standard version of Java we generally work with on a PC. Hence is the name, Java Micro Edition. Portable or mobile devices come with lower resources in terms of memory and processing speed compared to a PC. The normal Java is too much a load for them and so this cut-down version is required. J2ME provides the platform to develop applications for such resource-constrained devices.
J2ME platform comprises of three layers as shown -
Configuration - The base is a configuration, which contains a JVM and some class libraries. JVM is the short form of Java Virtual Machine on which other parts run, however this JVM is again a cut-down version of normal JVM. Connected Limited Device Configuration (CLDC) is the common SUN configuration. CLDC is for devices with limited configurations for example, devices that have only 128 to 512KB of memory available for Java applications. This limited JVM is actually called the KVM. Its counterpart, the Connected Device Configuration (CDC) is for devices with at least 2MB of memory available and supports a more feature-rich JVM (but still not a standard JVM).
Profile - It provides the basic APIs (e.g. for getting input/output, designing user interface, basic utilities) that are used for creating J2ME applications for mobile devices. SUN provides MIDP (Mobile Information Device Profile) for this purpose. Note that MIDP cannot be used with CDC devices. CDC devices get their own set of profiles, like the Foundation and Personal profiles. We will focus on MIDP and CLDC here.
Optional Packages - It consists of APIs required for specialized tasks and different sets are required for different applications. The location API (JSR - 179) falls in this category.
Vendors provide the configuration and the profile whereas you might need to provide the optional packages with your application. Sun maintains a list of J2ME compliant devices according to version. As far location API is concerned, Nokia is providing it with its 6165, 6175 models.
WTK comes with CLDC and MIDP but you will need Nokia prototype SDK 4.0 for LBS development purposes. For installation guides check appendices.