Dalvik vs. ART

Objavio u 10/12/2013 u 15:40

Do sada možda nije obraćano toliko pažnje na ovaj segment Androida, tj. ovu funkcionalnost. Ja sam se u tekstu Šta je to JIT? osvrnuo na ovo:

Šta je to JIT? JIT je skraćenica od “Just In Time” i koristi se u Android svetu kad se priča o Dalvik JIT kompajleru. Dalvik JIT je dodat u Android sa 2.2 verzijom. On zapravo kompajlira bajtove u nativni mašinski kod u realnom vremenu.

Sada kada je Google sa Androidom 4.4 KitKat predstavio ART (Android Run Time), mnogi se možda pitaju šta je to? Zašto daje ubrzanje? itd. Pa na PocketNow sajtu sam naišao na jako dobro objašnjenje koje ću preneti ovde sa malim izmenama.

Android ima OGROMNU prednost u odnosu na ostale operativne sisteme upravo zato što koristi virtualne mašine da bi pokretao aplikacije. ART koji je stigao sa Androidom 4.4 KitKat obećava ubrzanje, manju potrošnju baterije …

Ova opcija je po difoltu isključena, sa razlogom. A moj savet je da prvo pročitate ovaj tekst pre nego je upalite.

Šta je virtuelna mašina?

Fizičke mašine su, jelte fizičke. Stvarne, možete da ih dotaknete, vidite itd. To je kompjuter na vašem stolu, laptop, server … Kada pomislite na kompjuter, verovatno zamišljate upravo fizičku mašinu.
virtual machine
Virtuelne mašine nisu fizičke, ali se pokreću na fizičkom hardveru. Recimo da imate kopmjuter sa Linux operativnim sistemom i hoćete da pokrenete neki program koji ne može da radi na Linuxu, već na Windowsu ili Mac operativnom sistemu. U tom slučaju ćete instalirati neku virtualnu mašinu ili više, za svaki operativni sistem koji vam treba po jednu. Ove virtuelne mašine emuliraju hardver koji je potreban da bi se pokrenuo operativni sistem. Tačnije, možete pokrenuti kompletan Windows u jednom prozoru na Linuxu. Jel to nije kul?

I pored očigledne prednosti pokretanja virtuelne mašine, jedna prednost je veoma bitna, a to je separacija okruženja. Aplikacije koje su pokrenute u VM su kompletno odvojene od okruženja u kom je VM pokrenuta. Virusi, melver, trojanci pa čak i pad sistema ili aplikacije su potpuno odvojeni od glavnog operativnog sistema. Još jedna prednost virtuelne mašine je mogućnost da pokrenu program napisan za arhitekturu koja nije na operativnom sistemu koji je instaliran na računaru, već u virtuelnom okruženju. Na primer, pokrećete program koji je kompajliran da radi na ARM procesorskoj arhitekturi, a vaš računar radi na x86 ili x64 arhitekturi (Intel, AMD).

Da bi doslovno shvatili, pogledajmo Windows Mobile i Pocket PC. Kada su ovi operativni sistemi bili popularni, developeri bi napisali aplikacije, onda ih kompajlirali za nekoliko platformi: ARM verszija 4, Intel XScale, MIPS, ili SH3 procesore. Svaki procesor je imao svoje prednosti i mane, ali su svi zahtevali da se aplikacija kompajlira posebno za njih i da se nadate da će da radi. Kada je Pocket PC najavljen, Microsoft ga je standardizovao na ARM-u.

Današnji uređaji sa Androidom koriste specijalizovane virtuelne mašine u kojima pokreću aplikacije. Developeri napišu kod, koji vi kao krajnji korisnik instalirate preko Play Store-a ili već gde skidate aplikacije. Kod je uglavnom nekompajliran. Ovo znači da je sporiji od kompajliranog koda, ali uređaj dobija prednost koju daje virtuelna mašina a developeri ne moraju da brinu o rekompajliranju njihovog koda da bi se on pokrenuo na nekom drugom procesoru (tablet, PC, TV, sat, pa čak i prsten).

JIT vs. AOT

Kada instalirate aplikaciju na vaš Android uređaj, ona će koristiti Dalvik VM da je kompajlira i pokrene. Koncept ovog procesa se naziva JIT (just-in-time) u slobodnom prevodu u trenutku. Ovo je odličan koncept, ali traži puno resursa za prvo pokretanje aplikacije.

Da rastavimo proces na delove i da vidimo kako radi:

Skinuli ste aplikaciju i instalirali na vaš telefon ili tablet. Ona se nalazi na internoj memoriji u stanju mirovanja dok je ne pokrenete. Kada je pokrenete, Android učita sav nekompajliran kod, kompajlira ga i učita u radnu memoriju (RAM). Dokle god je aplikacija u RAM-u, nakon prvog pokretanja, sve je brzo i glatko. Ako koristite task killer da ručno zaustavite aplikaciju ili izađete iz aplikacije i pređete u neku drugu, aplikacije će biti uklonjena iz RAM memorije i tako osloboditi memorijski prostor koji je koristila. Onog momenta kad je ponovo pokrenete, ceo ovaj proces kreće iz početka.

