• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=App Framework
2@jd:body
3
4<p>Android is a software stack for mobile devices that includes an operating
5system, middleware and key applications. The <a
6href="http://developer.android.com/sdk/index.html">Android SDK</a>
7provides the tools and APIs necessary to begin developing applications on the
8Android platform using the Java programming language.</p>
9
10<h2>Features</h2>
11
12<ul>
13    <li><strong>Application framework</strong> enabling reuse and replacement
14    of components</li>
15    <li><strong>Dalvik virtual machine</strong> optimized for mobile
16        devices</li>
17    <li><strong>Integrated browser</strong> based on the open source <a
18    href="http://webkit.org/">WebKit</a> engine </li>
19    <li><strong>Optimized graphics</strong> powered by a custom 2D graphics library; 3D
20    graphics based on the OpenGL ES 1.0 specification (hardware acceleration
21    optional)</li>
22    <li><strong>SQLite</strong> for structured data storage</li>
23    <li><strong>Media support</strong> for common audio, video, and still
24    image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG,
25    GIF)</li>
26    <li><strong>GSM Telephony</strong> (hardware dependent)</li>
27    <li><strong>Bluetooth, EDGE, 3G, and WiFi</strong> (hardware dependent)</li>
28    <li><strong>Camera, GPS, compass, and accelerometer</strong> (hardware dependent)</li>
29    <li><strong>Rich development environment</strong> including a device
30    emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE</li>
31</ul>
32
33<a name="os_architecture" id="os_architecture"></a>
34<h2>Android Architecture</h2>
35
36<p>The following diagram shows the major components of the Android operating
37system. Each section is described in more detail below.</p>
38
39<p><img src="{@docRoot}images/system-architecture.jpg" alt="Android System Architecture" width="713" height="512"></p>
40
41<a name="applications" id="applications"></a>
42<h2>Applications</h2>
43
44<p>Android will ship with a set of core applications including an email
45client, SMS program, calendar, maps, browser, contacts, and
46others. All applications are written using the Java programming language.</p>
47
48<a name="application_framework" id="application_framework"></a>
49<h2>Application Framework</h2>
50
51<p>By providing an open development platform, Android
52offers developers the ability to build extremely rich and innovative
53applications. Developers are free to take advantage of the
54device hardware, access location information, run background services, set alarms,
55add notifications to the status bar, and much, much more. </p>
56
57<p>Developers have full access to the same framework APIs used by the core
58applications. The application architecture is designed to simplify the reuse
59of components; any application can publish its capabilities and any other
60application may then make use of those capabilities (subject to security
61constraints enforced by the framework). This same mechanism allows components
62to be replaced by the user.</p>
63
64<p>Underlying all applications is a set of services and systems, including:
65<ul>
66    <li>A rich and extensible set of <a
67    href="{@docRoot}resources/tutorials/views/index.html">Views</a> that can be used to
68    build an application, including lists, grids, text boxes, buttons, and even
69    an embeddable web browser</li>
70    <li><a href="{@docRoot}guide/topics/providers/content-providers.html">Content
71    Providers</a> that enable applications to access data from other
72    applications (such as Contacts), or to share their own data</li> <li>A <a
73    href="{@docRoot}guide/topics/resources/resources-i18n.html">Resource
74    Manager</a>, providing access to non-code resources such as localized
75    strings, graphics, and layout files</li>
76    <li>A {@link android.app.NotificationManager Notification Manager} that enables
77    all applications to display custom alerts in the status bar</li>
78    <li>An {@link android.app.Activity Activity Manager} that manages the
79    lifecycle of applications and provides a common navigation backstack</li>
80</ul>
81
82<p>For more details and a walkthrough of an application, see the <a
83href="{@docRoot}training/notepad/index.html">Notepad Tutorial</a>.</p>
84
85<a name="libraries" id="libraries"></a>
86<h2>Libraries</h2>
87
88<p>Android includes a set of C/C++ libraries used by various components of the
89Android system. These capabilities are exposed to developers through the
90Android application framework. Some of the core libraries are listed below:</p>
91<ul>
92    <li><strong>System C library</strong> - a BSD-derived implementation of
93    the standard C system library (libc), tuned for embedded Linux-based
94    devices</li>
95    <li><strong>Media Libraries</strong> - based on PacketVideo's OpenCORE;
96    the libraries support playback and recording of many popular audio and video
97    formats, as well as static image files, including MPEG4, H.264, MP3, AAC,
98    AMR, JPG, and PNG</li>
99    <li><strong>Surface Manager</strong> - manages access to the display
100    subsystem and seamlessly composites 2D and 3D graphic layers from multiple
101    applications</li>
102    <li><strong>LibWebCore</strong> - a modern web browser engine which
103    powers both the Android browser and an embeddable web view</li>
104    <li><strong>SGL</strong> - the underlying 2D graphics
105    engine</li>
106    <li><strong>3D libraries</strong> - an implementation based on
107    OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration
108    (where available) or the included, highly optimized 3D software
109    rasterizer</li>
110    <li><strong>FreeType</strong> - bitmap and vector font rendering</li>
111    <li><strong>SQLite</strong> - a powerful and lightweight relational
112    database engine available to all applications</li>
113</ul>
114
115<a name="runtime" id="runtime"></a>
116
117<h2>Android Runtime</h2>
118
119<p>Android includes a set of core libraries that provides most of
120the functionality available in the core libraries of the Java programming
121language.</p>
122
123<p>Every Android application runs in its own process, with its own instance of
124the Dalvik virtual machine. Dalvik has been written so that a device can run
125multiple VMs efficiently. The Dalvik VM executes files in the Dalvik
126Executable (.dex) format which is optimized for minimal memory
127footprint. The VM is register-based, and runs classes
128compiled by a Java language compiler that have been transformed into the .dex
129format by the included &quot;dx&quot; tool.</p>
130
131<p>The Dalvik VM relies on the Linux kernel for underlying functionality such
132as threading and low-level memory management.</p>
133
134<a name="kernel" id="kernel"></a>
135
136<h2>Linux Kernel</h2>
137
138<p>Android relies on Linux version 2.6 for core system services such as
139security, memory management, process management, network stack, and driver
140model. The kernel also acts as an abstraction layer between the hardware and
141the rest of the software stack.</p>
142