您的位置:首页 > 编程语言 > Java开发

java回忆录—JDK、JRE、JVM之间的联系

2016-08-01 19:55 471 查看
我们都知道需要开发java程序,首先得需要配置java的开发环境即 JDK。今天我们来看下JDK、JRE、JVM三者之间的关系。

首先介绍下这三者的含义:

JDK:Java Development Kit (Java 开发工具)

JRE:Java Runtime Envirnment (Java 运行环境)

JVM : Java Virtual Machine (Java 虚拟机)

当我们把 JDK 安装好之后,打开 JDK 的目录,可以看到:



里面可以看到有一个 jre 的目录,没错,这就是我们所需要的 jre,从这里可以看出 JDK 包含了 JRE。

我们还可以看到有一个 bin 目录,这是个什么目录呢?我们都知道我们所写好的 .java文件是需要编译成 .class文件(即字节码文件),通过 javac 命令,然后才能运行的。那么这个 bin 目录中就含有 javac 的脚本执行文件(即编译的命令)。

我们来看看 bin 中是不是真有呢?



介绍到这里,那么不是还有一个 JVM 去哪里了呢,它又是干什么的呢?

我们来看看 jre 的目录结构吧:



可以看到那里面也有一个 bin 目录和 lib 目录。

那么这是干什么的呢?先来看看 bin 目录



这里面有一个 java.exe 可执行文件,上面也说了 jdk 中 bin 目录中完成了对 .java 文件的编译工作。那么运行呢,我们知道,java 程序运行是要靠 jvm 的,并且可以通过终端中 java 命令来运行。所以呢,jre 中 bin 目录就是 jvm,jre 中 lib 目录就是 jvm 工作所需要的类库。

从这里我们可以知道 jre 包含了 jvm。

那么 jvm 又是什么呢?

JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,

是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。

JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

这里介绍下java程序为什么“一次编译,到处运行”?

我们知道,Java语言的一个非常重要的特点就是与平台的无关性。

而使用Java虚拟机是实现这一特点的关键。

一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。

而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。

Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),

就可以在多种平台上不加修改地运行。

Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

这就是Java的能够“一次编译,到处运行”的原因。

补充:

java 平台有三个版本,这使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发:

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

②EE(J2EE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。

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


  

总结:

1.JDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品。JDK中包含JRE。开发人员开发java程序需要配置JDK。

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

2.JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。

是运行基于Java语言编写的程序所不可缺少的运行环境。Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用,用户只需要安装jre就能够运行程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: