Android在4.4就已推出新运行时ART,准备替代用了有些时日的Dalvik。不过当时尚属测试版,主角仍是Dalvik。 直到今年的Google I/O大会,ART才正式取代Dalvik。这个消息在科技界引起不小轰动,也吸引不少技术人员对它的“技术分析”。可惜这些“技术分析”不过是引用了官方的数据和图表而已。这一系列文章将对ART进行真正的技术分析。老规矩,分析前先进行简要介绍和制定学习计划。
ART的发布之所以引起大家的关注,是因为Andoid与iOS相比,一直被人诟病它的流畅性。Android的流畅性问题,有一部分原因就归结于它的应用程序和部分系统服务是运行虚拟机之上的,也就是运行在Dalvik虚拟机之上,而iOS的应用程序和系统服务都是直接执行本地机器指令的。除了使用ART替换Dalvik之外,我们也应当看到,Android从3.0开始,就不遗余力地改进系统的流畅性。例如,3.0增加了对应用程序2D UI的硬件加速渲染,也就是GPU渲染。在此之前,应用程序的2D UI一直都是使用软件渲染,也就是CPU渲染。又如4.1通过Project Butter,在UI架构中引入了VSYNC、Triple Buffer和HWComposer等技术,极大地提高UI的流畅性。
ART之所以会比Dalvik快,是因为ART执行的是本地机器指令,而Dalvik执行的是Dex字节码,通过通过解释器执行。尽管Dalvik也会对频繁执行的代码进行JIT生成本地机器指令来执行,但毕竟在应用程序运行的过程中将Dex字节码翻译成本地机器机器指令也会影响到应用程序本身的执行,因此即使Dalvik使用了JIT,也在一定程度上也比不上直接就可以执行本地机器指令的运行时。