The most widely deployed mobile virtualization solution
For some reason over the past two weeks I've had friends and colleagues coming up to me and asking What is android? This is a, hopefully short, post to try and answer that question. In an effort to keep this post short, I'm making statements without necessarily backing them up with argument. If anyone disagrees with my analysis, please email me, and I can address any of the points. Of course people should probably first read the official What is android? page.
The simple five words answer is: Android is an operating system. Of course, while factually true, this doesn't explain much. The next important point is that it is a component based operating system. This means that rather than writing programs as such, extra functionality is added in the form of components. The next interesting point is that it includes an integrated Java virtual machine, and that the system interfaces are only exposed through Java libraries. The final, and in my opinion least important, point is that the operating system is based on the Linux kernel. While the OS is based on the Linux kernel, it is not a GNU/Linux-like OS; the system libraries, system initialisation and programmer interface are distinctly different from a standard Linux operating system.
As part of the announcement of this new operating system, Google has also released the Android software development kit (SDK). The SDK is designed to allow developers to write and test software to run on top of the operating system. The SDK is not designed to allow third parties to extend the OS itself, or port it to new devices. (Although some people have been able to use it to achieve this, it is very much not designed for this.) The SDK includes the usual things; tools for building Android packages (components), sample files, templates for new projects, documentation, and a system simulator. The SDK only provide facilities for writing components in Java, and relies on the programmer to have a JDK already installed.
The system has been promoted as an open system. I would really like to point out that open is a lot different from open source. I'm sure there will be discussion as to what one means vs. the other, but from my point of view it is an open system from the point of view that it is open for programmers to develop new applications for the platform. The operating system has been built using a number of different open source components, and Google has complied with the licenses under which is has obtained the code by acknowledging the authors (in the cases where code is released under BSD), and by releasing code when required to under a reciprocal license (e.g: GPL). Google has pledged to release the code under an Apache license, but this isn't expected to happen until late 2008 - until then it is an open, but closed source operating system.
Here are some other perspectives of what Android is, and why I disagree with that point-of-view.
A Java API for phones: This is certainly part of the picture, but I don't think this by itself correctly represents what Android is, as there is a lot more to it than just that.
An application framework for Linux: This is a description I have a bit of sympathy for, and one which ultimately comes down to a mostly philosophical discussion of what is an operating system. While it is definitely a framework for developing applications, and it is running on the Linux kernel, I think there is more to an operating system than just the kernel, it has to include all the system libraries, system initialisation, and system interfaces. From all these point of views, Android differs from a standard Linux based operating system. I definitely have a new appreciation for Stallman's quest to refer to standard Linux based operating systems as GNU/Linux. I think this really helps distinguishes between Linux the kernel, and GNU/Linux the operating system, and I'm certainly going to start using this terminology, for simple practical reasons, rather than any ideological reasons.
Hopefully this has given you a good insight to what Android is and also what Android isn't.
Posted by Benno Leslie on November 28 at 07:08 PMblog comments powered by Disqus
About Benno Leslie:
Benno Leslie, Vice President of Engineering at OK Labs holds a dual degree in Computer Engineering (with first-class honors) and Arts from UNSW. While at work, Benno does his best to avoid the marketing department, while he oversees a team of lead engineers and the customer support organization. When summer hits, the rugby field comes calling and Benno is either tackling others, out cycling, or letting loose at concerts.