2019. 1. 22. 02:25ㆍStudy
안드로이드 아키텍처
앱 개발자 관점에서 안드로이드 플랫폼 아키텍처를 자세히 이해하거나 응용할 필요는 없겠지만,
플랫폼이 어떻게 설계되었는지 앱이 어떤 환경에서 수행되는지 알아야한다고 생각합니다.
출처 https://developer.android.com
안드로이드 플랫폼은 리눅스 커널 기반입니다. HAL(Hardware Abstraction Layer)은 자바 API 프레임워크에 하드웨어 기능을 이용하는
표준 인터페이스를 제공합니다. 자바 API 프레임워크에서 하드웨어 기기(카메라,블루트스)를 이용하기 위한 코드가 실행되면 내부적으로 HAL의 라이브러리 모듈이 로딩되어 처리합니다.
안드로이드 런타임(Android Runtime)은 ART 가상머신을 이용하며 그 위에 일반 어플리케이션 개발 시 이용할 수 있는 자바 API 프레임워크를 제공합니다.
그렇다면 ART가 무엇일까요 ?
안드로이드는 Java 언어를 이용합니다. 아마 Java를 배웠다면 접근하기가 더 수월해지지 않을까 생각합니다.
자바로 개발된 다른 어플리케이션은 런타임 때 JVM이 수행하지만, 안드로이드의 VM은 ART(Android Runtime)를 이용합니다.
참고로 ART는 API LEVEL 21 (Android 5.0) 롤리팝 에서 새로 추가된 VM입니다 이전 버전에서는 Dalvik이였습니다.
ART는 앱을 실행할 때 DEX 파일을 실행합니다. 일반적으로 Java로 개발하면 실행 시 JVM이 Class파일을 해석하는데
안드로이드는 개발 언어만 Java라고 보시면됩니다.
Java로 개발된 개발자 코드는 컴파일러가 자동으로 DEX파일로 변경하며, 런타임 때 ART가 이 DEX파일을 해석하여 수행되는 구조입니다.
'Study' 카테고리의 다른 글
람다(Lambda)란 무엇일까? (2) | 2019.10.23 |
---|---|
Context란 무엇일까? (0) | 2019.05.07 |
4대 컴포넌트 (0) | 2019.05.07 |
Garbage Collection과 Heap (0) | 2019.01.29 |
안드로이드의 특징 (0) | 2019.01.22 |