设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 Google 查看内容

Android 4.4 ART:被忽略的重大预示

2013-12-5 09:50| 发布者: joejoe0332| 查看: 3748| 评论: 0|原作者: chouzhilou.com|来自: chouzhilou.com

摘要: 也许人们在得知Google新发布的Android系统版本名称为4.4时都不以为然,认为这个升级十分微不足道,只有0.1而已。就是安卓官方,对待此次升级也是颇为低调。可是如果了解了4.4所暗示的变化时,所有Android开 发者和其 ...
  也许人们在得知Google新发布的Android系统版本名称为4.4时都不以为然,认为这个升级十分微不足道,只有0.1而已。就是安卓官方,对待此次升级也是颇为低调。

  可是如果了解了4.4所暗示的变化时,所有Android开 发者和其他利益相关者都必须打起十二分精神对看待4.4了。因为这次升级可能是Android在用户体验上大进步的前奏。还有那些总是嘲笑Android 机器运行缓慢的iOS开发者和其用户也同样需要重新审视自己的行为了。因为这种嘲笑在不久的将来可能会失去其根基。不仅仅是直观体验上的,更是底层技术上 的。


  首先说一下,我也是一个Android开发者,目前还在美国上学,所以能够接触到一些一手资料,在国内搜了搜,几乎没有什么相关文章,所以在这里跟大家进行分享一下我的“发现”。


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


  后来为了进行开发测试,我打开了“开发者模式”,其中有一个选项引起了我的注意,叫“选择运行时环境”。可选项有Dalvik和ART,默认是 Dalvik,即Android一直以来使用的运行方式。这是之前版本都没有的选项。为了弄明白这到底是个什么东西,我试着在Google上搜了一下,这 一搜不要紧,直接改变了我对4.4版本存在意义的看法。仅仅因为这一个变化,4.4完全可以看做是5.0的前奏,或者说是试水版本。而且预示着5.0版可 能会带来重大改变,一个可以让苹果面临变成下一个诺基亚黑莓风险的改变。当然,我这话说的有点过,但是这个改变的重要性真的怎么说都不为过。


  下面我就详细介绍一下这个变化到底是什么,这些内容可能对没有编程背景的人无法马上理解,但是我会尽量说的通俗一点。简单地说,就是Android程序运行 的根本机制改变了,程序会启动地更快,而且会更省资源。表现在用户体验上,就是Android更流畅了,同时续航能力显著增加。而且这种变化不是小打小 闹,而是非常可观的!根据AndroidPolicy上专项文章(http://www.Androidpolice.com/2013/11/06/meet-art-part-1-the-new-super-fast-Android-runtime-google-has-been-working-on-in-secret-for-over-2-years-debuts-in-kitkat/) 的说法,这个改变可以让部分Android程序的启动加速50%,理论上待机时间也会显著增加。根据该文后一些“小白鼠”们的评论,他们在试用了ART运 行模式后都体会到了其带来的速度提升和续航提升,而且效果非常明显。这说明这个尚处在实验阶段的ART模式已经能够带来明显的好处,唯一不足的是,作为 beta版,稳定性欠佳。


  如果你想知道其原理是什么,请接着往下看,我会解释的很“大众化”。Android是基于Java语言的,iOS 是基于Obejctive-C的。很专业是吗?不要紧,你不需要懂它们有什么区别、孰优孰劣。看懂下面的就行!前者,即Java的代码实际上需要两次“转 换”才能最终以用户可看的程序跑起来,一次发生在开发者发布安装包前,使用开发者自己机器的CPU, 另一次在用户启动APP前,使用手机的CPU。而后者,即Objective-C的代码只需要一次这种“转换”---在开发者发布安装包前,所以只占用开 发者机器的CPU时间。如果我们假设同样代码量的程序需要同样多的CPU时间进行从代码到最终能跑的“转换”。那么把这种工作全部放在了开发者的机器上进 行的iOS显然就更具优势,因为用户在打开APP之前不需要再浪费时间进行“转换”,这部分时间由开发者“忍受”了。而安卓程序启动相对较慢就是因为第二 次“转化”需要在打开程序时进行引起的。这两种机制是历史的产物,总体上不能说谁好谁坏,只有适用范围的问题。考虑到手机属于体验要求比较高的设备,显然 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而已。跟你获得的好处相比微不足道。更何况是在单位存储空间价格极速下跌的21世纪?



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部