개발/[Android]

[Android] Dalvik & ART

바켱서 2021. 6. 8. 18:03

Dalvik, ART 가 나온 배경


일반적인 컴파일 언어는 CPU의 아키텍쳐와 플랫폼의 환경에 맞추어 기계어로 번역된다.

한마디로 사람이 작성한 언어를 CPU가 알아 볼 수 있는 언어로 번역하는 것이다.

하지만 자바의 경우, 한가지 CPU의 아키텍쳐나 환경에 맞추는 것이 아닌 바이트코드라는 것으로 컴파일 되며, 이를 실행하기 위해 자바 가상 머신이 필요하다.

자바는 바이트코드만으로 여러가지 아키텍쳐나 플랫폼에서 작동할 수 있도록 하는 것이 목표이기 때문이다.

자바 가상 머신인 JVM을 사용할 수 있지만 라이선스 문제로 구글에서 Dalvik VM을 따로 개발해서 안드로이드에 넣었다.

현재 Android5.0(API 21) 이상에서는 ART(Android Runtime)이 기본 런타임 환경

Dalvik VS ART


가장 큰 차이는 컴파일 방식이다.

Dalvik : JIT(Just-In-Time) 방식을 사용

ART: AOT(Ahead-Of-Time) 방식을 사용 _ Android 7.0 부터는 AOT+JIT 조합

JIT(Just-In-Time) VS AOT(Ahead-Of-Time)


JIT (Just-In-Time)

  • 실행 시 컴파일
  • 설치 시 컴파일 하지 않기 때문에 AOT보다 설치 속도 빠르다.
  • 실행 시 컴파일 하기 때문에 AOT에 비해 실행 속도 느림
  • 용량이 작다.

AOT(Ahead-Of-Time)

  • 앱 설치 시 컴파일
  • 설치 시 컴파일 하기 때문에 JIT보다 설치 속도 느리다.
  • 실행 시 컴파일 하지 않기 때문에 JIT에 비해 실행 속도 빠름
  • 용량이 크다. ( 미리 컴파일하여 가지고 있기 때문에 )

출처: https://duzi077.tistory.com/147

     [https://brunch.co.kr/@mystoryg/81](https://brunch.co.kr/@mystoryg/81)