Here is my understanding: Android uses the Linux kernel as its low-level operating system, providing a machine-independent model for application development. However, what is exposed to the user and developer is a Java-based system so that you cannot use an Android-based device as a general-purpose computer. In contrast, a GNU/Linux distribution provides compilers and object code libraries so that you can do anything you want with your computer, including rewriting the kernel and any open-source applications.
Android is very similar to an iPhone (and I imagine iPad as well) which has a version of Mac OS X hidden inside, but you do not have full access to that layer when writing applications. It is exactly like when I got started in computer technology running FOCAL on a PDP-8 or BASIC on an HP 2100. The FOCAL or BASIC interpreter controlled very strictly what I could do, but did protect me from crashing the computer. However, when I got my hands on a PDP-11 that I could program in assembly language, the feeling of absolute freedom created a life-long thrill.
Android and iPhone OS are OK if you want a stable consumer device with limited capabilities and strict corporate control over what you can use it for (ditto for Kindle). But if what you are seeking is freedom to make the device do whatever you want it to do, they are not what you want.
I believe Android is based on the Linux kernel 2.6.x. On top of that kernel, it has some core OS services (libraries) and its Dalvik virtual machine (similar to JavaVM) and application frameworks. So at its core, Android is Linux, but it is one of many variants of Linux distributions as the article points out.
I invite any savvy developers to weigh in on the fine points of how Android differs from standard Linux. I understand it also varies from standard Java.
According to Wikipedia:
Android uses a version of Linux as its kernel (albeit tweaked by Google to fit Android needs and separated from the main Linux kernel tree), but it is not a conventional Linux distribution; it does not have a native X Window System, nor does it support the full set of standard GNU libraries like its system libraries (GNU C Library). This makes it difficult to reuse existing Linux applications or libraries on Android.
Google no longer maintains the Android code they previously contributed to the Linux kernel, effectively branching kernel code in their own tree, separating their code from Linux. The code which is no longer maintained was deleted in January 2010 from the Linux codebase.
My Mom the Radio Star Max MaxfieldPost a comment I've said it before and I'll say it again -- it's a funny old world when you come to think about it. Last Friday lunchtime, for example, I received an email from Tim Levell, the editor for ...
A Book For All Reasons Bernard Cole2 comments Robert Oshana's recent book "Software Engineering for Embedded Systems (Newnes/Elsevier)," written and edited with Mark Kraeling, is a 'book for all reasons.' At almost 1,200 pages, it ...