2009년 10월 27일 화요일

What is Android?



Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.

-.Application framework enabling reuse and replacement of components
-.Dalvik virtual machine optimized for mobile devices
-.Integrated browser based on the open source
WebKit engine
-.Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional)
-.SQLite for structured data storage
-.Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
-.GSM Telephony (hardware dependent)
-.Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
-.Camera, GPS, compass, and accelerometer (hardware dependent)
Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE


The following diagram shows the major components of the Android operating system. Each section is described in more detail in the above.
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.
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.
Underlying all applications is a set of services and systems, including:
A rich and extensible set of
Views that can be used to build an application, including lists, grids, text boxes, buttons, and even an embeddable web browser Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
A
Notification Manager that enables all applications to display custom alerts in the status bar
An
Activity Manager that manages the lifecycle of applications and provides a common navigation backstack
For more details and a walkthrough of an application, see the
Notepad Tutorial.
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:
-.System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices
-.Media Libraries - 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
-.Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications
-.LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view
-.SGL - the underlying 2D graphics engine
-.3D libraries - 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
-.FreeType - bitmap and vector font rendering
-.SQLite - a powerful and lightweight relational database engine available to all applications

Android includes a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language.
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. The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.


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.

Android는 모바일 기기를 위해 운영체제,미들웨어등 핵심 Application을 포함하는 소프트웨어의 집합체라고 할수있다. Android SDK는 자바 프로그래밍 언어를 사용하는 Android 플래폼상에서 application을 개발하기에 필요한 tools과 API를 제공한다.
이 그림은 Android운영체제의 주요 부분을 보여주고 있으며 각각에 대한 자세한 설명은 다음을 참고하기 바란다.Android는 일련의 주요Application들, 이메일,SMS,달력,지도,브라우저,연락처 등등을 포함할 것이고,모든 Application에 대해서는 자바 프로그래밍 언어로 표현되고 있다.
개발자들에게는 핵심Applications들이 사용하는 동일한 프레임웍의 API에 모두 접근할수 있는 권한이 주어지며, 이러한 Application 구조는 components의 재사용이 가능하게 디자인되었다.
CP:Application이 다른 application을 이용하여 data접근이 가능
(예를들면, 연락처기능)하고 공유도 가능케 한다
Resource Manager : non-code자료 접근가능, 예를들면 localized strings, graphics,layout files
Notification Manager : 모든 application이 status bar에 alert기능
Activity Manager : application의 lifecycle을 관리하고 일반적인 navigation backstack을 제공
풍부하고 확장가능한 일련의 Views는 application Build,lists, grids, text boxes, buttons, 심지어는 Embeddable한 web browser에 사용이 가능하다.
Android는 시스템상에서 구현되는 다양한 component에 호출되는 일련의 C/C++ libraries를 포함하고,이러한 기능들은 개발자들에게는 Android application framework을 통해 열려있는데,
그중의 핵심이 되는 libraries는 아래와 같다.
Android는 java programming language의 핵심 libraries에서의 대부분의 기능구현이 가능한 일련의Core libraries를 포함한다.
모든 Android application은 Dalvik에서 자체의 instance 가지고 자체 프로세스를 구동한다.하나의 기계에서 여러 개의 VM을 효과적으로 구동하기 위해서 Dalvik이 사용되어지고 있고 최소한의 메모리 최적화를 위해 .dex의 file format으로 파일을 실행시키는 것이 특징이다. 이VM는 Java language compiler로 compiled된 classes를 실행시키고 “dx” tool를 이용하여 .dex 형태로 바꿔주는 과정을 거치게 된다. 참고로 Dalvik VM은 threading과 low-level메모리 관리에 기반을 둔 Linux Kernel방식이며 좀 더 설명을 하자면 보안,메모리관리,프로세스관리,network stack,driver model등의 core system service인 Linux 2.6 version을 기초로 하고 있으며 이러한 커널은 하드웨어와 소프트웨어 사이에서 abstraction 계층으로의 역할을 하고 있다.

댓글 없음:

댓글 쓰기