Q28) ART, Dalvik, Dex Compiler
Android Runtime (ART), Dalvik, Dex Compiler란 무엇인가요?
Android 애플리케이션은 기기에서 실행되기 위해 고유한 런타임 환경과 컴파일 프로세스에 의존합니다. Android Runtime (ART), Dalvik, Dex Compiler는 이 프로세스에서 중요한 역할을 하여 앱이 성능, 메모리 효율성, Android 기기와의 호환성에 최적화되도록 보장합니다.
Android Runtime (ART)
Android Runtime (ART)는 Android 4.4 (KitKat)에서 도입되어 Android 5.0 (Lollipop)부터 기본 런타임이 된 관리형 런타임 환경입니다. Dalvik을 대체하여 Android 앱을 실행하며 여러 개선 사항을 도입합니다. ART는 Ahead-of-Time (AOT) compilation을 사용하여 애플리케이션을 컴파일하며, 앱 설치 중 bytecode를 machine code로 변환합니다. 이로 인해 런타임 시 Just-in-Time (JIT) compilation이 필요 없어 앱 시작 시간이 단축되고 실행 중 CPU 사용량이 줄어듭니다.
ART의 주요 특징은 다음과 같습니다:
향상된 성능: AOT compilation은 최적화된 machine code를 생성하여 런타임 오버헤드를 줄입니다.
Garbage collection: ART는 향상된 garbage collection 기술을 도입하여 더 나은 memory management를 제공합니다.
Debugging 및 profiling 지원: ART는 상세한 stack traces 및 memory usage analysis와 같은 개발자를 위한 향상된 도구를 제공합니다.
Dalvik
Dalvik은 ART 이전에 Android에서 사용된 원래 런타임입니다. 제한된 메모리와 처리 능력에 최적화하여 virtual machine 환경에서 애플리케이션을 실행하도록 설계되었습니다.
Dalvik은 Just-in-Time (JIT) compilation을 사용하여 런타임 시 bytecode를 machine code로 변환합니다. 이 접근 방식은 앱 설치에 필요한 시간을 줄이지만, 즉석 컴파일로 인해 런타임 오버헤드가 증가합니다. Dalvik의 주요 특징은 다음과 같습니다:
컴팩트한 bytecode: Dalvik은 낮은 memory usage와 빠른 실행에 최적화된 .dex (Dalvik Executable) 파일을 사용합니다.
Register-based VM: Dalvik은 (Java Virtual Machine처럼) stack-based가 아닌 register-based로, instruction 효율성을 향상시킵니다.
느린 앱 시작 시간과 높은 CPU 사용량을 포함한 Dalvik의 한계로 인해 최신 Android 버전에서 ART로 대체되었습니다.
Dex Compiler
Dex Compiler는 Java bytecode (Java/Kotlin compiler에 의해 생성됨)를 .dex (Dalvik Executable) 파일로 변환합니다. 이 .dex 파일은 Dalvik 및 ART 런타임 환경에 최적화된 컴팩트한 파일입니다. Dex Compiler는 Android 애플리케이션이 기기에서 효율적으로 실행되도록 보장하는 데 중요한 역할을 합니다. Dex Compiler의 주요 특징은 다음과 같습니다:
Multi-dex 지원: 64K method limit을 초과하는 애플리케이션의 경우, Dex Compiler는 bytecode를 여러 .dex 파일로 분할하는 것을 지원합니다.
Bytecode optimization: 컴파일러는 Android 기기에서 더 나은 memory usage와 실행 성능을 위해 bytecode를 최적화합니다.
Dex compilation 프로세스는 Android build system에 통합되어 앱 개발의 build 단계에서 발생합니다.
Dalvik에서 ART로의 전환
Dalvik에서 ART로의 전환은 Android 런타임 환경에서 상당한 개선을 가져왔습니다. ART의 AOT compilation, 향상된 garbage collection, profiling capabilities는 더 나은 개발자 및 사용자 경험을 제공합니다. Dalvik용으로 설계된 앱은 .dex 파일 사용 덕분에 ART와 완벽하게 호환되어 개발자에게 원활한 마이그레이션을 보장합니다.
요약
Android Runtime (ART), Dalvik, Dex Compiler는 Android에서 앱 실행의 기반을 형성합니다. AOT compilation과 향상된 성능을 갖춘 ART는 JIT compilation에 의존했던 Dalvik을 대체했습니다. Dex Compiler는 Java bytecode를 두 런타임 환경에 최적화된 .dex 파일로 변환하여 간극을 메웁니다. 이러한 구성 요소들은 함께 Android 기기에서 효율적이고 빠르며 안정적인 앱 실행을 보장합니다.