ART vs Dalvik - deci care este diferența? Care sunt posibilele probleme de compatibilitate la migrarea de la dalvik runtime la art?

Dalvik are un concurent în KitKat sub forma ART. Deci, ce este și la ce beneficii se vor aștepta utilizatorii de Android în viitorul apropiat?

ART (o abreviere pentru Android Runtime) este o nouă aplicație de rulare scrisă în C/C++, care diferă de mașina virtuală Dalvik existentă Android prin faptul că toate aplicațiile din sistem sunt deja compilate, ceea ce înseamnă că nu este nevoie de un compilator JIT. Astfel, ART vă permite să rulați aplicații pe hardware diferit (wiz. ARM, x86) fără adaptare preliminară de către dezvoltatori. În plus, este nevoie de jumătate din timp pentru a lansa aplicații în condiții noi. Există câteva dezavantaje, dintre care unul este legat de principiul funcționării în condiții ART. Acest mediu duce la faptul că toate informațiile necesare sunt traduse într-un limbaj orientat pe mașină în timpul instalării aplicațiilor (compilare AOT), iar acest lucru necesită timp suplimentar, motiv pentru care întregul proces de instalare este foarte lung, iar aplicațiile iau mai mult spațiu, deci cum sunt compilate tot timpul. Deși ART este prezent în Android 4.4 KitKat, încă folosește mașina virtuală Dalvik în mod implicit. ART este încă în curs de dezvoltare, dar oricine poate activa deja noua tehnologie: Setări -> Opțiuni pentru dezvoltatori -> Selectați timpul de execuție.

Dacă decideți să testați un mediu nou, atunci nu uitați că prima pornire poate dura până la 20 de minute, sau chiar mai mult: sistemul va dura mult timp pentru a trece la noile principii de funcționare. Biblioteca libdvm.so va fi înlocuită cu libart.so, iar fișierele ODEX cu OAT. Vă rugăm să rețineți că trecerea la ART în cazul ROM-urilor personalizate nu este recomandată, deoarece poate exista o problemă de incompatibilitate cu versiunea actuală a aplicațiilor Gapps, ceea ce va duce la erori, blocări ale sistemului și va face imposibilă funcționarea pe dispozitiv. Deoarece în Android 4.4 KitKat avem de-a face doar cu un prototip al unei noi aplicații de rulare, este prea devreme pentru a trage concluzii pe baza rezultatelor practice actuale. ART nu a fost încă deloc optimizat, dar deja putem spune că în noile condiții, aplicațiile vor fi mai rapide, animațiile vor fi mai fluide, iar răspunsul la atingerea ecranului tactil se va îmbunătăți. În plus, ART va putea reduce sarcina procesorului: majoritatea proceselor vor trebui să utilizeze doar o parte din nuclee. Acest lucru va duce la o utilizare mai eficientă a arhitecturii big.LITTLE ARM, ceea ce înseamnă că consumul de energie al dispozitivelor Android va fi redus și timpul de funcționare va fi crescut. De fapt, ART include două compilatoare backend. Atât primul, cât și cel de-al doilea sunt compilatoare AOT (Ahead-of-Time), iar unul dintre ele este folosit pentru a recunoaște codul mașinii și a lucra cu GCC, cl.exe (compilatorul LLVM).

În mod ciudat, trecerea la ART nu ar trebui să afecteze crearea de aplicații. Specificul noului mediu este de așa natură încât ART citește bytecode pentru Dalvik, ceea ce înseamnă că nu este nevoie să dobândești noi cunoștințe și abilități. Lucrarea va fi efectuată folosind același bytecode Java. Pe de altă parte, compilarea AOT are un dezavantaj: erori care apar pe hardware diferit. Din acest motiv, dezvoltatorii vor trebui să își testeze aplicațiile pe mai multe dispozitive Android. În același timp, precompilarea va reduce cantitatea posibilă de lucru și va fi posibilă crearea de aplicații cu ART în orice limbă cu un frontend LLVM. Separat, merită remarcat accesul la codul mașinii: dezvoltatorii vor avea mai multe oportunități, dar în cazul unei erori, produsul finit poate dăuna dispozitivului Android. Ultimul punct important se referă la utilizarea JNI - un mecanism standard pentru rularea codului sub controlul mașinii virtuale Java, care este asociat cu asigurarea compatibilității binare.

