728x90
※참조
런타임 (Runtime)
- 애플리케이션을 관리 (메모리, 프로세스) 하기 위해 컴파일러나 가상머신이 사용하는 기존 코드 라이브러리
- 혹은 프로그램이 실행되고 있는 동안의 동작
런타임 환경 (Runtime Environment)
- 애플리케이션을 위한 서비스를 제공하는 가상머신 상태
자바 vs 네이티브 언어
- 일반적인 네이티브 언어들은 ( ex : C언어 ) 특정 CPU, OS에 따라 맞추어 기계어로 컴파일됨
- 자바는 자바 컴파일러가 생성한 바이트 코드를 JVM(자바가상머신)에 올리면 한 번의 컴파일로 여러 환경에서 사용이 가능
- 하지만 자바는 그만큼 느리다.
- 자바의 JVM을 안드로이드 환경에 맞추어 개발한 것이 달빅 VM과 ART이다.
달빅 VM (Dalvik VM)
- JIT (Just In Time) 컴파일러를 사용
- 최초 앱 실행 시 자바코드 일부를 한꺼번에 변환 후 RAM에 올려서 사용 (매번 필요한 부분만 컴파일)
- 단점 : JIT 컴파일러가 실행 되는 동안 하드웨어 부하 증가 -> 배터리 소모량이 커짐, 애플리케이션 실행 시 RAM에 상주되어야 하기에 RAM 사용량 증가
안드로이드 런타임 (ART)
- AOT (Ahead Of Time) 컴파일러를 사용
- 앱 설치 시 컴파일하여 바이트 코드 생성 -> 앱 실행 시 읽어들임
- 단점 : 설치 공간이 달빅에 비해 1.5~2배 필요, 애플리케이션 설치 시간 증가
728x90
'Android' 카테고리의 다른 글
[안드로이드] RecyclerView에 itemClickListener (0) | 2020.08.23 |
---|---|
[안드로이드] RecyclerView (0) | 2020.08.23 |
[안드로이드] 안드로이드 애플리케이션 아키텍처 (0) | 2020.08.23 |
[안드로이드] 그래들 빌드 (Gradle Build) (0) | 2020.08.23 |
[안드로이드] 밀도 독립적 디자인 (0) | 2020.08.23 |
댓글