See Google's What is Android? page for an overview of Android components, and a diagram of the architecture.
The diagram on that page appears in every presentation I have ever seen about Android technical topics (with the exception of my own).
Here is the Android Architecture Diagram, obtained from here.
See also Android internals diagram
Basically Android has the following layers:
- applications (written in java, executing in Dalvik)
- framework services and libraries (written mostly in java)
- applications and most framework code executes in a virtual machine
- native libraries, daemons and services (written in C or C++)
- the Linux kernel, which includes
- drivers for hardware, networking, file system access and inter-process-communication
- Android is not just Java on Linux
- Great presentation by Tetsuyuki Kobayashi overview of Android
- See this Android Internals presentation by Karim Yaghmour
- You'll find both the video and the slides there
- Mythbusters_Android.pdf Presentation by Matt Porter at ELC Europe
- Has bits and pieces showing problematic Android code and policies
Breakdown of running Android system
A quick look at Android contents and programs running when Android starts is at:
Relation to the Linux kernel
Here is Greg Kroah-Hartmans presentation on Android from the CELF conference 2010, discussing how Google/Android work (or don't work) with the Linux community.
Java is used as a language for application programming, but it is converted into a non-java byte code for runtime interpretation by a custom interpreter (Dalvik).
Java/Object Oriented Philosophy
Practicality is more important than purity in implementing the Android system.
Dianne Hackborn, one of the principal engineers working on Android, wrote: