当Java程序运行时,都是一个虚拟机解释java的字节码,将这些字节码翻译成本地CPU的指令吗,然后执行。对Java程序而言,负责解释并执行的就是一个虚拟机。

dalvikvm的作用就是创建一个虚拟机并执行参数中指定的Java类,说明该程序的使用方法:

1.首先新建一个名为Foo.java的文件

class Foo{

public static void main(String[] args){

sysout("hello dalvik");

}

}

2.然后编译文件Foo.java并生成Jar文件

javac Foo.java

$Path=

$dx --dex --output=foo.jar Foo.class

dx工具的作用是将.class转换为.dex文件,因为Dalvik虚拟机所执行的程序不是标准的Jar文件,而是将Jar文件转换以提高执行效率,而转换后的文件就是dex文件。

2.dvz

dvz的作用是从Zygote进程中孵化出一个新的进程,新的进程也是一个Dalvik虚拟机。

1.dvz -classpath 包名称 类名

我们不能再函数Main()内部构造一个Welcome对象的方法达到运行该APK的目的。

3. app_process

Framwork在启动时需要加载并运行如下两个类:

ZygoteInit.java   SystemServer.java ,系统提供了一个app_process进程,该进程会自动运行这两个类,app_process的本质就是使用dalvikvm启动ZygoteInit.java。并在启动收加载Framework中的大部分类和资源。

2.接下来app_process中是如何创建虚拟机并执行指定的class文件的。其源代码在文件frameworks/base/cmds/app_main.cpp中,该文件中的关键代码又两处:

1.先创建一个AppRutime对象

2.调用runtime的start()方法指定的class

Dalvik虚拟机相关的可执行程序相关推荐

  1. Android上的Dalvik虚拟机

    本文是Android虚拟机系列文章的第二篇,会介绍Andorid系统上曾经使用过的Dalvik虚拟机.后面还会有一篇文章讲解Android系统上现在使用的虚拟机:ART. 也许有人会问,既然Dalvi ...

  2. 关于Dalvik虚拟机你需要知道的15个问题

    Dalvik是Android系统中另一个重要的部分,包括虚拟机和一组重要的运行环境.它的设计非常巧妙,是个很好的一个手机终端的底层应用.本文就简单介绍Dalvik相关的15个问题. 1.大部分jvm是 ...

  3. 进入Android Dalvik虚拟机之Dalvik指令集

    为什么80%的码农都做不了架构师?>>>    1. 指令特点 Dalvik指定在调用格式上模仿了C语言的调用约定.Dalvik指令的语法与助词符有如下特点: 参数采用从目标(des ...

  4. 【Java 虚拟机原理】Dalvik 虚拟机 ( 打包 Jar 文件和 Dex 文件 | 反编译 Dex 文件 | 分析 Dex 文件反编译结果 )

    文章目录 前言 一.打包 Jar 文件和 Dex 文件 1.示例代码 2.打包 Jar 文件 3.打包 Dex 文件 二.反编译 Dex 文件 三.分析 Dex 文件 1.Student 类相关信息 ...

  5. 【Java 虚拟机原理】Dalvik 虚拟机 ( 简介 | CPU 指令集 | Dalvik 虚拟机内存 )

    文章目录 一.Dalvik 虚拟机简介 二.CPU 指令集 三.Dalvik 虚拟机内存 一.Dalvik 虚拟机简介 Android 5.05.05.0 之前使用的是 Dalvik 虚拟机 , 5. ...

  6. android -------- java虚拟机和Dalvik虚拟机

    2019独角兽企业重金招聘Python工程师标准>>> java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体 ...

  7. Dalvik虚拟机的运行过程分析

    在前面一篇文章中,我们分析了Dalvik虚拟机在Zygote进程中的启动过程.Dalvik虚拟机启动完成之后,也就是在各个子模块初始化完成以及加载了相应的Java核心类库之后,就是可以执行Java代码 ...

  8. Android安全与逆向之Java虚拟机和Dalvik虚拟机的区别

    Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野.它对内存的高效使用,和在低速CPU上表现出的高性能,确实令 ...

  9. Dalvik虚拟机简要介绍和学习计划

    出自:http://blog.csdn.net/luoshengyang/article/details/8852432 我们知道,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应 ...

最新文章

  1. iOS10 UI教程子视图和父视图UI层次结构和Views继承
  2. Pytorch网络结构可视化
  3. 随想:如果手机与手机之间具备了无线电测距测向功能
  4. 【数据结构与算法】之深入解析“最小栈”的求解思路与算法示例
  5. [转载]一个游戏程序员的学习资料
  6. csv文件设置每个cell大小_Python对文本文件和Excel的处理机制
  7. 文本相似度-相似度度量
  8. 特斯拉已撤回德国电池工厂建厂补贴申请 原有望获得近13亿美元
  9. T-SQL基础--TOP
  10. 剑指 Offer——和为 S 的两个数字
  11. 插入、删除和随机查询时间复杂度都为O(1) leetcode 381
  12. Visio绘制神经网络层Layer
  13. excel宏破解方法
  14. 关闭445端口即关闭共享文件功能
  15. win8配置JDK1.8环境变量
  16. 机器学习算法:K近邻(k-nearest neighbors)
  17. js清除浏览器缓存的几种方法(项目总结)
  18. 【gpt】免费部署个人gpt平台(无需tz)
  19. o2o项目部署前,阿里云的申请与环境搭建
  20. 木工加工中心操作教程

热门文章

  1. 集群、分布式、负载均衡区别与联系
  2. Windows域的管理
  3. [Python从零到壹] 十一.数据分析之Numpy、Pandas、Matplotlib和Sklearn入门知识万字详解(1)
  4. [译] APT分析报告:08.漏洞利用图谱–通过查找作者的指纹来寻找漏洞
  5. SwiftUI之深入解析布局如何自定义AlignmentGuides
  6. TensorFlow模型持久化
  7. SpaceX完成“星舰”空中悬停,距载人探火星还远吗?
  8. 96. Unique Binary Search Trees 不同的二叉搜索树
  9. 排序算法 —— 选择排序
  10. 百练2811:熄灯问题