Nedir? ART (Android Runtime) Nedir?

  • Google Konuyu Başlatan Konuyu Başlatan CaN
  • Başlangıç tarihi Başlangıç tarihi
  • 23
    💬 Bu Konuya 0 cevap yazıldı.
87967.webp


📘 Android Runtime (ART) nedir ve neden önemlidir?
Android Runtime (kısaca ART), Android işletim sisteminde uygulama kodunu çalıştıran çalışma zamanıdır. ART, Dalvik’in yerini alarak uygulamaların daha hızlı başlaması, daha iyi performans, daha verimli bellek yönetimi ve geliştirilmiş güvenlik/izolasyon sunmak amacıyla geliştirilmiştir. ART; uygulama paketleri (APK/AAB) içindeki DEX (Dalvik Executable) bytecode’unu çalıştırır ve bazı durumlarda ön-derleme (AOT — Ahead-Of-Time) ile makinaya daha yakın kod üretir. Bu yüzden hem kullanıcı deneyimini hem de geliştirici hata ayıklama imkanlarını etkiler.


🕰️ Kronolojik Zaman Çizelgesi — ART’in Gelişim Süreci (Önemli Dönüm Noktaları)
  • 2008 — Android Dalvik: İlk Android sürümleri Dalvik VM ile çalıştı; JIT (Just-In-Time) ile bytecode çalıştırma.
  • 2011 — Dalvik JIT Geliştirmeleri: Performans optimizasyonları ve GC geliştirmeleri.
  • 2014 (Android 4.4) — ART (Deneysel): ART, deneysel opsiyon olarak sunuldu; AOT denemeleri başladı.
  • 2015 (Android 5.0 Lollipop) — ART Varsayılan: ART, Dalvik’in yerini alarak varsayılan runtime oldu; sistem genelinde AOT ve yeni GC stratejileri tanıtıldı.
  • 2017–2020 — ART İyileştirmeleri: Daha iyi profil tabanlı optimizasyonlar, daha az depolama gereksinimi için derleme esnekliği (hybrid AOT/JIT), GC ve bellek yönetimi geliştirmeleri.
  • 2020+ — Profile-Guided JIT/AOT Harmanları: Dinamik derleme, daha akıllı JIT kullanımı, uygulama paketlerinin daha küçük olması ve daha hızlı güncellemeler hedeflendi.
  • Günümüz — Sürekli İyileştirme: ART, Android’in her yeni sürümüyle daha iyi performans, güvenlik ve enerji verimliliği sağlamak üzere evriliyor.
87958.webp

🔧 Temel Kavramlar ve Bileşenler — ART’in İç Yapısı ve Görevleri
  • 🧩 DEX (Dalvik Executable): Android uygulamalarının derlenmiş bytecode’u. ART, DEX’i çalıştırır veya derler.
  • ⚙️ dex2oat / oat dosyaları: ART, uygulamayı ön-derlediğinde ortaya çıkan native kod ve metadata. Bu işlem apk kurulumunda veya sistem güncelleme sırasında yapılabilir.
  • 🐣 Zygote: Android uygulamalarının başlatılmasında kullanılan önceden başlatılmış proses; ART çalıştırma ortamının paylaşımını sağlar.
  • 🔁 JIT (Just-In-Time): Çalışma zamanında ihtiyaç halinde kodu derleyip yürütür — daha az depolama ama bazı anlarda gecikme olabilir.
  • ⚡ AOT (Ahead-Of-Time): Kurulumda veya önceden derleme ile native koda dönüştürme — daha hızlı başlangıç ama daha fazla depolama kullanımı.
  • 🧠 Profile-Guided Compilation (Profil Tabanlı Derleme): Uygulama kullanım verilerine göre hangi yöntemlerin (JIT/AOT) kullanılacağına karar verilir; denge sağlar.
  • 🗑️ Garbage Collector (Çöp Toplayıcı): Bellek yönetimi; ART’in birçok GC algoritması performans ve gecikme optimizasyonu hedefler.

⚙️ ART Mimari Detayları — Nasıl Çalışır?
ART, temel olarak DEX bytecode’u alır ve çalıştırma sırasında şu adımları uygular: yükleme → doğrulama → (duruma göre) derleme → yürütme. Derleme modelleri şunlardır: saf AOT, saf JIT, veya hibrit (profil-guided). Hibrit modelde ART, sık kullanılan yolları (hot paths) JIT ile derleyip saklar; zaman içinde profilli AOT için veri toplanır.

87957.webp

⚔️ JIT vs AOT vs Profil-Guided — Avantajlar ve Dezavantajlar
  • JIT: Daha az depolama, hızlı kurulum; çalışırken en çok kullanılan kod parçalarını derler. Dezavantaj: ilk çalıştırmada gecikme.
  • AOT: Uygulama daha hızlı başlar, CPU kullanımı düşer. Dezavantaj: daha fazla depolama, kuruluma daha uzun süre.
  • Profil-Guided Hibrit: İki modelin avantajlarını harmanlar; gerçek kullanım verisine göre hangi fonksiyonların AOT olacağı veya JIT ile kalacağı belirlenir.

🧭 Bellek Yönetimi ve Garbage Collector (GC) Stratejileri
ART, bellek kullanımını düşük gecikmeyle dengelemek için farklı GC türleri kullanır (ör. Concurrent Mark-Sweep tarzı yaklaşımlar, generational GC varyasyonları). Hedef, UI gecikmelerini azaltmak ve arka plan bellek temizliğini kesintisiz yapmak.


