ART vs Dalvik – Apa Perbedaan Kedua Runtime Android Ini?


Sejak versi awal Android seperti “Cupcake” (1.5) dan “Donut” (1.6) hingga versi saat ini “Marshmallow” (6.0), Android telah menjaga arsitektur berbasis layer mereka. Mulai dari bawah ada “Linux Kernel”, “Libraries and Android Runtime”, “Application Framework”, hingga “Application”.

ART vs Dalvik - 01Gambar 1: Android KitKat (4.4) menghadirkan runtime baru bernama “ART”

Setiap aplikasi Android berjalan di mesin virtual (VM) masing-masing yang disebut “Dalvik”. Di Android 4.4, Google mulai menghadirkan Android Runtime baru bernama “ART”. Pengguna Android dapat dengan mudah berganti antara Dalvik dan ART di “Settings” / “Developer options” / “Select runtime” dan lalu sebuah dialog akan muncul.

ART vs Dalvik - 02Gambar 2: Android KitKat membuat pengguna dapat berganti antara runtime Dalvik dan ART

Pada bagian berikut ini, kita akan melihat lebih dalam tentang perbedaan antara kedua runtime Android tersebut.

AOT vs JIT

Aplikasi Android format file-nya adalah .apk, dengan class-class Java yang telah dikonversi menjadi bytecode DEX. Format bytecode DEX itu tidak terikat dengan arsitektur perangkat dan perlu ditranslasi ke kode mesin native agar dapat berjalan di perangkatnya. Hal ini sama baik untuk runtime ART maupun Dalvik.

Perubahaan paling mencolok dari Dalvik ke ART adalah Dalvik berbasis kompilasi Just-in-Time (JIT) sedangkan ART berbasis kompilasi Ahead-of-Time (AOT).

Dengan compiler Dalvik JIT, setiap aplikasi dijalankan, compiler-nya secara dinamis menerjemahkan sebagian dari bytecode Dalvik ke kode mesin. Sejalan dengan proses eksekusi, lebih banyak bytecode dikompilasi dan di-cache. Di lain pihak, ART dilengkapi dengan compiler Ahead-of-Time. Ketika aplikasi berada di fase instalasi, compiler-nya menerjemahkan bytecode DEX ke kode mesin dan menyimpannya di tempat penyimpanan perangkat. Ini hanya terjadi sekali saja ketika aplikasi diinstal di perangkat.

Performa

Manfaat paling penting dari runtime ART dibanding Dalvik adalah aplikasi berjalan lebih cepat di ART. Ini karena bytecode DEX sudah diterjemahkan ke kode mesin pada saat instalasi, tidak diperlukan waktu ekstra untuk mengkompilasikannya ketika runtime. Aplikasi juga dapat dibuka lebih cepat dengan ART karena alasan yang sama.

Karena Dalvik memerlukan memori ekstra untuk cache kode JIT, sebuah aplikasi hanya menempati memori dengan ukuran lebih kecil ketika berjalan di ART.

Daya Tahan Baterai

Dengan runtime Dalvik, kompilasi JIT terikat dengan CPU. Karena kompilasi AOT, ART membebaskan CPU dari translasi bytecode DEX ke kode mesin ketika eksekusi aplikasi sehingga memperkecil penggunaan daya. Menggunakan ART menghasilkan daya tahan baterai yang lebih lama.

Waktu Instalasi

Karena compiler AOT menerjemahkan bytecode DEX ke kode mesin ketika proses instalasi aplikasi, aplikasi memerlukan waktu lebih lama di runtime ART. Namun melihat manfaat seperti eksekusi yang lebih cepat dan proses pembukaan yang lebih cepat seperti yang sudah dibahas sebelumnya, waktu ekstra ini hanya terjadi ketika aplikasi diinstal sehingga manfaatnya setimpal.

Penggunaan Kapasitas

Dengan runtime ART, compiler AOT menerjemahkan bytecode DEX dari sebuah aplikasi ke kode mesin dan menyimpannya di tempat penyimpanan perangkat. Biner yang sudah dikompilasikan sebelumnya memerlukan kapasitas penyimpanan yang lebih besar dibanding bytecode DEX. Ini berakibat pada penggunaan kapasitas yang lebih besar dibanding runtime Dalvik.

Kesimpulan

Hingga titik ini telah diperkenalkan runtime ART di Android. Kita juga sudah memabahas keuntungan dan kompromi yang ada, berpusat di kompilasi Ahead-of-Time dan kenaikan performa.

Referensi

“Meet ART, Part 1: The New Super-Fast Android Runtime Google Has Been Working On In Secret For Over 2 Years Debuts In KitKat” http://www.androidpolice.com/2013/11/06/meet-art-part-1-the-new-super-fast-android-runtime-google-has-been-working-on-in-secret-for-over-2-years-debuts-in-kitkat/

“Dalvik JIT” http://android-developers.blogspot.com/2010/05/dalvik-jit.html

* Artikel ini adalah hasil kerja sama dengan Intel Developer Zone. Artikel asli bisa dilihat di link ini.