Home | History | Annotate | Download | only in basics
      1 page.title=What is Android?
      2 @jd:body
      3 
      4 <p>Android is a software stack for mobile devices that includes an operating
      5 system, middleware and key applications. The <a
      6 href="http://developer.android.com/sdk/index.html">Android SDK</a>
      7 provides the tools and APIs necessary to begin developing applications on the
      8 Android 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
     37 system. 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
     45 client, SMS program, calendar, maps, browser, contacts, and
     46 others. 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
     52 offers developers the ability to build extremely rich and innovative
     53 applications. Developers are free to take advantage of the
     54 device hardware, access location information, run background services, set alarms,
     55 add 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
     58 applications. The application architecture is designed to simplify the reuse
     59 of components; any application can publish its capabilities and any other
     60 application may then make use of those capabilities (subject to security
     61 constraints enforced by the framework). This same mechanism allows components
     62 to 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
     83 href="{@docRoot}resources/tutorials/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
     89 Android system. These capabilities are exposed to developers through the
     90 Android 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
    120 the functionality available in the core libraries of the Java programming
    121 language.</p>
    122 
    123 <p>Every Android application runs in its own process, with its own instance of
    124 the Dalvik virtual machine. Dalvik has been written so that a device can run
    125 multiple VMs efficiently. The Dalvik VM executes files in the Dalvik
    126 Executable (.dex) format which is optimized for minimal memory
    127 footprint. The VM is register-based, and runs classes
    128 compiled by a Java language compiler that have been transformed into the .dex
    129 format by the included &quot;dx&quot; tool.</p>
    130 
    131 <p>The Dalvik VM relies on the Linux kernel for underlying functionality such
    132 as 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
    139 security, memory management, process management, network stack, and driver
    140 model. The kernel also acts as an abstraction layer between the hardware and
    141 the rest of the software stack.</p>
    142