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.

  • Firstly, there is a Java Run-time Environment and other core classes that are defined to target specifically the device on which it is operating. This is referred to as configurations.
  • Secondly, a profile is defined as a set of similar small computing devices. A profile has several classes within it which are made to implement features found on a related group of small computing devices.

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

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

Java MEJava EE
Java ME facilitates the development of applications for small computing devices such as embedded systems, sensors, etc.Java EE facilitates development of large scale applications.
Java ME is built upon Java SE. Provides functionalities such as networking, communication with native operating systems of mobile devicesEE is also built upon Java SE. It provides functionalities like web applications, servlets, etc.
It has features which make applications portable and which can run on various devices. It deals with many constraints, such as a small battery, small display, etc.Java EE is a structured application with a separate client, business, and Enterprise layers.
It is mostly used to develop mobile applications.It is mainly used for developing web applications.
It is suitable for developers targeting diversified operating systems and a variety of devices.It is suitable for experienced Java developers who build enterprise-wide applications.
It does not provide user authentication.It provides user authentication.

Next TopicJava Tutorial