Closer Look At Android Runtime: DVM vs ART
Before directly move to Android Runtime, we need to understand
what runtime environment is and also understand some basic stuff i.e. the
functioning of JVM and Dalvik VM.
What is
runtime?
In a simplest term it is a system used by operating system
which takes care of converting the code that you write in a high level language
like Java to machine code and understand by CPU/Processor.
Runtime comprises of software instructions that execute when
your program is running, even if they’re not essentially are a part of the code
of that piece of software in particular.
CPUs or more general term our computers understand only
machine language (binary codes) so to make it run on CPU, the code must be
converted to machine code, which is done by translator.
So following are the generation of translator in a sequence-
1.
Assemblers
:
It directly translate assembly codes to
machine codes so it was very fast.
2.
Compilers
:
It translates the code into assembly codes
and then use assemblers to translate the code into binary. Using this compilation
was slow but execution was fast. But the biggest problem with compiler is that
the resulted machine code was platform dependent. In other words the code which
runs on one machine may not run on different machine.
3.
Interpreters
:
It translates the code while executing it.
Since the translation happens at runtime, the execution was slow.
How JAVA code
execution works?
To maintain the platform independency of the code, JAVA
developed JVM i.e. Java Virtual Machine. It developed JVM specific to every
platform means JVM is dependency on the platform. The Java compiler converts
the .java files into .class files, which is called byte code. This byte code is
given to the JVM which converts it into machine code.
This is faster than interpretation but slower than C++
compilation.
How
Android code execution works?
In Android Java classes converted into DEX bytecode. The DEX
bytecode format is translated to native machine code via either ART or the
Dalvik runtimes. Here DEX bytecode is
independent of device architecture.
Dalvik is a JIT (Just in time) compilation based engine. There
were drawbacks to use Dalvik hence from Android 4.4 (kitkat) ART was introduced
as a runtime and from Android 5.0 (Lollipop) it has completely replaced Dalvik.
Android 7.0 adds a just-in-time (JIT) compiler with code profiling to Android
runtime (ART) that constantly improves the performance of Android apps as they
run.
Key
Point: Dalvik used JIT (Just in time) compilation whereas ART uses
AOT (Ahead of time) compilation.
Below are the code snippet explaining the difference between
Dalvik Virtual Machine and Java Virtual Machine.
With the Dalvik JIT compiler, each time when the app is run,
it dynamically translates a part of the Dalvik bytecode into machine code. As
the execution progresses, more bytecode is compiled and cached. Since JIT
compiles only a part of the code, it has a smaller memory footprint and uses
less physical space on the device.
Ahead Of
Time (AOT)
ART is equipped with an Ahead-of-Time compiler. During the app’s installation phase, it statically translates the DEX bytecode into machine code and stores in the device’s storage. This is a one-time event which happens when the app is installed on the device. With no need for JIT compilation, the code executes much faster.
ART is equipped with an Ahead-of-Time compiler. During the app’s installation phase, it statically translates the DEX bytecode into machine code and stores in the device’s storage. This is a one-time event which happens when the app is installed on the device. With no need for JIT compilation, the code executes much faster.
ART also uses same DEX bytecode as input for Dalvik. An application compiled using ART requires additional time for compilation when an application is installed and take up slightly larger amounts of space to store the compiled code.
Android makes use of a virtual machine as its runtime environment in order to run the APK files that constitute an Android application. Below are the advantages:
· The application
code is isolated from the core OS. So even if any code contains some malicious
code won’t directly affect the system files. It makes the Android OS more
stable and reliable.
· It
provides cross compatibility or platform independency. It meaning even if an
app is compiled on platform such as a PC, it can still be executed on the
mobile platform using the virtual machine.
Benefits
of ART
· Apps run
faster as DEX bytecode translation done during installation.
· Reduces
startup time of applications as native code is directly executed.
· Improves
battery performance as power utilized to interpreted byte codes line by line is
saved.
· Improved
garbage collector.
· Improved
developer tool.
Drawbacks
of ART
· App Installation
takes more time because of DEX bytecodes conversion into machine code during installation.
· As the
native machine code generated on installation is stored in internal storage,
more internal storage is required.
Conclusion
ART is written to run multiple virtual machines on low-memory
devices by executing DEX files, a bytecode format designed specially for
Android that's optimized for minimal memory footprint. It makes the UI feel
more responsive. That’s all from my side. For more details on ART and Dalvik
you can go through official Android document.
The Showbox HD app is a highly user friendly app the size of which is very small and adjustable
ReplyDeleteapps like showbox
wow I like your way of explanation.All the details are explained in detail manner. Get more Java Training in Marathahalli
ReplyDeleteJava Training in Bangalore
Thanks for this, it will be helpful while playing games like good craft on my android.
ReplyDeleteReally simple to understand
ReplyDeleteAnd I understand very good.
Nowadays, most of the people showing interest to build mobile application in Android operating system, since it is flexible for developers to develop an app, If you are interested to build your own app, go here for Android Training | Android Training in Chennai
ReplyDeleteThanks for sharing. Keep sharing
ReplyDeleteThanks for sharing. Keep sharing
ReplyDeleteThanks a lot very much for the high quality and results-oriented help. I won’t think twice to endorse your blog post to anybody who wants and needs support about this area.
ReplyDeleteRPA Training in Bangalore
Thanks for sharing
ReplyDeleteJava Training in Chennai
Inspiring writings and I greatly admired what you have to say , I hope you continue to provide new ideas for us all and greetings success always for you..Keep update more information..
ReplyDeleterpa training in Chennai | rpa training in pune
rpa training in tambaram | rpa training in sholinganallur
rpa training in Chennai | rpa training in velachery
rpa online training | rpa training in bangalore
UiPath Training in Bangalore by myTectra is one the best UiPath Training. myTectra is the market leader in providing Robotic Process Automation on UiPath
ReplyDeleteui path training in bangalore
If you ever want to take some of the load off, I’d like to write some material for your blog in exchange for a link back to mine. Please shoot me an email if interested. Thanks.
ReplyDeletesafety course institute in chennai
Wonderful Post. The content is very much thought provoking. Thanks for sharing.
ReplyDeleteEthical Hacking Course in Chennai
Hacking Course in Chennai
Pega training in chennai
Pega course in chennai
Tableau Training in Chennai
Tableau Course in Chennai
Primavera Training in Chennai
Primavera Course in Chennai
ReplyDeleteHey, would you mind if I share your blog with my twitter group? There’s a lot of folks that I think would enjoy your content. Please let me know. Thank you.
AWS Training in Chennai | Best AWS Training in Chennai
Data Science Training in Chennai | Best Data Science Training in Chennai
Python Training in Chennai | Best Python Training in Chennai
RPA Training in Chennai | Best RPA Training in Chennai
Digital Marketing Training in Chennai | Best Digital Marketing Training in Chennai
Nice Post! Thank you for sharing knowledge, it was very good post to update my knowledge and improve my skills. keep blogging.
ReplyDeleteJava Training in Electronic City
Nice Post. Thanks for sharing the valuable information with us.
ReplyDeletePlayBox Online
PlayBox Online
PlayBox HD
PlayBox Online
PlayBox Online
PlayBox Online
This comment has been removed by the author.
ReplyDeleteThanks for your article. It was really helpful in understanding DVM vs ART. I've also written an article on DVM vs ART but it also goes deep into JVM: https://ayusch.com/art-vs-dvm-in-android/
ReplyDeleteWould be great if you could have a look and give your feedback :)
Cheers!
Reach to the best Data Science Training institute in Chennai for skyrocketing your career, Infycle Technologies. It is the best Software Training & Placement institutes in and around Chennai. that also gives the best placement training for personality tests, interview preparation, and mock interviews for leveling up the candidate's grades to a professional level.
ReplyDeleteI really enjoy the blog article.Much thanks again.
ReplyDeletejava online training hyderabad
core java online training hyderabad
wow I like your way of explanation.All the details are explained in detail manner. Get more
ReplyDeleteData science Courses in Manchester