Android 4.4 KitKat dolazi sa runtime-om “Android RunTime” – ART. Iako nije baš kreativan naziv, veoma je kreativno ono što radi. Za razliku od JIT-a, koji mora da kompajlira aplikaciju pri svakom pokretanju, ART to radi po sistemu ahead-of-time (AOT) ili ti pre vremena. Sa ART-om, kada skinete aplikaciju i instalirate je, ona se automatski prekompajlira. Ovo zauzima više mesta na vašem uređaju i zahteva dužu instalaciju u poređenju sa Dalvik-om. Međutim, aplikacije se pokreću mnogo brže i sam rad aplikacije je mnogo optimizovaniji kada se koristi ART u poređenju sa Dalvik-om. Pošto je manje vremena potrebno da se pokreću aplikacije, vaš procesor koji je radio naporno svaki put kada pokrećete aplikaciju i trošio bateriju, sada to ne radi.

ART je eksperimentalan

laboratorija

ART je trenutno u eksperimentalnoj fazi. Veoma eksperimentalnoj. Ne radi svaka aplikacija dobro sa ART-om. Ako ste već instalirali aplikacije dok je Dalvik bio uključen, moraćete da restartujere uređaj i čekate oko 20 minuta (manje ako imate manje aplikacija, više ako ih imate puno) za prvo paljenje da se završi. ART mora da prekompajlira svaku aplikaciju pojedinačno tako da bude spremna za paljenje. Zbog svega ovoga je ART isključen po difoltu.

Prednosti? Pa iz ličnog iskustva mogu da kažem da telefon radi neverovatno brzo! Ljudi koji su testirali detaljnije kažu da je ubrzanje 50%, pa čak i 100%. Neki tvrde da je potrošnja baterije manja za 25 procenata ili bolje! Međutim, pričamo o Nexusu 4 i 5 koji imaju brutalan hardver i teško da ovo može da se tvrdi sa sigurnošću. Videćemo kad KitKat dobiju slabiji uređaji.

Ja sam testirao ART nekoliko dana i kod mene jedino što nije radilo je Whatsapp i YouTube, ali postoje pečevi koji i ovo popravljaju. Mada ima korisnika koji su se žalili i na neke druge aplikacije.

Ako imate KitKat na telefonu, slobodno probajte, ali nemojte očekivati da sve radi savršeno. Ipak je ovo još uvek eksperimentalno. Možda ART bude stabilan u Androidu 5.0?

Jeste probali ART? Kakvo je vaše iskustvo? Podelite sa nama iskustvo u komentarima …

[thankyou]

Tags: Android RuntimeAOTARTCompileDalvikJITKompajliranjeŠta je ART?

Autor
eboye Vasilj Milošević

Objavljenih tekstova: 1160

Čovek koji je uvek tu kada ste u nevolji i koji će vam uvek pomoći svojim savetima i IT iskustvom. Hobi mu je čitanje ChangeLog-a. Posle HTC Hero telefona posedovao je HTC Desire HD, HTC One X, LG Nexus 5, LG G3, LG G4, HTC 10 a sada je ponosni vlasnik Xiaomi Mi Mix 2S telefona. Inače je grafički dizajner po struci, ali se sada bavi programiranjem i zanima ga sve u vezi modernih tehnologija. Čovek pored kojeg morate biti Up To Date je autor na Srbodroidu. (napisala: goldie)

9 komentara, pridruži se diskusiji!
  • Iako sam preskočio JB,sa magarca na konja direkt..mogu konstatovati da 4.4.2 na ARTu radi savršeno, odzvi aplikacija je trenutan (jedino YT se pokreće koji sekund duže) sve app koje imam instalirane rade bez ikakvih problema,force close ne postoji.Nisam hardcore user ali iskustvo koje KK pruža prosečnom korisniku je zaista sjajno, baterija me je oduševila i do dva dana umerene upotrebe(bez igrica) do sat poziva,hang i sms,sat neta i dosta muzike preko BT ..ono što me interesuje je kako će se KK pokazati na entry level telefonima.u sv.slucaju KK sa ARTom je pun pogodak!!

  • Malo kasnim sa komentarom, ne zamerite. Na N4, 4.4.2 meni na ART aplikacije rade sjajno. Telefon je brzi, subjektivno, i do 60%. Nedavno sam uzeo drugi Android tel, posle par dana nekoriscenja, i smorio se koliko je spor 4.3.
    Baterija – drzi duze 40%. Oko 4h razgovora, surf, igre oko 4h i mozda 20 min textinga.

  • Vec nekih 2 nedelje sam na ARTu na mom N4.

    Youtube radi, whatsapp jok ali njega slabo i koristim generalno pa nije ni neki problem.

    N4 je leteo i na dalviku pa je tesko reci koliko bolje radi ali se oseca blago poboljsanje i to prvenstveno prilikom otvaranja aplikacija.

    Baterija: nista znacajno nisam primetio

  • Obavezno ga palim, čim se dočepam svog N5. Nisam do sad čitao za YouTube problem, a WhatsApp problem je otklonjen sa 4.4.1 – pošto sad Google pravi nightlies (izvor, 9gag), 4.4.2 koji trenutno otuje (sorry) sigurno ima rešene ove problemčiće. Brže pokretanje aplikacija uz uštedu baterije? Bring it on!

  • Kao što već rekoh u komentaru na nekom od prethodnih tekstova, na G300 mi je radilo sve sem google play-a, a na život bez njega ne bih da se navikavam. 😀 Brzina (neću da dajem procente) uvećana dosta, vek baterije nisam stigao da testiram jer sam se brzo vratio na dalvik. Sad sam krenuo sa nightly build-ovima pa ću verovatno na nekoj od sledećih verzija opet testirati ART (ne možeš reći da nije kreativno ime 😛 ).

Pošalji odgovor

Your email address will not be published. Required fields are marked *