2011년 5월 4일 수요일

[ Android ] What is Android?

 안드로이드는 operating system, middleware 그리고 key application들을 포함하는 모바일 장치들을 위한 소프트웨어 stack 이다. 안드로이드 SDK는 Java programming 언어를 사용하는 Android platform의 application들을 개발하기 시작하는데 필수적인 tool들과 API들을 제공한다.

___________________________________________________

특징들

 * Application framework  컴포넌트들의 재사용과 교체가 가능하다.

 * Dalvik virtual machine  모바일 장치들을 위해 최적화 되어졌다.

 * Integrated browser  오픈소스 WebKit engine 에 기반을 두고 있다.

 * Optimized graphics  custom 2D graphics library; OpenGL ES 1.0 특징
                                        (선택적인 하드웨어 가속) 에 기반을 둔 3D
                                        graphics 에 의해 작동한다.

* SQLite  구조적인 데이터 저장을 돕는다.

* Media support   공통의 audio, video, 그리고 still image format (MPEG4,
                               H.264, MP3, AAC, AMR, JPG, PNG, GIF)들을 지원한다.

* GSM Telephony  (기기에 따라 다르다.)

* Bluetooth, EDGE, 3G, and WiFi  (기기에 따라 다르다.)

* Camera, GPS, compass, and accelerometer  (기기에 따라 다르다.)

* Rich development environment   device emulator, 디버깅을 위한
                                                             tools, memory와 performance
                                                             profiling, Eclipse IDE를 위한
                                                             plugin 을 포함한다.




___________________________________________________

안드로이드 아키텍처

다음의 다이어그램은 안드로이드 operating system의 주요 component들을 보여준다. 구획의 자세한 설명은 아래에 있다.














___________________________________________________

Application들
안드로이드는 email client, SMS program, 달력, maps, browser, 연락처, 그외 다른것들을 포함하는 core application들을 제공할 것이다. 모든 application들은 Java programming 언어를 사용하면서 쓰여졌다.



___________________________________________________

Application Framework
안드로이드는 open development platform을 지원하면서 개발자들에게 풍부하고 획기적인 application들을 개발할 수 있는 능력을 제공한다. 개발자들은 모바일 기기, 위치정보에 접근, background service들의 구동, alarm들을 설정, notification들을 status bar에 추가 등등의 이점들을 자유롭게 취할수 있다. 

개발자들은 core application들이 사용된 같은 framework API들에 대해 완전히 접근할 수 있다. application 아키텍처는 component들의 재사용을 간단하게 하기위해 만들어 졌다. ; 어떤 application이  기능들을 만들어 펴낼 수 있고, 어떤 다른 application이 펴낸 이들의 기능들을 사용할 수도 있다(framework에 의해 강제된 보안 제약들의 권한 아래에 있을때). 이 같은 메커니즘은 component들이 사용자에 의해 교체되는 것을 허락한다.

모든 application들의 기저가 되는 것은 service들과 system들의 세트이다. 이는 다음을 포함한다.


* lists, grids, text boxes, buttons, 임베드가능한 web browser를 포함하고 application을 개발하는데 사용될 수 있는 풍부하고 확장가능한 Views의 세트

* application들이 (연락처 같은)다른 application들의 data에 접근하거나 그들의 data를 공유할 수 있게 해주는 Content Providers

* local에 위치한 strings, graphics, layout 파일들과 같이 코드로 되지 않은 리소스들에 대한 접근을 제공하는 Resource Manager

* 모든 application들이 사용자가 만든 알림들을 status bar에 배치할 수 있게 해주는 Notification Manager

* application들의 lifecycle을 관리하고 공통의 navigation backstack을 제공하는 Activity Manager



더 상세한 설명과 application의 종합적인 검토를 위해 Notepad Tutorial을 보자.




___________________________________________________

라이브러리들

안드로이드는 안드로이드 시스템의 다양한 component들을 사용하는 C/C++ 라이브러리들의 세트를 포함한다. 라이브러리들의 특징들은 안드로이드 application framework를 통해서 개발자들에게 노출되어진다. 몇몇의 core 라이브러들이 아래에 나열되어 있다.

* System C library  - BSD-the standard C system library(libc)의 완성에서 파생되었고, 임베디드된 Linux를 기본으로 하는 장치들을 위해 조정되어졌다.


* Media Libraries  - PacketVideo의 OpenCORE를 기본으로 한다. ; 라이브러리들은 MPEG4, H.254, MP3, AAC, AMR, JPG, PNG를 포함하는 많이 알려진 오디오와 비디오 포맷들, static image 파일들의 playback과 레코딩을 지원한다.

* Surface Manager - 디스플레이 서브시스템에 대한 접근을 관리하고 다양한 application들의 2D와 3D 그래픽 레이어들을 끊김 없이 합성한다.


* LibWebCore - 안드로이드 browser와 임베디드된 web view에 의해 작동하는 최신의 web browser engine
 
* SGL - 기본적인 2D graphics engine

* 3D libraries - OpenGL ES 1.0 APIs를 기본으로 완성 ; 라이브러리들은 hardware 3D acceleration(이용가능한 곳에서)을 사용하거나 포함되어있는 높게 앞축된 3D software rasterizer를 사용한다.

* Free Type - bitmap과 vector 폰트 랜더링

* SQLite - 모든 application들에게 이용가능한 강력하고 경량의 관계 데이터베이스 engine





_____________________________________________________________
개인적인 학습을 위한 발번역
[출처]  developer.android.com