Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
嵌入式技术综合讨论
[转帖]Android 4.4 ART :被忽略的重大预示
发布于 2013-12-04 21:25:10 浏览:3003
订阅该版
【转自开源中国】虽然跟本论坛没有太大关系,不过看到了一个叫ART的玩意,貌似有点重名呢,有点意思。 [s:175] 也许人们在得知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世纪? 最 后,据我了解,ART这个项目其实在2年前就已经开始了,只不过之前一直不受关注,只有零星的报道,毕竟那时候只是个“梦想”而已。可是现在,4.4版本 以“开发者预览”的形式将其呈现出来,目的就是让手机厂商、应用开发者等进行测试,从而帮助该项目进行改进。从我得到的信息来看,ART的稳定性并不差, 完全可以胜任日常使用。这也是为什么我会说,4.4的ART选项可能预示着5.0系统会出现重大改变---彻底从Dalvik转换到ART。其实从实际情 况分析,这样的转换也是合情合理的。Java需要虚拟机进行“二次转换”才能跑是因为要实现跨平台。可是对Android来说,从某种意义上已经是单一平 台的设备了,再使用两次“转换”意义不大。为了提升运行效率,重新设计运行时方法合情合理,而且没有任何副作用。如果真的是这样的话,iOS开发人员和其 用户所引以为傲的流畅体验将不再是一个值得炫耀的东西,因为这种体验将随着登陆Android平台变得“大众化”。再加上Android市场占有率的巨大 优势、Google Play商店的崛起,iOS设备还能靠什么支撑自己的高价策略?Apple身上的光环已经随乔布斯的离去而开始退去,iPhone走下神坛只会是时间问题。到了那个时候,iPhone NC中的C也就只能代表Cheap了。 本人并非计算机专业出身,专业背景是商科+IT技术。因此对技术的理解可能有偏差,如文中观点有错,欢迎指正。 Android 4.4上的测试版新虚拟机ART和老的Delvik之间的实际差距有多大呢?国外有网友就发布了两个虚拟机的简单对比,发现应用启动速度互有胜负,但在应用切换方面明显就是ART更有优势。 Android 4.4拥有一个非常重要的隐藏功能,那就是正在测试当中的ART Java虚拟机,Google希望未来让它来替代老的Dalvik,让Android系统变得更流畅。这一个新的虚拟机在业内受到广泛关注,那么新虚拟机 的表现又如何呢?近日国外有网友在Reddit上传了两个视频,为大家带来了不同虚拟机在启动和切换应用的简单对比。 用于对比的是两台从系统(ASOP Android 4.4 ROM)到安装的应用都相同的2013版Nexus 7,而运行环境则分别是ART和Dalvik。
查看更多
4
个回答
默认排序
按发布时间排序
zhaowu
2014-01-17
这家伙很懒,什么也没写!
之前看到过新闻说在google x lab 里正在研究 ART,然后网上搜了一下基本没找到更多的讯息。居然从楼主这里证实了。
haitao52198
2014-01-18
这家伙很懒,什么也没写!
>之前看到过新闻说在google x lab 里正在研究 ART,然后网上搜了一下基本没找到更多的讯息。居然从楼主这里证实了。 --- 我也是在博客园看到的,就转到这里了,主要是因为ART和RTT的某个东西重名了
iamyhw
2019-10-10
这家伙很懒,什么也没写!
这种转变值得深思,标记一下
撰写答案
登录
注册新账号
关注者
0
被浏览
3k
关于作者
haitao52198
这家伙很懒,什么也没写!
提问
42
回答
260
被采纳
0
关注TA
发私信
相关问题
1
开新板块了! 迅速占领第一帖!
2
有想玩点阵做电子钟的没?手上有屏
3
LED点阵屏硬件保护研究笔记
4
USB相关、Android、Arduino
5
Arduino即将发布ARM平台新产品
6
关于开关电源的同步整流技术
7
rt_thread_wizard使用教程
8
[转]开源如何盈利
9
FM3系列MCU的IO操作笔记。
10
转一个xoolhaha 的寻一起开发的帖子
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【NXP-MCXA153】 定时器驱动移植
2
GD32F450 看门狗驱动适配
3
【NXP-MCXA153】看门狗驱动移植
4
RT-Thread Studio V2.2.9 Release Note
5
CherryUSB的bootuf2配置
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
9
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部