{"id":7321,"date":"2020-08-03T14:23:00","date_gmt":"2020-08-03T14:23:00","guid":{"rendered":"https:\/\/www.intexsoft.com\/?post_type=blog&#038;p=7321"},"modified":"2022-07-19T12:40:00","modified_gmt":"2022-07-19T12:40:00","slug":"android-runtime-environment-dvm-vs-art","status":"publish","type":"blog","link":"https:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/","title":{"rendered":"Android Runtime Environment: DVM vs ART"},"content":{"rendered":"<section  class=\"hero hero-blog \">\n\t<div class=\"content\">\n\t\t\t\t\t<div class=\"hero__overlay\"><\/div>\n\t\t\t\t<div class=\"hero__container\">\n\t\t\t<a href=\"https:\/\/intexsoft.com\/blog\/\">\n\t\t\t\t<div class=\"hero-blog-btn\">\n\t\t\t\t\t\n\t\t\t\t<\/div>\n\t\t\t<\/a>\n\t\t\t<div class=\"hero-blog-date-author\"> August 3, 2020 \u2022 by \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDora &amp;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tArthur\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<h1 class=\"hero__title \">Android Runtime Environment: DVM vs ART<\/h1>\n\t\t\t\t\t\t\t\t\t\t<div class=\"hero-blog-categories\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"hero-blog-category\" data-id=\"99\" data-parent=\"18\">\n\t\t\t\t\t\t\tMobile development\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"hero-blog-category\" data-id=\"18\" data-parent=\"0\">\n\t\t\t\t\t\t\tTech Staff\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"hero-blog-image\">\n\t\t\t\t<picture>\n\t\t\t\t\t\t\t\t\t\t\t<source type=\"image\/webp\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/uploads-webp\/2021\/08\/360\u0445510-Android_-DVM-vs-ART-min.jpg.webp\" media=\"(max-width: 480px)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<source type=\"image\/webp\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/uploads-webp\/2021\/08\/768\u0445773-Android_-DVM-vs-ART-min.jpg.webp\" media=\"(max-width: 992px)\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<source type=\"image\/webp\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/uploads-webp\/2021\/08\/1920x437-Android_-DVM-vs-ART-min.jpg.webp\">\n\t\t\t\t\t\t\t\t\t\t<source srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/360\u0445510-Android_-DVM-vs-ART-min.jpg\" media=\"(max-width: 480px)\">\n\t\t\t\t\t<source srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/768\u0445773-Android_-DVM-vs-ART-min.jpg\" media=\"(max-width: 992px)\">\n\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/1920x437-Android_-DVM-vs-ART-min.jpg\" loading=\"lazy\" alt=\"image\">\n\t\t\t\t<\/picture>\n\t\t\t<\/div>\n\t\t\t<\/div>\n<\/section>\n\t\t\t\t\t\t\t\n\t\t\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><section id=\"\"\n\t\t\t\t\t class=\"custom-wysiwyg-editor wysiwyg-portfolio \">\n\t\t<div class=\"content\">\n\n\n\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"custom-wysiwyg-editor__anchors\">\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<p><span style=\"color: #333333;\">In this article, we will talk about the Android runtime environment. Notably, we promise to be brief and explain in short ART and Dalvik (DVM) differences in Android.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #000000;\">Virtual Machine<\/span><\/h2>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">Let us clear up the difference between JVM and DVM first.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\"><strong>Java Virtual Machine<\/strong> is a virtual machine capable of executing Java bytecode regardless of the base platform. It is based on the principle &#8220;Write once, run anywhere.&#8221; The Java bytecode can run on any machine capable of supporting JVM.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">The Java compiler converts .java files into class files (bytecode). The bytecode is passed to JVM, which compiles it into machine code for execution directly on the CPU.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">JVM features:<\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><span style=\"color: #333333;\">Stack architecture. The stack is used as a data structure where methods are placed and stored. It works by the LIFO scheme or &#8220;Last in &#8211; First Out.&#8221;<\/span><\/li>\n<li><span style=\"color: #333333;\">Runs .class files only.<\/span><\/li>\n<li><span style=\"color: #333333;\">Uses a JIT compiler.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\"><strong>Dalvik Virtual Machine<\/strong> (DVM) is a Java virtual machine developed and written by Dan Bornstein and others as part of the Android mobile platform.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">We can say that Dalvik is a runtime for Android operating system components and user applications. Each process is executed in its isolated domain. When a user starts an app (or the operating system launches one of its components), the Dalvik virtual machine kernel (Zygote Dalvik VM) creates a separate, secure process in shared memory, where VM is directly deployed as the Android runtime environment. In short, Android within looks like a set of Dalvik virtual machines, with executing an app in each.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">DVM features:<\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><span style=\"color: #333333;\">Register-based architecture. The data structure with methods placed there is based on processor registers. Due to POP and PUSH absence, instructions in register VM are executed faster than similar ones in stack VM<\/span><\/li>\n<li><span style=\"color: #333333;\">Executes the bytecode of its format. Android dexer (we&#8217;ll talk about it later) converts .class files into .dex format optimized for DVM execution. Unlike a .class file, a .dex file contains several classes at once.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7332\" src=\"\/app\/uploads\/2021\/08\/jvm-vs-dvm.jpg\" alt=\"\" width=\"1600\" height=\"1108\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/jvm-vs-dvm.jpg 1600w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/jvm-vs-dvm-300x208.jpg 300w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/jvm-vs-dvm-1024x709.jpg 1024w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/jvm-vs-dvm-768x532.jpg 768w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/jvm-vs-dvm-1536x1064.jpg 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #000000;\">Android Dexer<\/span><\/h2>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">A crucial step in creating an APK is converting the Java bytecode to <em>.dex<\/em> bytecode for Android Runtime and Android developers to know about it. The dex compiler mainly works &#8220;undercover&#8221; in routine application development, but it directly affects the application build time, .dex file size, and runtime performance.<\/span><\/p>\n<p>&nbsp;<\/p>\n\n\t\t<\/div>\n\t<\/section>\n\n\n\n<section id=\"\" class=\"banner-mini schema-white \">\n\t\t<div class=\"banner-mini-content\">\n\t\t\t<div class=\"banner-mini-info\">\n\t\t\t\t\t\t\t\t\t<h3 class=\"banner-mini-title fg-title\">Boost your project<\/h3>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"banner-mini-subtitle fg-subtext\">Augment your mobile dev team or develop the mobile app from scratch<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/intexsoft.com\/mobile-application-development-services\/\"  target=\"_self\"   class=\"banner-mini-link btn btn_color_primary banner__button\">Discover<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<picture class=\"banner-mini-image-picture\">\n\t\t\t\t\t\t\t\t<img decoding=\"async\" class=\"banner-mini-image\" loading=\"lazy\" src=\"https:\/\/intexsoft.com\/app\/uploads\/2020\/11\/workspace_lead_magnet.png\"\n\t\t\t\t\t\t alt=\"image\">\n\t\t\t<\/picture>\n\t\t<\/div>\n\t<\/section>\n\n\n<section id=\"\"\n\t\t\t\t\t class=\"custom-wysiwyg-editor wysiwyg-portfolio \">\n\t\t<div class=\"content\">\n\n\n\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"custom-wysiwyg-editor__anchors\">\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<p><span style=\"color: #ffffff;\">.<\/span><\/p>\n<p><span style=\"color: #ffffff;\">.<\/span><\/p>\n<p><span style=\"color: #333333;\">As already mentioned, the <em>.dex<\/em> file itself contains several classes at once. Repeating strings and other constants, used in multiple .class files, are included only to save space. Java bytecode is also converted to an alternative command set used by DVM. An uncompressed .dex file is usually a few percent smaller than a compressed Java archive (JAR) from the same .class files.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">Initially, <em>.class<\/em> files were converted to .dex using the built-in DX compiler. But starting from<\/span> <a href=\"https:\/\/android-developers.googleblog.com\/2017\/08\/next-generation-dex-compiler-now-in.html\">Android Studio 3.1<\/a> <span style=\"color: #333333;\">onwards, the default compiler was<\/span> <a href=\"https:\/\/developer.android.com\/studio\/command-line\/d8\">D8<\/a>. <span style=\"color: #333333;\">Compared to the DX compiler, the D8 compiles faster and outputs smaller .dex files, providing high application performance during runtime. The resulting bytecode is minified using an open-source utilit<\/span>y <a href=\"https:\/\/www.guardsquare.com\/en\/products\/proguard\">ProGuard<\/a>. <span style=\"color: #333333;\">As a result, we get the same .dex file, but smaller. Then this file is used for APK building and finally for deploying it on the Android device.<\/span><\/p>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7328\" src=\"\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-d8.jpg\" alt=\"\" width=\"1600\" height=\"695\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-d8.jpg 1600w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-d8-300x130.jpg 300w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-d8-1024x445.jpg 1024w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-d8-768x334.jpg 768w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-d8-1536x667.jpg 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">After the D8 in<\/span> <a href=\"https:\/\/android-developers.googleblog.com\/2018\/11\/r8-new-code-shrinker-from-google-is.html\">2018<\/a> <span style=\"color: #333333;\">came <\/span><a href=\"https:\/\/developer.android.com\/studio\/build\/shrink-code\">R8<\/a>, <span style=\"color: #333333;\">which is essentially the same D8, but updated.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">When working with Android Studio 3.4 and<\/span> <a href=\"https:\/\/developer.android.com\/studio\/releases\/gradle-plugin#3-4-0\">Android Gradle 3.4.0<\/a> <span style=\"color: #333333;\">plugin or higher, Proguard is no longer used for code optimization during compilation. The plugin works by default with R8 instead, which performs code shrinking, optimization, and obfuscation itself. Although R8 offers only a subset of functions provided by Proguard, it allows the converting Java bytecode to dex bytecode to be performed once, further reducing the build time.<\/span><\/p>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7329\" src=\"\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-r8.jpg\" alt=\"\" width=\"1600\" height=\"694\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-r8.jpg 1600w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-r8-300x130.jpg 300w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-r8-1024x444.jpg 1024w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-r8-768x333.jpg 768w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/building-an-appliation-usding-the-r8-1536x666.jpg 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #000000;\">R8 and code shrinking<\/span><\/h2>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">We all know that most applications use third-party libraries such as Guava, Jetpack, Gson, Google Play Services. When we use one of these libraries, often only a small part of each library is used in an application. Without code shrinking, the entire code of the library is stored in your app.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">It happens when developers use verbose code to improve readability and maintainability. For example, meaningful variable names and builder pattern can be used to make it easier for others to understand your code. But such patterns usually result in more code than is needed.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">In this case, R8 comes to the rescue. It allows you to significantly reduce the application&#8217;s size by optimizing the volume of code actually used by the app.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">As an example, I will cite figures from the <\/span><a href=\"https:\/\/www.youtube.com\/watch?time_continue=3&amp;v=uQ_yK8kRCaA&amp;feature=emb_title\">Shrinking Your App with R8<\/a> <span style=\"color: #333333;\">report presented at the<\/span> <a href=\"https:\/\/www.youtube.com\/watch?time_continue=3&amp;v=uQ_yK8kRCaA&amp;feature=emb_title\">Android Dev Summit &#8217;19<\/a>:<\/p>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7335\" src=\"\/app\/uploads\/2021\/08\/r8-help.jpg\" alt=\"\" width=\"1600\" height=\"922\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/r8-help.jpg 1600w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/r8-help-300x173.jpg 300w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/r8-help-1024x590.jpg 1024w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/r8-help-768x443.jpg 768w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/r8-help-1536x885.jpg 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">And below you can see the R8 effectiveness when the beta version was presented (taken from the<\/span> <a href=\"https:\/\/android-developers.googleblog.com\/\">Android Developers Blog<\/a> <span style=\"color: #333333;\">source):<\/span><\/p>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7336\" src=\"\/app\/uploads\/2021\/08\/shriking-and-dexig-time.jpg\" alt=\"\" width=\"1200\" height=\"742\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/shriking-and-dexig-time.jpg 1200w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/shriking-and-dexig-time-300x186.jpg 300w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/shriking-and-dexig-time-1024x633.jpg 1024w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/shriking-and-dexig-time-768x475.jpg 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7331\" src=\"\/app\/uploads\/2021\/08\/dex-file-size.jpg\" alt=\"\" width=\"1200\" height=\"742\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/dex-file-size.jpg 1200w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/dex-file-size-300x186.jpg 300w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/dex-file-size-1024x633.jpg 1024w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/dex-file-size-768x475.jpg 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7327\" src=\"\/app\/uploads\/2021\/08\/apk-size.jpg\" alt=\"\" width=\"1200\" height=\"742\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/apk-size.jpg 1200w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/apk-size-300x186.jpg 300w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/apk-size-1024x633.jpg 1024w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/apk-size-768x475.jpg 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">For detailed information, check the<\/span> <a href=\"https:\/\/developer.android.com\/studio\/build\/shrink-code\">official documentation<\/a> <span style=\"color: #333333;\">and the report mentioned above.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #000000;\">ART vs DVM in Android<\/span><\/h2>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">DVM was explicitly designed for mobile devices and was used as a virtual machine to run android apps up until Android 4.4 Kitkat.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">Starting from this version,<\/span> <a href=\"https:\/\/source.android.com\/devices\/tech\/dalvik\">ART<\/a> <span style=\"color: #333333;\">was introduced as a runtime environment, and in Android 5.0 (Lollipop), ART completely replaced Dalvik.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">The main visible difference between ART and DVM is that ART uses AOT compilation, while DVM &#8211; JIT compilation. Not so long ago, ART started using a hybrid of AOT and JIT. We&#8217;ll take a look at this a little bit further.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\"><strong>DVM<\/strong><\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><span style=\"color: #333333;\">Uses JIT Compilation: whenever you start an application, the part of the code necessary for app execution compiles. The rest of the code compiles dynamically. This slows down app launch and operation but reduces the installation time.<\/span><\/li>\n<li><span style=\"color: #333333;\">Speeds up the device&#8217;s startup because the application cache is created at runtime.<\/span><\/li>\n<li><span style=\"color: #333333;\">DVM apps require less memory than those running on ART.<\/span><\/li>\n<li><span style=\"color: #333333;\">Reduces battery performance by increasing the CPU load.<\/span><\/li>\n<li><span style=\"color: #333333;\">Dalvik is &#8220;obsolete&#8221; and is not used on Android versions above 4.4.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7333\" src=\"\/app\/uploads\/2021\/08\/kitkat-jit-solution.jpg\" alt=\"\" width=\"1600\" height=\"809\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/kitkat-jit-solution.jpg 1600w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/kitkat-jit-solution-300x152.jpg 300w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/kitkat-jit-solution-1024x518.jpg 1024w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/kitkat-jit-solution-768x388.jpg 768w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/kitkat-jit-solution-1536x777.jpg 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\"><strong>ART<\/strong><\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><span style=\"color: #333333;\">Uses AOT compilation, i.e., compiles all code during the installation of the app. This speeds up apps running and operation but requires more installation time.<\/span><\/li>\n<li><span style=\"color: #333333;\">Slows the device&#8217;s startup because the cache is created during the first boot.<\/span><\/li>\n<li><span style=\"color: #333333;\">Due to the AOT compilation approach, requires more memory compared to DVM applications.<\/span><\/li>\n<li><span style=\"color: #333333;\">Increases battery performance by reducing CPU operation due to the compilation absence when running applications.<\/span><\/li>\n<li><span style=\"color: #333333;\">Improved Garbage Collection. When using Dalvik, garbage collectors had to perform two heap passes, which resulted in bad UX. In the case of ART, this is not the case: it cleans the heap once for memory consolidation.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7334\" src=\"\/app\/uploads\/2021\/08\/marshmallow-aot-solution.jpg\" alt=\"\" width=\"1600\" height=\"875\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/marshmallow-aot-solution.jpg 1600w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/marshmallow-aot-solution-300x164.jpg 300w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/marshmallow-aot-solution-1024x560.jpg 1024w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/marshmallow-aot-solution-768x420.jpg 768w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/marshmallow-aot-solution-1536x840.jpg 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7330\" src=\"\/app\/uploads\/2021\/08\/dalvik-vs-art.jpg\" alt=\"\" width=\"1600\" height=\"1108\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/dalvik-vs-art.jpg 1600w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/dalvik-vs-art-300x208.jpg 300w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/dalvik-vs-art-1024x709.jpg 1024w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/dalvik-vs-art-768x532.jpg 768w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/dalvik-vs-art-1536x1064.jpg 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #000000;\">JIT + AOT in ART<\/span><\/h2>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">Since Android 7, the Android Runtime Environment includes a JIT compiler with code profiling. The JIT compiler complements the AOT compiler, improves runtime performance, saves disk space, and accelerates app and system updates.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">It&#8217;s carried out according to the following scheme:<\/span><\/p>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7337\" src=\"\/app\/uploads\/2021\/08\/workflow.jpg\" alt=\"\" width=\"1600\" height=\"982\" srcset=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/workflow.jpg 1600w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/workflow-300x184.jpg 300w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/workflow-1024x628.jpg 1024w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/workflow-768x471.jpg 768w, https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/workflow-1536x943.jpg 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">Instead of running the AOT compilation of each application during the installation, it runs the application under a VM using the JIT compiler (almost the same as in Android &lt; 5.0) but keeping track of pieces of app code executing most often. This information is after used for the AOT compilation of these code fragments. The last operation is performed only during the smartphone is inactive, which is on a charge.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">Merely speaking, now two different approaches work together, which brings its benefits:<\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><span style=\"color: #333333;\">More efficient compilation &#8211; when you start an app, the compiler can learn much more about its operation than when performing static analysis, and, as a result, more suitable optimization methods are applied for each situation.<\/span><\/li>\n<li><span style=\"color: #333333;\">Preserving RAM and permanent memory &#8211; bytecode is more compact than machine code. When we perform AOT compilation only of separate application parts and do not compile applications the user doesn&#8217;t use, we can significantly save. NAND-memory space;<\/span><\/li>\n<li><span style=\"color: #333333;\">A sharp increase in installation speed and first boot after system update &#8211; no AOT compilation, no delay.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">More information about JIT compiler implementation in ART you can find<\/span> <a href=\"https:\/\/source.android.com\/devices\/tech\/dalvik\/jit-compiler\">here<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #000000;\">Summarizing<\/span><\/h2>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">In this article, we have analyzed the main differences between DVM and ART, and generally looked at how Android improved its development tools over time.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">ART is still under development: new features are being added to improve the experience for both users and developers.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #333333;\">We hope this article will be helpful for those who are just getting started with Android.<\/span><\/p>\n\n\t\t<\/div>\n\t<\/section>\n\n\n\n<section id=\"\" class=\"authors \">\n\t\t<div class=\"content\">\n\t\t\t<div class=\"authors-container\">\n\t\t\t\t\t\t\t\t\t<h3 class=\"authors-title\">Written by<\/h3>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"authors-info\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"author\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"author-photo\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/07\/Darya.jpg\" loading=\"lazy\" alt=\"image\">\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"author-info\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h4 class=\"author-fullname\"> Dora<\/h4>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"author-position text-tn\"> Marketing Manager<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"author\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"author-photo\">\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/image-1.png\" loading=\"lazy\" alt=\"image\">\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"author-info\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h4 class=\"author-fullname\"> Arthur<\/h4>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"author-position text-tn\"> Senior Mobile Developer<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\n<div class=\"post__share-links\">\n\t\t<div class=\"post__share-container\">\n\t\t\t\t\t\t\t<a class=\"post__share-link\" href=\"https:\/\/www.facebook.com\/sharer.php?u=http:\/\/intexsoft.com\/wp-json\/wp\/v2\/blog\/7321&amp;t=Android Runtime Environment: DVM vs ART\" target=\"_blank\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"post__share-link-img facebook-white\"><\/span>\n\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t<a class=\"post__share-link\" href=\"http:\/\/www.linkedin.com\/shareArticle?mini=true&amp;url=http:\/\/intexsoft.com\/wp-json\/wp\/v2\/blog\/7321\" target=\"_blank\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"post__share-link-img linkedin-white\"><\/span>\n\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><section class=\"favorite-posts\">\n\t\t\t<h3 class=\"favorite-posts-title\">FAVORITES OF THE MONTH<\/h3>\n\t\n\t\t\t<div class=\"favorite-posts-items\">\n\t\t\t\t\t\t\t\t\t\t\t<a class=\"favorite-posts-item\" href=\"https:\/\/intexsoft.com\/blog\/ai-in-ecommerce-how-technology-is-changing-the-way-we-shop\/\">\n\t\t\t\t\t<div class=\"favorite-posts-item-date-author\">March 6, 2024\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<h4 class=\"favorite-posts-item-title\">AI in Ecommerce: How Technology is Changing the Way We Shop<\/h4>\n\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<a class=\"favorite-posts-item\" href=\"https:\/\/intexsoft.com\/blog\/top-7-ecommerce-platforms-for-your-business\/\">\n\t\t\t\t\t<div class=\"favorite-posts-item-date-author\">April 3, 2024\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<h4 class=\"favorite-posts-item-title\">Top 7 Ecommerce Platforms For Your Business<\/h4>\n\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t<\/section>\n\n<section class=\"contact-form-widget\">\n\t\t\t<h3 class=\"contact-form-widget-title\">Don&#039;t miss our updates<\/h3>\n\t\t\n\t\t\t\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f3988-o1\" lang=\"en-US\" dir=\"ltr\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/wp-json\/wp\/v2\/blog\/7321#wpcf7-f3988-o1\" method=\"post\" class=\"wpcf7-form init mailchimp-ext-0.5.72 wpcf7-acceptance-as-validation\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<div style=\"display: none;\">\n<input type=\"hidden\" name=\"_wpcf7\" value=\"3988\" \/>\n<input type=\"hidden\" name=\"_wpcf7_version\" value=\"5.9.6\" \/>\n<input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/>\n<input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f3988-o1\" \/>\n<input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/>\n<input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/div>\n<div class=\"custom-input_block\">\n    <label class=\"custom-placeholder\" for=\"email\"><\/label>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"email\"><input size=\"40\" maxlength=\"80\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email contacts__input\" id=\"email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Enter your email...\" value=\"\" type=\"email\" name=\"email\" \/><\/span>\n<\/div>\n<div class=\"contacts__form-checkbox\">\n<span class=\"wpcf7-form-control-wrap\" data-name=\"privace-policy\"><span class=\"wpcf7-form-control wpcf7-acceptance\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"privace-policy\" value=\"1\" class=\"contacts__checkbox form__checkbox_color_grey\" id=\"privacy-cookie-policy\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\"><label for=\"privacy-cookie-policy\" class=\"contacts__checkbox-subtitle blog\">\n        I agree to <a target=\"_blank\" href=\"\/privacy-policy\/\">Privacy<\/a> and <a target=\"_blank\" href=\"\/cookie-policy\/\">Cookie Policy*<\/a>\n  <\/label><\/span><\/label><\/span><\/span><\/span>\n<\/div>\n<button class=\"btn btn_color_primary\">\n  Send\n  <svg class=\"form-arrow\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n    <circle class=\"form-arrow__circle\" opacity=\"0.1\" cx=\"8\" cy=\"8\" r=\"7.33333\" stroke=\"white\" stroke-width=\"1.33333\"\/>\n    <circle class=\"form-arrow__circle form-arrow__circle-two\" opacity=\"0.1\" cx=\"8\" cy=\"8\" r=\"7.33333\" stroke=\"white\" stroke-width=\"1.33333\"\/>\n    <path class=\"form-arrow__path\" d=\"M7.33301 10.6665L9.99967 7.99984L7.33301 5.33317\" stroke=\"white\" stroke-width=\"1.33333\" stroke-linecap=\"square\"\/>\n    <path class=\"form-arrow__successful\" d=\"M5.33301 8.66357L7.00228 10.3328L11.335 5.99951\" stroke=\"white\" stroke-width=\"1.33333\" stroke-linecap=\"square\"\/>\n  <\/svg>\n<\/button><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div><p style=\"display: none !important\"><span class=\"wpcf7-form-control-wrap referer-page\"><input type=\"hidden\" name=\"referer-page\" value=\"http:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/\" data-value=\"http:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/\" class=\"wpcf7-form-control wpcf7-text referer-page\" aria-invalid=\"false\"><\/span><\/p>\n<!-- Chimpmatic extension by Renzo Johnson -->\n<\/form>\n<\/div>\n\n\t<\/section>\n\n\t\t\t\t<\/div>\n<\/div>\n\n\n<section id=\"\" class=\"related-posts  \">\n\t\t<div class=\"content\">\n\t\t\t\t\t\t\t<h2 class=\"section-title\">Related posts<\/h2>\n\t\t\t\t\t\t<ul class=\"posts-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/intexsoft.com\/blog\/cross-platform-mobile-development-react-native-or-flutter\/\" class=\"our-blog__block-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-image\">\n\t\t\t\t\t\t\t\t\t\t<picture>\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/07\/640x400-React-Native-vs.-Flutter_-what-to-chose-for-cross-platform-mobile-development-min.jpg\" loading=\"lazy\" alt=\"image\" width=\"446\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t height=\"278\">\n\t\t\t\t\t\t\t\t\t\t<\/picture>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-content-date\">December 14, 2020<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"our-blog__block-item-content-title\">Cross-platform Mobile Development: React Native or Flutter?<\/h3>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-content-subtitle\"> <p>The purpose of this article is to give you an overview of Flutter and React Native. We will compare these two technologies for cross-platform mobile development and help you choose the best option for your future app development.<\/p> <\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/intexsoft.com\/blog\/cross-platform-or-native-app-development-which-is-best\/\" class=\"our-blog__block-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-image\">\n\t\t\t\t\t\t\t\t\t\t<picture>\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/07\/640x400-Cross-platform-or-Native-App-Development_-Which-is-Best_-min.jpg\" loading=\"lazy\" alt=\"image\" width=\"446\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t height=\"278\">\n\t\t\t\t\t\t\t\t\t\t<\/picture>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-content-date\">June 13, 2019<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"our-blog__block-item-content-title\">Native App Development or Cross-platform?<\/h3>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-content-subtitle\"> <p>No one wants to do the work twice. The software development industry has long been searching for a way to develop an application that would suit both iOS and Android platforms.<\/p> <\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/intexsoft.com\/blog\/8-best-popular-projects-on-java\/\" class=\"our-blog__block-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-image\">\n\t\t\t\t\t\t\t\t\t\t<picture>\n\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/intexsoft.com\/app\/uploads\/2021\/08\/640x400-8-Best-Popular-Projects-on-Java-min.jpg\" loading=\"lazy\" alt=\"image\" width=\"446\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t height=\"278\">\n\t\t\t\t\t\t\t\t\t\t<\/picture>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-content-date\">June 9, 2020<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"our-blog__block-item-content-title\">8 Best Popular Projects on Java<\/h3>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"our-blog__block-item-content-subtitle\"> <p>Today, according to reliable publicly available sources, Java remains\u00a0one of the most popular\u00a0programming languages. Java developers are always in demand.<\/p> <\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/ul>\n\t\t<\/div>\n\t<\/section>\n","protected":false},"author":1,"template":"","blog_category":[99,18],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.9 (Yoast SEO v22.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Android Runtime Environment: DVM vs ART - IntexSoft<\/title>\n<meta name=\"description\" content=\"In this post, we&#039;ll talk about the Android runtime environment. We&#039;ll briefly overview ART and Dalvik (DVM) differences in Android.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Android Runtime Environment: DVM vs ART\" \/>\n<meta property=\"og:description\" content=\"In this post, we&#039;ll talk about the Android runtime environment. We&#039;ll briefly overview ART and Dalvik (DVM) differences in Android.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/\" \/>\n<meta property=\"og:site_name\" content=\"IntexSoft\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-19T12:40:00+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Android Runtime Environment: DVM vs ART - IntexSoft","description":"In this post, we'll talk about the Android runtime environment. We'll briefly overview ART and Dalvik (DVM) differences in Android.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/","og_locale":"en_US","og_type":"article","og_title":"Android Runtime Environment: DVM vs ART","og_description":"In this post, we'll talk about the Android runtime environment. We'll briefly overview ART and Dalvik (DVM) differences in Android.","og_url":"https:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/","og_site_name":"IntexSoft","article_modified_time":"2022-07-19T12:40:00+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/","url":"https:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/","name":"Android Runtime Environment: DVM vs ART - IntexSoft","isPartOf":{"@id":"https:\/\/intexsoft.com\/#website"},"datePublished":"2020-08-03T14:23:00+00:00","dateModified":"2022-07-19T12:40:00+00:00","description":"In this post, we'll talk about the Android runtime environment. We'll briefly overview ART and Dalvik (DVM) differences in Android.","breadcrumb":{"@id":"https:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/intexsoft.com\/blog\/android-runtime-environment-dvm-vs-art\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/intexsoft.com\/"},{"@type":"ListItem","position":2,"name":"Android Runtime Environment: DVM vs ART"}]},{"@type":"WebSite","@id":"https:\/\/intexsoft.com\/#website","url":"https:\/\/intexsoft.com\/","name":"IntexSoft","description":"...","publisher":{"@id":"https:\/\/intexsoft.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/intexsoft.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/intexsoft.com\/#organization","name":"IntexSoft","url":"https:\/\/intexsoft.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/intexsoft.com\/#\/schema\/logo\/image\/","url":"https:\/\/intexsoft.com\/app\/uploads\/2021\/05\/Logo.png","contentUrl":"https:\/\/intexsoft.com\/app\/uploads\/2021\/05\/Logo.png","width":156,"height":33,"caption":"IntexSoft"},"image":{"@id":"https:\/\/intexsoft.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/intexsoft.com\/wp-json\/wp\/v2\/blog\/7321"}],"collection":[{"href":"https:\/\/intexsoft.com\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/intexsoft.com\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/intexsoft.com\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/intexsoft.com\/wp-json\/wp\/v2\/media?parent=7321"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/intexsoft.com\/wp-json\/wp\/v2\/blog_category?post=7321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}