2009년 7월 4일 토요일

android-What is android?

     

     

      Android 무엇인가?

      Android software stack이다. Software stack operating system, middleware

      key application 포함한다는 말이다. 하나의 플랫폼이다.Android SDK tool

      api 제공한다. 이는 application 개발하는데 필수적이다. Android라는 플랫폼의

      resource 사용하기 위한 함수와 그리고 tool 제공한다는 말일뿐이다.

       

      Android 특징

    1. Application framework component 재사용과  교환이 가능하다.
    2. => application framework 자주 쓰이는 혹은 application 개발하는데 반드시

       쓰이는 component, 모듈을 미리 만들어 놓고 이를 그룹화 했다고 생각하면 된다.

      운영체제가 출시되면 우리는 흔히 시스템레벨만 생각할지 모르지만, application

       당연히 포함되는데 application프로그램들을 여기서는 core application이라고

      부른다. 브라우저니 contact메뉴 라던지..이런 core program이라고 한다. 하여튼

      우리가 개발할 app 기존에 있던 app customizing 가능하다는 말이다.

       

    3. Dalvik virtual machine mobile 위해 최적화되었다.
    4. => 추상적임...여튼 개념 소개하는데...차로 치면 엔진에 해당하는 중추적이고 핵심적인

       부분을 소개하려면 한도 끝도 없겠기에...

    5. 통합브라우저는 open source webkit 엔진을 사용했다.
    6. 그래픽은 custom 2d graphics library 썼고 3D opengl ES 1.0이고, 하드웨어 가속

                  은 옵션이란다.

      Custome 2d library라는게 있는지는 모르겠다. Opengl 시스템에 이미 포함되어 있구,

      하드웨어가속이 option이라는것은 cell phone에서 chip상에서 지원되는 폰이 있을 수도

      있고 아닐 수도 있기 때문이다. 만일 chip(멀티미디어 프로세서가 있어서 듀얼프로세서를

      하던) 있다면 driver단에서 chip 제어하고 제어할 수있는 함수를 만들어야 될듯하다.

    1. SQLite 구조화된 데이터 저장소.
    2. Media 지원은 일반적인 audio,video 그리고 이미지 format 지원한다(MPEG4,

                  H264, MP3, AAC, AMR, JPG, PNG, GIF)

    1. GSM Telephony
    2. Blutooth,EDGE,3G and WiFi(하드웨어지원시)
    3. Camera,GPS,compass, acclerometer
    4. 풍부한 개발환경 지원: device emulator, debugging tool, profiler, plugin
    5.  

      Android architecture

       

       

       

      Application : android default 포함하고 있는 application. 특징은 모두 자바로 쓰여졌다.

       

      Application framework : 이것은 어떠한 service 수행하는 api나 component들이

      다. App들은 이들을 재사용도 가능하고 교체해도 상관없다.

      • View : lists, grids, text boxes, buttons, and even an embeddable web browser
      •            component 제공
      • content provider : 다른 app data 사용하거나 다른 app 통해 data 접근
      •                        하는 api 제공하는듯함.
      • resource manager : code 아닌 문자열 그림에 대한 접근을 가능 하게 하는

                                                          api 제공

      • Notification manager : 모든 application notification manager 어떤 함수를 제공하는거 같고 이는 status bar에 경고 메시지를 보낼수 있게함
      • Activate manager : 이건 application life cycle user 사용한 순서를 stack
      •                         저장하고 있을 텐데 이를 관리하는 api 제공  이건 따로

                                                                       설명한다고 .

       

      Libraries

      Framework component service들이 이용하는 system 내재된 libraries.

      C library : libc

      Media library : PacketVideo's OpenCORE

      Surface Manager : 여러 app display 하기 때문에 이를 조정하는 library..

      LibWebCore : web browser관련한 library.

      SGL : 2d library

      3D libraries : opengl ES 1.0

      FreeType : font관련한 library.

      SQLite :  database 관련한 library.

      Android Runtime

      Linux Kernel

      => android 특이한 것은 kernel linux kernel 사용한다. scheduling, process, memory관리 같은 핵심적인 기능은 linux커널에서 한다. 그런데 java virtual machine 있다는거. 하나의 app 실행하면 이는 virtual machine에서 동작한다는 것이다. 각각의 app마다 virtual machine 하나씩 생성되고 그위에서 app가 실행된다. App 실행된다는건 cpu java 기계어코드인 instruction직접 수행하진 않을 것일진데, 그럼 한번의 translation 거쳐야 한다는 . 그럼 linux kernel기능을 이용하려면 jni 사용해서 libc라이브러리와 연결해서 사용한다? 따라서 모든 app java만들어져야 하며 만들어진 class code instruction 일부는 kernel communication한다..라고 생각됨.. 참고로 dex파일이 instruction code 최종 코드임.

       

       

      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.

      Features

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

      The following diagram shows the major components of the Android operating system. Each section is described in more detail below.

      Applications

      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.

      Application Framework

      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:

    12. 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
    13. Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data
    14. A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
    15. A Notification Manager that enables all applications to display custom alerts in the status bar
    16. An Activity Manager that manages the lifecycle of applications and provides a common navigation backstack
    17. For more details and a walkthrough of an application, see the Notepad Tutorial.

      Libraries

      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:

    18. System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices
    19. 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
    20. Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications
    21. LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view
    22. SGL - the underlying 2D graphics engine
    23. 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
    24. FreeType - bitmap and vector font rendering
    25. SQLite - a powerful and lightweight relational database engine available to all applications
    26. Android Runtime

      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.

      Linux Kernel

      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.

       

     

    원본 위치 <http://developer.android.com/guide/basics/what-is-android.html>

     

댓글 없음:

댓글 쓰기