Dalvik Virtual Machine 是Android平台的基础。
Dalvik和标准Java虚拟机(JVM)之间的首要差别之一,就是Dalvik基于寄存器,而JVM基于栈。选择基于寄存器的方式是因为它对提前优化(ahead-of-time optimization)提供了更好的支持,而这对类似于移动电话这样的受限环境是颇有裨益的。另一份针对基于寄存器虚拟机和基于栈虚拟机更深入的比较分析指出,基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。
Dalvik和Java之间的另外一大区别就是运行环境——Dalvik经过优化,允许
在有限的内存中同时运行多个虚拟机的实例,并且每一个 Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
Android平台架构图:
如图所示:
应用程序包括:主页、联系管理、电话、浏览器、其他;
应用程序框架包括:Activity管理、窗体管理、内容提供者、视图系统、包管理、电话管理、资源管理、位置管理、通知管理。
库包括:表面管理、媒体框架、SQLite、OpenGL(3D开发库)、FreeType(字体引擎)、WebKit(网页浏览器引擎核心库)、SGL(2D图形引擎库)、SSL、libc、Android运行时(又包括核心库和Dalvik虚拟机)。
Linux内核包括:显示驱动、照相机驱动、内存驱动、Binder(IPC)驱动、键盘驱动、Wi-Fi驱动、音频驱动、电源管理。
作为Java开发者,最关系的可能是Android运行库(Android Runtime),它包括两部分:核心库和Dalvik虚拟机:
1.Android包括一组核心库(core libraries),他提供了 Java 编程语言的核心库中大多数可用功能。
2.每个 Android 应用程序运行在自己的进程上,有自己的 Dalvik 虚拟机实例。 Dalvik这样是为了使一个设备可以有效地运行多个虚拟机。 Dalvik VM 以被优化占用最小内存的Dalvik Executable (.dex)格式执行文件。VM 是基于寄存器的,并通过一个 Java 语言编译器的编译来运行,而这个Java编译器已经被内置的"dx"工具转成.dex 格式(DVM依赖LInux内核)。
3.Dalvik MicrosoftVM 依赖 Linux 内核获得基本功能,如线程处理和底层内存管理。
Android亦包含常见移动平台的关键性能,它已拥有一个良好的堆栈,包括蓝牙、EDGE, 3G和WiFi。在UI方面,支持OpenGL ES提供3D和类似于iPhone的界面管理(surface management)。
参考文章:
http://android.tgbus.com/Android/androidnews/200812/172535.shtml
http://news.csdn.net/n/20071114/110655.html
http://blog.csdn.net/jyfllzy/archive/2011/01/06/6119568.aspx
分享到:
相关推荐
Android中Dalvik(DVM)的详解 Dalvik是Google公司自己设计用于Android平台的Java虚拟机
1、 Android dvm 的进程和 Linux 的进程, 应用程序的进程是否为同一个概念 DVM 指 dalivk 的虚拟机。每一个 Android 应用程序都在它自己的进程中运行, 都拥有一个独立的 Dalvik 虚拟机实例。而每一个 DVM 都是在 ...
4、下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是 ( ) DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中...
34.Android dvm 脱壳3 H2 X- A# M4 s+ A6 K- b 35.Dalvik dex处理分析 ) x+ l1 l1 J R2 N) T" R) ^2 o 36.IDA脱壳脚本编写1) O7 `% E" Q. @1 X! o ~ 37.Odex修复方法 38.IDAOdex修复脚本编写 " X' w1 h: w3 N" u8 P5...
1、 Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个...
这是一份来自百度android开发面试题(包括答案).Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念?handler机制的原理?Activity的生命周期...
进入 Android Dalvik 虚拟机,android dalvik介绍 Dalvik 虚拟机的特点——掌握 Android 程序的运行原理 Android 系统的架构采用分层思想,这样的好处是拥有减少各层之间的依赖性、便于独 立分发、容易收敛问题和...
Android5.1 Art Hook 支持4.0到5.1的dvm和art hook。美中不足是编写hook函数比较麻烦
Android核心基础01思维导图文件(.mmpa格式),包含demo代码(电话拨号器和短信发送器)。... Android版本简介 Android体系结构 JVM和DVM的区别 常见adb命令操作 Android工程目录结构 点击事件的四种形式
DVM指Dalivk的虚拟机,每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalivk虚拟机实例。而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念。 SIM卡的 EF 文件有何作用? sim卡的...
Android dvm的进程和Linux的进程,应用程序的进程是否为同一个概念?DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程...
记录了市面上移动端安卓一代壳的脱壳主要思路:针对dvm模式和art模式脱壳方法进行了一系列总结,希望对初学者有帮助
native object attached to the DVM MessageQueue.
native object attached to the DVM InputChannel.
之前做了一个Android dex的通用脱壳器,主要思想是以AOP的模式对运行时ART和DVM进行定制,附件中是在HITCON上演讲的ppt。 源码地址:https://github.com/zyq8709/DexHunter 代码较挫,大家可以看看,有兴趣的可以...
项目中,在不停地接收串口数据很长一段时间(几小时)后,会偶然性的...在Android中,用的DVM也是一样的,不过Android中不太突出进程的概念,所以对静态变量的生命周期就是感觉模糊,这种模糊对于值类型是无所谓的,如
这篇文章提出的SpanDex,是一个Android DVM的扩展集,用于保证应用程序不会泄露用户的密码。 SpanDex解决的主要技术问题是准确、完整、有效的处理隐式信息流(如程序控制流传送的信息)。具体方法是借助符号执行技术...
android笔试题目汇总及答案: 1.关于线程下面描述错误的是:( D ) A. 如果线程处于死亡状态,则它不是Runnable线程 B. 线程可以将控制权交给较低优先级的线程 C. 在Java中,较高优先级的Runnable线程应抢在较低...
Java收银机源码android-java-interview-questions-by-firoz 这里收集了在印度不同公司提出的所有面试问题,供新手到有经验的 android 开发人员使用。 问:什么是安卓? Android 是一种基于 Linux 的开源操作系统,可...