Concluzie Trecerea la ART va duce la o creștere a performanței dispozitivelor Android și o scădere a numărului de întârzieri Principalele dezavantaje ale Dalvik în comparație cu ART Dalvik este mai lentă, ca și alte mașini virtuale. Compilatorul JIT este un cod suplimentar, ceea ce înseamnă o bătaie de cap suplimentară pentru unii dezvoltatori. Principalele dezavantaje ale ART comparativ cu Dalvik Volum crescut de aplicații. Timp de instalare crescut

Versiunea Android 4.4, pe lângă funcționalitatea extinsă, oferă utilizatorilor un mod fundamental nou de procesare a datelor. În versiunile anterioare, fișierele erau compilate în mediul Dalvik. Aceasta este o mașină virtuală Android care traduce fișierul criptat într-un limbaj de programare care poate fi citit de procesorul dispozitivului mobil. În noua versiune de OS pentru smartphone-uri, Google folosește mediul de rulare ART, care, potrivit dezvoltatorilor, are performanțe mai bune. ART sau Dalvik? Să încercăm să ne dăm seama în acest articol.

ART runtime, cu care poți îmbunătăți performanța smartphone-ului tău

Ce este compilarea?

Orice aplicație pe care o descărcați pe telefon sau pe computer este scrisă în limbajul computerului. Având în vedere că gadgeturile rulează pe platforme diferite, există un mediu de execuție virtual care decriptează programul. În acest fel, procesorul telefonului poate citi fișierul pe care îl utilizați. În esență, este o unitate de disc virtuală care oferă securitate și performanță dispozitivului. Iată principalele avantaje pe care le oferă mediul de rulare:

  1. Codul programului este citit și deschis izolat, fără a afecta platforma dispozitivului mobil. Prin urmare, probabilitatea ca programele malware să fie „prinse” împreună cu fișierul este redusă la minimum.
  2. Aplicațiile și programele scrise pentru Android sunt compilate imediat înainte de instalare. Această abordare face viața mai ușoară pentru programatori și utilizatori. Dezvoltatorul nu „ajustează” fișierul pentru un anumit chipset, aplicațiile devin universale.

Care este avantajul noului mediu ART?

Instrumentele ART și Dalvik îndeplinesc funcții similare, astfel încât avantajele noii mașini virtuale pot fi dezvăluite doar prin comparație. Să ne uităm la avantajele și dezavantajele fiecărui timp de execuție.

Runtime-ul Dalvik a fost instalat din 2008. De fapt, acest instrument are aceeași vârstă cu sistemul de operare. Acest instrument folosește modul JUST IN TIME de compilare a fișierelor. Concluzia este că convertorul de cod este activat la lansarea aplicației. Dezavantajul acestei metode de compilare este consumul crescut de resurse ale procesorului la rularea programelor. Ca urmare, unele fișiere utilizate sunt de-a dreptul lente sau se blochează.

Memorarea în cache a datelor decodificate ajută la rezolvarea parțială a problemei. De fiecare dată când un fișier este executat, unele dintre date sunt trimise în cache, ceea ce îmbunătățește performanța.

Important! Când actualizați o aplicație, memoria cache devine irelevantă, așa că nu veți putea scăpa complet de înghețarea aplicației!

ART a apărut în Android relativ recent. În versiunea 4.4, noul mediu a fost testat, iar în Android 5.0 este instalat implicit. Dezvoltatorii au ținut cont de erorile versiunii anterioare, astfel încât performanța noului mediu de rulare s-a îmbunătățit considerabil. De exemplu:

  • Procesul de compilare s-a schimbat. Dispozitivul virtual funcționează pe principiul AHEAD OF TIME. Codul fișierului este decriptat nu în momentul lansării, ci în timpul procesului de instalare. Acest lucru reduce consumul de resurse RAM.
  • Sistemele de operare pe 64 de biți sunt acum acceptate.
  • Mașina virtuală elimină gunoiul de informații mai rapid, astfel încât înghețarea sistemului este redusă la minimum.

Dintre deficiențele identificate, se remarcă următoarele:

  • Instalarea aplicațiilor durează mai mult.
  • Instrumentul virtual ocupă mai multă memorie RAM.

