기존의 안드로이드에서는 DEX file 을 Dalvik machine(JVM) 위에 올리는 방식이었는데,

Kitkat ( 4.4 ) 부터는 ART(Android Runtime) machine 위에서 OAT file 을 돌리는 것이 가능해졌다.

기존의 dex 파일을 dex2oat 라는 converter 를 이용해서 converting 하여 생성하고 run 한다.


Dalvik 은 bytecode 를 interpret 한다.

그러면서 사용자가 앱을 실행할 때마다 성능 개선이 있을 수 있는 부분에 대해 네이티브 코드로 변환을 한다.

이를 JIT( just-in-time ) 컴파일이라고 한다.

이 방식은 다양한 하드웨어나 아키텍쳐에서 실행할 수 있는 장점이 있지만,

이 과정이 성능과 배터리에 나쁜 영향을 준다. 게다가 JIT compile 된 코드가 메모리에 올라가 메모리도 늘어난다.



ART 는 Android RunTime 의 약자이며,

앱을 설치할 때 완전히 네이티브 코드로 변환하여 설치한다. 이 과정을 Ahead-Of-Time( AOT ) 컴파일이라 한다.

ART 를 사용하면, 코드 Interpret 및 JIT compile 하는 시간을 제거하여 performance 가 엄청 향상될 수 있다.

iOS 와 비슷한 성능의 이점을 얻는 것이 목표라고 한다.


단, 이 녀석은 Compile 하는데 시간이 오래 걸리고, compile 코드를 처음부터 다 생성하기 때문에 파일 용량이 커진다.

그래서 설치 속도 및 용량 이슈를 야기할 수 있다.