在了解JVM、JRE、JDK之前,我们先看看这三者的关系是怎样的。
从图中可以看出,JDK包括JRE,JRE包括JVM,那这三者又是什么东西呢?
一、JDK
JDK(Java Development Kit) 是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JDK是java开发工具包,基本上每个学java的人都会先在机器 上装一个JDK,那他都包含哪几部分呢?在目录下面有 六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。
二、JRE
JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库和加载器类。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),如果你不需要开发,只是在服务器上部署java的应用,安装JRE即可。
三、JVM
JVM(Java Virtual Machine),就是我们耳熟能详的 Java 虚拟机, Java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。这就是Java的能够“一次编译,到处运行”的原因
四、JDK、JRE、JVM三者的联系与区别
三者联系:
JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib,而这些类库lib在JRE下面。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。总体来说,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
三者区别:
? JDK是一个软件开发工具包,而JRE是一个允许Java程序运行的软件包,JVM则是一个执行字节码的环境。
? JDK的全称是Java Development Kit,JRE的全称是Java Runtime Environment,而JVM的全称是Java Virtual Machine。
? JDK 是平台相关的,JRE 也是平台相关的,但是 JVM 不是平台相关的。
? JDK 包含开发、调试等工具。JRE 包含类库和其他支持文件,而软件开发工具不包含在 JVM 中。
? JDK 附带安装程序,另一方面,JRE 仅包含执行源代码的环境,而 JVM 捆绑在软件 JDK 和 JRE 中。
本文暂时没有评论,来添加一个吧(●'◡'●)