Kako lahko Huaweijev prevajalnik Ark izboljša delovanje aplikacij za Android

Huawei je objavil ključne podrobnosti o delovanju svojega novega prevajalnika Ark, ki obljublja, da bo drastično izboljšal delovanje aplikacij v sistemu Android. Za več preberite

Velik del nedavnih pogovorov o Huaweiju se je vrtel okoli nesrečne politične situacije podjetja zaradi Izvršni ukaz ZDA, ki je številnim podjetjem omejil poslovanje s Huaweijem. Posledice takšne odločilne odločitve so veliko preveč velike, da bi jim ne bili pozorni. Toda v alternativni realnosti, kjer ta izvršni ukaz ne obstaja, bi bil Huawei v središču pozornosti zaradi svojega je nedavno razkril Ark Compiler, najnovejšo inovacijo, ki naj bi premostila vrzel v zmogljivosti aplikacij med Androidom in iOS.

Preden se poglobimo v to, kaj Ark Compiler je, moramo narediti korak nazaj in razumeti, kaj je prevajalnik in čemu služi v sistemu Android.

Kratka zgodovina prevajalnikov in tolmačev v sistemu Android

Prevajalnik je računalniški program, ki prevaja kodo iz enega jezika v drug jezik, ki je pogosto materni strojni jezik. To lahko nato bodisi izvede neposredno računalnik ali pa se izvede prek drugega programa (tolmača). Ta prevod je potreben, ker pišemo kodo v človeku berljivih programskih jezikih (kot sta Java in Kotlin), medtem ko računalnik razume le izvorni strojni jezik (binarna koda v obliki 1 in 0). Prevajalnik tako služi kot most med navodili, ki jih napiše človek, in zmožnostjo stroja, da razume in nato izvede ta navodila. Učinkovitost prevajalnika torej določa, kako hitro in učinkovito potekata ta pretvorba in kasnejša interpretacija uvedba neposredne korelacije med učinkovitostjo prevajalnika z zmogljivostjo in učinkovitostjo kode, in z razširitvijo, aplikacije.

Dalvik VM

V zgodnjih dneh Androida je OS uporabljal tako imenovani Dalvik VM (tolmač) skupaj s prevajalnikom JIT (pravočasno). Ta starejši videoposnetek iz Android Basics 101 za XDA TV serija se dotika nastavitev Dalvik VM in JIT, ki sta služila potrebam zgodnjih sistemov Android, kjer so bile pomnilniške omejitve obilne. Dalvik VM je vzel bajtno kodo Java in jo pretvoril v strojno kodo, ko in ko je bilo treba kodo izvesti (torej Just-In-Time). To je bilo potrebno, saj je bil prostor za shranjevanje v telefonih takrat resna omejitev, zato je ta pristop aplikacijam omogočal delo z manjšimi velikostmi datotek v sistemu.

Prevajanje in tolmačenje aplikacij med izvajanjem je imelo pomanjkljivost splošnega počasnejšega delovanja aplikacije, saj bi prevajanje potekalo hkrati, ko uporabnik uporablja aplikacijo.

Dalvik je imel tudi omejitve s svojim mehanizmom za zbiranje smeti. Dalvik je skupaj spremljal vsako dodelitev pomnilnika. Ko Dalvik ugotovi, da program ne uporablja več dela pomnilnika, sprosti ta pomnilnik nazaj v kopico brez kakršnega koli posredovanja programerja. Ta postopek se imenuje Zbiranje smeti (GC) in je namenjen iskanju pomnilniških objektov v programu, do katerega ni več dostopa, in nato povrnitvi virov, ki jih ti objekti uporabljajo za sprostitev pomnilnika. Sistem določi, kdaj je GC potreben na kolektivni osnovi, tako da razvijalci aplikacij ne morejo izbrati, kdaj se zgodijo dogodki GC [tudi v ART]. Torej, če bi se dogodek GC zgodil sredi katere koli intenzivne dejavnosti obdelave v aplikaciji v ospredju, bi sistem začasno ustavil izvajanje procesa in začetek GC, s čimer se podaljša čas obdelave in vnese opazen "jank" v uporabniki.

Te in druge omejitve so Google spodbudile k raziskovanju alternativnih pristopov za hitrejše delovanje.

