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.
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
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: