android dalvik VM(android的vm, not jvm)

Life is short , play more!
本文来自lihao's Blog,转载请注明。

android操作系统目前成为和ios可以抗衡的嵌入式操作系统. 当前也出现了很多的android app程序员. android app程序员火热到燃烧. 到处都是招聘android app developer. 本人非专家,仅仅对app 开发有一点了解. 通过表面来看, android app也是通过java语言来开发,所以上手对于java程序员来说并不应该难. 但不知道app程序员是否对android 和 java有疑问.

由于我是一个业余选手,专家请绕开.所以adb到手机里探个究竟. 发现并没有java 这个jvm,奇怪了, 那为什么用java语言来编写app软件呢? 莫非还有其他的jvm,名字不是java 罢了?

带着疑问一顿搜索,才发现, android竟然没有使用jvm. 只有一个dalvik VM. 只是他可以将java的bytecode 转换成dalvik VM可以识别的bytecode,然后进行执行. 更多见 http://www.dalvikvm.com/.

dalvikvm 下面简称dvm, 是register-based virtual machine. 至于什么是register machine , 和常见的stack machine 有什么区别,本人也不懂. 请分别阅读 http://en.wikipedia.org/wiki/Register_machine 和 http://en.wikipedia.org/wiki/Stack_machine.

dvm是 Dan Bornstein ,google android工程师的一员. dvm的出现的目的,就是为了嵌入式而来, 有很少内存消耗,可以同时启多个实例. 而jvm是一个stack virtual machine.所以他们还是有显著区别的. 但google为什么自己开发一个dvm,而不是直接用jvm(j2me), 难道对jvm的效率不满意?

由于dvm提供了配套的工具,可以将java bytecode转换成dvm可以执行的字节码,这样dvm的程序开发对于java程序员就容易了许多.


发表评论

电子邮件地址不会被公开。 必填项已用*标注