1. 모바일 개발
•모바일 환경
–통화 기능만을 제공하던 과거의 핸드폰과는 달리 근래의 스마트폰은 통신 장비의 수준을 뛰어 넘어 거의 모든 디지털 장비를 야금야금 통합해 가고 있다.
–모바일 장비의 수요 증가는 소프트웨어의 수요 증가로 이어지며, 수요가 많다 보니 가격도 적당한 수준에서 합리적으로 형성된다. 또한 소프트웨어를 사고 파는 오픈 마켓이 활성화되어 있어 누구나 쉽게 접근할 수 있다.
•안드로이드의 등장
–스마트폰의 운영체제는 과거 통계 기준으로 신비안, 아이폰 등이 대부분을 차지했으며, 안드로이드는 점유율이 미미한 상태였다. 하지만 점차 점유율을 높이고 있는 상태다.
–안드로이드는 각종 모바일 운영체제가 치열한 경쟁을 벌이는 상황에서 새롭게 등장한 모바일 운영체제이다.
–개발 주체는 명목상으로 OHA(Open Handset Alliance)컨소시엄으로 되어 있지만 실질적인 리더는 인터넷 검색 업체인 구글이다.
–OHA는 비독점 개방 플랫폼을 지향하며 그 결과로 만들어진 것이 바로 안드로이드이다 . 특정 업체에 의해 독점적으로 공급되는 아이폰, 윈도우 모바일과는 대조적인데 둘 다 장단점이 있어서 반드시 어느 쪽이 더 좋다고 할 수는 없다
–구글 뿐만 아니라 국내 통신업체 및 장비업체들도 안드로이드 대중화를 위해 엄청난 자금을 쏟아 부으며 개발자 대회나 프로그램 공모전을 펼치고 있다.
2. 안드로이드
•특징
①운영체제의 핵심이라고 할 수 있는 커널은 공개 운영체제인 리눅스에 기반 한다.
②공식적으로 Java 언어를 사용한다. 최근에는 C로 개발할 수 있는 NDK도 발표되었지만 아직 일반적이지 않다.
③검증된 많은 라이브러리들을 대거 포함하고 있어 웬만한 기능은 별도의 외부 라이브러리를 사용할 필요가 없다.
④플랫폼에 내장된 빌트인 프로그램과 사용자가 만든 프로그램이 동일한 API를 사용하므로 모든 프로그램은 평등하다.
개방된 환경인 만큼 개발 툴과 관련 문서들이 모두 무료로 제공된다.
•아키텍처
–제일 하위에는 운영체제의 핵심에 해당하는 리눅스 커널이 있다.
–안드로이드가 리눅스를 채용한 주된 이유는 공개 운영체제라는 이유도 있지만 무엇보다 디바이스 드라이버의 지원이 광범위하기 때문이다.
–자바 가상 머신 JVM을 직접 사용하지 않으며 모바일 환경에 최적화한 달빅(Dalvik) 가상 머신을 사용한다.
–달빅은 안드로이드 전용의 가상 머신으로 자바 클래스를 바로 실행할 수는 없으며 클래스 파일을 dex 포맷(Java의 Class와 다른 byte code)으로 변환해야만 실행이 가능하다.
–라이브러리와 런타임 위에는 프레임워크가 있는데 이것이 바로 안드로이드의 API이다.
–응용프로그램은 프레임워크를 통해 하위의 커널이나 시스템 라이브러리를 사용한다.
•4가지 구성요소
–액티비티 : 사용자 인터페이스를 구성하는 기본 단위이다.
–서비스 : UI가 없어 사용자 눈에 직접으로 보이지 않으며 백그라운드에서 실행되는 컴포넌트이다. 전형적인 예로 미디어 플레이어를 들 수 있는데 비활성화된 상태라도 노래는 계속 재생되어야 하기 때문이다.
–방송 수신자(Broadcast Receiver) : 시스템으로부터 전달되는 방송을 대기하고 있다가 신호 전달 시 수신하는 역할을 한다.
–콘텐트 제공자(Content Provider) : 다른 응용 프로그램을 위해 자신의 데이터를 제공한다. 전형적인 예가 데이터베이스이며, 주소록도 CP로 제공된다.
–4가지 컴포넌트들은 서로 독립적으로 동작하므로 상호간의 통신을 위한 장치가 필요한데 이 역할은 인텐트(Intent)가 담당한다. 인텐트는 컴포넌트간의 통신 수단이며 메시지에 대한 상세한 정보를 가진다.
'프로그래밍 > Android' 카테고리의 다른 글
안드로이드 app( 4가지 구성요소) (0) | 2012.07.13 |
---|---|
Helloworld 만들기[실습] - 안드로이드 (0) | 2012.07.12 |
안드로이드 한글 키보드 설치하기 (0) | 2012.07.12 |
안드로이드의 역사 (0) | 2012.07.12 |
안드로이드 시작하기 (0) | 2012.07.12 |