Summary
Android is a new operating system, application stack, and user interface infrastructure for mobile devices, and was developed by Google in conjunction with a consortium of handset manufacturers and mobile operators. A preview version of the Android SDK, along with a developer contest, were announced this week.
Advertisement
Android is a new full-stack software infrastructure for mobile devices. It includes an operating system based on the Linux 2.6 kernel, an application layer, and a user interface component kit. Android was developed mainly by Google, in conjunction with the Open Handset Alliance, a consortium of some thirty handset manufacturers and mobile operators. Google released a preview version of the Android SDK, and announced a $10M Android developer contest.
In announcing Android and the developer SDK, Andy Rubin, Google's Director of Mobile Platforms, noted that:
Despite all of the very interesting speculation over the last few months, we're not announcing a Gphone. However, we think what we are announcing—the Open Handset Alliance and Android—is more significant and ambitious than a single phone. In fact, through the joint efforts of the members of the Open Handset Alliance, we hope Android will be the foundation for many new phones and will create an entirely new mobile experience for users, with new applications and new capabilities we can’t imagine today.
Android is the first truly open and comprehensive platform for mobile devices. It includes an operating system, user-interface and applications—all of the software to run a mobile phone, but without the proprietary obstacles that have hindered mobile innovation. We have developed Android in cooperation with the Open Handset Alliance, which consists of more than 30 technology and mobile leaders including Motorola, Qualcomm, HTC and T-Mobile.... Some of our partners are targeting the second half of 2008 to ship phones based on the Android platform.
The Android SDK release notes state that:
It is a complete mobile platform built on the Linux 2.6 kernel that exposes a robust operating system, a comprehensive set of libraries, a rich multimedia user interface, and a complete set of phone applications. Android's innovative application model makes it easy for developers to extend, replace, and reuse existing software components to create rich and integrated mobile services for consumers. The Android platform also includes the Dalvik virtual machine to maximize application performance, portability, and security. The entire platform will be made available under the very liberal, developer-friendly Apache v2 open-source license in 2008.
That summary seemed to overlook some of the big things.
The big things are:
(1) Google is offering a $10 million dollar pot for open source developers. It sounds as if this will end up competing with OpenMoko.
(2) Google is using the Java programming language, except the back-end target is "Dalvik byte code" instead of Java byte code. Essentially, Google has thrown away the Java Virtual Machine and Java byte code technologies and replaced it with their own. The foundation class libraries provided by Android SDK are Apache Harmony's.
(3) This means nothing for Java ME, because Sun has already announced they are planning to support Java SE for mobile phones going into the future. I think the question you want to ask is, "Does this compete with Sun's J2SE platform for mobile phones?" The announcement of the Android SDK is pretty timely, though, considering Sun's recent announcement.
I care more for the question if Android has good Python support, which would benefit developers much more than yet another variant of Java. I hope Google shows Python as much love with Android as they do internally.
Android looks cool as hell and could be the next Linux killer-application.
If it is based on Linux and C, porting existing applications and languages shouldn't be too much of a problem.
In terms of Java ME, I could see it quash the 'Java as a platform' approach. Java would be just another language via SE.
IMHO, I think a platform has to be natively programmable using C in order access all current and future capabilities. Then other languages can provide abstraction layers.
Do we really need a virtual machine if we can install Linux on handsets?