142 lines
6.7 KiB
Plaintext
142 lines
6.7 KiB
Plaintext
page.title=What is Android?
|
|
@jd:body
|
|
|
|
<p>Android is a software stack for mobile devices that includes an operating
|
|
system, middleware and key applications. The <a
|
|
href="http://developer.android.com/sdk/index.html">Android SDK</a>
|
|
provides the tools and APIs necessary to begin developing applications on the
|
|
Android platform using the Java programming language.</p>
|
|
|
|
<h2>Features</h2>
|
|
|
|
<ul>
|
|
<li><strong>Application framework</strong> enabling reuse and replacement
|
|
of components</li>
|
|
<li><strong>Dalvik virtual machine</strong> optimized for mobile
|
|
devices</li>
|
|
<li><strong>Integrated browser</strong> based on the open source <a
|
|
href="http://webkit.org/">WebKit</a> engine </li>
|
|
<li><strong>Optimized graphics</strong> powered by a custom 2D graphics library; 3D
|
|
graphics based on the OpenGL ES 1.0 specification (hardware acceleration
|
|
optional)</li>
|
|
<li><strong>SQLite</strong> for structured data storage</li>
|
|
<li><strong>Media support</strong> for common audio, video, and still
|
|
image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG,
|
|
GIF)</li>
|
|
<li><strong>GSM Telephony</strong> (hardware dependent)</li>
|
|
<li><strong>Bluetooth, EDGE, 3G, and WiFi</strong> (hardware dependent)</li>
|
|
<li><strong>Camera, GPS, compass, and accelerometer</strong> (hardware dependent)</li>
|
|
<li><strong>Rich development environment</strong> including a device
|
|
emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE</li>
|
|
</ul>
|
|
|
|
<a name="os_architecture" id="os_architecture"></a>
|
|
<h2>Android Architecture</h2>
|
|
|
|
<p>The following diagram shows the major components of the Android operating
|
|
system. Each section is described in more detail below.</p>
|
|
|
|
<p><img src="{@docRoot}images/system-architecture.jpg" alt="Android System Architecture" width="713" height="512"></p>
|
|
|
|
<a name="applications" id="applications"></a>
|
|
<h2>Applications</h2>
|
|
|
|
<p>Android will ship with a set of core applications including an email
|
|
client, SMS program, calendar, maps, browser, contacts, and
|
|
others. All applications are written using the Java programming language.</p>
|
|
|
|
<a name="application_framework" id="application_framework"></a>
|
|
<h2>Application Framework</h2>
|
|
|
|
<p>By providing an open development platform, Android
|
|
offers developers the ability to build extremely rich and innovative
|
|
applications. Developers are free to take advantage of the
|
|
device hardware, access location information, run background services, set alarms,
|
|
add notifications to the status bar, and much, much more. </p>
|
|
|
|
<p>Developers have full access to the same framework APIs used by the core
|
|
applications. The application architecture is designed to simplify the reuse
|
|
of components; any application can publish its capabilities and any other
|
|
application may then make use of those capabilities (subject to security
|
|
constraints enforced by the framework). This same mechanism allows components
|
|
to be replaced by the user.</p>
|
|
|
|
<p>Underlying all applications is a set of services and systems, including:
|
|
<ul>
|
|
<li>A rich and extensible set of <a
|
|
href="{@docRoot}resources/tutorials/views/index.html">Views</a> that can be used to
|
|
build an application, including lists, grids, text boxes, buttons, and even
|
|
an embeddable web browser</li>
|
|
<li><a href="{@docRoot}guide/topics/providers/content-providers.html">Content
|
|
Providers</a> that enable applications to access data from other
|
|
applications (such as Contacts), or to share their own data</li> <li>A <a
|
|
href="{@docRoot}guide/topics/resources/resources-i18n.html">Resource
|
|
Manager</a>, providing access to non-code resources such as localized
|
|
strings, graphics, and layout files</li>
|
|
<li>A {@link android.app.NotificationManager Notification Manager} that enables
|
|
all applications to display custom alerts in the status bar</li>
|
|
<li>An {@link android.app.Activity Activity Manager} that manages the
|
|
lifecycle of applications and provides a common navigation backstack</li>
|
|
</ul>
|
|
|
|
<p>For more details and a walkthrough of an application, see the <a
|
|
href="{@docRoot}resources/tutorials/notepad/index.html">Notepad Tutorial</a>.</p>
|
|
|
|
<a name="libraries" id="libraries"></a>
|
|
<h2>Libraries</h2>
|
|
|
|
<p>Android includes a set of C/C++ libraries used by various components of the
|
|
Android system. These capabilities are exposed to developers through the
|
|
Android application framework. Some of the core libraries are listed below:</p>
|
|
<ul>
|
|
<li><strong>System C library</strong> - a BSD-derived implementation of
|
|
the standard C system library (libc), tuned for embedded Linux-based
|
|
devices</li>
|
|
<li><strong>Media Libraries</strong> - based on PacketVideo's OpenCORE;
|
|
the libraries support playback and recording of many popular audio and video
|
|
formats, as well as static image files, including MPEG4, H.264, MP3, AAC,
|
|
AMR, JPG, and PNG</li>
|
|
<li><strong>Surface Manager</strong> - manages access to the display
|
|
subsystem and seamlessly composites 2D and 3D graphic layers from multiple
|
|
applications</li>
|
|
<li><strong>LibWebCore</strong> - a modern web browser engine which
|
|
powers both the Android browser and an embeddable web view</li>
|
|
<li><strong>SGL</strong> - the underlying 2D graphics
|
|
engine</li>
|
|
<li><strong>3D libraries</strong> - an implementation based on
|
|
OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration
|
|
(where available) or the included, highly optimized 3D software
|
|
rasterizer</li>
|
|
<li><strong>FreeType</strong> - bitmap and vector font rendering</li>
|
|
<li><strong>SQLite</strong> - a powerful and lightweight relational
|
|
database engine available to all applications</li>
|
|
</ul>
|
|
|
|
<a name="runtime" id="runtime"></a>
|
|
|
|
<h2>Android Runtime</h2>
|
|
|
|
<p>Android includes a set of core libraries that provides most of
|
|
the functionality available in the core libraries of the Java programming
|
|
language.</p>
|
|
|
|
<p>Every Android application runs in its own process, with its own instance of
|
|
the Dalvik virtual machine. Dalvik has been written so that a device can run
|
|
multiple VMs efficiently. The Dalvik VM executes files in the Dalvik
|
|
Executable (.dex) format which is optimized for minimal memory
|
|
footprint. The VM is register-based, and runs classes
|
|
compiled by a Java language compiler that have been transformed into the .dex
|
|
format by the included "dx" tool.</p>
|
|
|
|
<p>The Dalvik VM relies on the Linux kernel for underlying functionality such
|
|
as threading and low-level memory management.</p>
|
|
|
|
<a name="kernel" id="kernel"></a>
|
|
|
|
<h2>Linux Kernel</h2>
|
|
|
|
<p>Android relies on Linux version 2.6 for core system services such as
|
|
security, memory management, process management, network stack, and driver
|
|
model. The kernel also acts as an abstraction layer between the hardware and
|
|
the rest of the software stack.</p>
|