Android背景
Android是基于Linux内核的开源移动端操作系统。Android操作系统最初由Andy Rubin开发,它的底层是使用C/C++实现的,而它的应用层是使用Java/Kotlin实现的。2005年8月Android被Google收购注资。2007年11月,Google以Apache开源许可证的授权方式,发布了Android的源代码。
Android系统平台架构
Android 系统架构图
对Android系统架构的简单理解
- Linux内核: 涉及底层驱动的及系统服务,比如安全性,内存管理以及进程管理等
- Libraries(库) + Android Runtime(Android运行时) :Android给我们提供了一组C/C++库,为平台的不同组件所使用,而Android Runtime则由核心库和运行时虚拟机构成的。
- Application Framework(应用程序框架层) :该层相当于是Android系统给我们提供的API,是我们在程序开发时必须了解的,它是Android系统对Libraries库的C/C++接口进行一层Java的封装。
- Application(应用程序层): 我们开发的应用程序就是在这个层次上进行的,包括系统内置应用程序,使用的是Java/Kotlin语言
Android系统的虚拟机
Android系统的应用层是基于Java开发的,而Java则是基于JVM虚拟机运行的,所以Android系统也需要一个虚拟机作为运行时环境。但Android使用的并不是JVM而是Dalvik或ART。
Dalvik虚拟机
在Android 4.4 之前,Android系统使用Dalvik虚拟机作为运行时环境,它在Android系统中与JVM相比的优势:
- Dalvik是寄存器虚拟机,而JVM是堆栈虚拟机,寄存器在内存中有更快的运行速度,并且Android是ARM架构的,拥有更多的寄存器。
- Dalvik会为每个应用创建一个虚拟机实例,以防止虚拟机崩溃时所有应用死机。
- 相比.class字节码,运行于Dalvik的.dex字节码会将多个文件整合成一个,减少整体的文件尺寸,I/O操作,也提高了类的查找速度(但类的常量池也会合并)
Dalvik虚拟机的运行流程:
ART虚拟机
Android Runtime(缩写为ART),在2013年作为Android 4.4系统中的一项测试功能正式对外发布,Android 5.0开始作为正式的运行时库取代了以往的Dalvik虚拟机。
ART与Dalvik的区别:ART在安装应用时,就把字节码翻译成了机器码,而Dalvik则是在应用运行时一边翻译一边运行,所以ART安装的应用运行速度快,但占用内存大!