导语:Android下一代操作系统“ L”对开发者意味着什么?ART模式能否让应用的体验超越苹果?

刚刚结束的 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的开始和结束时会短时间暂停代码的执行。(2)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后,有什么要引起注意的地方?

答: 一,因为安装时进行了预先编译。应用安装的时间变长,安装后生成的文件变大。

二,如果以DexClassLoader的形式加载代码,第一次执行时间也会变长。

三,对应用最好进行兼容性测试。大多数应用无需修改,但如果应用程序本身对Dex文件做了处理,比如进行了加壳,可能有兼容性问题。

总体来说,Android L十分值得我们期待,今年秋天Google将推出正式版本,不过鉴于目前Android系统碎片化的现状,当前大部分手机无法升级,只能购买新款手机。

Android L开发指南的更多相关文章

  1. Android SDK 开发指南

    Android SDK 开发指南 视频详解 以下视频是对融云 Android SDK 开发使用的详细讲解,您可以在阅读文档时配合学习.   更多视频教程如下: CSDN 融云 Android SDK ...

  2. Android NDK开发指南---Application.mk文件和android.mk文件

    https://android.googlesource.com/platform/development/+/donut-release/ndk/docs/OVERVIEW.TXT https:// ...

  3. 【原创】轻量级即时通讯技术MobileIMSDK:Android客户端开发指南

    申明:MobileIMSDK 目前为个人维护的原创开源工程,现陆续整理了一些资料,希望对需要的人有用.如需与作者交流,见文章底签名处,互相学习. MobileIMSDK开源工程的代码托管地址请进入 G ...

  4. Android NDK开发指南(二)Android.mk文件

    http://www.cnblogs.com/yaozhongxiao/archive/2012/03/06/2382225.html 1.  概述 Android.mk文件是用来描述build sy ...

  5. Android NDK开发指南(一) Application.mk文件

    http://www.cnblogs.com/yaozhongxiao/archive/2012/03/06/2381586.html Application.mk目的是描述在你的应用程序中所需要的模 ...

  6. 腾讯信鸽推送Android SDK快速指南

    信鸽Android SDK是一个能够提供Push服务的开发平台,提供给开发者简便.易用的API接口,方便快速接入.目前支持Android 2.2及以上版本系统.本文档将引导用户以最快的速度嵌入信鸽SD ...

  7. 基于虹软人证核验 2.0 Android SDK开发集成入门

    一.功能介绍虹软人证核验 2.0 SDK(以下简称SDK)包含人脸检测.人脸跟踪.人证核验等能力,主要实现人证的1:1比对.其中暴露对外的功能方法有:active 引擎激活init 引擎初始化inpu ...

  8. Chromium Graphics: Android L平台上WebView的变化及其对浏览器厂商的影响分析

    原创文章.转载请以链接形式注明原始出处为http://blog.csdn.net/hongbomin/article/details/40799167. 摘要:Google近期公布的Android L ...

  9. android studio 开发环境配置

    android studio 开发环境配置 参考: 第一次使用Android Studio时你应该知道的一切配置 https://www.cnblogs.com/qianguyihao/p/43909 ...

随机推荐

  1. Hyperledger Fabric CA User’s Guide——配置设置(四)

    配置设置 Fabric CA提供了三种方案去配置Fabric CA服务端和客户端,优先顺序是: CLI flags(标识) 环境变量 配置文件 在本文档的其余部分中,我们将对配置文件进行更改.但是,可 ...

  2. 笨办法学Python - 习题6-7: Strings and Text & More Printing

    目录 1.习题 6: 字符串(string) 和文本 2.加分习题: 3.我的答案 4.习题总结 5.习题 7: 更多打印 6.习题总结 1.习题 6: 字符串(string) 和文本 学习目标:了解 ...

  3. PHP XXE漏洞

    PHP xml 外部实体注入漏洞(XXE) 1.环境 PHP 7.0.30Libxml 2.8.0Libxml2.9.0 以后 ,默认不解析外部实体,对于PHP版本不影响XXE的利用 2.原理介绍 X ...

  4. java并发编程原理

    一.java内存模型 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样底层细节.此处的变量与Java编程时所说的变量不一样,指包括了实例字段 ...

  5. shell--read命令

    read命令 -p(提示语句) -n(字符个数) -t(等待时间) -s(不回显) 1.基本读取read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说).得到输入后,read命令将数 ...

  6. 华策光通信: LED可见光通信室内定位项目获最具投资价值奖

    3月21日上午,一场持续3个多小时的O2O领域的创业DemoShow在深圳科兴科学园会议中心激烈上演.来自华策光通信的基于LED可见光通信室内精准定位项目作为LED与室内定位领域的跨界融合项目经过精彩 ...

  7. 软件工程第十周psp

    1.PSP表格 2.进度条 3.饼状图 4.折线图

  8. [BUAA软工]第零次博客作业---问题回答

    [BUAA软工]第0次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第0次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...

  9. 安卓端通过http对Mysql进行增删改查

    各类it学习视频,大家都可以看看哦!我自己本人都是通过这些来学习it只知识的! 下面是视频链接转自:http://www.cnblogs.com/yzxk/p/4749440.html Android ...

  10. 项目Beta冲刺(团队)第六天

    1.昨天的困难 可以获得教务处通知栏的15条文章数据了,但是在显示的时候出了问题. 私信聊天的交互还没研究清楚 2.今天解决的进度 成员 进度 陈家权 研究私信模块 赖晓连 研究问答模块 雷晶 研究服 ...