Cum se activează ART

Pentru a activa durata de execuție pe un dispozitiv mobil, va trebui să efectuați următoarea secvență de acțiuni:

  • Accesați meniul de setări. Pe dispozitivele mobile, această secțiune este reprezentată ca o pictogramă roată.
Fig.1 Accesați secțiunea „Setări”.
  • Derulați în jos lista.
  • Accesați secțiunea „Despre telefon”, găsiți coloana „Număr de compilare” și faceți clic de mai multe ori. Aceasta va deschide accesul la opțiunile pentru dezvoltatori, iar elementul corespunzător va apărea în meniul de setări.
Fig.2 Faceți clic pe coloana „Build number” de mai multe ori
  • Accesați secțiunea pentru dezvoltatori și faceți clic pe „Runtime Environment”. Aici observați utilizarea ART.
Fig.3 În elementul „Mediu de rulare”, marcați utilizarea ART

Important: procedura descrisă este relevantă pentruAndroid 4.4 și mai vechi. Dacă utilizați o versiune mai veche, atunci smartphone-ul folosește Delvik în mod implicit, astfel încât elementul de meniu „Runtime Environment” lipsește.

După activarea mașinii virtuale, dispozitivul mobil se va reporni. Timpul de repornire depinde direct de numărul de programe instalate. Noul runtime va „întrerupe” toate codurile aplicației.

Ce sa aleg?

Având în vedere că mediile Dalvik și ART sunt aproape identice, este destul de dificil să dai preferință unuia dintre ele. Probabil totul depinde de dispozitivul mobil pe care îl utilizați.

PRIVESTE FILMAREA

Dacă spațiul de memorie permite, este mai bine să alegeți ART. Acest instrument nu supraîncărcă procesorul și rulează aplicațiile mai rapid. În plus, acesta este un nou sistem care va fi dezvoltat în continuare și va dobândi noi capabilități.

Până acum am reușit să găsim astfel de informații pe site-ul Youhtc.ru
"
În ultimii ani, o parte importantă a muncii creatorilor de Android a fost lupta împotriva principalei „boli” congenitale a sistemului - întârzierile în animația interfeței. Primul pas serios în această direcție a fost Proiectul Butter, anunțat împreună cu Android 4.1 Jelly Bean și a „accelerat” cu adevărat sistemul, dar nu a rezolvat problema la rădăcină. Google realizează acest lucru, așa că pregătesc ART - un înlocuitor pentru mașina virtuală Dalvik.

Chiar și acum, în era procesoarelor multi-core puternice, în anumite circumstanțe puteți observa că animația în Android nu este desenată perfect și există întârzieri vizibile între unele acțiuni. Problema este complexă, așa că au trebuit făcuți mulți pași pentru a o rezolva - unul dintre ei a fost înlocuirea lui Dalvik cu precompilatorul ART.

Acum, codul Android rulează într-un motor Java creat de Google special pentru dispozitivele mobile și este convertit „din zbor” în cod hardware (Compilare Just-In-Time). Acest mecanism permite dezvoltatorului aplicației să fie practic dezlegat de o anumită arhitectură sau hardware, dar provoacă daune grave performanței prin încărcarea procesorului în timpul compilării. Desigur, după prima lansare foarte lentă a programului, o parte din codul „nativ” rezultat este stocată în cache, dar acest lucru nu rezolvă complet problema întârzierilor.

ART este un compilator AOT (Ahead-Of-Time) care convertește codul Java în cod „nativ” în timpul procesului de instalare a aplicației. Adică, utilizatorul rulează programul deja compilat, ceea ce accelerează semnificativ deschiderea și execuția acestuia. Este de două ori interesant că ART este deja încorporat în Android 4.4 KitKat și poate fi activat în meniul dezvoltatorului. După trecerea la libart.so (biblioteca compilatorului), dispozitivul repornește și compilează toate aplicațiile deja instalate. Băieții de la Android Police, care au studiat cu atenție ART, susțin că acest lucru nu ar trebui făcut încă pe firmware personalizat de la AOSP - pot apărea probleme cu pachetul software de la Google.

