2010년 7월 25일 일요일

안드로이드란?

안드로이드가 뭔지 공식 사이트를 보면 다음과 같다. 지금껏 3년간 C/C++로 개발을 했지만, 이 자바를 이용한다는 것... 자바를 무려 10년(헉 벌써 10년이 됐네..-.-)이나 건드려온 나에게는 정말 희소식이 아닐 수 없다.

안드로이드란?
안드로이드는 OS, Middleware, Key Application을 포함하는 모바일기기의 S/W 집합체이다. 그리고 안드로이드 SDK는 안드로이드 플랫폼상에서 자바 프로그래밍 언어를 이용하여 개발을 시작할 수 있도록 툴과 API를 제공하고 있다.


특징
- Application Framework : 재사용 가능. 컴포넌트를 교체 가능.
- Dalvik virtual machine : 모바일 기기에 최적화.
- Integrated browser : Open Source WebKit 엔진 기반.
- Optimized graphics : custorm 2D graphics 라이브러리로 개발. OpenGL ES 1.0 스펙을 기반으로 하는 3D graphics (하드웨어 가속은 optional)
- SQLite : 구조화된 데이타 저장
- 미디어 지원 : 오디오, 비디오, 이미지 포맷(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
- GSM 지원 : 하드웨어 의존적
- Bluetooth, EDGE, 3G, and WiFi 지원 : 하드웨어 의존적
- 카메라, GPS, Compass(나침반), Accelerometer(가속도계) 지원 : 하드웨어 의존적
- Rich 개발 환경 : 디버깅, 메모리, 성능 프로파일링, Eclipse IDE plugin을 위한 에뮬레이터, 툴 제공

안드로이드 아키텍처
 
위 그림에서 볼 수 있는것과 같이 Application, Application Framework, Libraries, Android Runtime, Linux Kernel로 나누어져 있다.

Applications :
안드로이드는 Email Client, SMS Program, Calendar, Maps, Browser, Contacts등의 핵심 응용프로그램을 탑재할 것이다. 모든 프로그램은 자바로 개발된다.

Application Framework : 개발자는 핵심 응용프로그램에서 사용된 것과 같은 프레임워크 API에 모두 접근 가능하다. 응용프로그램 아키텍쳐는 컴포넌트 재사용을 손쉽게 할 수 있도록 되자인 되었으며, 어떤 응용프로그램의 기능으로 제작하거나 제작하는데 사용된다.(단, 프레임워크의 보안 제약을 따라야 한다.) 이같은 메카니즘은 컴포넌트를 사용자에 의해 교체할 수 있도록 한다.

Libraries : 안드로이드는 안드로이드 시스템에서 다양하게 사용되는 C/C++ 라이브러리들을 포함하며, 안드로이드 Application Framework를 통해 개발자들은 이런 사항을 알 수 있다.


  • System C library  :  임베디드 리눅스 기반 기기를 위한, 표준 C 시스템 라이브러리(libc)의 BSD 상속 구현체
  • Media Libraries : PacketVideo의 OpenCORE 기반이며, 인기있는 오디오 및 비디오 포맷, MPEC4 / H.264 / MP3 / AAC / AMR / JPG / PNG를 포함하는 정적 이미지 파일의 재생 및 녹음(녹화)
  • Surface Manager : 디스플레이 서브시스템 및 다수의 응용프로그램의 2D, 3D 그래픽 레이어
  • LibWebCore : 안드로이드 브라우저 및 Embeddable 웹 뷰와 같은 최신의 웹 브라우저 엔진
  • SGL : 2D graphics 지원
  • 3D libraries : OpenGL ES 1.0 API 기반를 기반으로 하며, 하드웨어 3D 가속 또는 최적화된 3D S/W rasterized
  • FreeType : 비트맵과 벡토 폰트 렌더링
  • SQLite : 모든 응용프로그램에서 사용 가능한 강력하고 경량인 관계형 데이터베이스 엔진

Android Runtime
안드로이드는 자바 프로그래밍 언어의 핵심 라이브러리 기능 대부분을 제공하도록 핵심 라이브러를 제공한다.
모든 안드로이드 응용프로그램은 각자의 프로세스상에서 실행되며, 고유의 Dalvik 버추얼 머신의 인스턴스를 가지고 있다. Dalvik은 기기가 다수의 버추얼 머신에서 효율적으로 실행될 수 있도록 제작되었으며, 최소의 메모리 영역에 최적화된 Dalvik Executable(.dex) 포맷 파일을 실행시킨다. 버추얼 머신은 레지스터 기반이며, 자바 컴파일러로 컴파일된 클래스들을 "dk"툴을 이용하여 .dex 포맷으로 변경한 클래스들을 실행한다.
Dalvik 버추얼 머신은 스레딩과 저수준 메모리 관리와 같은 리눅스 커널 기능을 사용한다.

Linux Kernel
안드로이드는 보안, 메모리 관리, 프로세스 관리, 네트워크 스택, 드라이버 모델과 같은 리눅스 버전 2.6의 핵심 시스템 서비스를 이용하며, 커널은 하드웨어와 소프트웨어간 추상계층으로 동작한다.

 

 

 

 

 

[출처] http://www.kandroid.org/

 

댓글 없음:

댓글 쓰기