Android Runtime

Android Runtime (ART) on Android-alustalla käytettävä ajoympäristö.[1] Ympäristö kääntää ohjelmat natiiville konekielelle.[1]

Android Runtime arkkitehtuuri.

Android Runtime on korvannut aiemmin käytetyn Dalvik-virtuaalikoneen Androidin versiossa 5.0, mutta se tukee edelleen Dalvikin DEX-tavukoodimuotoa.[1][2][3] ART käyttää ennen ajoa tehtävää kääntämistä (engl. ahead-of-time, AOT) ajonaikaisen kääntämisen (engl. just-in-time, JIT) sijaan, joka nopeuttaa ohjelmien käynnistymistä.[1][2] ART parantaa automaattisen roskienkeruun aiheuttamaa hidastumista ja sisältää tiukemman asennuksen aikaisen verifioinnin kuin Dalvik.[4]

Android-alustalle tehdyt työkalut (Jack) kääntävät Java-ohjelmat DEX-tavukoodiksi (lyhenne sanoista Dalvik Executable).[1] ART käyttää Dalvikin tavukoodimäärittelyä.[4] ART-ympäristössä hyvin toimivat ohjelmat pitäisi toimia hyvin myös Dalvik-ympäristössä, mutta vastakkainen ei välttämättä pidä paikkaansa.[1] Dalvik-virtuaalikoneelle tehdyt sovellukset voivat vielä käyttää ajonaikaista kääntämistä.[5]

Android 7 (N, Nougat) -versiosta lähtien Java-kirjastot ovat käyttäneet OpenJDK:ta aiemman Apache Harmonyn sijaan.[6] Samassa yhteydessä AOT/JIT-käännös on saanut tuen profilointiin perustuvalle optimoinnille.[7]

Android 13:sta myötä ART käyttää Linux-ytimen userfaultfd-ominaisuutta (sivutuksen käsittely käyttäjäavaruudessa[8]): uusi roskienkeruu poistaa ylimääräistä kuormaa, pienentää muistinkäyttöä ja pienentää käännetyn koodin kokoa.[9] Android 13:ssa on uusi julkinen API Reference.refersTo(), JNI-kutsut ovat nopeampia ja ART suorittaa enemmän tavukoodin validoinnista sovelluksen asennuksen aikana jolloin lataaminen nopeutuu.[9]

LähteetMuokkaa

  1. a b c d e f Platform Architecture developer.android.com. Viitattu 29.2.2020. (englanniksi) 
  2. a b Experimental Google ART runtime in Android KitKat can bring twice faster app executions phonearena.com. 7.11.2013. Viitattu 29.2.2020. (englanniksi) 
  3. 'ART' experiment in Android KitKat improves battery life and speeds up apps engadget.com. 6.11.2013. Viitattu 29.2.2020. (englanniksi)
  4. a b Android Runtime (ART) and Dalvik source.android.com. Viitattu 29.2.2020. (englanniksi) 
  5. Implementing ART Just-In-Time (JIT) Compiler source.android.com. Viitattu 29.2.2020. (englanniksi) 
  6. Ron Amadeo: Android N switches to OpenJDK, Google tells Oracle it is protected by the GPL arstechnica.com. 6.1.2016. Viitattu 17.8.2022. (englanniksi)
  7. Android 7.0 for Developers developer.android.com. Viitattu 17.8.2022. (englanniksi)
  8. Jonathan Corbet: /dev/userfaultfd lwn.net. 13.6.2022. Viitattu 17.8.2022. (englanniksi)
  9. a b Android 13 is in AOSP! android-developers.googleblog.com. 15.8.2022. Viitattu 16.8.2022. (englanniksi)