2010년 10월 26일 화요일

안드로이드는 무엇인가?

안드로이드(Android)는 휴대전화기를 비롯한 스마트폰 등, 모바일 디바이스를 위한 운영체제와 미들웨어 그리고 핵심 어플리케이션을 포함하고 있는 소프트웨어 스택이다.


안드로이드의 특징


안드로이드는 이동통신 기기를 위한 소프트웨어 집합으로 운영체제,미들웨어,키 애플리케이션으로 구성된다. 안드로이드 SDK에는 자바 프로그래밍 언어를 사용하여 안드로이드 플랫폼에서 애플리케이션 개발을 하는데 필요한 툴과 API 들이 들어 있다. 주요 특징은 다음과 같다.
• 애플리케이션 프레임웍- 컴포넌트의 재사용 및 재배치 가능
• 달빅 가상 머신 - 모바일 기기에 최적화된 실행 엔진
• 통합 브라우저 - 오픈소스 WebKit 엔진에 기반
• 최적화 그래픽 - 2D 그래픽 라이브러리; OpenGL ES 1.0 스펙 기반 3D 그래픽
• SQLite - 구조화된 데이터 저장소
• Media 지원 - 오디오,비디오,정지화상포맷(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
• GSM 통신(하드웨어에 따라 다름)
• Bluetooth, EDGE, 3G, WiFi (하드웨어에 따라 다름)
• Camera, GPS, compass, and accelerometer(하드웨어에 따라 다름)
• 풍부한 개발 환경 - 기기 에뮬레이터, 디버깅 툴, 메모리 및 성능 프로파일링, Eclipse IDE 플러그인


안드로이드 아키텍처
(http://developer.android.com 참조)


-Applications
이메일 클라이언트, SMS 프로그램, 달력, 지도, 브라우저, 컨택트 등의 핵심 애플리케이션을 제공한다. 모든 애플리케이션은 Java 언어로 작성되어 있다.

-Application Framework
서비스 및 시스템으로 제공되는 프레임워크:
A rich and extensible set of Views: 리스트,그리드,텍스트박스,버튼, 그리고 브라우저에 이르기까지 애플리케이션을 만드는데 사용.
Content Providers: 다른 애플리케이션의 데이터에 접근하거나 자신의 데이터를 공유하는데 사용.
A Resource Manager: 문자열,그래픽,레이아웃 파일 등 비코드 자원을 액세스하는데 사용.
A Notification Manager: 상태바에 알림내용을 표시하는데 사용.
An Activity Manager: 애플리케이션의 생애주기를 관리하고 메뉴이동시 이전화면으로 돌아갈 수 있도록 지원.


-Libraries
안드로이드에는 시스템의 여러 컴포넌트가 사용하는 C/C++ 라이브러리 세트들이 포함되어 있다. 사용자들은 안드로이드 어플리케이션 프레임웍을 통해 이들 라이브러리들을 이용할 수 있다. 핵심 라이브러리들은 다음과 같다:
System C library - BSD 기반 표준 C 시스템 라이브러리(libc)를 적용한 것이며, 리눅스 기반 임베드 기기에 최적화되어 있다.
Media Libraries - PacketVideo의 OpenCORE 기반 라이브러리; 여러 인기있는 오디오 및 비디오 포맷의 저장, 재생을 지원하고, MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 등 정적 이미지 파일도 지원한다.
Surface Manager - 디스플레이용 서브시스템에 대한 액세스 관리 및 복수 애플리케이션들의 2D, 3D 그래픽 레이어 처리 지원
LibWebCore - 안드로이드 브라우저 및 내장 가능 웹 뷰를 지원하는 강력한 최신 웹 브라우저.
SGL - 2D 그래픽 엔진
3D libraries - OpenGL ES 1.0 APIs 기반 라이브러리; 하드웨어 3D 가속 및 최적화 소프트웨어 3D 래스터링 지원.
FreeType - 비트맵 및 벡터 폰트 렌더링
SQLite - 어느 어플리케이션에서나 사용 가능한 경량의 강력한 관계형 데이터베이스.

-Android Runtime
모든 안드로이드 애플리케이션은 자신만의 프로세스로 달빅 가상 머신상의 하나의 인스턴스로서 구동된다. 달빅은 기기가 여러 VM들을 효율적으로 구동하도록 작성되어 있다. 달빅 VM(가상머신)은 최소의 메모리로 작동할 수 있도록 최적화된 달빅 실행 파일(.dex)을 실행시킨다. VM은 레지스터 기반이고, 자바 컴파일러가 컴파일하고 "dx" 툴로 .dex 포맷으로 변환된 클래스를 실행시킨다.
달빅VM은 쓰레딩이나 저수준 메모리 관리와 같은 기반 기능 지원시에는 Linux 커널에 의존한다.

-Linux Kernel
안드로이드는 Linux 버전 2.6에 의존하여 보안,메모리관리,프로세스관리,네트웍 스택,드라이버 모델 등의 핵심 시스템 서비스를 제공한다. 이 커널은 또한 하드웨어와 소트트웨어 스택 사이의 추상 계층 역할을 한다.

댓글 없음:

댓글 쓰기