블로그 이미지
고려대 컴퓨터정보통신대학원 정보보호특론 텀프로젝트 관련 팀블로그입니다. 열혈써냉

Recent Post»

Recent Comment»

Archive»

« 2024/5 »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

What is the Android?

참고자료/플랫폼 | 2009. 3. 20. 14:37 | Posted by 열혈써냉

원문 : http://iprinceps.egloos.com/1599196

** 이 포스팅은 http://code.google.com/android/what-is-android.html의 내용을 한글로 옮긴 것 입니다.  원문은 앞의 링크를 통해 확인할 수 있습니다.
"Android"는 operating system과 middleware, 그리고 key application을 포함하는 mobile device용 software stack이다. 
1. Features

  • Application Framework는 software component의 재사용(reuse)과 자유로운 대체(replacement)를 가능하게 해준다.
  • Dalvik virtual machine은 mobile device에 적합하도록 최적화 되어 있다.
  • Integrated browser는 Open source인 WebKit engine(http://www.webkit.org)에 기반하고 있다.
  • 2D graphics는 자체(custom) graphics library를 사용해서 최적화(Optimized graphics)되어 있으며, 3D graphics는 OpenGL ES 1.0 specification에 기반해서 제작되었고 Hardware accelation은 option이다.
  • 구조화된(Structured) data storage를 위해 SQLite가 사용되었다.
  • MPEG-4, H.264, MP3, AAC, AMR, JPG, PNG, GIF와 같은 다양한 audio, video, still image format들을 지원한다.
  • GSM Technology (Hardware dependent)
  • Bluetooth, EDGE, 3G, and Wi-Fi (Hardware dependent)
  • Camera, GPS, compass, and accelerometer (Hardware dependent)
  • Device emulator, Debugging을 위한 tool, memory와 performance profiling, Eclipse IDE plugin을 포함하는 개발환경을 제공한다.

2. Android Architecture
아래의 그림은 Android operating system의 주요 구성부분들을 보여준다.  각 section들은 아래에 좀 더 자세히 설명되어 있다.

3. Applications
Android는 e-mail client, SMS program, caledar, maps, browser, contacts, 그리고 기타 다양한 응용 프로그램을 포함하는 core application set과 함께 제공될 것이다.  이 모든 program들은 Java language를 사용해서 개발될 것이다.
4. Application Framework
개발자들은 core application을 개발할 때 사용된 것들과 동일한 framework API들을 자유롭게 사용할 수 있다.  Application architecture는 component의 재사용(reuse)이 쉽도록 설계되었다.  Android의 어떤 application들도 자신의 기능을 publish할 수 있으며, 그 어떤 다른 application이 자유롭게 publish된 기능을 사용할 수 있다.  동일한 mechanism을 통해 Android를 구성하는 component들을 사용자가 바꿀 수 있다.

Application의 동작 및 작성에 대한 보다 자세한 내용은 Writing an Android Application(http://code.google.com/android/intro/tutorial.html)을 참고하기 바란다.
5. Libraries
Android는 Android system의 다양한 component들이 사용하는 C/C++ library들을 포함하고 있다.  이 library들은 Android application framework를 통해 개발자들이 접근할 수 있도록 되어 있다.  몇몇 core library들이 아래에 소개되어 있다.

  • System C Library: BSD에서 유래된 표준 C system library(libc)로 embedded Linux기반 장치에 적합하도록 수정되었다.
  • Media Libraries: PacketVideo의 OpenCORE에 기반한다. 이 library들은 MPEG4, H.264, MP3, AAC, AMR, JPG 그리고 PNG와 같은, 근래에 광범위하게 사용되는 다양한 audio/video/still image format을 사용해서 playback과 recording이 가능하도록 지원한다.
  • Surface Manager: display subsystem에 대한 접근을 제어하며 2D/3D graphics가 자연스럽게 보여지도록 지원한다.
  • LibWebCore: Android web browser와 embeddable web view를 가능하게 한 최신 web browser engine.
  • SGL: 기본적인 2D graphics engine.
  • 3D Libraries: OpenGL 1.0 Specification에 기반해 구현되었다.  이 library는 hardware 3D acceleration이 가능한 경우 hardware 3D acceleration을 사용하거나 포함되어 있는 3D software rasterizer를 사용한다.
  • FreeType: Bitmap and vector font rendering
  • SQLite: 강력하고 상대적으로 가벼운 database engine.

6. Android Runtime

Android는 Java programming language의 core library들이 제공하는 기능들의 대부분을 제공하는 core library들을 포함하고 있다.
모든 Android application들은 자기 자신의 process안에서 자신의 Dalvik virtual machine instance를 가지고 실행된다.  Dalvik VM은 최소의 memory footprint를 가지도록 최적화 된 Dalvik Executable format(.dex)을 실행한다.  VM은 register-based이고, dx tool을 사용해서 .dex file format으로 변경된 Java class들을 실행한다.
Dalvik VM은 threading이나 low-level memory management와 같은 기본 기능들은 Linux Kernel에 의존한다.
7. Linux Kernel
Android는 security, memory management, process management, network stack, driver model과 같은 core system service를 위해 Linux Kernel 2.6을 기반으로 한다.  또한 Kernel은 hardware와 software stack 사이에서 abstraction layer와 같은 역할을 수행한다.

: