JDK、JRE和JVM之间的区别

Java开发工具包(JDK),Java运行环境(JRE)和Java虚拟机(JVM)之间的区别是常见的面试问题。您可能还会被要求解释JDK与JRE与JVM之间的区别。

JDK,JRE和JVM是Java编程语言的核心概念。在编程中,我们不使用这些概念。但是作为Java开发人员,我们应该了解它们。

1. JDK

Java开发工具包,简称JDK,是Java环境的核心组件,提供了编译,调试和执行Java程序所需的所有工具,可执行文件和二进制文件。JDK是特定平台的软件,这就是为什么我们为Windows,Mac和Unix系统有单独的安装程序的原因。我们可以说JDK是JRE的超集,因为它包含具有Java编译器,调试器和核心类的JRE。

2. JVM

JVM是Java编程语言的核心。当我们执行Java程序时,JVM负责将字节码转换为特定于机器的代码。JVM也是平台相关的,并提供核心Java函数,如内存管理、垃圾回收、安全等。JVM是可定制的,我们可以使用Java选项对其进行定制。例如,为JVM分配最小和最大内存。JVM被称为虚拟的,因为它提供了一个不依赖于底层操作系统和机器硬件的接口。这种与硬件和操作系统的独立性使得Java程序可以一次编写,到处运行。

3. JRE

JRE是JVM的实现。它提供了一个执行Java程序的平台。JRE包括JVM、Java二进制文件和其他类,以成功执行任何程序。JRE不包含任何开发工具,如Java编译器、调试器、JShell等。如果你只想执行一个Java程序,你可以只安装JRE。你不需要JDK,因为不需要进行Java源代码的开发或编译。现在我们已经对JDK、JVM和JRE有了基本的了解,让我们来看看它们之间的区别。

JDK vs JRE vs JVM

让我们看看JDK、JRE和JVM之间的一些重要区别。

  1. JDK 用于开发目的,而 JRE 用于运行 Java 程序。
  2. JDK 和 JRE 都包含 JVM,这样我们就可以运行我们的 Java 程序。
  3. JVM 是 Java 编程语言的核心,提供平台独立性。

即时编译器(JIT)

有时你会在教科书中找到 JIT 和 JVM、JDK 和 JRE 并列。JIT 是 JVM 的一部分,它优化将字节码转换为特定机器语言的过程。它同时编译类似的字节码,减少了将字节码编译为特定机器语言的总时间。

Source:
https://www.digitalocean.com/community/tutorials/difference-jdk-vs-jre-vs-jvm