Before Android, if we want to use Java programming language to develop application for mobile devices,
Java ME is the only good choice. Despite the fact that most of the mainstream mobile devices support Java ME, it has the limitation where the supporting level varies from device to device and we can't access to the native resources like SMS through the core API.
And now with
Android, we finally have an alternative. So, what is Android?
It is an open source project of
Open Handset Alliance which hosted on code.google.com. But what is the Open Handset Alliance? It is a group of more than 30 technology and mobile companies who have come together to accelerate innovation in mobile and offer consumers a richer, less expensive, and better mobile experience.
Back to the Android platform, it is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the Android SDK.
Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.
Applications built on Java, but not Java ME. The Android Runtime allows every application runs in its own process, with its own instance of Dalvik virtual machine.
Linux 2.6 has been chosen to be the OS kernel of this platform, which only the core services such as security, memory management and process management are utilized.
Currently, Motorola, LG, Samsung and HTC are the members of the alliance, which means that we will be discovering real Android devices in the near future from these manufactures. For others manufactures like Nokia, I think Java ME will be still a sensible choice if you are not a fan of native development.