Android Runtime

Android Runtime (ART) is an application runtime environment used by
the Android operating system. Replacing Dalvik, the process virtual
machine originally used by Android, ART performs the translation of
the application's bytecode into native instructions that are later
executed by the device's runtime environment.[1]
Android 2.2 "Froyo" brought trace-based just-in-time (JIT) compilation
into Dalvik, optimizing the execution of applications by continually
profiling applications each time they run and dynamically compiling
frequently executed short segments of their bytecode into native
machine code. While Dalvik interprets the rest of application's
bytecode, native execution of those short bytecode segments, called
"traces", provides significant performance improvements.[2][3]
Unlike Dalvik, ART introduces the use of ahead-of-time (AOT)
compilation by compiling entire applications into native machine code
upon their installation. By eliminating Dalvik's interpretation and
trace-based JIT compilation, ART improves the overall execution
efficiency and reduces power consumption, which results in improved
battery autonomy on mobile devices. At the same time, ART brings
faster execution of applications, improved memory allocation and
garbage collection (GC) mechanisms, new applications debugging
features, and more accurate high-level profiling of
applications.[1][4][5]
To maintain backward compatibility, ART uses the same input bytecode
as Dalvik, supplied through standard
.dex

.dex files as part of APK files,
while the
.odex

.odex files are replaced with Executable and Linkable Format
(ELF) executables. Once an application is compiled by using ART's
on-device dex2oat utility, it is run solely from the compiled ELF
executable; as a result, ART eliminates various application execution
overheads associated with Dalvik's interpretation and trace-based JIT
compilation. As a downside, ART requires additional time for the
compilation when an application is installed, and applications take up
slightly larger amounts of secondary storage (which is usually flash
memory) to store the compiled code.[1][4][5]
Android 4.4 KitKat brought a technology preview of ART, including it
as an alternative runtime environment and keeping Dalvik as the
default virtual machine.[6][7] In the subsequent major Android
release, Android 5.0 Lollipop, Dalvik was entirely replaced by ART.[8]
Android 7.0 Nougat introduced JIT compiler with code profiling to ART,
which lets it constantly improve the performance of Android apps as
they run. The JIT compiler complements ART's current Ahead of Time
compiler and helps improve runtime performance.[9]
See also[edit]
Computer programming portal
Android software development – various concepts and software
development utilities used for the creation of Android applications
Android version history – a history and descriptions of
Android releases, listed primarily by their official API levels
Comparison of application virtualization software – various
portable and scripting language virtual machines
Virtual machine – an emulation of a particular computer
system, with different degrees of implemented functionality
References[edit]
^ a b c Andrei Frumusanu (July 1, 2014). "A Closer Look at Android
RunTime (ART) in Android L". AnandTech. Retrieved July 5, 2014.
^ Ben Cheng; Bill Buzbee (May 2010). "A JIT Compiler for Android's
Dalvik VM" (PDF). android-app-developer.co.uk. Google.
pp. 5–14. Retrieved March 18, 2015.
^ Phil Nickinson (May 26, 2010). "
Google

Google Android developer explains
more about Dalvik and the JIT in Froyo". androidcentral.com. Retrieved
July 8, 2014.
^ a b "Android Developers: ART and Dalvik". source.android.com. March
9, 2015. Retrieved March 18, 2015.
^ a b "Android Developers: Configuring ART – How ART works".
source.android.com. March 9, 2015. Retrieved March 18, 2015.
^ Sean Buckley (November 6, 2013). "'ART' experiment in Android KitKat
improves battery life and speeds up apps". Engadget. Retrieved July 5,
2014.
^ Daniel P. (November 7, 2013). "Experimental
Google

Google ART runtime in
Android KitKat

Android KitKat can bring twice faster app executions". phonearena.com.
Retrieved July 5, 2014.
^ Brad Linder (October 15, 2014). "What's new in Android 5.0
Lollipop?". liliputing.com. Retrieved October 15, 2014.
^ "Implementing ART Just-In-Time (JIT) Compiler". source.android.com.
January 22, 2017. Retrieved January 22, 2017.
External links[edit]
Wikimedia Commons has media related to Android Runtime.
Official website
Android Basics 101: Understanding ART, the
Android Runtime

Android Runtime on YouTube,
XDA Developers, February 12, 2014
ART: Android's Runtime Evolved on YouTube,
Google

