IT痴汉的工作现状22-由Dalvik虚拟机引发的口水战
Dalvik是啥呢?
从未知道冰岛有Dalvik这么一个重要的村庄。直到Dan Bornstein将自己为Android系统编写的进程虚拟机命名为Dalvik后才被我所知。
它是Android系统独有的,主要作用就是使得已转换为 .dex(即Dalvik Executable)格式的Java应用程序在Android系统上执行。
它是Java执行在Android系统的基础。
那么问题就来了。有标准的Java虚拟机JVM,为啥还要新造一个Dalvik呢?
答案非常简洁,就是为了更加适合资源十分有限的嵌入式系统。
或许Google进行了非常多努力使得Dalvik比JVM在Android上更高效。可是业界最终还是不惬意,觉得Dalvik拖慢了Android的速度。
在Android4.4中Google进行了另外的尝试。那就是ART(Android Runtime)的技术预览。我当然也进行了切换(在设置--开发人员选项---选择执行环境)。
结果是原来的应用会又一次编译(代码预读取编译),变得非常大,速度有多大的提升。我用肉眼去看还没有太大区别,但官方发布的数据说提升还是非常大的。
只是有些应用还不支持ART。在Android5.0中Google挥起大刀,最终将Dalvik砍掉。用ART全然将其替换掉。
Dalvik的口水战
一年曾经,我的闲暇时光是在玩微博中度过的。
有一天中午和齐天、周权午饭回来翻翻微博,看到“CSDN移动”发了这样一条消息:
【Java通向ObjC语言的桥梁:谷歌J2ObjC 0.7新版亮相】Google近日发布了开源命令行工具J2ObjC的最新版本号:J2ObjC 0.7。
J2ObjC全然开源。通过它。开发iOS应用仅仅需用Objective-C编写UI部分代码。其余功能均可用Java语言编写实现。
我对这种转换是不太感冒的,扫了一眼评论,一个id叫办公软件的评论我觉得有待商榷,他是这样说的:
“Android不是Java,无非是用了Java语法罢了,执行层面上和Java基本无关。”
我觉得哪里有些别扭。或许他说的执行层面上和Java基本无关指的的Linux Kernel?但我理解的执行层面是包括了应用的执行以及FWK。那么跟Java就逃不了关系了。我就回了一句:
“不是单单用了Java语法吧?上层应用是Java Applications,从下向上数第二层的Android Runtime中的Dalvik 虚拟机,都是Java的存在。请看Android系统架构。
另外,看看为什么google要提供NDK。”
没想到我就是简单的描写叙述一下我的理解,却造来了“办公软件”的指责:
“harmony的类库, 照你这么说,我当年用J#包装了一堆Java API, 也算是Java?
请不要这么不专业.”
我抱着心平气和讨论的态度,顺着他说:
“兄弟,事实上我们俩能够心平气和的讨论一些问题。J#是微软用Java的语法来吸引原Java开发人员,这个确实如你所说,仅仅是Java的语法,可是J#使用的.Net执行时,仍是一种虚拟机。”
对方的傲慢简直令人做呕:
“非常遗憾,对于一些连名词都搞喜欢混淆的同学,我的面试时间仅仅给3分钟”
我一直压着火。继续回着:
“请问。我哪个名词搞混淆?你说话之前不看人家的上下文么?还是没理解别人说的重点在哪里?你这种面试官,偶一般仅仅给一分钟。还摆上老资格了,谁没当过呀。。。呵呵”
“或许没猜错的话,你一直在觉得我说的是“JVM = Dalvik VM”,可是我主要表达的是。Dalvik VM 是一种Java 虚拟机。不管如何,我这样表达应该是成立的。
欢迎图草。”
结果话题有转到了JVM与Dalvik上面了。对方也回了三条:
“Dalvik VM压根就不符合JVM规范,你却说这是Java虚拟机? 照你这么说,J#跑在CLR上,CLR也是Java虚拟机?”
“你主要表达的是,"Dalvik VM 是一种Java 虚拟机",奇葩啊奇葩, 哪门子来的Java虚拟机哟,”
“JRockit是一种Java虚拟机, J9 是一种Java虚拟机,ZingVM是一种Java虚拟机,Hotspot是一种Java虚拟机, 为啥这么定义? 由于他们follow了Java虚拟机的规范. Dalvik VM是Java虚拟机吗? 预计仅仅有你和你看的那边书的作者才这么觉得”
后来的争论就在“Dalvik是不是一种Java虚拟机”这个命题上了。
让我想到了白马非马论,“求马,黄黑马皆可致,求白马,黄黑马不可致”。
但他的一些说法还是值得肯定的。比方:
“Harmony的虚拟机,就是个全然符合JVM标准的虚拟机. Android用了Harmony的类库,可是Android 的VM,和JVM标准全然不搭界.”
齐天也看到了这场争吵。对我说,对方是个上了邪路的人。与他争论有和意义?
參考:
1.wikipedia中对Dalvik的描写叙述:
Dalvik is the process virtual machine (VM) in Google's Android operating system, which, specifically, executes applications written for Android.
IT痴汉的工作现状22-由Dalvik虚拟机引发的口水战的更多相关文章
- IT痴汉的工作现状11-程序猿的烦恼
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/lincyang/article/details/25535181 痴汉们事实上是非常 ...
- IT痴汉的工作现状24-Just for fun
早在大学一开始我进行Linux的学习了,那时大家都跟Windows Xp玩的火热,而我从来就不走寻常路,在XP上安装了VMware虚拟机搞起了Linux的探索.这简直让我眼界大开,每天都和那么多的国外 ...
- IT痴汉的工作现状13-吓唬电话
那是一个普通的周末上午,稍微阴沉的天,使得暑气消退了好多.刚吃过早饭,我懒懒的浏览着CSDN论坛上有趣的问题和答案. 突然电话响起.是一个陌生的号码.我像往常一样接起电话,""您好 ...
- IT痴汉的工作现状21-Android开发前景论
饭间闲谈 齐天.周权和我是饭搭子.总是边吃边聊一些与技术.汽车和女人相关的话题. "前阵子Nokia裁员之事不知道完没完?这艾洛普挺能作啊."我吃着香喷喷的过桥米线说." ...
- IT痴汉的工作现状25-技术之养成
要想成为技术大牛,除了天赋以外,更与后天的刻苦努力分不开.伟仔我天生愚顿.工作多年后仍与大牛相差甚远,更加觉得技术的养成是一个异常困难的过程. 是我不用功吗?我不这样觉得.伟仔尽管是个懒人,但对于技术 ...
- IT痴汉的工作现状18-思维定式
前阵子周权出差给我带回来一个净水器,是直接安装在水龙头上的,小巧方便.我依照安装说明一步一步组装好了,感觉说明书还是比較靠谱的,没有遇到意外.但我发现它的净水.原水的button好像是有问题.它的结构 ...
- IT痴汉的工作现状16-职业发展
回首多年来的工作经历.发现自己的职业发展真是太平庸只是了.就像我的名字张伟,平淡无奇.而我,还是几年前刚入职模样的我,仍然像个涉世未深的矛头小子,相信技术能够改变世界.真是一入IT深似海,为伊消得人憔 ...
- IT痴汉的工作现状42-Android越用越慢?立场不同,谈何信任!
大海和我一次闲聊中问,你做安卓这么久.能给我解释一下为什么安卓手机用半年后就变慢吗? 呃... 伟仔还真是头一次听说这么精准的半年就慢的说法. 大海继续说."能不能是厂家有益设置的?哦,也不 ...
- IT痴汉的工作现状36-做好准备再上路
软件开发流程管理是採用瀑布式好还是敏捷好? 如今非常多人会选择敏捷.由于眼下的现状是需求的变化是一天一个样,这是当前(移动)互联网的飞速发展所带来的.当我们仍採用原始的先做全盘的计划.然后在按部就班的 ...
随机推荐
- python学习小结-字典key,val互换
第一种,使用压缩器: >>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4} >>> zip(m.values(), m.keys()) ...
- ios 布局 素材 待整理
https://www.cnblogs.com/fxwl/p/5961372.html div区域 8.盒子模型的相关属性 margin(外边距/边界) border(边框) padding(内边距/ ...
- MxCAD5.2 20181022更新
下载地址: http://www.mxdraw.com/ndetail_10108.html 1. 开放VIP功能,无需购买即可使用 2. 修正一些图纸打开和保存出错的问题 3. 修改填充命令,对某些 ...
- java基础学习之垃圾回收机制
回收过程: 1.发现无用的对象 2.回收无用对象占用的内存的空间. 垃圾回收相关算法: 1.引用计数法 堆中每个对象都有一个引用计数.被引用一次,计数加一.被引用变量值变为null,则计数减一. 到计 ...
- jquery 五星评价(图片实现)
1111 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...
- 2n皇后 - 回溯
题目地址:http://www.51cpc.com/web/problem.php?id=1172 Summarize: 1. 递归回溯: 2. 先扫完一种皇后,再扫描另一种: 3. 循环输入: 4. ...
- Vijos P1334 NASA的食物计划
解法 二维费用01背包问题 解法就是先枚举物品再枚举条件这里两个条件所以要枚举两个for 代码 #include <bits/stdc++.h> using namespace std; ...
- <SpringMvc>入门三 参数绑定
1.get请求 <%--请求参数的绑定--%> <%--get请求参数--%> <a href="/param/testParam1?username=tom& ...
- eclipse 中导入 MyBatis 的源码
(1)选中 Mybatis-3.2.2.jar ,右击,在弹出的快捷菜单中选择 “Properties” 选项,进入属性界面. (2)进入属性界面后,选中 “Java Source Attachme ...
- Linux:RHEL7图形界面转文字
1.7 Systemd初始化进程 Linux操作系统开机过程首先从BIOS开始→进入"Boot Loader"→加载系统内核→内核进行初始化→启动初始化进程.初始化进程作为系统第一 ...