Chiar și ținând cont de starea incompletă a ART, trecerea la acesta afectează în mod semnificativ viteza de execuție a sarcinilor consumatoare de resurse și netezimea interfeței și, de asemenea, permite procesoarelor cu mai multe nuclee să oprească mai des nucleele neutilizate, ceea ce oferă un câștig. în durata de viață a bateriei dispozitivului. Noul sistem de compilare are dezavantaje, deși cu greu pot fi numite semnificative: timp de instalare mai lung și o creștere a dimensiunii finale a programului cu 10-20%. Adevărat, doar partea de cod crește în dimensiune, care adesea ocupă mai puțin de jumătate din aplicație - multimedia (imagini, sunet, video) și alte date nu se schimbă în dimensiune.

Se pare că Google lucrează la ART de câțiva ani, iar includerea sa în KitKat este o decizie absolut deliberată, permițând creatorilor de sistem să efectueze teste serioase, iar dezvoltatorilor de aplicații să se pregătească pentru viitoarea „plecare” a lui Dalvik. Nu este încă clar cât de mult a fost influențat noul compilator de dezvoltatorii de la FlexyCore, pe care Google l-a cumpărat în octombrie a acestui an, dar proiectul a început chiar în cadrul gigantului de căutare.

Google nu a spus încă cât de curând ART îl va înlocui pe Dalvik, dar nimic nu împiedică corporația să facă acest lucru în următoarea versiune a sistemului. Interesant, ca și Project Butter, compilatorul nu necesită efort din partea dezvoltatorilor de aplicații - vor scrie în continuare cod într-un limbaj binecunoscut, folosind practici dovedite.
"

Nu am un dispozitiv care rulează Android 4.4 pentru a încerca noua tehnologie, dar este deja disponibilă o imagine de sistem de la Google, pe care o puteți „atinge” în emulator.

Mai am întrebări despre dacă această funcție va fi disponibilă pe alte dispozitive Android 4.4 non-Google: Samsung, HTC etc. Toate funcțiile aplicației vor funcționa corect după transferul pe noua platformă?

Sunt foarte putine informatii, va rog sa scrieti in comentarii unde poate fi gasita intr-o dimensiune mai mare.

Noua versiune de Android are o inovație importantă, deși nu foarte vizibilă la prima vedere - a apărut o nouă mașină virtuală ART. Ce este ART, o mașină virtuală, și de ce este nouă este descris în blogul în limba engleză al lui Atif Khan, o intrare din care am decis să traducem pentru tine. Îți exprimăm o recunoștință deosebită pentru ajutorul tău Angela Bozhinova.

În lumea modernă a tehnologiei și a abrevierilor, nimeni nu este surprins de noi nume și abrevieri. Cu toate acestea, există o problemă: utilizatorii obișnuiți nu sunt întotdeauna pe deplin conștienți de ceea ce a învățat gadgetul lor după actualizare. Dezvoltatorii rareori ne încântă cu descrieri detaliate ale inovațiilor și noilor tehnologii și este extrem de rar să găsim o explicație clară pe site-ul oficial - în cel mai bun caz, utilizatorul va găsi doar o scurtă descriere cu expresii și mai de neînțeles.

Încercăm întotdeauna să ajutăm utilizatorii să înțeleagă noile dispozitive și tehnologii, așa că am decis să vă spunem, cititorilor noștri, despre tehnologia ART mai detaliat și, de asemenea, să facem o mică comparație cu mașina virtuală familiară Dalvik.

Ce este o aplicație de rulare (mașină virtuală)?

