jdk-jre-jvm区别

转自:http://java-mzd.iteye.com/blog/838514


java中的main函数是JVM执行的入口

JDK : Java Development ToolKit(Java开发工具包)JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

    最主流的JDKSun公司发布的JDK。jdk也就是java的三个版本:J2SEstandard edition,标准版,是我们通常用的一个版本J2EEenterpsise edtion,企业版,使用这种JDK开发J2EE应用程序J2MEmicro edtion,主要用于移动设备、嵌入式设备上的java应用程序。

我们常常用JDK来代指Java APIJava APIJava的应用程序接口,其实就是前辈们写好的一些java Class,包括一些重要的语言结构以及基本图形,网络和文件I/O等等 ,我们在自己的程序中,调用前辈们写好的这些Class,来作为我们自己开发的一个基础。当然,现在已经有越来越多的性能更好或者功能更强大的第三方类库供我们使用。

 JRE:Java  Runtime  Enviromental(java运行时环境)。也就是我们说的JAVA平台,所有的Java程序都要在JRE下才能运行。包括JVMJAVA核心类库和支持文件。JDK相比,它不包含开发工具——编译器、调试器和其它工具。

  JVMJava Virtual Mechinal(JAVA虚拟机)JVMJRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( class file)。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。JVM之所以被称为虚拟的是因为它提供了一个不依赖于底层操作系统和机器硬件的接口。这种独立于硬件和操作系统的特性正是Java程序可以一次编写多处执行的原因。

下图很好的表面了JDK,JRE,JVM三者间的关系:


我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

编译程序把用高级程序设计语言计算机汇编语言书写的源程序,翻译成等价的机器语言格式目标程序翻译程序

· JDK是用于开发的而JRE是用于运行Java程序的。

JDK和JRE都包含了JVM,从而使得我们可以运行Java程序

JVM:将字节码文件转成具体系统平台的机器指令。

JRE:JVM+Java语言的核心类库。
JDK:JRE+Java的开发工具。

JDK(Java Development Kit Java开发工具包)JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。其中的开发工具包括编译工具(javac.exe)  打包工具(jar.exe)

作为JDK实用程序,工具库中有七种主要程序。

JavacJava编译器,将Java源代码转换成字节码。

Javadoc:根据Java源码及说明语句生成HTML文档。

JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。

JREJava Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。

1.JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。

2.2.JRE -- java runtime environmentJRE是指java运行环境。光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹binlib,在这里可以认为bin里的就是jvmlib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。 

eclipseidea等其他IDE有自己的编译器而不是用JDK bin目录中自带的,所以在安装时你会发现他们只要求你选中jre路径就ok了。





阅读更多
换一批

没有更多推荐了,返回首页