JDK,JRE,JVM区别与联系

来源:互联网 发布:拳皇苍龙知乎 编辑:程序博客网 时间:2024/06/06 07:41

安装的时候由于高版本的JDK自带了JRE,故我们只需要安装JDK即可。

【1】JDK

JDK : Java Development ToolKit(Java开发工具包)。

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

JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。

这里写图片描述
这里写图片描述
这里写图片描述


JDK有以下三种版本:

J2SE,standard edition,标准版,是我们通常用的一个版本J2EE;从JDK 5.0开始,改名为Java SE。

enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序;从JDK 5.0开始,改名为Java EE。

micro edtion,主要用于移动设备、嵌入式设备上的java应用程序;从JDK 5.0开始,改名为Java ME。

我们常常用JDK来代指Java API,Java API是Java的应用程序接口,其实就是前辈们写好的一些java Class,包括一些重要的语言结构以及基本图形,网络和文件I/O等等 。

我们在自己的程序中,调用前辈们写好的这些Class,来作为我们自己开发的一个基础。当然,现在已经有越来越多的性能更好或者功能更强大的第三方类库供我们使用。


【2】JRE

JRE:Java Runtime Enviromental(java运行时环境)。

也就是我们说的JAVA平台,所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。


【3】JVM

JVM:Java Virtual Mechinal(JAVA虚拟机)。

JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。其主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。

所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。

也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。

只有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。

Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。


下面一张图说明三者关系:

这里写图片描述


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

结构简图如下:

这里写图片描述

原创粉丝点击