JDK,JRE,JVM 的区别与联系

文章目录

尽管学习了这么多年的 java,但一直觉得自己学习得比较粗糙,对一些基本概念掌握得也不是很清楚,例如:JDK、JRE、JVM。所以在这里首先记录一下 JDK、JRE、JVM 的区别,来帮助自己巩固基础。

JDK、JRE、JVM 是 Java 语言中较为核心的概念了,它们看上去极为相似,大多数开发人员也很少去计较它们之间的区别。但实际上,它们之间还是有着一定的区别,并且所针对的目标也不一样。

JDK、JVM、JRE 关系图:

JDK,JRE,JVM 的区别与联系

1 JDK

JDK,全称是 Java Develoment Kit,用中文来讲就是 Java 开发工具包,是整个 Java 的核心,提供了编译、调试和执行 Java 程序所需的所有工具、可执行文件和二进制文件。JDK 拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc)。

此外,JDK 是特定于平台的软件,因此 Windows,Mac 和 Unix 系统有着不同的安装程序。

2 JVM

JVM,全称是 Java Virtual Machine,也就是 Java 虚拟机,它是 Java 编程语言的核心。

当我们运行 Java 程序时,JVM 负责将字节码转换为机器特定的代码。JVM 提供诸如内存管理、垃圾回收、安全性等核心 Java 功能,而且是可自定义的,我们可以使用 java 选项对其进行自定义,例如为 JVM 分配最小和最大内存。

JVM之所以称为虚拟机,是因为它提供的接口不依赖于底层操作系统和机器硬件,这种与硬件和操作系统的独立性使得 Java 程序可以在任何地方编写一次写入。

3 JRE

JRE,全称是 Java Runtime Environment,是 JVM 的实现,它提供了执行 Java程序的平台。JRE 由 JVM 和 Java 二进制文件以及其他类组成,可以成功执行任何 Java 程序。

JRE不包含Java编译器,调试器等任何开发工具。如果要执行任何Java程序,则只需要安装 JRE,也就是说不需要 JDK 即可运行任何 Java 程序。

总结来看:

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

参考文献:

  1. Difference between JDK, JRE and JVM
  2. JDK,JRE,JVM区别与联系