Android ART

Android KitKat sürümünde geliştiriciler için bir seçenek bulunuyordu. Sonraki sürümlerde böyle bir seçenek olmadı çünkü Lollipop ve devam sürümlerinde varsayılan olarak Android Run Time (ART) sanal makinesi bulunuyor.

Peki Dalvik ve ART ne?

Dalvik, Android’in Kitkat ve öncesi sürümlerde işletim sisteminde bulunan sanal makine. Android uygulamaları bu makine tarafından çalıştırılır.

Android için geliştirilen uygulamalar Java dilinde yazılır. Sonrasında bu kodlar Dalvik makinesinin anlayabileceği bytecode’a dönüştürülür. Bu bytecode dosya .dex uzantılı bir dosyada saklanır. Java kodları dışında var olan tüm şeyler bu .dex dosyalarıyla beraber paketlenip sıkıştırıldığında bir .apk dosyası oluşturulur. Bu .apk dosyasına uygulama diyoruz. Uygulamayı telefona kurduğumuzda .dex dosyaları .odex (Optimized Dalvik Executable) dosyalarına dönüştürülür. Dalvik sanal makinesi Just-in-Time (JIT) dediğimiz bir sanal makine türü. Yani bytecode, makine diline kullanım sırasında çevrilir. Mobil geliştirmede en önemli şey kısıtlı kaynaklara göre uygulama geliştirebilmektir. Android uygulamaları Java dilinde yazılıyor olsa da JVM yerine Dalvik kullanılmasının nedeni de bu. Ama her zaman daha iyisi gerekli.

O zaman ART…

Lollipop ve sonrası sürümlerde Android işletim sisteminin içinde ART sanal makinesi bulunmaya başladı. ART, Ahead-of-Time (AOT) dediğimiz bir sanal makine türü. AOT makinelerde uygulama yüklendiği sırada bytecode, makine diline dönüştürülür. Böylece RAM kullanımı açısından büyük avantaj sağlar. Uygulama yüklendiği zaman .dex formatındaki dosya Executable and Linkable Format (ELF) dosyasına dönüştürülür ve bu dosya da makine tarafından okunabilecek kodları içerir.

Ayrıca ART’ın Dalvik’e göre ön plana çıktığı bir alan da daha gelişmiş Garbage Collection sunmasıdır. Daha detaylı bilgiyi https://source.android.com/devices/tech/dalvik/ sayfasından edinebilirsiniz.