Android Runtime

Z Androidom 4.4 KitKat, ki ga je predstavil Google ART (Android Runtime) v obliki predogleda s prevajalnikom AOT (Ahead-Of-Time) in z Androidom 5.0 Lollipop je Google opustil Dalvik v korist ART kot edinega razpoložljivega tolmača. ART z AOT je pretvoril kodo v strojni jezik v času namestitve aplikacije, namesto da bi čakal na takšno pretvorbo, ko je aplikacija v uporabi. Ta pristop je tako pospešil čas zagona aplikacije, vendar je prinesel tudi pomanjkljivosti v obliki počasnejšega časa namestitve in povečane porabe prostora na disku. Za uravnoteženje vsega, Google sprejeti kombinacija AOT, JIT in profilno vodenega prevajanja z ART v sistemu Android 7.0 Nougat, da se zagotovi, da noben posamezen dejavnik ni drastično prizadet.

Androidova ART implementacija

ART je delal tudi na tem, da bi bilo zbiranje smeti manj vsiljivo. Postopek GC je bil optimiziran tako, da je na splošno hitrejši z manj premori (en kratek premor v primerjavi z dvema premoroma pri Dalviku), manjšo razdrobljenostjo in manjšo uporabo pomnilnika. Googlova predstavitev na Google I/O 2014 je podrobneje razložena z omejitvami Dalvikovega GC in izboljšav ART v zvezi s tem.

Tudi s temi spremembami v preteklih letih je osnovna predpostavka Googlovega pristopa vključevala tolmačenje kode med izvajanjem in spreminjanje časa elementa prevajanja (prevajanja). Zbiranje smeti je prav tako še naprej boleča točka za razvijalce aplikacij zaradi svoje inherentne prekinitvene in kolektivne narave. Verjetno je zaradi tega slabša zmogljivost aplikacije Android, saj so še naprej vpleteni režijski stroški.

Ark Compiler podjetja Huawei

Huawei si prizadeva za razvoj učinkovitejše rešitve in je posledično zaposlil na stotine strokovnjakov na tem področju. Rezultat tega truda je prevajalnik Ark, za katerega Huawei trdi, da je prvi statični prevajalnik ki omogoča neposredno prevajanje v strojni jezik, kar popolnoma odstrani potrebo po an tolmač. Ark Compiler je bil razvit tudi s ciljem maksimiranja učinkovitosti izvajanja za Javo in C, zato bi morali teoretično doseči najboljše rezultate s tema jezikoma.

Grafika Huawei. Besedilo je prevedel uporabnik XDA MyKeyVans.

Huawei predstavlja nekaj ključnih funkcij prevajalnika Ark, kot je prikazano spodaj:

  • Tehnike prevajanja, kot sta AOT in JIT, lahko pretvorijo nekatere programe v strojno kodo in jih zaženejo neposredno v CPE, vendar se te tehnike ne morejo popolnoma odvezati od tolmača in z njim povezanih omejitev. Prevajalnik Ark uporablja statično prevajanje, ki mu omogoča, da se odveže od dinamičnega tolmača, kar odpira možnost povečanja zmogljivosti aplikacije z "skokovito."
  • Statično prevajanje ima potencialno slabo stran, da je preveč togo in ne more izvesti prilagoditev, ki jih lahko naredi dinamični prevajalnik med izvajanjem. Huawei trdi, da statična kompilacija Ark Compilerja rešuje to "z brezhibnim prevajanjem dinamičnih funkcij v programskem jeziku v strojno kodo."
  • Obstoječi postopki prevajanja potekajo med ali po namestitvi paketa aplikacije na mobilni napravi. Ark Compiler je zasnovan za uvajanje med razvojem programske opreme, kar domnevamo, da pomaga odstraniti časovne stroške med namestitvijo in izvajanjem. Predvidevamo, da bi razvijalci aplikacij med aplikacijo lahko neposredno prevedli različne jezike v izvorno strojno kodo razvojni proces in nastali APK tako ne bi potreboval interakcije s tolmačem ali virtualnim strojem funkcijo. To bi teoretično zmanjšalo režijske stroške, povezane na primer z JNI.
  • Ark Compiler spreminja tudi kolektivno naravo zbiranja smeti. Omogoča, da se dogodki GC pojavijo ločeno za različne niti Java. Ta razdeljeni pristop trdi, da ponuja manj drenjanja v aplikacijah v ospredju.

