美文网首页面试Android 开发经验集Android面试
Android面试一天一题(Day 27:ART & D

Android面试一天一题(Day 27:ART & D

作者: goeasyway | 来源:发表于2016-09-24 11:56 被阅读2444次

Android的每次版本升级都会带来一些改变,有些改变对于应用开发者来说并没有什么影响,但对于一些重大的改变,我认为Android开发是必要关注和了解一下的,有些改变也许会成为以后的Android进化方向。

面试时,我也比较喜欢问一些每个版本的不同之外,或者问问对方喜欢哪个新版本的特性(如Android 7.0的新特性)。如果比较了解每个版本的不同之外,一般来说都是实践经验比较丰富的,很多都是踩过坑的。而对新版本是否关注,其实也是一个检测一个人的学习热情最好的题目,兴趣是最好的老师,对Android有热情的人很容易从各种途径获知相关的资讯。而没有兴趣的人,仿佛与世无争,只要还能用原来的方式写代码就感觉没有学习新东西的必要。

如,ART和Dalvik,对于应用开发者来说是无缝过渡的,那么你不奇怪Google是怎么做到的吗?

面试题:知道什么是ART吗?它和Dalvik有什么区别?

我们知道到,计算机只能识别机器码,而Java的运行是将class字节码在JVM上进行解析最后再翻译成机器码执行。Dalvik虚拟机就是针对Android应用(.dex)的一个JVM,虽然他们实现和原理有很多不同,但我们可以简单这样理解。

每个应用的进程中都会有一个Dalvik虚拟机实例,它们是相互独立的,一个应用的Dalvik虚拟机Crash了并不影响其他的。APK应用在运行时,就需要Dalvik虚拟机去加载类并转化成机器码执行,这个过程就是JIT(Just-In-Time),虽然dex经过优化会生成一个odex文件,但这个过程仍然是运行时让编译器去解释字节码,相当于多了一道转换工序,对性能的影响不小。

在Android 4.4的版本里用户还可以选择是用Dalvik还是ART,而5.0后的版本直接换成了ART,把Dalvik删除了。

而ART(Android runtime)和Dalvik不一样的地方,就是想法去掉了中间解释字节码的过程,Dalvik是JIT的机制,与JIT相对的是AOT(Ahead-Of-Time),它发生在程序运行之前。如我们用静态语言(例如C/C++)来开发应用程序的时候,编译器直接就把它们翻译成目标机器码。这种静态语言的编译方式也是AOT的一种。

但是很多Android应用开发者并不知道有ART的存在,因为ART虚拟机并不要求开发者将自己的应用直接编译成目标机器码,而是在应用安装时由ART将应用的dex字节码翻译成本地机器码。所以你会发现,新的版本安装应用的时间比之前要长一点。

小结

关于ART方面,我也没有深入研究,有些东西确实是需要兴趣或者压力才能深入进去的。我们在应用层上开发,基本上也很少涉及Framework层以下的修改,但是我们一定要改变一些想法,如感觉和我们无关的就不舍得花时间看一看,然后故步自封偏安一隅。你不看清楚外面的东西,怎么确认和你有没有关呢?

相关文章

  • Android面试一天一题-goeasyway

    以下文章作者:goeasyway Android面试一天一题(1 Day) Android面试一天一题(2 Day...

  • Android面试一天一题(Day 27:ART & D

    Android的每次版本升级都会带来一些改变,有些改变对于应用开发者来说并没有什么影响,但对于一些重大的改变,我认...

  • MS(1):Android之架构篇

    一、架构相关 1、MVC,MVP,MVVM MS思考:Android面试一天一题(Day 33:Android开发...

  • 面试题

    最全的BAT大厂面试题整理答案Android面试一天一题(Day 37:一套高级工程师的面试题)Android面试...

  • MS(2):Android之基础知识篇

    二、组件 1、Activity----------1 MS思考:Android面试一天一题(3 Day):Acti...

  • MS(7):非技术问题篇

    一、GM问非技术问题汇总 MS思考:Android面试一天一题(Day 34:常去的Android相关站点) 说下...

  • MS(3):Android之机制原理篇

    五、重点机制原理 1、Handler机制 MS思考:Android面试一天一题(8 Day):Handler相关分...

  • MS(5):android之进阶篇

    七、自定义View MS思考:Android面试一天一题(Day 30:老外的自定义View面试题)MS思考:老外...

  • android Service 一些思考

    看了Android面试一天一题(1 Day),对Service 的一些总结与思考 作者原文章链接: http://...

  • MS(6):Java篇

    MS思考:Android面试一天一题(7 Day):Java相关 1.Switch能否用string做参数? 在J...

网友评论

  • 4b2d37f9514b:可不可以这样理解:
    Dalvik就是打开app的时候,把.dex的文件编译,转码,然后运行。
    ART就是在安装的时候直接编译转码了,打开app的时候直接运行。
    所以art安装的时候慢,但是打开app的时候快。
  • dean550:有用!之前都没从这个角度去思考过程序的运行。
  • 奈司:以前只是了解一点点,谢谢^_^

本文标题:Android面试一天一题(Day 27:ART & D

本文链接:https://www.haomeiwen.com/subject/fggtyttx.html