🔒 Güvenlik, İzolasyon ve Onaylama (Verification)
ART, uygulama bytecode’unu doğrular (verification) ve çalışma zamanında bellek erişimlerini sınırlandırır. Ayrıca SEAndroid politikaları, process izolasyonu ve modern üretim cihazlarında ek güvenlik önlemleriyle (ASLR, PIE, sandboxing) birlikte çalışır.


87959.webp


📈 Performans Etkileri — Kullanıcı Deneyimi ve Enerji Tüketimi Üzerindeki Rolü
  • Başlama hızı: AOT ve profile-guided yaklaşımlar uygulama açılışını hızlandırır.
  • CPU yükü: JIT, çalışırken CPU kullanır; AOT ile çalışma sırasında CPU kullanımında azalma görülebilir.
  • Pil tüketimi: Daha verimli yürütme, daha az CPU dalgalanması => daha iyi pil performansı. Ancak ön-derleme ve kurulum esnasında geçici artışlar görülebilir.

🧰 Geliştirici Perspektifi — ART ile İlgili Bilinmesi Gerekenler
  • Derleme ve optimizasyonlar: Geliştirici, kritik kod yollarını profilleyip optimize ederek ART’in veriminden faydalanabilir.
  • Native kod & NDK: Performans-kritik bölümler için native koda geçiş; ART ile uyum ve JNI maliyetleri dikkate alınmalı.
  • Proguard / R8: Kod küçültme ve obfuscation, ART’in derleme davranışını etkileyebilir; özellikle reflection ve dinamik yüklemelerde dikkat gerekebilir.
  • Profiling araçları: Android Studio Profiler, Systrace, Traceview gibi araçlar ART performansını analiz etmek için kullanılır.

🔬 Profil Tabanlı (Profile-Guided) Optimizasyonların İşleyişi
  1. Uygulama normal şekilde çalışırken ART, hangi metotların sık kullanıldığını kaydeder.
  2. Bu profil verisiyle ART, gelecekteki kurulumlarda ya da arka planda AOT derlemesi için hedef belirler.
  3. Sonuç: Hem daha küçük depolama maliyeti hem de hızlı başlama süreleri elde edilir.
87960.webp

📦 APK/AAB Kurulumunda ART’in Rolü ve Kullanıcıya Etkisi
Uygulama kurulduğunda ART, kurulum sırasında bazı derlemeler yapabilir. Yeni Android sürümlerinde Google, kurulum boyutunu ve zamanını azaltmak için profile-guided ve kademeli derleme stratejileri kullanır; bu sayede kullanıcı daha hızlı uygulama kullanmaya başlar.


🔁 Geriye Dönük Uyumluluk ve ART’in Android Sürümleri Üzerindeki Evrimi
ART, Dalvik’den farklı davranışlar gösterebildiği için bazı eski uygulamalarda uyumluluk sorunları ortaya çıkarmıştır. Ancak Android platformu boyunca geliştiricilere rehberlik ve araçlar sunularak uyumluluk büyük ölçüde korunmuştur.


🧩 Debugging, Crash Analizi ve Hata Ayıklama
ART, çökme raporlarında (tombstone/stack traces) daha net native-senaryo ve Java/Kotlin yığın izleri sağlar. Native ve managed kod arasındaki sınırlar dikkatlice izlenmeli; Symbolication ve ProGuard/R8 mappings hataların çözümlenmesinde önemlidir.


🔍 ART’in Güçlü ve Zayıf Yönleri — Kısa Değerlendirme
  • Güçlü: Daha hızlı uygulama başlangıcı (AOT & profil), daha iyi bellek yönetimi ve gelişmiş GC, güvenlik iyileştirmeleri.
  • Zayıf: Ön-derleme depolama maliyeti, karmaşık derleme stratejileri bazı senaryolarda beklenmedik performans farklılıklarına neden olabilir.

📚 Pratik İpuçları — Hem Kullanıcı Hem Geliştirici İçin Öneriler
  • Kullanıcılar: Sistem güncellemelerini yükleyin; üreticinin sunduğu optimizasyonlar ART performansını artırır.
  • Geliştiriciler: Profil-guided derlemeyi destekleyin, sıcak kod yollarını profilleyin, R8/ProGuard map dosyalarını saklayın, uygulama başlangıcını optimize edin.

🔁 Gelecek Eğilimleri — ART’in Nereye Evrilebileceği
  • Daha akıllı profil tabanlı derlemeler, ML destekli optimizasyon kararları, daha küçük kurulum boyutları ve daha düşük bellek gecikmeleri bekleniyor. ART ayrıca heterojen işlemciler (NPU/GPU/DSA) ile daha derin entegrasyon kazanabilir.

✅ Sonuç — ART’in Android Ekosistemindeki Rolü (Özet ve Değerlendirme)
ART, Android deneyimini doğrudan etkileyen merkezi bir bileşendir. Uygulama performansını, başlama hızını, bellek kullanımını ve güvenliği iyileştirir. Geliştiriciler için ART’in çalışma prensiplerini anlamak, performans optimizasyonu ve daha kararlı uygulamalar üretmek açısından kritiktir. Kullanıcılar için ise ART, daha akıcı ve pil dostu bir deneyim sağlar.


📌 Kısa Özet (Hızlı Bakış)
  • ART, Android uygulamalarını çalıştıran modern runtime’dır.
  • Dalvik’in yerini almıştır; AOT, JIT ve profil-guided hibrit stratejiler kullanır.
  • Performans, bellek yönetimi ve güvenlik alanlarında iyileştirmeler sağlar.
  • Geliştiriciler için profil toplama ve optimizasyon kritik öneme sahiptir.
 
Etiketler Etiketler
android çalışma zamanı android performans optimizasyonu android runtime art nedir dalvik ve art farkı
Geri
Üst Alt