스마트폰(Smart Phone)은 PC와 같은 기능과 더불어 고급 기능을 제공하는 휴대전화이다. 현재는 단순한 전화 기능뿐만이 아니라 메일, 인터넷 검색부터 문서 작성, 은행 거래 등의 대부분의 작업을 수행할 수 있다. 이러한 스마트폰의 종류는 다양하다. 또한 그만큼 사용되는 운영체제의 종류도 다양하다.
모바일에 사용되는 운영체제의 종류는 아래와 같다.
회사명 |
운영체제명 |
애플 |
iOS |
구글 |
안드로이드 |
블랙베리 |
블랙베리 10 |
Microsoft |
Windows 10 Mobile |
삼성전자 |
타이젠 |
캐노니컬 |
우분투 터치 |
모질라 재단 |
파이어폭스 OS |
이 중 안드로이드는 전체 스마트폰 시장의 절반 이상을 차지하며 오늘날 가장 인기있는 스마트폰 운영체제 중 하나이다.
(1) 정의
위키백과에 의하면, 안드로이드란 아래와 같다.
안드로이드(Android)는 휴대 전화를 비롯한 휴대용 장치를 위한 운영 체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램(웹 브라우저, 이메일 클라이언트, 단문 메시지 서비스(SMS), 멀티미디어 메시지 서비스(MMS)등)을 포함하고 있는 소프트웨어 스택이자 모바일 운영 체제이다. 안드로이드는 개발자들이 자바 언어로 응용 프로그램을 작성할 수 있게 하였으며, 컴파일된 바이트코드를 구동할 수 있는 런타임 라이브러리를 제공한다. 또한 안드로이드 소프트웨어 개발 키트(SDK)를 통해 응용 프로그램을 개발하는 데 필요한 각종 도구와 API를 제공한다.
안드로이드는 리눅스 커널 위에서 동작하며, 다양한 안드로이드 시스템 구성 요소에서 사용되는 C/C++ 라이브러리들을 포함하고 있다. 안드로이드는 기존의 자바 가상 머신과는 다른 가상 머신인 달빅 가상 머신을 통해 자바로 작성된 응용 프로그램을 별도의 프로세스에서 실행하는 구조로 되어 있다.
안드로이드는 리눅스 커널 위에서 동작하며, 자바로 작성된 소프트웨어는 달빅 가상 머신에서 실행 가능한 코드로 컴파일된다. 달빅 가상 머신은 표준 자바 가상 머신은 아니지만 모바일 기기를 위해 설계된 레지스터 기반의 가상 머신이다.
리눅스 커널을 기반으로 제작되었기 때문에 리눅싀 커널의 GNU 일반 공중 사용 허가서를 따르고 있다. 현재 안드로이드는 세계에서 가장 대표적인 오픈소스 플랫폼으로 새로운 운영체제의 버전 공개와 동시에 소스를 공개하고 있다.
(2) 구조
안드로이드 구조는 아래 그림과 같이 총 5개의 계층으로 구성되어 있다.
① 리눅스 커널
하단에 위치한 리눅스 커널은 모바일 환경에서 더 나은 성능을 위해 수정된 커널이다. 리눅스 커널은 모든 하드웨어 구성요소들과 연동해야 하므로 대부분의 하드웨어 드라이버를 포함한다. 또한 안드로이드에 존재하는 대부분의 보안 기능에 관여한다. 안드로이드가 리눅스 플랫폼 기반이기 때문에 개발자들이 안드로이드를 다른 플랫폼과 구성에 포팅하기 쉽다.
② 라이브러리
리눅스 커널 위에는 중요하고 유용한 안드로이드 라이브러리가 존재한다. 안드로이드의 라이브러리는 C와 C++로 작성되어 있다.
③ 안드로이드 런타임
라이브러리와 같은 계층에 안드로이드 런타임의 구성요소인 달빅 가상 머신과 코어 라이브러리가 있다. 달빅 가상 머신 .dex라는 파일 형식이나 달빅의 실행 파일을 실행시킨다. 그 위에 위치한 어플리케이션 프레임워크 계층은 다른 종류의 작업을 수행하는 어플리케이션을 지원한다.
④ 어플리케이션 프레임워크
개발자들을 위한 API(Application Programming Interface)를 제공하는 어플리케이션 프레임워크이다. 프레임워크를 통해 하드웨어 장치, 위치 정보접근, 병렬처리기능, 알람설정기능, 상태 표시줄 알림 등 기능을 사용할 수 있다. 컴포넌트의 재사용을 하기 쉽도록 설계되었으며 모든 어플리케이션은 자신의 기능을 다른 어플리케이션에 개방이 가능하며 기능을 사용할 수도 있다.
⑤ 어플리케이션
개발자가 만든 대부분의 어플리케이션은 가장 높은 계층인 어플리케이션에서만 연동된다. 안드로이드의 모든 어플리케이션은 달빅 가상 머신이라는 가상 환경에서 실행된다. 안드로이드 버전 4.4 이후부터는 안드로이드 런타임이라는 다른 런타임이 실행 가능하고 사용자는 DVM과 ART 런타임 환경을 자유롭게 전환할 수 있다.
(3) 버전
안드로이드의 각 버전들은 알파벳 첫 글자를 오름차순에 맞춘 디저트명을 코드명으로 삼고 있다.
- C : Cupcake (컵케이크) 안드로이드 버전 1.5
- D : Donut (도넛) 안드로이드 버전 1.6
- E : Éclair (이클레어(프랑스어 에클레르)) 안드로이드 버전 2.0~2.1
- F : Froyo (프로요(프로즌 요거트)) 안드로이드 버전 2.2~2.2.1
- G : Gingerbread (진저브레드) 안드로이드 버전 2.3~2.3.7
- H : Honeycomb (허니콤) 안드로이드 버전 3.0/3.1/3.2
- I : Ice Cream Sandwich (아이스크림 샌드위치) 안드로이드 버전 4.0~4.0.4
- J : Jellybean (젤리빈) 안드로이드 버전 4.1~4.3.1
- K : Kitkat (킷캣) 안드로이드 버전 4.4~4.4.4
- L : Lollipop (롤리팝) 안드로이드 버전 5.0~5.1.1
- M : Marshmallow (마시멜로) 안드로이드 버전 6.0~6.0.1
- N : Nougat (누가) 안드로이드 버전 7.0~7.1.2
- O : Oreo (오레오) 안드로이드 버전 8.0~
(4) ADT
개발환경은 이클립스와 이클립스(Eclipse)에 통합된 플러그인 ADT(Android Development Tool, 안드로이드 개발 도구) 사용을 권장하였으나, 롤리팝부터는 IntelliJ 기반의 안드로이드 스튜디오 사용을 권장하고 있다. 2015년 7월, 구글측은 이클립스에 대한 지원을 중단하겠다고 밝혔다.
( * IntelliJ : IntelliJ IDEA는 JetBrains사에서 제작한 상용 자바 통합 개발 환경이다. 줄여서 IntelliJ 혹은 IDEA로도 불린다. )
Google has officially announced in a blog that it is stopping support and development for Android Developer Tool (ADT) in Eclipse.
- 「TECH TIMES」 Google Stops Development And Support For ADT In Eclipse, 2015.07.30
[ 출처 ]
- https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%B0%94%EC%9D%BC_%EC%9A%B4%EC%98%81_%EC%B2%B4%EC%A0%9C
댓글