The Android stack includes an impressive array of features for mobile applications. In fact, looking at the architecture alone, without the context of Android being a platform designed for mobile environments, it would be easy to confuse Android with a general computing environment. All of the major components of a computing platform are here and read like a Who's Who of the open source community. Here is a quick run-down of some of the prominent components of the Android stack:
■ A Linux kernel provides a foundational hardware abstraction layer as well as core services such as process, memory, and file-system management. The kernel is where hardware-specific drivers are implemented—capabilities such as Wi-Fi and Bluetooth are found here. The Android stack is designed to be flexible, with many optional components which largely rely on the availability of specific hardware on a given device. These include features like touch screens, cameras, GPS receivers, and accelerometers.
■ Prominent code libraries include:
- Browser technology from WebKit—the same open source engine powering Mac's Safari and the iPhone's Mobile Safari browser
- Database support via SQLite an easy-to-use SQL database
- Advanced graphics support, including 2D, 3D, animation from SGL, and OpenGL ES
- Audio and video media support from Packet Video's OpenCore
- SSL capabilities from the Apache project
■ An array of managers providing services for:
- Activities and views
- Location-based services
■ The Android runtime provides:
- Core Java packages for a nearly full-featured Java programming environment. Note that this is not a J2ME environment.
- The Dalvik virtual machine employs services of the Linux-based kernel to provide an environment to host Android applications.
Application managers: windows, content, activities, telephony, location, notifications, etc.
Both core applications and third-party I User applications: Contacts, phone, browser, etc applications (such as the ones built in this book) run in the Dalvik virtual machine, atop the components just introduced. The relationship among these layers can be seen in figure 1.4.
Android runtime: Java via Dalvik VM
Libraries: graphics, media, database, communications, browser engine, etc.
TIP Android development requires Java programming skills, without question. To get the most out of this book, please be sure to brush up on your Java programming knowledge. There are many Java references on the
Linux kernel, including device drivers
Hardware device with specific capabilities such as GPS, camera, Bluetooth, etc.
Figure 1.4 The Android stack offers an impressive array of technologies and capabilities.
internet, and there is no shortage of Java books on the market. An excellent source ofJava titles can be found at http://www.manning.com/catalog/java.
Now that the obligatory stack diagram is shown and the layers introduced, let's look further at the runtime technology that underpins Android.
Was this article helpful?