Discuția despre Dalvik și ART este imposibilă fără înțelegerea elementelor de bază, așa că mai întâi să vorbim despre mașina virtuală ca atare. Un timp de rulare a unei aplicații este un set de instrucțiuni executate pentru a traduce codul aplicației în cod pe care un computer îl poate înțelege. Mașina virtuală este utilizată fără să fie măcar parte a programului principal. În general, toate limbajele de computer „gestionate” (Java în Android, C# în Windows Phone, ECMAScript în browsere) necesită un astfel de mediu pentru a înțelege limba în care este scrisă aplicația.

Android folosește o mașină virtuală pentru a executa fișiere DEX (similar cu EXE din Windows), care sunt conținute în arhiva APK a aplicației Android. Există două avantaje ale unei astfel de soluții. În primul rând, fiecare aplicație rulează pe un sistem izolat de nucleul sistemului de operare, astfel încât acesta din urmă se simte mai mult sau mai puțin în siguranță. În al doilea rând, utilizarea unei mașini virtuale deschide calea aplicațiilor multiplatformă, adică aplicația poate rula pe un smartphone ARM, tabletă MIPS sau computer x86.

După cum știți, în tot acest timp Android a folosit mașina virtuală Dalvik, pe care probabil că toți cei care s-au adâncit puțin în caracteristicile sistemului de operare au întâlnit-o probabil.

De ce să folosiți un timp de rulare a aplicației?

Am răspuns deja la această întrebare mai sus. Fără îndoială că folosirea unei mașini virtuale încetinește execuția aplicațiilor, dar are câteva avantaje care influențează alegerea în favoarea ei.

  • Mașina virtuală rulează cod de aplicație terță parte într-un mediu izolat. În consecință, codul care poate dăuna nucleului sistemului de operare nu va putea interacționa direct cu fișierele de sistem, ceea ce va proteja sistemul. Un avantaj uriaș al utilizării unei mașini virtuale este funcționarea mai stabilă și mai fiabilă a sistemului principal.
  • Prin Google Play Store și alte surse, dezvoltatorul distribuie un fișier APK al programului său, care conține instrucțiuni necompilate care vor fi „asamblate” de o mașină virtuală înainte de execuție. Această soluție oferă o compatibilitate mai mare; în caz contrar, codul compilat pentru dispozitivele bazate pe Snapdragon nu va putea rula pe dispozitivele Atom. Prin urmare, mașina virtuală rezolvă problema cu destinația de compilare.

Ce este Dalvik și care este problema lui?

Aceasta este întrebarea principală. Dalvik a fost folosit în Android încă de la prima versiune a sistemului de operare, din 2007, și în tot acest timp a existat practic o schimbare majoră - apariția „compilației din zbor” în Froyo, mai cunoscută ca JIT. Caracteristica sa principală este că aplicația este complet compilată atunci când utilizatorul deschide sau rulează instrucțiunile corespunzătoare. Aceasta este o remediere foarte utilă, deoarece înainte de 2.2 toate aplicațiile erau compilate pas cu pas, ceea ce reducea viteza; Singurul dezavantaj al acestei soluții este că atunci când programul pornește, procesorul are o sarcină serioasă.

Pentru a evita munca suplimentară atunci când rulați din nou programul, sistemul colectează toate instrucțiunile compilate în timpul utilizării aplicației și le trimite într-un cache, care este stocat în sistemul de fișiere cu extensia *.ODEX (Optimized Dalvik EXecutable). De îndată ce lansați aplicația pentru a doua oară, Dalvik nu va mai compila, dar va încărca în memorie date deja optimizate pentru dispozitivul dvs. Cu toate acestea, apelarea unei funcții de aplicație care nu a fost folosită înainte va face ca instrucțiunile să fie compilate din nou. Dacă în acest moment sistemul efectuează lucrări de la terți (de exemplu, ascultarea muzicii sau actualizarea aplicațiilor), atunci din cauza supraîncărcării procesorului și a subsistemelor de intrare/ieșire, pot fi observate smucituri și frâne vizibile în memorie. Aici intervine ART.

Ce este ARTA și cum va salva lumea?

ART, sau Android RunTime (un nume foarte strâmb) este o nouă mașină virtuală pe care Google a introdus-o în Android 4.4 ca unul dintre instrumentele de dezvoltare (Dalvik este folosit implicit). Principala diferență între noul timp de rulare al aplicației este utilizarea tehnologiei Ahead-Of-Time (AOT, „ahead of time”). ART compilează toate instrucțiunile de aplicare înainte de a începe, în timpul procesului de instalare. Timpul acestuia din urmă crește, precum și cantitatea de memorie permanentă ocupată de program, dar mașina virtuală nu mai compilează aplicația curentă în timpul execuției acesteia, ceea ce îmbunătățește confortul atunci când se utilizează activ multitasking. Cu toate acestea, este recomandabil să aveți mai multă RAM, deoarece ART va încărca în el chiar și acele instrucțiuni ale aplicației pe care este posibil să nu le utilizați niciodată.

Dalvik vs. ARTĂ

Să comparăm pe scurt cele două mașini virtuale

ART este încă un experiment

Desigur, în acest moment ART este doar în curs de testare și este disponibil doar pentru dispozitivele care rulează Android 4.4 și chipset-uri de la Qualcomm. Cu toate acestea, acum puteți trece de la Dalvik la ART prin instrumente ascunse pentru dezvoltatori (meniul se deschide după câteva atingeri pe numărul versiunii din informațiile dispozitivului). Vă rugăm să rețineți că nu toate aplicațiile vor putea funcționa în ART fără actualizări suplimentare; Apropo, prima lansare în modul ART poate dura până la 30 de minute.

Google a pus ART la dispoziția dezvoltatorilor acum, pregătind scena pentru o tranziție completă la această mașină virtuală în viitor. Asta nu înseamnă că ART este stabilă nici acum. Acesta este un experiment și noua mașină virtuală poate să nu fie pregătită pentru utilizarea de zi cu zi.

Pentru a face „Instrumente pentru dezvoltatori” să apară în setări:


  1. Accesați „Setări” -> „Despre telefon”

  2. Pe elementul „Număr de compilare”, faceți clic de 7 ori la rând (după câteva clicuri, pe ecran apare un mesaj care vă spune de câte ori mai trebuie să faceți clic pentru ca elementul „Instrumente pentru dezvoltatori” să apară în meniu.

Cum să alegi timpul de execuție ART (sau Dalvik).

  1. Accesați Setări -> Opțiuni pentru dezvoltatori -> Selectați timpul de execuție.

  2. Selectați „Folosiți ART” (sau „Folosiți Dalvik”)

Deocamdată, runtime-ul ART nu este destinat publicului larg, ci celor care doresc să experimenteze.

După schimbarea duratei de rulare la ART, telefonul se va reporni. Cu toate acestea, prima descărcare va dura mai mult deoarece aplicațiile Android vor fi recompilate în coduri de mașină. Acest lucru permite aplicațiilor să se deschidă și să ruleze mai rapid, deoarece, spre deosebire de Dalvik, nu mai necesită compilare în timp real. ART are și dezavantajele sale. Aplicațiile vor ocupa mai mult spațiu (ceea ce nu este atât de semnificativ), vor dura puțin mai mult pentru a fi instalate și vor ocupa cu 10-20% mai multă memorie RAM. În plus, pot apărea probleme cu funcționarea unor funcții.

Și activarea ART ne-a permis să creștem semnificativ viteza de lucru. Creșterea performanței este asociată, desigur, nu doar cu ART, ci și cu eliminarea aplicațiilor Android din firmware-ul adăugat de Samsung și AT&T. Oricum, nu am folosit niciodată aceste aplicații, dar a fost imposibil să le șterg din firmware-ul nativ folosind eliminarea obișnuită a programelor.

Este prea devreme să vorbim despre stabilitate, dar după două zile de utilizare a telefonului nu au fost găsite probleme semnificative. În plus, revenirea la utilizarea Dalvik este la fel de ușoară. Prin urmare, recomand utilizatorilor experimentați să încerce această inovație, deoarece interfața funcționează acum la fel de bine ca și în iOS.

Ați încercat ARTA? Ați simțit creșterea vitezei în comparație cu Dalvik?

Actualizare (25 iunie 2014)
Testarea ART a continuat pe telefoanele Google Nexus S și Galaxy s3 (AT&T i747) pe Android 4.4 - 4.4.2. În același timp, Galaxy SIII a folosit firmware CyanogenMod 11 (Quantum 3.5), iar Google Nexus S a folosit AOSP KitKat 4.4.2 Mod pentru Nexus S. Nu au fost observate probleme la utilizarea ART. Și asta în ciuda faptului că firmware-ul Quantum Kernel pentru Galaxy s3 este optimizat pentru Dalvik, iar dezvoltatorul acestuia nu recomandă utilizarea ART. Nu există un câștig de performanță vizibil pe Galaxy s3 atunci când utilizați sarcini de zi cu zi (deși smartphone-ul ar trebui să ruleze mai repede din cauza lipsei de compilare în timp real). În mod similar, pe vechiul Google Nexus S creșterea vitezei nu este vizibilă pentru ochi.