Android 移动应用开发
上QQ阅读APP看书,第一时间看更新

1.3.2 系统运行层

系统运行层通过一些C/C++库为Android系统提供主要的特性支持,例如SQLite库提供数据库的支持,OpenGL|ES库提供3D绘图的支持,WebKit库提供浏览器内核的支持等。这一层还有Android运行时库(AndroidRuntime,ART),允许开发者使用Java来编写Android应用。

Android移动应用有三种运行模式:JNI、Dalvik、ART。

1.JNI

JNI(Java Native Interface)提供了若干API实现了Java和其他语言(主要是C和C++)的通信交互,编译器把源代码直接编译成本地机器码,运行时充分利用系统性能,速度很快,但是程序不再具有跨平台的优点,安全性降低,本地代码的不当使用可能导致整个程序崩溃,开发难度较高。iOS的Object C和Android的NDK都是这种模式。

2.Dalvik

Dalvik虚拟机(Virtual Machine, VM)将软件首先编译成通用的字节码“byte-code”,再在具体的移动设备上转换成本地指令执行,每一个Android应用都能运行在独立的进程中,拥有一个自己的Dalvik虚拟机实例。中间层Dalvik管理所有Android硬件和系统服务访问,开发人员不需要考虑特定的硬件实现。与Java虚拟机(JVM)相比,Dalvik专门为移动设备定制,对手机内存、CPU性能有限等情况做了优化处理。AndroidL系统之前的版本采用Dalvik运行方式。

3.ART

Dalvik在运行的时候解释执行字节码,速度比较慢。Android4.4推出新的运行模式ART,运行的时候以机器码方式运行,充分利用系统性能;ART改进了内存回收机制,提升了系统运行速度。ART模式与Dalvik模式的最大区别就是ART使用预编译技术(Ahead-of-time Compile)取代即时编译技术(Just-in-time Compile)。编译操作只需执行一次,以后直接执行已经保存下来的本地码即可,系统性能显著提升,启动运行更快,触感反馈更及时,电池续航时间更长。但是需要占用额外的存储空间来存储本地码。移动设备的存储空间的增大使得ART模式得以推广。