Data Analysis for Investment & Control

안드로이드란 무엇인가? - What is Android? 본문

Code

안드로이드란 무엇인가? - What is Android?

아슈람 2009. 7. 5. 19:57
반응형

※ 이 내용은 안드로이드 개발자 페이지(http://developer.android.com/guide/basics/what-is-android.html)의 내용을 번역한 것임을 알려드립니다.

What is Android?

안드로이드는 OS, 미들웨어 그리고 몇 가지 중요한 어플리케이션이 포함된 모바일 디바이스를 위한 소프트웨어 스택이다. 안드로이드 SDK는 Java 언어를 사용하여 안드로이드 플랫폼에서 어플리케이션을 개발하기 위해 필요한 툴들과 API들을 제공한다.




Features


● 컴포넌트 의 재사용과 재배치가 가능한 어플리케이션 프레임워크

● 모바일 디바이스에 최적화 된 Dalvik virtual machine
● 오픈 소스인 WebKit 엔진 기반의 통합 브라우저
● 커스텀 2D 그래픽 라이브러리가 제공하는 최적화된 그래픽; OpenGL ES 1.0 스펙 기반의 3D 그래픽(하으웨어 가속 옵션)
● 구조화된 데이터 스토리지를 위한 SQLite
● 공통 오디오, 비디오와 스틸 이미지 포맷(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)을 위한 미디어 지원
● GSM Telephony(하드웨어 종속)
● Bluetooth, GPS, 3G 그리고 Wi-Fi(하드웨어 종속)
● 디바이스 에뮬레이터, 디버깅 출, 메모리 및 퍼포먼스 프로파일링 그리고 이클립스 IDE를 위한 플러그 인을 포함하는 풍부한 개발 환경




 

Android Architecture
아래의 다이어그램은 안드로이드 OS의 주요 컴포넌트들을 보여주고 있다. 각각의 섹션에는 포함된 내용이 좀 더 자세하게 나타나 있다.

 






Applications
안드로이드는 E-mail 클라이언드, SMS 프로그램, 달력, 지도, 브라우저, 주소록 등등의 핵심 어플리케이션이 운영될 것이다. 모든 어플리케이션은 Java로 작성된다.





Application Framework
개발자들은 핵심 어플리케이션에 사용된 것과 같은 프레임워크 API에 제한 없는 접근이 가능하다. 어플리케이션 아키텍처는 컴포넌트의 재사용을 단순화 시키도록 설계되어있다; 어떤 어플리케이션이든 그 내용을 표시할 수 있으며, 다른 어떤 어플리케이션에서는 그것의 내용을 사용할 수도 있게 한다(프레임워크에 의한 강제적인 security constraints와 관계됨). 이와 같은 메커니즘은 사용자에 의한 컴포넌트 재배치를 할 수 있도록 하락해준다.
기본적으로 모든 어플리케이션들은 아래 포함된 서비스와 시스템의 집합이다.

● 리스트, 그리드, 텍스트 박스 그리고 심지어 임베디드할 수 있는 웹 브라우저가 포함된 어플리케이션을 빌드하기 위해 사용할 수 있는 Views의 풍부하고 유연한 집합
● 다른 어플리케이션으로부터 데이터에 접근할 수 있는 혹은 그들 자신의 데이터를 공유하기 위한 어플리케이션들이 가능한 Content Providers
● 지역화된 스트링, 그래픽 그리고 레이아웃 파일들과 같은 non-code 자원에 엑세스 할 수 있게 해주는 Resource Manager
● 모든 어플리케이션에서 상태바에 커스텀 경고 메시지를 보여줄 수 있게 해주는 Notification Manager
● 어플리케이션의 라이프 사이클이나 공용 네이게이션 백스택을 제공하는 Activity Manager

더 자세한 정보나 어플리케이션의 작동 설명을 원한다면, Notepad Tutorial을 참고하라.





Libraries
안드로이드는 안드로이드 시스템의 다양한 컴포넌트를 사용하는 C/C++ 라이브러리 집합을 포함한다. 이러한 내용은 안드로이드 어플리케이션 프레임워크를 통해 개발자들에게 알려진다. 핵심 라이브러리들 중 일부는 아래와 같다.

● System C Library – 임베디드 리눅스 기반의 디바이스에 튜닝된 표준 C 시스템 라이브러리(libc)의 BSD에의 구현
● Media Library – PacketVideo’s 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
안드로이드는 Java 언어의 핵심 라이브러리의 거의 모든 기능을 제공할 수 있는 핵심 라이브러리 핵심 라이브러리 집합이다.
모든 안드로이드 어플리케이션은 Dalvik 가상 머신의 어플리케이션 인스턴스와 함께 자신의 프로세스로 동작한다. Dalvik은 디바이스가 효율적으로 다중 VM을 구동할 수 있도록 하기 위해 사용된다. Dalvik VM은 최소한의 메모리 풋프린트를 위해 최적화된 Dalvik 실행파일(.dex)안에서 실행된다. 그 VM은 레지스터 기반이며, 포함된 “dx” 툴에 의해 .dex 포맷으로 변환된 Java 컴파일러에 의해 컴파일 된 클래스를 실행한다.
Dalvik VM은 스레딩이나 low-level 메모리 관리와 같은 기본적인 기능을 위한 리눅스 커널에 의지한다.





Linux Kernel
안드로이드는 보안, 메모리 관리, 프로세스 관리 네트워크 스택 그리고 드라이버 모델과 같은 핵심 시스템 서비스를 위해 리눅스 버전 2.6에 기반을 두고 있다. 또한 커널은 하드웨어와 소프트웨어 스택의 나머지 사이의 추상 레이어와 같은 역할을 수행한다.


반응형
Comments