Skip to main content

Android Dalvik Virtual Machine

Hello Everyone!


In this article we are discussing about the Dalvik Virtual Machine. It is one of the important concept in android architecture. Dalvik Virtual Machine has also been asked few times in university exams (sometimes as a separate question and sometimes along with the Android Architecture).

Dalvik Virtual Machine is one of the key elements of Android Application. The Dalvik Virtual Machine (DVM) is an android virtual machine which is optimized for mobile devices. It optimizes the virtual machine for memory, battery life and performance. Dalvik Virtual Machine is only supported by the android operating system. The overall execution is faster using Dalvik VM.

Rather than using a traditional Java Virtual Machine, Android uses its own custom VM, designed to ensure that multiple instances run efficiently on a single device. One reason for using Dalvik VM is that Java VM was not open source and hence not efficient to use on a large scale.

The Dalvik Virtual Machine uses the device’s underlying Linux kernel to handle some low-level functionality, including security, threading, process management and memory management.

Dalvik acts as a middle person between hardware and system service access. By using a VM to host application execution, developers have an abstraction layer that ensures that they never have to worry about a particular hardware implementation.

The Dalvik VM executes Dalvik executable files (DEX). The Dex files are optimized for minimal memory usage. The Dex compiler converts the ".class" files into the ".dex" files that runs on the Dalvik Virtual Machine. Multiple class files are converted into single dex file. 


Working of Dex Compiler

Basically, the Java Compiler (javac) converts the Java Source Code into Java Byte-Code. This is the ".class file". Now this ".class" file is compiled by DEX compiler to obtain a ".dex" file (Dalvik Byte Code) which is then packaged by the AAPT (Android Assets Packaging Tool) into a ".apk" file.

 


Also checkout Android Architecture and the Different Building Blocks of Android.

Comments

Popular posts from this blog

UML - Use Case Diagram for Vending Machine

Hello Everyone! Here is an example of an Use case Diagram of a Vending Machine System. Problem Statement - A vending machine accepts coins for variety of products. The user selects the drinks from products available through selection panel. If the drink is available the price of the product is displayed. The user then deposits the coins depending on the price of the product. Coin collector collects coin after stipulated time the controller will compare the deposited coin with price. If amount deposited is less than price then error message will be displayed and all deposited coin will be dispensed by the coin dispenser else the drink will be dispensed by the product dispenser. Check out other UML (Unified Modeling Language) Diagrams - Class Diagram   Object Diagram   Sequence Diagram Collaboration Diagram   Activity Diagram   State Diagram   Component Diagram   Deployment Diagram  

UML - Component Diagram for Intranet development of a college/school

Hello Everyone! Here is an example of an Component Diagram for Intranet development. Problem Statement - An intranet is a computer network for sharing information, collaboration tools, operational systems, and other computing services only within an organization. An Internet Service Provider (ISP) provides LAN services, Application services, Email services, Domain and Web hosting services to an organization. The LAN service is provided through Switch to the terminals using Ethernet and other cables. The firewall feature is provided for web applications through Application services. All the students and staff members are provided with an official email account through email services. The college has its own domain and web hosting package provided by the ISP. All these services maintain a database which is stored on server. The database server and all the services are controlled and handled by the Administrator of the college. Check out other UML (Unified Modeling Language)...

Connecting GitHub with Jenkins - Step by step Tutorial

Hello Everyone, In this tutorial, we will learn how to create a New Item (Project), connect Git and GitHub to Jenkins and run the files from the Git repository on Jenkins. Jenkins is an open-source automation tool written in Java with plugins built for Continuous Integration purposes. Jenkins is used to build and test your software projects continuously making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. Facing trouble with the installation of Jenkins? Click here to know more. NOTE: It is mandatory to install plugins for Git and GitHub before connecting your GitHub repository to Jenkins. If you're using Jenkins for the first time, you need to install the plugins. To know more about these plugins, check out Git and GitHub Plugins for Jenkins . This tutorial demonstrates executing python code which requires separate plugins. Know more about Python Plugi...