What is Java ME?
The Java ME stands for Java Micro Edition. It is a development and deployment platform of portable code for embedded and mobile devices (sensors, gateways, mobile phones, printers, TV set-top boxes). It is based on object-oriented Java. The Java ME has a robust user interface, great security, built-in network protocols, and support for applications that can be downloaded dynamically. Applications which are developed on Java ME are portable and can run across various devices and can also leverage the native capabilities of the device.
Java ME SDK
Java ME Software Development Kit (SDK) provides the standalone runtime environment and various utilities required for development Java ME applications. It combines the Connected Limited Device Configuration (CLDC) and the Connected Device Configuration (CDC) into one single environment.
Java ME Embedded
Java ME embedded is a run time platform that leverages the Java ME technologies that are deployed to billions of devices across the Internet of Things. It is designed by keeping in mind that the applications developed can be portable to various devices while being resource-efficient and keeping the demands from the underlying platform low.
How Java ME is organized
The generic computing devices usually consist of hardware such as display, permanent storage, keyboard, etc. but the small computing devices are not like this. Some of them don't have permanent storage, and some don't even have a permanent display. As Java ME target a variety of small computing devices, this problem is handled by it by using a two-fold approach.
Java ME architecture
The Java ME architecture helps in scaling an application based on the constraints provided by the small computing device. Java ME does not simply replace the operating system, rather it stacks up layers on the native operating system and makes an environment for the application to run. These layers are collectively named as Connected Limited Device Configuration (CLDC).
The first layer is the configuration layer that includes the Java Virtual Machine. This layer interacts directly with the native operating system and builds the connection between the profile and the JVM.
The second layer is the profile which contains the minimum set of APIs for the small computing device. The profile contains a set of classes which are made to implement the features of a related group of small computing devices.
The third layer is the Mobile Information Device Profile (MIDP). The MIDP layer consists of APIs which are for user network connections, persistence storage, and the user interface. It also has access to Connected Language Device Configuration (CLDC) and Mobile Information Device Profile (MIDP) libraries.
A small computing device has two components supplied by the Original Equipment Manufacturer (OEM). They are, namely OEM apps and OEM classes. The MIDP communicates with the OEM classes to gain access to features like sending and receiving messages and accessing device-specific persistent data. OEM applications are small programs such as address book etc.
NOTE: Dependency of MIDP on OEM apps and OEM classes makes the application less portable as OEM feature are different for all manufacturers, and not all of them use the same classes and apps.
Java ME Configurations
Java ME configurations specify a JVM and certain core APIs which are directed towards a certain set of devices. There are two configurations available with Java ME, namely Connected Device Configuration (CDC) and Connected Limited Device Configuration. The Java ME configurations and profiles are based on memory and for small devices based on volatile and non-volatile memory.
Java ME vs. Java EE