Android’de DVM ve ART arasında fark nedir ?

Abdullah IŞIK
3 min readOct 7, 2022

DVM(Dalvik Virtual Machine)

DVM, Dan Bornstein tarafından geliştirilen stack-based bir Sanal makinedir. Dalvik, android aplikasyonları üzerinde yürüten bir yapıdır ve şu anda android işletim sistemi üzerinde genellikle kullanılmaz.Dalvik byte kodu hala bir dağıtım biçimi olarak kullanılmaktadır, ancak daha yeni Android sürümlerinde artık çalışma zamanında kullanılmamaktadır.

Android, üzerinde dalvik sanal makinesi bulunan bir Linux işletim sistemidir.DVM’in temel çalışma prensibi java kodunu alır ve bytecode’a çevirirki bu sayede linux android uygulamaları çalıştırabilsin. Basitçe runtime sırasında java kodu JIT derleyicisinde java kodundan bytecode’a derlenir. Bu işlem zaman alabilir özellikle runtime sırasında işlem daha güç hale gelir. Bu yüzden geliştiriciler ve yazılım şirketleri uygulamalarına odexed dosyaları ekler. Burada iki tip dosya vardır :

  • .dex(Dalvik Executable file) .dex dosyaları android için derlenmiş kod dosyalarıdır Bu .dex dosyaları daha sonra tek bir .apk dosyasına sıkıştırılır.
  • .odex(Optimized Dalvik Executable file) .odex dosyaları android sistemi tarafından oluşturulur sebebi ise disk’de yerden tasarruf etmek ve android uygulamasının açılma hızını artırmak.

Dexopt .dex dosyalarını optimize etmek için çalışır ve .odex dosyasını çıktı verir kısaca bytecode’u optimize eder dolayısıyla DVM’deki tüm süreç şu şekilde özetlenebilir:

JAVA source code(.java) –> Bytecode(.dex) –> DVM

DVM düşük disk kapasiteli cihazlar için uygun bir yapıdır. Ancak kurulumdan sonra yani runtime sırasında yavaş çalışmaktadır.

ART(Android Run Time)

Yeni Android versiyonları özellikle 4.4 Kitkat versiyonu DVM’e alternatif olarak ART Sistemini kullanmaya başladı. ART aynı bytecode’u ve .dex dosyalarını kullanan (.odex değil !) DVM’in yeni varisidir. Amacı ise son kullanıcıyı etkileyecek ciddi performans iyileştirmeleri yapmasıdır. Android 5.0 “Lolipop” Art’nin runtime’a dahil olduğu ilk versiyondur.Art sayesinde artık android uygulamaları tamamen derlenmiş şekilde cihazlara yüklenir kodu tekrar bytecode’a çevirip derlemeye gerek kalmaz. Bu nedenle çalışma zamanında ciddi bir performans artışı olur fakat bununla birlikte dezavanjtaları’da vardır peki nedir ? Tabiki daha fazla depolama alanına ihtiyaç duyarsınız ve paket kurulumları birazcık daha uzun sürer çünkü kurulum zamanında kodu derler paket kurulumundan sonra derlenmiş şekilde cihaz’da kalmaya devam eder. Bu nedenle daha küçük bir java koduna fakat daha büyük bytecode’a yer etmiş oluruz. Bu durumda uygulamanın küçük bir parçasını alıp önden derlemiş olursunuz ve optimize şekilde cihaz üzerinde çalışır. Yani uygulamanın bir bölümünü önden derlemiş olduk ve kalan tarafı çalışma zamanında derledik. Buda onu DVM’den daha hızlı kılıyor fakat depolama alanından feragat etmiş olduk.

  • dex2oat(Dalvik Executable file to Of Ahead Time) ART dex2oat toolunu .dex dosyalarını derlemek ve optimize etmek için kullanır ve .oat formatında çıktı verir bu sayede ELF formatında bir makine kodu elde etmiş oluruz. dex2oat DEX dosyalarını girdi olarak alır ve derlenmiş bir exec(yürütülebilir) uygulama çıktısı verir. Bir uygulama yüklendiğinde, Android uygulama verilerini otomatik olarak optimize eder ve buna karşılık bir OAT dosyası oluşturur.OAT dosyalarının yüklenme amacı uygulama yükleme süresini azaltmak için android sistemi tarafından oluşturulur. Android, uygulamayı daha hızlı yüklemek için bu dosyayı kullanır ve daha iyi bir kullanıcı deneyimi yaratır.

DVM VE ART ARASINDAKİ FARK NEDİR ?

Son olarak Aşağıda bir .apk dosyasının yaşam ömrünü görmektesiniz.

--

--