- Dalvik je radio koristeći JIT kompilaciju, prevodeći kod dok je aplikacija radila.
- ART optimizuje sistem korištenjem AOT kompilacije, izvršavajući proces tokom instalacije.
- Oba okruženja koriste DEX format datoteke, što osigurava kompatibilnost između verzija.
- Prelazak na ART je omogućio smanjenje potrošnje baterije i poboljšanu fluidnost sistema.
Ako ste se ikada pitali šta se zapravo dešava "ispod haube" vašeg telefona kada otvorite aplikaciju, odgovor leži u okruženju za izvršavanje. U Android ekosistemu, prešli smo sa arhitekture zasnovane na Dalvik virtuelnoj mašini na mnogo robusniji sistem pod nazivom Android Runtime, poznatiji kao ART. U suštini, ART je odgovoran za prevođenje koda koji programeri pišu u instrukcije koje hardver vašeg uređaja može razumjeti bez pada sistema.
Da biste ovo razumjeli, važno je znati da Android ne pokreće Javu izvorno; umjesto toga, koristi prilagođenu adaptaciju . Sve počinje s izvornim kodom, koji se transformira u bajtkod i završava u određenom formatu koji se zove DEX. U zavisnosti od toga da li je vaša verzija Androida starija ili novija, put kojim se ovaj kod izvršava drastično se mijenja, utičući na svakodnevne stvari poput trajanja baterije i brzine učitavanja aplikacija.
Naslijeđe Dalvika: Era "just-in-time"
Dalvik je bio fundamentalni stub od samog početka Androida. Njegov cilj je bio jasan: omogućiti aplikacijama napisanim u Javi da rade na uređajima s vrlo ograničenim resursima . Za razliku od standardne Java virtualne mašine, Dalvik je bio optimiziran da koristi manje memorije i pokreće više instanci istovremeno, delegirajući upravljanje nitima Linux kernelu.
Dalvikova ključna karakteristika bila je Just-In-Time (JIT) kompilacija . To je značilo da se kod prevodio u mašinski jezik tačno kada je korisnik interagovao s aplikacijom. Kako bi se izbjeglo ponavljanje ovog zamornog zadatka svaki put, Dalvik je kreirao datoteke pod nazivom ODEX (Optimizirani DEX) , koje su pohranjivale već prevedene dijelove u keš memoriju. Problem je bio u tome što je ovaj stalni proces kompilacije trošio CPU cikluse i, stoga, koristio više energije.
Android Runtime (ART): Skok ka prednostima
Počevši od Androida 5.0 Lollipop, ART je potpuno preuzeo kontrolu. Velika razlika je u tome što ART implementira Ahead-Of-Time (AOT) kompilaciju . Umjesto da čeka da otvorite aplikaciju, ART obavlja teški posao tokom instalacije. Koristi alat pod nazivom dex2oat za pretvaranje DEX datoteka u ELF (Executable and Linkable Format) izvršne datoteke, koje su izvorne za Linux.
Zahvaljujući ovom pristupu, kada dodirnete ikonu aplikacije, sistem ne mora ništa kompajlirati; jednostavno čita ELF datoteku i izvršava je. To znači da procesor radi manje, baterija traje duže i aplikacije rade mnogo glatkije. Međutim, postoji mali kompromis: instalacija aplikacija traje malo duže i zauzimaju više prostora za pohranu nego kod Dalvika.
Tehnička usporedba i ključna poboljšanja
Iako su oba okruženja kompatibilna i pokreću isti DEX bajtkod, ART je uveo poboljšanja koja sistem čine nevjerovatno brzim. Jedno od najznačajnijih je sakupljanje smeća (GC) . U Dalviku, sakupljač smeća je nekada uzrokovao one dosadne pauze ili "zastajkivanja" u interfejsu (zloglasno kašnjenje). ART je ovo redizajnirao sa prvenstveno konkurentnim sistemom , čineći pauze nezavisnim od količine korištene memorije.
- Napredno otklanjanje grešaka: ART omogućava programerima da vide koje brave drže niti i da prate instance klase sa mnogo većom preciznošću.
- Tačne dijagnoze: Sada, kada se aplikacija sruši, izvještaji o greškama su mnogo detaljniji, posebno u slučajevima NullPointerException.
- Upravljanje memorijom: Za razliku od Dalvika, koji je koristio keš memoriju koja se ne može podijeljivati na stranice, ART koristi RAM memoriju koja paginacija je moguća, optimizirajući korištenje hardvera.
Proces pakovanja: Od koda do APK-a
Da bi bilo koje od ovih okruženja radilo, kod mora proći kroz proizvodnu liniju. Prvo, Java kompajler kreira .class datoteke, koje dex alat zatim pretvara u jednu classes.dex datoteku. Ova datoteka je jezgro APK-a i ono što će ART ili Dalvik obraditi.
Alati poput aapt-a se koriste za pakovanje resursa, a zipalign optimizuje poravnanje podataka, osiguravajući da procesor pristupa memoriji što je efikasnije moguće. Nakon što APK stigne do uređaja, dešava se magija: ako postoji ART, generiše se ELF datoteka ; ako postoji Dalvik, ODEX datoteka počinje da se generiše u hodu.
Zanimljive činjenice o ROM-ovima i procesu dekoderiranja
U svijetu prilagođenih ROM-ova, termini odex i deodex se često koriste . Budući da ODEX datoteka zavisi od hardvera i tačnog sistema na kojem je kreirana, ne može se lako prenijeti s jednog telefona na drugi. Da bi modificirali aplikaciju bez pada sistema, programeri izvode proces deodexinga , koji uključuje integraciju optimizirane datoteke unutar APK-a kako bi se olakšala njena manipulacija.
Android ekosistem se razvio od fleksibilne, ali energetski intenzivne virtuelne mašine do optimizovanog okruženja za izvršavanje koje daje prioritet korisničkom iskustvu. Dok se Dalvik fokusirao na svestranost prevođenja koda u realnom vremenu, ART je maksimizirao iskorištenost hardvera putem prekompilacije , osiguravajući da je softver stabilniji, brži i energetski efikasniji.



