android系统架构之虚拟机
android系统架构之虚拟机
1.android的系统架构:
1 application
2.Application Framework()
3.Library(android操作系统基础类库,android核心的包,DVM)
4 Linux(Linux内核)/
2.两种虚拟机的不同:(jvm虚拟机和dalvik vm)
1.编译后的文件格式:
jvm: .java--->.class-->.jar
dalvik vm: .java-->.class--->.dex--->.odex
2.基于的架构:
jvm: 基于栈架构
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够"一次编译,到处运行"的原因。
dalvik vm: 基于寄存器
其实在Android 4.2以前,安卓手机系统的应用程序均在Dalvik Java的虚拟机上运行,这种运行模式是还要依靠一个编译器来实现与应用程序的沟通。应程序每次运行时,都需要将程序内的代码即使转变为机器码才能运行,这无形中多附加了一道手续,这就造成了耗电相对较快、占用内存大、即使是旗舰机用久了也会卡顿严重的现象.相比较而言ART模式就很好的解决了这个问题,通过在安装应用程序时,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Dalvik模式要时时转换代码,实现高效率、省电、占用更低的系统内存、手机运行流畅。但凡事总有正反两面,ART在解决了该问题的同时,同时也有如:会占用略高一些的存储空间、安装程序时要相比普通Dalvik模式要长一些时间来实现预编译.
3.android系统:
在android系统中的一些核心类库,都是原生类的C++写的。例如:SQLite(数据库),Webkit(浏览器引擎),OpenGl(跨平台的接口,提供二维,三维的图像).
这一层的类库要被上层调用,就必须通过JNI的导出相应的接口函数。(JNI是JAVA平台的一部分,它允许JAVA语言和其他语言进行交互)。
一般来说android项目是基于SDK来搞的,但是当有了NDK(原生)。NDK的出现意外着最上层的应用的内容,可以穿越JAVA部署的框架,直接和底层暴露出来。
或者自行开发的C++库进行对话。当然在这些库中要包含JNI的接口。
MASH_UP思想:就是把应用搞成积木,要出效果的时候就东一块西一块 的拼起来,在这中有两个重要的点,一个是模块化:就是一个应用的功能要明确的被分封成
一个个边界明确的功能。每一个功能就像是一个黑盒,由预先定义的规则来描述其交互方式。二个是动态性:就是这些模块在独立运行的时候按照需求描述连接在一起,共同完成某项更大的功能。