Google I/O 2014, by Anwar
Ghuloum, Brian Carlstrom and Ian Rogers
A JIT Compiler for Android's Dalvik VM on YouTube,
Google

Google I/O 2010, by
Ben Cheng and Bill Buzbee
Delivering Highly Optimized
Android Runtime

Android Runtime (ART) and Web Runtime on
Intel

Intel Architecture, Intel, August 4, 2015, by Haitao Feng and Jonathan
Ding
Android 7.1 for Developers: Profile-guided JIT/AOT compilation,
Android Developers, describes ART changes in Android 7
v
t
e
Android
Software development
Category
Official
development tools
Software Development Kit (SDK)
Android Debug Bridge

Android Debug Bridge (ADB)
Fastboot
Android application package

Android application package (APK)
Native Development Kit (NDK)
Android Open Accessory Development Kit
Bionic
RenderScript
Skia
Dalvik
Android Runtime

Android Runtime (ART)
Firebase
Google

Google Cloud Messaging (GCM)
Firebase Cloud Messaging (FCM)
AdMob
Material Design
Fonts
Droid
Roboto
Noto
Google

Google Developers
Other
development tools
OpenBinder
Apache Harmony
OpenJDK
Gradle
Integrated development
environments (IDE)
Android Studio
IntelliJ IDEA
Eclipse
Android Development Tools (ADT)
App Inventor
Languages & Databases
Java
Kotlin
XML
C
C++
SQLite
Virtual reality
Cardboard
Daydream
Events & Communities
Google

Google I/O
Developer Challenge
Developer Lab
Android Open Source Project
.svg/400px-Android_logo_(2014).svg.png)
Android Open Source Project (AOSP)
Releases
1.0
1.1
Cupcake (1.5)
Donut (1.6)
Eclair (2.0–2.1)
Froyo (2.2)
Gingerbread (2.3)
Honeycomb (3.x)
Ice Cream Sandwich (4.0)
Jelly Bean (4.1–4.3)
KitKat (4.4)
Lollipop (5.x)
Marshmallow (6.0)
Nougat (7.x)
Oreo (8.x)
P
Derivatives
Android Auto
Android Things
Android TV
Wear OS
Smartphones
& Tablets
Google

Google Pixel
Pixel & Pixel XL
Pixel 2
_logo.svg/320px-Google_Pixel_(smartphone)_logo.svg.png)
Pixel 2 &
Pixel 2
_logo.svg/320px-Google_Pixel_(smartphone)_logo.svg.png)
Pixel 2 XL
Pixel C
Nexus devices
Nexus One
Nexus S
Galaxy Nexus
Nexus 4
Nexus 5
Nexus 5X
Nexus 6
Nexus 6P
Nexus 7
2012 version
2013 version
Nexus 10
Nexus 9
Nexus Q
Nexus Player
Google

Google Play
edition
HTC One (M7)
HTC One (M8)
LG G Pad 8.3
Moto G
Samsung Galaxy S4
Sony Xperia Z Ultra
Android One
Customized
variants
Android-x86
Remix OS
AOKP
Baidu Yi
Barnes & Noble Nook
ColorOS
CopperheadOS
CyanogenMod
Fire OS
Funtouch OS
Flyme OS
LeWa OS
LineageOS
MIUI
Nokia X software platform
OPhone
OmniROM
OxygenOS
Replicant
Ubuntu for Android
XobotOS
Yun OS
Applications
Assistant
Google

Google Now
Earth
Gmail
Google

Google Chrome for Android
Goggles
Hangouts
Maps
Navigation
Pay
Send
Play
Books
Games
Movies & TV
Music
Newsstand
Sky
Talk
Voice
APIs
Google

Google Maps
Google

Google Play Services
Google

Google Search
Alternative
user interfaces
Asus Zen UI
Hive UI
HTC Sense
Google

Google Pixel UI
LG UX
.svg/200px-LG_logo_(2015).svg.png)
LG UX (Optimus UI)
Samsung Experience
.jpg)
Samsung Experience (Samsung TouchWiz)
Huawei EMUI
Lists
Custom firmware
Features
Free and open-source applications
Games
Google

Google apps
Launchers
Related topics
Index of articles
Google
Androidland
Lawn statues
Chromecast
Java vs. Android API
Legal issues
Oracle America, Inc. v. Google, Inc.
Smartphone patent wars
XDA