Android Runtime

Android Runtime arkkitehtuuri.

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

Android Runtime on korvannut aiemmin käytetyn Dalvik-virtuaalikoneen Androidin versiossa 5.0, mutta se tukee edelleen Dalvikin DEX-tavukoodimuotoa. 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ä. ART parantaa automaattisen roskienkeruun aiheuttamaa hidastumista ja sisältää tiukemman asennuksen aikaisen verifioinnin kuin Dalvik.

Android-alustalle tehdyt työkalut (Jack) kääntävät Java-ohjelmat DEX-tavukoodiksi (lyhenne sanoista Dalvik Executable). ART käyttää Dalvikin tavukoodimäärittelyä. 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. Dalvik-virtuaalikoneelle tehdyt sovellukset voivat vielä käyttää ajonaikaista kääntämistä.

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

Android 13:n myötä ART käyttää Linux-ytimen userfaultfd-ominaisuutta (sivutuksen käsittely käyttäjäavaruudessa): uusi roskienkeruu poistaa ylimääräistä kuormaa, pienentää muistinkäyttöä ja pienentää käännetyn koodin kokoa. 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.

Lähteet

  1. 1 2 3 4 5 6 Platform Architecture developer.android.com. Viitattu 29.2.2020. (englanniksi) 
  2. 1 2 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. 1 2 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. 1 2 Android 13 is in AOSP! android-developers.googleblog.com. 15.8.2022. Viitattu 16.8.2022. (englanniksi)