一键搞定内网穿透 联行号查询|开户行查询 在线工具箱 藏经阁
当前位置:首页 / 杂记 / 正文
JVM JRE JDK三者的区别和联系
JDK是用于java程序的开发,而jre是运行时环境,最主要是加载基础jar包类库,jre只能运行class而没有编译的功能
JDK包含JRE,而JRE包 含JVM。
java编译后之所以跨平台,就是在 Java 应用程序和操作系统之间增加了一虚拟层—— JRE,当然最核心解码工作同JVM完成。

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

1、JVM -- java virtual machine

JVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可 以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解 释给本地系统执行。 JVM 是 Java 平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行 时操作不同的内存区域。 JVM 通过抽象操作系统和 CPU 结构,提供了一种与平台无关的代码执行方法,即与特殊的实现方 法、主机硬件、主机操作系统无关。 JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( class file )。类文件的组成包括 JVM 指令集,符号表以及一些辅助信息。

2、JRE -- java runtime environment

JRE是指java运行环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 在JDK的安装目 录里你可以找到jre目录,里面有两个文件夹bin和lib,在 这里可以认为bin里的就是jvm,lib中则是jvm工 作所需要的类库,而jvm和 lib和起来就称为jre。 JRE里面有一个 JVM , JRE 与具体的 CPU 结构和操作系统有关,我们从 Sun 下载 JRE 的时候就看到了不同的各种版本,,同 JVM 一起组成 JRE 的还有 一些 API (如 awt , swing 等) 所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。

3、JDK -- java development kit

JDK是java开发工具包,JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Environment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。 安装JDK 选择安装目录 安装过程中会出现两次 安装提示 。第一次是安装 jdk ,第二次是安装 jre。建议两个都安装在同一个java文件夹中的不同文件夹中 win下总是提示java升级如java8 update 151(或其它数字),实际上就是给jre升级(jvm也会跟着升级)。 升级后,将jre和jvm都升级了,都是151版本。
C:\Program Files\Java\jre1.8.0_151\bin>java.exe -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
再进入系统 - 程序和功能 查看已经安装程序列表,java8 update 151 64-bit 就是jre

系统 - 程序和功能 查看已经安装程序列表 里还有一个 Java SE Development Kit 8 Update 20 (64-bit),它又是什么呢?
进入jdk安装目录
C:\Program Files\Java\jdk1.8.0_20\bin>java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
已安装程序里的 Java SE Development Kit 8 Update 20 (64-bit)就是这里的 jdk