JDK、JRE、JVM三者间的联系与区别

JDK、JRE、JVM三者间的联系与区别

作为具有多年经验的老程序员,大家都知道Java程序是运行在JVM(Java虚拟机)上的,而开始前都会去搭建Java环境,主要的就是JDK的安装和配置。那么JDK、JRE和JVM之间又有什么样的联系呢?区别又是什么?下面将详细的做介绍。

1、JDK

JDK (Java Development Kit),是Java开发工具包,是sun公司针对Java开发员的产品,是Java的核心,它提供了各种工具和资源,包括Java编译器、运行环境JRE,以及Java的基础类库。

下图是JDK的目录结构:

  • bin:最主要的是编译器(javac.exe)、运行工具(java.exe)
  • db:jdk从1.6之后内置了Derby数据库,它是是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。(只做了解)
  • include:Java和JVM交互用的头文件
  • jre:Java运行环境
  • lib:类库(jdk工具的一些补充jar包)

注意:这里的bin和lib跟jre中的bin和lib是不一样的。

2、JRE

JRE(Java Runtime Environment),是Java程序运行时环境,包含了JVM、runtime class libraries和Java application launcher等运行Java程序的必要组件。

与JDK不同,JRE是运行环境,并不像JDK一样是开发环境,所以并不包含任何开发工具(例如编译器、调试器)。
下图是JRE的目录结构:

  • bin:就是JVM
  • lib:JVM工作所需要的类库

3、JVM

JVM(Java virtual machine),也叫Java虚拟机,它是Java实现跨平台的最核心的部分。

所有的Java程序会首先被编译为.class可执行的字节码文件,该文件可以在Java虚拟机上执行,再由Java虚拟机间接与不同操作系统进行交互,虚拟机将程序解释给系统执行。

光有JVM并不能完成.class的执行,解释class的时候JVM需要调用解释所需要的类库lib。

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

联系和区别:

  • JDK是面向开发者的,是开发环境,JRE是面向使用JAVA程序的用户,是运行环境
  • JDk包含 JRE,JRE包含 JVM
  • JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。

可以使用下面一幅图来总结:

参考博客:
https://www.cnblogs.com/bingyimeiling/p/10266949.html
https://www.cnblogs.com/iskandar/p/8933340.html

posted @ 2022-02-07 22:02  cavan丶keke  阅读(78)  评论(0编辑  收藏  举报