Dalvik
- 구글의 댄 본스타인이 만든 VM
- Java는 JVM위에서 실행되고, Android Dalvik위에서 실행된다.
- Android 5.0 이하에서만 사용되고 그 이상 버전은 ART로 교체되었다.
- Dalvik에서는 JIT(Just In Time)컴파일러를 사용하였다.
JIT
- 처음 실행될 때 한번 컴파일하고 그 뒤에 자주 쓰이는 코드는 캐시에 저장하고 가져다 쓴다. 인터프리터의 느린 실행 속도를 개선할 수 있었다.
- 하지만 처음 컴파일 단계에서 모든 코드를 메모리에 올려두고 작업해야 하기 때문에 메모리 소비가 많다
ART
- Dalvik의 한계점을 개선한 새로운 런타임
- 앱을 설치할 때 완전히 네이티브 코드로 변환하여 설치한다.
- JIT대신 AOT 컴파일을 사용한다.
AOT
- AOT는 중간 언어로 배포된 후 플랫폼에 맞계 기계어로 미리 번역하는 방식
- JIT는 실행 시점에서 컴파일을 수행하는데 추가적인 메모리와 CPU 사이클이 필요한데, 이를 보완하는 방법으로 사용될수 있다.
- 설치 속도가 Dalvik보다 느리고 공간도 많이 차이한다.
- 처음 설치할 때 컴파일 작업을 다 해놓기 때문에 생기는 근본적인 한계
- Android 5.0이하에서 개발된 어플들이 제대로 동작하지 못할 때도 있다.