Home Thoughts Thought Articles Java ME Mobile Phone Applications - The Good, the Bad and the Ugly - What is Java ME?
Java ME Mobile Phone Applications - The Good, the Bad and the Ugly - What is Java ME?
Written by Kon Katsaros   
Thursday, 31 May 2007 00:00
Article Index
Java ME Mobile Phone Applications - The Good, the Bad and the Ugly
What is Java ME?
The Good
The Bad
The Ugly
Conclusions
All Pages

What is Java ME?

For a while, I couldn’t come to grips with exactly what Java ME was. There seemed to be specifications all over the place and some software that you could run on a PC, but little relationship between this stuff and real mobile phones.

The usual definition goes something like:

“Java ME is a collection of APIs for the development of software for resource-constrained devices (such as PDAs and mobile phones).”

However, this suggests that Java ME is just a bunch of documents - what does it really mean when you’re working in the real-world?

Well, it means that Sun has come up with some specifications that describe how this technology should work. Further to that, they've has also made available a Reference Implementation (RI) of these specifications. Even better, mobile phone vendors have created Java ME implementations which operate on their specific phone models.

So how do you put the Sun RI onto a real mobile phone? Well, you can’t - it isn’t possible. Sun’s RI has been compiled to work on a PC, and as such won’t run on any mobile phone device. It is only used to test Java ME applications that you have written on your development platform (usually a PC).

So on which real devices can you run your Java ME application? Well, hundreds of mobile phone models have a core Java ME implementation already installed at the factory. Java ME implementations have been developed by mobile phone vendors like Motorola, Nokia, and Sony-Ericsson. Your Java ME application will automatically use this implementation when it is executed on the phone.

So in addition to the previous definition, it’s also useful to state explicitly that Java ME implementations are pre-installed and available on devices, providing a virtual machine for Java ME applications to execute within. Hopefully that explains it a little more.