Android Runtime
Android Runtime (ART) on Android-alustalla käytettävä ajoympäristö.[1] Ympäristö kääntää ohjelmat natiiville konekielelle.[1]
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ähteet
[muokkaa | muokkaa wikitekstiä]- ↑ a b c d e f Platform Architecture developer.android.com. Viitattu 29.2.2020. (englanniksi)
- ↑ 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)
- ↑ 'ART' experiment in Android KitKat improves battery life and speeds up apps engadget.com. 6.11.2013. Viitattu 29.2.2020. (englanniksi)
- ↑ a b Android Runtime (ART) and Dalvik source.android.com. Viitattu 29.2.2020. (englanniksi)
- ↑ Implementing ART Just-In-Time (JIT) Compiler source.android.com. Viitattu 29.2.2020. (englanniksi)
- ↑ 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)
- ↑ Android 7.0 for Developers developer.android.com. Viitattu 17.8.2022. (englanniksi)
- ↑ Jonathan Corbet: /dev/userfaultfd lwn.net. 13.6.2022. Viitattu 17.8.2022. (englanniksi)
- ↑ a b Android 13 is in AOSP! android-developers.googleblog.com. 15.8.2022. Viitattu 16.8.2022. (englanniksi)