- Dalvik pracoval s využitím JIT kompilácie, pričom prekladal kód počas behu aplikácie.
- ART optimalizuje systém pomocou kompilácie AOT, pričom tento proces vykonáva počas inštalácie.
- Obe prostredia používajú formát súboru DEX, čo zabezpečuje kompatibilitu medzi verziami.
- Prechod na ART znížil spotrebu batérie a zlepšil plynulosť systému.
Ak ste sa niekedy zamýšľali nad tým, čo sa vlastne deje pod kapotou vášho telefónu, keď otvoríte aplikáciu, odpoveď spočíva v prostredí runtime. V ekosystéme Androidu sme prešli z architektúry založenej na virtuálnom stroji Dalvik na oveľa robustnejší systém s názvom Android Runtime, známejší ako ART. ART je v podstate zodpovedný za preklad kódu, ktorý programátori napíšu, do inštrukcií, ktorým hardvér vášho zariadenia rozumie bez toho, aby došlo k zlyhaniu.
Aby sme to pochopili, je dôležité vedieť, že Android natívne nespúšťa Javu; namiesto toho používa vlastnú adaptáciu . Všetko to začína zdrojovým kódom, ktorý sa transformuje do bajtkódu a končí v špecifickom formáte s názvom DEX. V závislosti od toho, či máte staršiu alebo novšiu verziu systému Android, sa cesta, ktorou sa tento kód vykonáva, drasticky mení, čo ovplyvňuje každodenné veci, ako je výdrž batérie a rýchlosť načítavania aplikácií.
Odkaz Dalviku: Éra Just-In-Time
Dalvik bol základným pilierom od samého začiatku Androidu. Jeho cieľ bol jasný: umožniť aplikáciám napísaným v Jave spúšťať sa na zariadeniach s veľmi obmedzenými zdrojmi . Na rozdiel od štandardného virtuálneho stroja Java bol Dalvik optimalizovaný tak, aby využíval menej pamäte a spúšťal viacero inštancií súčasne, pričom správu vlákien delegoval na jadro Linuxu.
Kľúčovou funkciou Dalviku bola kompilácia Just-In-Time (JIT) . To znamenalo, že kód bol preložený do strojového jazyka presne vtedy, keď používateľ interagoval s aplikáciou. Aby sa predišlo opakovaniu tejto zdĺhavej úlohy zakaždým, Dalvik vytvoril súbory s názvom ODEX (Optimized DEX) , ktoré ukladali už preložené časti do vyrovnávacej pamäte. Problém bol v tom, že tento neustály proces kompilácie spotrebovával cykly CPU, a preto spotrebovával viac energie.
Android Runtime (ART): Skok k predstihu
Počnúc systémom Android 5.0 Lollipop prevzal ART kompletnú kontrolu. Veľký rozdiel spočíva v tom, že ART implementuje kompiláciu Ahead-Of-Time (AOT) . Namiesto čakania na otvorenie aplikácie ART vykonáva ťažkú prácu počas inštalácie. Používa nástroj s názvom dex2oat na konverziu súborov DEX do spustiteľných súborov ELF (Executable and Linkable Format), ktoré sú natívne pre Linux.
Vďaka tomuto prístupu nemusí systém po klepnutí na ikonu aplikácie nič kompilovať; jednoducho prečíta súbor ELF a spustí ho. To znamená, že procesor pracuje menej, batéria vydrží dlhšie a aplikácie fungujú oveľa plynulejšie. Existuje však malá nevýhoda: inštalácia aplikácií trvá o niečo dlhšie a zaberajú viac úložného priestoru ako pri Dalviku.
Technické porovnanie a kľúčové vylepšenia
Hoci sú obe prostredia kompatibilné a používajú rovnaký bajtkód DEX, spoločnosť ART zaviedla vylepšenia, vďaka ktorým je systém neuveriteľne rýchly. Jedným z najvýznamnejších je garbage collector (GC) . V systéme Dalvik garbage collector spôsoboval otravné pauzy alebo „koktanie“ v rozhraní (neslávne známe oneskorenie). Spoločnosť ART to prepracovala s primárne súbežným systémom , vďaka čomu sú pauzy nezávislé od množstva použitej pamäte.
- Pokročilé ladenie: ART umožňuje vývojárom vidieť, ktoré zámky držia vlákna, a sledovať inštancie tried s oveľa väčšou presnosťou.
- Presné diagnózy: Teraz, keď aplikácia zlyhá, sú hlásenia o chybách oveľa podrobnejšie, najmä v prípadoch Výnimka NullPointerException.
- Správa pamäte: Na rozdiel od Dalviku, ktorý používal nestránkovateľnú vyrovnávaciu pamäť, ART používa pamäť RAM, ktorá stránkovanie je možné, optimalizácia využitia hardvéru.
Proces balenia: Od kódu po APK
Aby ktorékoľvek z týchto prostredí fungovalo, kód musí prejsť cez montážnu linku. Najprv kompilátor Java vytvorí súbory .class, ktoré potom nástroj dex prevedie do jedného súboru classes.dex. Tento súbor je jadrom APK a spracuje ho ART alebo Dalvik.
Nástroje ako aapt sa používajú na balenie zdrojov a zipalign optimalizuje zarovnanie údajov, čím zabezpečuje čo najefektívnejší prístup procesora k pamäti. Keď sa APK dostane do zariadenia, stane sa zázrak: ak existuje ART, vygeneruje sa súbor ELF ; ak existuje Dalvik, súbor ODEX sa začne generovať za chodu.
Zaujímavé fakty o ROM a procese dedexovania
Vo svete vlastných ROM je bežné počuť pojmy odex a deodex . Keďže súbor ODEX je závislý od hardvéru a závisí od presného systému, v ktorom bol vytvorený, nedá sa ľahko presunúť z jedného telefónu do druhého. Aby vývojári upravili aplikáciu bez toho, aby došlo k pádu systému, vykonajú proces deodexovania , ktorý zahŕňa integráciu optimalizovaného súboru do súboru APK, aby sa uľahčila jeho manipulácia.
Ekosystém Androidu sa vyvinul z flexibilného, ale energeticky náročného virtuálneho stroja na optimalizované behové prostredie, ktoré uprednostňuje používateľskú skúsenosť. Zatiaľ čo sa Dalvik zameral na všestrannosť prekladu kódu v reálnom čase, ART maximalizoval využitie hardvéru prostredníctvom predkompilácie , čím zabezpečil, že softvér je stabilnejší, rýchlejší a energeticky úspornejší.



