Android系统架构、JVM和DalvikVM的区别

最后更新于:2022-04-01 11:18:04

## 一、系统框架 ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-20_571714ea8e95e.jpg "") 1.Anroid大致分为四层结构,五块区域 1)应用程序层(Applications) 所有安装在手机上的应用程序都属于这一层。 2)应用程序框架(Application Framework) 提供大量的API供开发人员使用,Android自带的一些核心应用就是使用这些API完成的。 3)函数库(Libraries) —Surface Manager:管理对显示子系统的访问,并可以对多个应用程序的2D和3D图层机提供无缝整合 —Media Framework:基于PacketVideo的OpenCORE,支持播放和录制多种流行的音频和视频格式,以及查看静态图片 —SQLite提供数据库的支持 —OpenGL|ES提供3D绘图的支持 —FreeType:位图和向量字体显示 —WebKit:Web浏览器引擎,为Android浏览器提供支持 —SGL:底层的2D图形引擎 —SSL:在Android中通信实现握手 —C/C++(libc)库来为Android系统提供了主要的特性支持 4)运行时(Android Runtime) 由两部分组成:Android核心库集和Dalvik虚拟机。核心库集提供了Java语言核心库所能使用的绝大部分功能,Dalvik虚拟机负责运行Android应用程序。 5)Linux内核 Linux内核提供安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务,Linux内核也是系统硬件和软件叠层之间的抽象层。 ## 二、JVM和DalvikVM的区别 DalvikVM: Dalvik虚拟机是Google的用于移动设备的Android平台的一个主要部分。虚拟机可运行Java平台应用程序,这些应用程序被转换成紧凑的Dalvik可执行格式(.dex),该格式适合内存和处理器速度受限的系统。 ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-20_571714eac50df.jpg "") ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-20_571714eae98df.jpg "") ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-20_571714eb0a44a.jpg "") **区别:** 1.Dalvik并未完全遵守JVM规范,两者也不兼容。 2.JVM虚拟机运行的是字节码,Dalvik运行的是其专有的dex(Dalvik Executable)文件。 3.JVM直接从.class文件或者jar包中加载字节码然后运行,而Dalvik则无法从.class文件或jar包中加载字节码,而是通过DX工具将应用程序所欲的.class文件编译成.dex文件,然后运行.dex文件。 4.Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。 5.Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。 ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-20_571714eb2a8a3.jpg "")
';