JDK:(Java Development Kit) Java软件开发包,可以包括函数库、编译程序等。 

JRE:( Java Runtime Enviroment ) Java的运行环境,是面向Java程序的使用者. 

JVM:(Dalvik Virtual Machine)JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。但JVM通常是在软件上而不是在硬件上实现。(目前,SUN系统公司已经设计实现了Java芯片,主要使用在网络计算机NC上。另外,Java芯片的出现也会使Java更容易嵌入到家用电器中。) JVM是Java平台无关的基础 ,在JVM上,有一个Java解释器用来解释Java编译器编译后的程序。Java编程人员在编写完软件后,通过Java编译器将Java源程序编译为JVM的字节代码。任何一台机器只要配备了Java解释器,就可以运行这个程序,而不管这种字节码是在何种平台上生成的。解释器不能单独执行,必须要有虚拟机。解释器它的作用只是把代码解释成虚拟机能够读懂的东西。Java采用的是基于IEEE标准的数据类型。通过JVM保证数据类型的一致性,也 确保了Java的平台无关性 。 

注意:JVM是属于JRE的,而现在我们安装JDK时也附带安装了JRE,所以安装了JDK就有了JRE、JVM和JVM中的java解析器。  

DVM:(Dalvik Virtual Machine)很多人认为DVM是一个Java虚拟机,因为Android的编程语言恰恰就是Java语言。但是这种说法并不准确,因为 Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,两者并不兼容;同时还有几个的不同点: 

1.Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式DEX(Dalvik Executable),JVM是基于栈的,而DVM基于寄存器(基于寄存器的好处是编译的时候,花费的时间更短,在其他各方面性能上也有很大的提升)。 
2.在Java SE程序中的Java类会被编译成一个或者多个字节码文件(.class)然后打包到JAR文件,而后Java虚拟机会从相应的CLASS文件和JAR文件中获取相应的字节码;Android应用虽然也是使用Java语言进行编程,但是在编译成CLASS文件后,还会通过一个工具 (dx)将应用所有的 CLASS文件转换成一个DEX文件 ,而后DVM会从其中读取指令和数据。 
3.DVM依赖于Linux内核的一些功能,如线程和底层内存管理机制。所以DVM只能运行在Android操作系统上,JVM并不依赖其他外部条件,所以它可以运行在各种平台之上。 

更多相关文章

  1. 浅析Android.jar文件中的包
  2. init进程详细分析--基于android 10
  3. android上解析.plist配置文件的xml解析器
  4. Android基于OkHttp实现文件上传
  5. Android之toolbar的使用
  6. Android(安卓)SDK2.2离线安装
  7. Android(安卓)Dalvik ART
  8. Android(安卓)Studio与Genymotion模拟器结合使用的一些心得
  9. Android(安卓)反编译apk文件得到项目文件

随机推荐

  1. 【059】分享我的 Android(安卓)应用
  2. Android(安卓)定时器真机测试
  3. 25个你应该阅读的Android网站
  4. IPC与Binder,Binder线程池,AIDL demo - And
  5. 关于android WebViewClient和WebChromeCl
  6. android 模拟器中启用相机API支持
  7. Android(安卓)Menu 用法
  8. Android自动化测试初探(二): Hierarchyview
  9. Android(安卓)10 创建文件失败
  10. Android的service相关讲解