首页 > 编程语言 >安卓系统执行APK程序为什么需要ART或者Dalvik虚拟,原理是什么

安卓系统执行APK程序为什么需要ART或者Dalvik虚拟,原理是什么

时间:2023-11-09 13:34:20浏览次数:44  
标签:ART 字节 Dalvik 安卓 APK 执行 虚拟机

安卓系统执行 APK 程序需要 ART (Android Runtime) 或者以前的 Dalvik 虚拟机,主要是因为安卓应用大多数是用 Java 语言编写的,而 Java 是一种需要虚拟机来执行的语言。下面我会分别解释虚拟机的原理和为什么需要它们,以及提供一个生活中的例子来帮助理解。

 

### 虚拟机的原理:

 

1. **跨平台性**:

  - Java 程序编写后,会被编译成字节码(.class 文件),这种字节码不是任何具体架构的机器码,而是一种中间码。

  - 这种字节码需要一个虚拟机来解释执行。对于安卓来说,这就是 ART 或 Dalvik 虚拟机。

 

2. **隔离性**:

  - 虚拟机为每个应用提供了一个隔离的执行环境,这样就能确保一个应用的问题不会影响到其他应用或系统本身。

 

3. **性能优化和兼容性**:

  - ART 和 Dalvik 都使用了 JIT (Just-In-Time) 编译技术,ART 还使用了 AOT (Ahead-Of-Time) 编译技术,这些技术可以提高应用的执行效率。

  - 虚拟机可以对字节码进行优化,使其更适合当前的硬件架构执行。

 

### 为什么需要虚拟机:

 

- **安全性**:虚拟机提供了一个安全的沙箱环境,可以限制程序的权限,防止恶意软件直接操作硬件和系统底层资源。

- **兼容性**:由于虚拟机提供了统一的执行环境,因此开发者可以编写一次代码,然后在多种硬件和安卓版本上运行,而不需要为每种硬件或安卓版本编写特定的代码。

 

### 生活中的例子:

 

将虚拟机比作是一个国际学校:

- **字节码**类似于学校使用的国际通用语言(如英语),学生们(应用程序)使用这种语言进行交流。

- **虚拟机**就像是学校的老师,他们理解这种国际通用语言,并将其翻译成学生们各自的母语(即将字节码翻译成特定设备的机器码),这样学生们就能理解并完成学习任务。

- **隔离性**就像每个学生有自己的课桌,即使一个学生(应用程序)的东西弄乱了,也不会影响到其他学生。

- **跨平台性**则体现在学生们无论来自哪个国家(哪种硬件平台),都能在这所学校(安卓系统)中学习,因为大家都遵循同样的规则(虚拟机提供的执行环境)。

 

通过这个例子,我们可以理解虚拟机如何使得不同的应用程序能在各种各样的安卓设备上运行,而不用担心硬件的差异性。

 作者:http://xkrj5.com 纯原创首发,转载保留版权!

标签:ART,字节,Dalvik,安卓,APK,执行,虚拟机
From: https://www.cnblogs.com/xkrj5/p/17819517.html

相关文章

  • 安卓系统的内核是Linux,但是它为什么能运行APK程序
    安卓系统虽然基于Linux内核,但是它并不直接运行Linux的二进制程序。安卓为其设备提供了一个特殊的运行环境,这个环境包括了一个叫做Dalvik虚拟机(在Android4.4及以后版本中被ART替代)的组件,它能够运行专门为安卓设计的APK文件中的程序。 这里有一个生活中的比喻: 想象Linux内核......
  • java为什么能在安卓环境下运行,如何运行的,原理是什么,详细!
    Java在Android环境下可以运行是因为Android提供了一个为移动设备优化的虚拟机——Dalvik虚拟机(在Android4.4版本后,被Android运行时环境ART所取代),它使用专门为Android优化的字节码。这个虚拟机与Java的运行机制有所不同,但是基本原理类似。以下是详细的解释:1.Java代码编译......
  • 现在的安卓12或者是安卓13用的是什么虚拟机ART还是Dalvik?举个比喻
    Android5.0(Lollipop)及以后的版本使用的是ART(AndroidRuntime)虚拟机,而不是早期版本中使用的Dalvik虚拟机。从Android4.4(KitKat)开始,ART就作为一个实验性的特性出现,并在随后的版本中取代了Dalvik。 要用一个生活中的例子来比喻的话,我们可以把虚拟机想象成一家咖啡店的咖啡机。......
  • ART还是Dalvik虚拟的原理是什么,跟安卓运行APK有啥关系
    ART(AndroidRuntime)和Dalvik都是Android操作系统中的应用程序运行环境。它们都是虚拟机,用于在Android设备上执行应用程序代码。APK(AndroidPackage)是Android应用程序的打包格式,包含了应用程序的所有文件,包括应用程序代码、资源和元数据。Dalvik虚拟机:原理:Dalvik是一种基于寄存......
  • Dalvik/ART虚拟机是什么,跟安卓运行APK有啥关系,举个常用例子
    Dalvik和ART(AndroidRuntime)都是安卓操作系统中的应用程序虚拟机,它们是Android设备上运行APK文件的关键组成部分。Dalvik虚拟机概念:Dalvik是Android最初使用的虚拟机,它专为Android系统设计,主要用于执行APK中的DalvikExecutable(.dex)文件。工作原理:Dalvik通过使用即时编译(JIT)将......
  • apktool使用笔记-与系统不兼容
    apk重新打包后,新的android版本手机报"与系统不兼容"尝试更新apktool.jar,2.6更新到2.9,还是一样的情况网上搜索下相关的问题,可能原因是签名方式,以及对齐问题下载android-sdk,获取相关工具,这种功能很少,只能从sdk获取从sdk,jre复制相关文件过来,其中一个bat......
  • 大屏展示技术栈:vue2+echarts+dataV
    1.大屏搭建使用的是dataV组件http://datav.jiaminghi.com/guide,使用dataV组件有如下注意点:a.修改配置项config中data的值,需要重新赋值configb.修改dataV某些内置样式,他有个固定的类2.登录界面动态背景,使用的是vanta.jsVanta.js-Animated3DBackgroundsForYourWebsite......
  • 关于LINUX权限(启动tomcat)-bash: ./startup.sh: Permission denied
    关于LINUX权限-bash:./startup.sh:Permissiondenied在执行./startup.sh,或者./shutdown.sh的时候,爆出了Permissiondenied,其实很简单,就是今天在执行tomcat的时候,用户没有权限,而导致无法执行,用命令chmod修改一下bin目录下的.sh权限就可以了chmodu+x*.sh在此执行,OK了。......
  • 备份下启动springboot项目脚本文件 start.sh
    1.将jar包放到和该脚本同级目录2.记得chmod777./start.sh赋予执行权限3.执行./start.sh文件即可4.重启也可以直接执行此文件5.如果没有打包配置文件可以在此脚本同级目录创建config目录将yml/properties配置文件放进去. #!/bin/bash#进入脚本所在路径cd`dirname$......
  • Electrical(Hardware) Protocols: FIFO / JTAG / SPI / IIC / IIS / UART / SWD / ICS
    Electrical(Hardware)Protocols:JTAG(JointTestActionGroup),JTAGisactuallyaprotocoloverSPI.5pins/connections(GND,TMS,TCK,TDI,TDO),Outputtype:Maximumvoltage:5.5volts(5voltsafe),3.3voltnormal,oropencollector(pull-upresistorsre......