JVM은 자바 어플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 주체.
JVM은 플랫폼에 맞춰 한번의 빌드로 여러플랫폼에서 실행이 가능.
즉, 하나의 test.java 파일을 test.class로 컴파일 했을 시, 윈도우, 맥, 리눅스 어느 OS에 관계없이 JVM이 실행될 수 있다면 새로 컴파일 할 필요없이 실행이 가능하다.
안드로이드 앱을 실행할 수 있는 가상머신.
모바일 기기 환경에 최적화 된 가상머신.
자바>클래스 파일로 컴파일 된 친구들을 dex 파일로 변경하여 DVM에서 실행가능하게 만들어서 사용하곤 한다.
즉 흐름도는 다음과 같다
.java > .class > bin/classes( 클래스 모음집 ) > .dex > APK 내 실행
최종적으로 dex랑 기타 라이브러리를 압축해서 APK를 생성함.
이제는 DVM도 안쓰고 ART를 사용함. 어쩌다가 달빅을 보내게 됐니?
요약하자면, ART 컴파일러를 채택하면 앱실행시간 & 배터리 수명이 향상되기 때문이다. 앱이 설치되는 시점에 앱의 전체 바이트 코드를 기계어로 번역해두어 앱이 실행되는 시간에 바이트코드를 해석하는 시간을 제거하여 전체적인 퍼포먼스를 향상시켰다고한다,,
참고 : JVM, DVM, ART 이해하기