Zaradi teh sprememb lahko Ark Compiler navidezno izboljša tekoče delovanje sistema Android za do 24 %, hitrost odziva za do 44 % in gladkost aplikacij tretjih oseb za do 60 %, ki trdi, da zagotavlja delovanje aplikacij za Android na enaki ravni kot za iOS.

Prevajalnik Ark je trenutno preveden in optimiziran za arhitekturo čipov ARM. Huawei upa, da bo v prihodnosti skupna zasnova strojne in programske opreme delovala v smeri maksimiranja zmogljivosti čipov Kirin.

Ark Compiler podpira standardno uporabo Jave, kar omogoča neposredno prevajanje aplikacij tretjih oseb, ne da bi bilo treba razvijalcu aplikacije spremeniti kodo. Ark Compiler omogoča tudi "prilagoditve strukture kode" za nadaljnje izboljšave zmogljivosti in pomnilnika. Huawei se je odločil, da Ark Compiler postane odprtokodni sistem, ki bi razvijalcem tretjih oseb omogočil prevzem in prilagodijo tehnologijo svojim potrebam ter pospešijo njeno sprejetje pri razvijalcih aplikacij in mobilnih telefonih proizvajalci.

Medtem ko Huawei ne omenja nobenih slabosti prevajalnika Ark, lahko pričakujemo velike velikosti aplikacij vendar to ne bi smelo povzročati težav pri napravah trenutne generacije, ki imajo dovolj shranjevanje. Pričakujemo tudi, da Ark Compiler ne bo na voljo za vse arhitekture procesorjev, saj težave z združljivostjo Googla niso glavobol Huaweija. Ark Compiler je zasnovan za uporabo med razvojem in ne med namestitvijo; to nakazuje, da je Huawei morda spremenil način uvajanja in namestitve aplikacij v napravah Android, prav tako pa je morda delal na lastni zasnovi APK. Če je pravilno, bi to lahko predstavljalo velik problem združljivosti v ekosistemu in minilo bi veliko časa, preden bi to postalo standardna funkcija Androida, če sploh kdaj.

Neprevajanje v uporabnikovi napravi postavlja tudi veliko vprašanje glede optimizacije. ART trenutno optimizira na podlagi posamezne mikroarhitekture, kar pomeni, da bi nastala dvojiška datoteka drugačen za napravo Snapdragon v primerjavi z napravo Exynos ali celo za Snapdragon 845 v primerjavi s Snapdragonom 625. Ta pristop je smiseln za proizvajalce, ki imajo popoln nadzor nad SoC, kot sta Apple in Huawei. Ker preostali svet Androida uporablja veliko različnih sistemov na čipu, bo vsiljevanje generične optimizacije, ki se uporablja v vseh napravah, spet ovira za standardizacijo prevajalnika Ark. Zato ne pričakujte, da bo Ark Compiler kmalu prišel na vaš najljubši ROM po meri.

Za pojasnilo, Ark Compiler je razvit za delo z Androidom in Huawei ni omenil ničesar v zvezi s svojim domnevni homebrew OS in njegovo združljivost s prevajalnikom Ark, zato v zvezi s tem ne delamo nobenih predpostavk.

Huawei načrtuje organizacijo dveh večjih konferenc, namenjenih razvijalcem in širšemu ekosistemu. To sta Huawei Device China Developers Conference in Green Alliance China Developers Conference. Oba dogodka bosta obravnavala specifična odprtokodna vprašanja, povezana s Huaweijevim prevajalnikom Ark, v prizadevanju, da bi bile prednosti te tehnologije čim širše dostopne.


Posebna zahvala staremu priznanemu sodelavcu XDA Dees_Troy in priznani razvijalec arter97 za njihovo pomoč in prispevke.

Opomba: Huawei/Honor sta prenehala zagotavljati uradne kode za odklepanje zagonskega nalagalnika za svoje naprave. Zato zagonskih nalagalnikov njihovih naprav ni mogoče odkleniti, kar pomeni, da uporabniki ne morejo ukoreniniti ali namestiti prilagojenih ROM-ov.