Android

Android Runtime ART, Hangi Yenilikleri Getiriyor?

Android işletim sistemi bildiğiniz gibi Android uygulamalarını çalıştırmak için Dalvik sanal makinesini kullanıyor. Google yavaş yavaş artık Dalvik’ten vazgeçip uzun süredir üzerinde çalıştığı yeni sanal makinesi Android Runtime'a (ART) geçiş yapmak istiyor v...

Can Çiloğlu |

25.12.2013

 

Android işletim sistemi bildiğiniz gibi Android uygulamalarını çalıştırmak için Dalvik sanal makinesini kullanıyor. Google yavaş yavaş artık Dalvik’ten vazgeçip uzun süredir üzerinde çalıştığı yeni sanal makinesi Android Runtime'a (ART) geçiş yapmak istiyor ve bunun için son Android sürümü olan Kitkat'a ART'ı da entegre etmiş. Bu yazımda ART'ın detayına, Dalvik'ten farkına ve ne yenilikler getirdiğine değineceğim.

Android platformunda, Java diliyle yazdığımız Android uygulama kodları önce Java bytecode'larını içeren .class uzantılı dosyalara sonra da Dalvik sanal makinesinin kullanabileceği ve çalıştırabileceği Dalvik bytecode'unu içeren .dex uzantılı tek bir dosyaya dönüştürülür. Dalvik kısıtlı bellek ve işlemci gücü sağlayan mobil cihazlarda çalışmak için tasarlanmış bir yapı olduğu için günümüzdeki çoğu modern bilgisayar programlama dili (Java, C#) gibi yığınlarla (stack) değil yazmaçlarla (register) çalışır. Bir başka deyişle, Android stack-based değil, register-based yapıdadır ve bu şekilde daha hızlı çalışır.

Dalvik sanal makinesiyle ilgili daha fazla detaya http://source.android.com/devices/tech/dalvik/ adresinden ulaşabilirsiniz.

 

Peki, ART nedir?

Yukarıda bahsettiğimiz gibi Dalvik her ne kadar mobil odaklı ve kısıtlı kaynaklarla çalışabilecek bir yapı olsa da, bazı alanlarda iyileştirilmesi gereken ve zamanın şartlarına göre tasarlanmış, artık yavaş yavaş eskiyen bir runtime (çalışma zamanı).

Google bunun farkında olduğu için yaklaşık 2 yıldır yeni bir runtime üzerinde çalışıyor, ismi ART yani Android Runtime. ART'ın çalışma şekli Dalvik'ten çok farklı. Dalvik, Android 2.2 sürümünden beri "Tam Zamanında" derleme (Just-In-Time – JIT compilation) kullanarak kodu derliyor. Uygulamamızı yazıp cihaza yüklediğimizde kod belli bir oranda derleniyor ve esas derleme ve optimizasyon uygulama çalışmaya başladığında yapılıyor. Bu işlem uygulama her çalıştığında yapılıyor. Tabii bu da uygulama her çalıştığında fazladan yük getiriyor ve daha az verimli çalışılmasına sebep oluyor.

ART bu durumu tamamen ortadan kaldırmak için "Zamanın Ötesinde derleme" (Ahead-of-Time – AOT compilation) denilen bir işlemle bytecode derlemesini uygulama cihaza kurulurken yapıyor ve bytecode'u makine diline çeviriyor. Böylece her uygulama açılışında yeni bir sanal makine başlatma ve uygulama kodunu derleyerek çalıştırma yükü aradan çıkmış oluyor.

 

ART neler kazandırıyor?

ART henüz tam anlamıyla standart olarak kullanıma hazır değil, birçok optimizasyonu ve testi henüz yapılmamış. Bu yüzden ART ile Dalvik arasında ne kadar fark olduğunu ve gerçekte neler kazandıracağını şu aşamada doğru olarak ölçmek güç. Fakat çeşitli test siteleri ve kullanıcılar tarafından yapılan testlerde işlem sürelerinin şimdiden yarıya yakın azaldığı söyleniyor (kendi yaptığım testlerde bu kadar büyük bir fark göremedim fakat ART’a geçiş yaptıktan sonra işletim sisteminin animasyonlarında ve bazı uygulamalarda fark edilir hızlanma gördüm). Bu da uygulamaların daha hızlı çalışması, arayüzdeki geçişlerin ve animasyonların daha yumuşak ve takılmadan görüntülenmesi anlamına geliyor. Daha hızlı işleme, daha az işlemci gücü gereksinimi demek olduğu için cihazların pil ömürlerinde de ciddi artış bekleniyor.

Bu getirilerin elbet bir de bedeli var. Uygulamalar cihaza kurulurken makine diline çevrileceği için ilk kurulum süreleri artıyor. Küçük uygulamalarda bu hissedilmeyecek bir fark iken, daha yüklü ve büyük uygulamalarda kurulum süresi fark edilir şekilde artabilir. Her bytecode'un makine dilindeki birkaç komuta denk geldiği düşünülürse, makine diline çevrilmiş olarak saklanan uygulamalar cihazın belleğinde daha çok yer kaplayacaktır ama bu büyüklük artışı sadece çalıştırılabilir kodda olacağı için (resim, video, ses dosyası gibi uygulama kaynaklarında bir değişiklik söz konusu değil) çok fazla olmayacaktır. Google %10-20 arasında bir artış olacağını söylüyor.

Sonuçta uygulamaların ve işletim sisteminin daha hızlı çalışması ve cihazın pil ömrünün artması gibi çok kritik getirilerin yanında cihazdaki depolama alanında kaplanan miktarın artması veya ilk kurulumun daha uzun sürmesinin çok bir öneminin olmayacağı açık.

 

ART'ı nasıl kullanabilirim?

Google, Android 4.4 sürümü ile birlikte artık cihazınızda çalışma zamanı olarak Dalvik veya ART'ı seçmenize olanak veriyor. Bunun uygulama ve donanım geliştiriciler için deneme amaçlı bir özellik olduğunu söylemekte fayda var. Yukarıda da bahsettiğim gibi, ART henüz tam anlamıyla hazır değil. Tüm bu söylediklerime rağmen yine de yeni çalışma zamanını ve getirdiği farklılıkları test etmek istiyorsanız ve cihazınızda Android 4.4.x işletim sistemi bulunuyorsa, "Ayarlar" (Settings) > "Geliştirici Seçenekleri" (Developer Options) > "Çalışma zamanını seçin" (Select runtime) kısmından Dalvik seçeneğini değiştirerek ART'ı seçebilirsiniz.

Bu ayarı her değiştirdiğinizde cihazınız libdvm.so kütüphanesinden libart.so kütüphanesine geçmek için yeniden başlatılacak ve kurulu bütün uygulamalarınız ART için tek tek derlenecek ve optimize edilecek. Bu işlem cihazınızda kurulu uygulama sayısına bağlı olarak 5 ile 15 dakika arasında sürüyor, bunu dikkate alarak bu işi boş bir zamanınızda yapmanızı tavsiye ederim.

Son olarak bazı uygulamaların ART ile uyumlu olmadığını, hatalı çalıştığını ve hatta hiç çalışmadığını belirtmeden yazımı bitirmeyeyim. Mesela sık kullanılan mesajlaşma uygulaması WhatsApp, ART üzerinde çalışmıyor; sürekli hata veriyor ve dahası kaldırıp tekrar kurmak isterseniz kuramıyorsunuz, bilginize.

Umarım bu yazım konuyla ilgilenenler için faydalı olmuştur, bana yazılarımla ilgili her zaman profil sayfamdaki Twitter ve LinkedIn adreslerimden ulaşabilirsiniz.

Can Çiloğlu |

25.12.2013

Yorumlar

Oytun Eren Şengül
29.12.2013 - 10:09

Çok güzel açıklamışsınız elinize sağlık. Android'in önemli sorunlarından birine daha Google tarafından bir çözüm üretilmiş olması sevindrici.

Mahmut Enes
08.09.2014 - 04:01

Peki bu durumda (art a geçiş yapıldığında) ram durumu nasıl olacak?

Ahmet Ziya YAVUZ
06.08.2014 - 05:11

Emeğinize sağlık . Çok faydalı bir makale olmuş.  

Furkan Arslan
22.07.2014 - 03:58

Çok faydalı bir yazı olmuş. Eline koluna sağlık.

Atilla Ürgen
09.06.2014 - 12:15

WhatsApp neredeyse herkes tarafından kullanılıyor. Bu dezavantajı Art'ın tüm cazibiyetin yok ediyor.

Enes Açıkoğlu
03.05.2014 - 10:27

Pil ömrüne ve hıza vericeği katkı yanında % 10 ila %20 arası bir hafıza kaybı gayet makul.Umarım en kısa zamanda testleri biter ve piyasaya çıkar.

Eray AYDIN
10.02.2014 - 10:15

Bana kalırsa hocam, uygulama yüklenirken derlemesin. Uygulama ilk kez çalıştırıldığında derlesin, zaten normalde her çalıştırıldığında jit işlemi yapılmıyor mu ? Bana kalırsa, uygulamalar ilk kez çalışınca bir kere derlenir ve bir daha jit yapılmaz.

Eray AYDIN
10.02.2014 - 10:26

Bu arada uzun zamandır, buna benzer birşeyin olmasını bekliyordum hatta google a bununla alakalı feedback ler göndermiştim. Android linux tabanında jvm yerine dalvik kullandığı için yani daha doğrusu jvm nin modifiye edilip android e göre düzenlenmesiyle kurulu bir sistem ancak sürekli jit ancak cisc işlemcili sistemlerde daha uygundur. Aslında google bu gelişmeyi biraz da microsoft un .net framework gelişmelerini takip ederek yapmaya karar verdiğini düşünüyorum.