为什么Android4.4采用ART取代Dalvik非常重要?

移动开发
Android4.4采用ART取代Dalvik,简单理解就是Android程序运行的根本机制改变了,程序会启动地更快,而且会更省资源。表现在用户体验上,就是Android更流畅了,同时续航能力显著增加。这种变化不是小打小闹,而是非常可观的大变化,根据AndroidPolicy上专项文章的说法,这个改变可以让部分Android程序的启动加速50%,理论上待机时间也会显著增加。

[[89808]]

也许人们在得知Google新发布的Android系统版本名称为4.4时都不以为然,认为这个升级十分微不足道,只升级了0.1的版本号,启用了KitKat的新代号而已。就算是Google官方,对待此次升级也是颇为低调。可是如果了解了Android 4.4所暗示的变化时,我觉得所有Android开发者和其他利益相关者都必须打起十二分精神对看待Android 4.4了。

当官方发布Android KitKat 4.4时,我简单浏览了一下Google+上官方账户发布的对该系统的简介,觉得值得关注的只有两点:1)对内存的需求降低了,2)支持更多的 Sensor。综合起来,就是为可穿戴设备开路。确实没有更多的亮点可言,只是顺应了大的发展方向而已。随后我图个性价比,预定了Nexus 5,到手试用后第一感觉是“物美价廉”,对系统本身没有太大的感觉。

后来为了进行开发测试,我打开了“开发者模式”,其中有一个选项引起了我的注意,叫“选择运行时环境”,这是之前版本都没有的选项,可选项有Dalvik和ART(默认是Dalvik),Dalvik即Android一直以来使用的运行方式。为了弄明白这到底是个什么东西,我试着在Google上搜了一下,直接改变了我对4.4版本存在意义的看法。

简单地说,就是Android程序运行的根本机制改变了,程序会启动地更快,而且会更省资源。表现在用户体验上,就是Android更流畅了,同时续航能力显著增加。这种变化不是小打小闹,而是非常可观的大变化,根据AndroidPolicy上专项文章的说法,这个改变可以让部分Android程序的启动加速50%,理论上待机时间也会显著增加。

根据该文后一些“小白鼠”们的评论,他们在试用了ART运行模式后,都体会到了其带来的速度提升和续航提升,而且效果非常明显。这说明这个尚处在实验阶段的ART模式已经能够带来明显的好处,唯一不足的是,作为Beta版,稳定性欠佳。

众所周知,Android是基于Java语言的,iOS是基于Obejctive-C。表现在手机和应用程序运行机制上,Java的代码实际上需要 两次“转换”才能最终以用户可看的程序跑起来,一次发生在开发者发布安装包前,使用开发者自己机器的CPU,另一次在用户启动APP前,使用手机的 CPU。而基于Objective-C的代码只需要一次这种“转换”,在开发者发布安装包前,所以只占用开发者机器的CPU时间。

我们假设同样代码量的程序,需要同样多的CPU时间,进行从代码到最终能跑的“转换”。那么把这种工作全部放在了开发者的机器上进行的iOS显然就 更具优势,因为用户在打开APP之前不需要再浪费时间进行“转换”,这部分时间由开发者“忍受”了。而Android程序启动相对较慢就是因为第二次“转 化”需要在打开程序时进行引起的。这两种机制是历史的产物,总体上不能说谁好谁坏,只有适用范围的问题。考虑到手机属于体验要求比较高的设备,显然iOS 这种机制更合适。所以这两种机制带来的后果就是,iOS总是比Android快,而且是天生的。

现在ART的出现代表了什么?代表了Android在启动程序时将像iOS一样,无须进行第二次“转换”工作了。ART把第二次“转换”所要使用的 时间放在“程序安装时”进行,而不再是“程序启动时”进行。这样做虽然安装程序时要慢一点,但是在使用时就会明显快起来。按我的浅薄理解,就是把以前每次 启动程序都要做的工作改成“一次性”的工作,放在用户不那么在乎的安装时完成。这从长期来看也降低了总体的“转换”时间。

试想一个程序,安装后你使用了N次。按原先Dalvik的方法(术语叫Just-in-time compilation),N次启动就需要进行N次这样的“转换”。但是按照ART的方法(术语叫Ahead-of-time compilation),不管这个程序你使用几次,都只发生一次“转换”。这也解释了为什么使用ART会降低CPU的使用频率,进而降低电量的使用。

当然,ART也会带来其他的负面影响。其一是增加程序安装所需的时间,只是目前还不知道具体会是多少。考虑到其他技术因素,这个时长的增加可能比我 为了讲解方便所举的“第二次转换”所需的时长要长一点,但是肯定不会长到无法忍受的地步。据我查到的资料,这个变化对小程序几乎可以忽略不计,受影响的应 该是以游戏为主的程序,因为他们本身代码量就更大。不过这跟你获得的收益也是成正比的,因为ART可以让你在打开游戏时省更多的时间。如果将来都是“后台 安装”的话,对用户体验更是微乎其微,你去看几个新闻这时间就过去了。

第二个缺点是会使安装后的文件占用更多的空间,据称是10%-20%的增长。不过不要紧,这个增长指的是对“代码”部分文件的增加,比如一个 100M的游戏,可能代码只有20M,剩下80M是图片和音乐等文件,所以即便增加20%的安装所需空间,也只不过多了4M而已,在动辄16G,32G, 甚至128G容量的智能手机面前,影响更是微乎其微。

据我了解,ART这个项目其实在2年前就已经开始了,只不过之前一直不受关注,只有零星的报道,毕竟“计划不等于现实”嘛。可是现在Android 4.4版本以“开发者预览”的形式将其呈现出来,目的就是让手机厂商、应用开发者等进行测试,从而帮助该项目进行改进。从我得到的信息来看,ART的稳定 性并不差,完全可以胜任日常使用。

这也是为什么我会说,Android 4.4的ART选项可能预示着Android 5.0系统会出现重大改变——彻底从Dalvik转换到ART。 如果真的是这样的话,iOS开发人员和其用户所引以为傲的流畅体验将不再是一个值得炫耀的东西,因为这种体验将随着登陆Android平台变得“大众化”,再加上Android市场占有率的巨大优势、Google Play商店的崛起,iOS设备还能靠什么支撑自己的高价策略?

责任编辑:徐川 来源: 36氪
相关推荐

2013-11-28 15:03:56

Android4.4ART模式省电原理

2013-11-28 15:25:37

Android4.4ART模式苹果

2019-07-31 15:10:25

云计算虚拟化硬件

2021-09-24 10:37:21

5G物联网技术

2013-11-28 14:01:55

Android4.4ART模式

2021-04-22 15:59:14

数据中心云计算结构化布线

2010-05-10 15:09:03

Unix文件

2013-11-11 15:31:32

虚拟机Android Run

2023-02-20 14:24:56

AndroidDalvikART

2009-09-04 10:12:15

REST标准REST-*

2015-12-02 11:03:45

OpenStackOPNFV调查报告

2013-03-14 17:18:48

开源项目开源

2013-11-28 13:53:08

Android4.4ART运行模式

2013-11-28 13:47:37

Android4.4ART模式

2011-06-13 11:57:30

飞康存储虚拟化

2013-11-12 15:03:49

2013-10-16 09:58:52

Nexus 5Android4.4

2018-03-28 15:12:33

云安全防火墙

2012-12-19 10:04:24

开始屏幕Windows 8 P

2019-06-03 13:36:20

库克AR苹果
点赞
收藏

51CTO技术栈公众号