Datasheet

Side-By-Side Comparisons with Android and iPhone
9
accelerometer and a proximity sensor. Screen size varies on different devices, although 3.5-inch and
4-inch screens are becoming popular.
At the core of Android device software is the Linux kernel. The drivers and the hardware
abstraction layer modules are all Linux-based. On top of the Linux kernel is the Dalvik virtual
machine and its runtime environment, along with native libraries and services. Dalvik is a special
Java virtual machine that’s optimized for running Java applications on a mobile device. The
majority of the Android operating system is the application framework, which consists of Java
services, APIs, and libraries, as well as native libraries and native services. Figure 1-3 shows the
details (source:
http://developer.android.com/guide/basics/what-is-android.html).
Applications
Android Application Framework
View System Window Manager Content Providers
Telephony Manager Resource Manager Location ManagerPackage Manager Notification Manager
Activity Manager
Library
Android Runtime
Core Libraries
Dalvik Virtual Machine
Surface Flinger
OpenGL ES
SGL
Media Framework
FreeType
SSL
SQLite
WebKit
libc
Linux Kernel
Display Driver Camera Driver Flash Memory Driver
Wifi Driver Audio Drivers Power ManagementKeypad Driver
Binder (IPC) Driver
FIGURE 1-3: Android architecture
There are two application development options on the Android: Java applications that run entirely
in the Dalvik virtual machine and Java applications that use JNI (Java Native Invocation) to call
into native libraries on the system. You might wonder why Android developers would use a native
library. Performance is the main reason, since native code generally offers better performance than
Java bytecode (or dex code produced by the Dalvik virtual machine). This is particularly important
C01.indd 9C01.indd 9 7/7/11 11:17:41 PM7/7/11 11:17:41 PM