Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
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 the major components of a computing platform are there. Here’s a quick rundown of prominent components of the Android stack:
A Linux kernel that provides a foundational hardware abstraction layer, as well as core services such as process, memory, and filesystem management. The kernel is where hardware-specific drivers are implemented—capabilities such as Wi-Fi and Bluetooth are here. The Android stack is designed to be flexible, with many optional components that largely rely on the availability of specific hardware on a given device. These components include features such as touch screens, cameras, GPS receivers, and accelerometers.
Prominent code libraries, including the following:
Browser technology from WebKit, the same open source engine powering Mac’s Safari and the iPhone’s Mobile Safari browser. WebKit has become the de facto standard for most mobile platforms.
Database support via SQLite, an easy-to-use SQL database.
Advanced graphics support, including 2D, 3D, animation from Scalable Games Language (SGL), and OpenGL ES.
Audio and video media support from PacketVideo’s OpenCORE, and Google’s own Stagefright media framework.
Secure Sockets Layer (SSL) capabilities from the Apache project.
An array of managers that provide services for
Activities and views
Windows
Location-based services
Telephony
Resources
The Android runtime, which provides
Core Java packages for a nearly full-featured Java programming environment. Note that this isn’t a Java ME environment.
The Dalvik VM, which employs services of the Linux-based kernel to provide an environment to host Android applications.