blob: b75321bc62c5403cdfad8bac3835b7bfd934e4cc [file] [log] [blame]
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07001page.title=What is Android?
2@jd:body
3
4<p>Android is a software stack for mobile devices that includes an operating
The Android Open Source Projectd24b8182009-02-10 15:44:00 -08005system, middleware and key applications. The <a
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -07006href="http://code.google.com/android/download.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>Developers have full access to the same framework APIs used by the core
52applications. The application architecture is designed to simplify the reuse
53of components; any application can publish its capabilities and any other
54application may then make use of those capabilities (subject to security
55constraints enforced by the framework). This same mechanism allows components
56to be replaced by the user.</p>
57
58<p>Underlying all applications is a set of services and systems, including:
59<ul>
60 <li>A rich and extensible set of <a
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080061 href="{@docRoot}guide/tutorials/views/index.html">Views</a> that can be used to
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070062 build an application, including lists, grids, text boxes, buttons, and even
63 an embeddable web browser</li>
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080064 <li><a href="{@docRoot}guide/topics/providers/content-providers.html">Content
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070065 Providers</a> that enable applications to access data from other
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080066 applications (such as Contacts), or to share their own data</li> <li>A <a
67 href="{@docRoot}guide/topics/resources/resources-i18n.html">Resource
68 Manager</a>, providing access to non-code resources such as localized
69 strings, graphics, and layout files</li>
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070070 <li>A {@link android.app.NotificationManager Notification Manager} that enables
71 all applications to display custom alerts in the status bar</li>
72 <li>An {@link android.app.Activity Activity Manager} that manages the
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080073 lifecycle of applications and provides a common navigation backstack</li>
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070074</ul>
75
The Android Open Source Projectf013e1a2008-12-17 18:05:43 -080076<p>For more details and a walkthrough of an application, see the <a
77href="{@docRoot}guide/tutorials/notepad/index.html">Notepad Tutorial</a>.</p>
The Android Open Source Project54b6cfa2008-10-21 07:00:00 -070078
79<a name="libraries" id="libraries"></a>
80<h2>Libraries</h2>
81
82<p>Android includes a set of C/C++ libraries used by various components of the
83Android system. These capabilities are exposed to developers through the
84Android application framework. Some of the core libraries are listed below:</p>
85<ul>
86 <li><strong>System C library</strong> - a BSD-derived implementation of
87 the standard C system library (libc), tuned for embedded Linux-based
88 devices</li>
89 <li><strong>Media Libraries</strong> - based on PacketVideo's OpenCORE;
90 the libraries support playback and recording of many popular audio and video
91 formats, as well as static image files, including MPEG4, H.264, MP3, AAC,
92 AMR, JPG, and PNG</li>
93 <li><strong>Surface Manager</strong> - manages access to the display
94 subsystem and seamlessly composites 2D and 3D graphic layers from multiple
95 applications</li>
96 <li><strong>LibWebCore</strong> - a modern web browser engine which
97 powers both the Android browser and an embeddable web view</li>
98 <li><strong>SGL</strong> - the underlying 2D graphics
99 engine</li>
100 <li><strong>3D libraries</strong> - an implementation based on
101 OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration
102 (where available) or the included, highly optimized 3D software
103 rasterizer</li>
104 <li><strong>FreeType</strong> - bitmap and vector font rendering</li>
105 <li><strong>SQLite</strong> - a powerful and lightweight relational
106 database engine available to all applications</li>
107</ul>
108
109<a name="runtime" id="runtime"></a>
110
111<h2>Android Runtime</h2>
112
113<p>Android includes a set of core libraries that provides most of
114the functionality available in the core libraries of the Java programming
115language.</p>
116
117<p>Every Android application runs in its own process, with its own instance of
118the Dalvik virtual machine. Dalvik has been written so that a device can run
119multiple VMs efficiently. The Dalvik VM executes files in the Dalvik
120Executable (.dex) format which is optimized for minimal memory
121footprint. The VM is register-based, and runs classes
122compiled by a Java language compiler that have been transformed into the .dex
123format by the included &quot;dx&quot; tool.</p>
124
125<p>The Dalvik VM relies on the Linux kernel for underlying functionality such
126as threading and low-level memory management.</p>
127
128<a name="kernel" id="kernel"></a>
129
130<h2>Linux Kernel</h2>
131
132<p>Android relies on Linux version 2.6 for core system services such as
133security, memory management, process management, network stack, and driver
134model. The kernel also acts as an abstraction layer between the hardware and
135the rest of the software stack.</p>