刚刚结束的 Google I/O大会上,Android下一代操作系统“ L”带来很多惊喜。新系统运行更快,节能更多。
然而,开发者对新系统也有很多疑问,比如新的运行模式ART对开发者意味着什么?ART该模型能让应用体验超越苹果吗?360***技术专家任欢认为是ART运行方式下“L”的性能提升在15%到80%之间。同时,ART优化垃圾回收方法,实施效率高于现行Dalvik增加了50%以上,减少了垃圾回收带来的卡顿,使应用运行更加顺畅。

Android L 运行界面
在安全方面,ART和Dalvik相比之下,安全模型和基本机制没有改变。ART有一些细节可以改进,有助于安全。例如,益的。dex对文件进行了更严格的验证。
以下是开发者在360论坛上提问最多的6个问题,360***技术专家任欢回答说,希望能帮助开发者更好地了解这个新系统。
问题1. 为什么ART能提高性能吗?
答:主要来自两个方面。
一,预先(Ahead-of-time)编译。Android在应用开发过程中Dex文件包含Java的Byte Code。在Android L以前,默认使用Dalvik虚拟机。应用程序运行时,Dalvik对Java Byte Code解释执行或执行Junt-In-Time的编译。在Android L应用安装时,使用系统工具dex2oat安装包中的Dex文件编译为ELF执行格式文件(.oat文件)。应用运行时直接执行二进制指令。
二是优化垃圾回收(garbage collection)。垃圾回收主要有两种:(1)gc_concurrent。执行时,Dalvik会在本次gc代码执行将在开始和结束时短时间内暂停。gc_for_alloc。执行时,会长时间中断Java代码运行ART里,执行gc_concurrent代码只会暂停一次。gc_for_alloc时,中断Java代码运行的时间大大缩小了。总体上讲,ART垃圾回收占用的费用比Dalvik减少50%以上。减少垃圾回收带来的卡顿,使应用运行更加顺畅。
问题2. 应用开发者需要做什么适应工作来支持ART。例如,重新编译、打包
答:不需要绝大多数开发者。无论虚拟机是否是虚拟机。Dalvik还是ART,安装包中包含的仍然是Dex文件。由Dex将文件编译成二进制文件的工作是安装在设备上的系统工具dex2oat完成的。
问题3. Android的应用在ART里面运行后,开发者仍然可以Java层次调试?
答:是的。事实上,应用程序安装后,编译生成.oat原始文件包含在文件中Dex文件。保留Dex文件有两个原因:一是需要Dex支持内部关于类的信息Java反射等操作。二、调试时使用Dex调试信息。因此,编译生成.oat文件,始的文件Dex文件的两倍以上。
问题4. 用ART之后,性能最终能提高多少?
答:取决于具体的应用。在Google I/O上,Google给出的例子是增加两倍以上。
ART经过实际测试,性能提高了15%到80%。广泛使用CPU性能提升明显。但是,如果应用程序的时间主要花在调用系统上API,提升会更小。因为很多系统。API代码主要在底层.so里面。
问题5. ART安全性有没有提高?
答:ART和Dalvik相比之下,安全模型和基本机制没有改变。ART有一些细节可以改进,有助于安全。例如:一、安装时对dex文件得到了更严格的验证。二、纠正Dalvik一个长期存在的对象模型问题:如果没有访问限制(即无用),一个类中的方法Public,Private,Protected描述),Java规定是package-private方法不一样package子类无法访问和重载。Dalvik一直允许子类重载package-private的方法。ART修改,行为和Java标准一致。
问题6. Android L使用ART之后,应该注意什么?
A: 1,因为安装是预先编译的。应用程序安装时间更长,安装后生成的文件更大。
二,如果以DexClassLoader加载代码的形式,***次执行时间也会变长。
三,对应用***进行兼容性测试。大多数应用程序不需要修改,但如果应用程序本身是对的Dex加壳等文件,可能存在兼容性问题。
总体来说,Android L值得期待的是,今年秋天Google正式版本将推出,但鉴于目前Android目前大部分手机无法升级系统碎片化,只能购买新手机。