JDK 与 JRE 与 JVM Java – 它们之间的区别
JDK、JRE 和 JVM 之间的主要区别
- JDK 是一个软件开发工具包,而 JRE 是一个软件包,允许 Java 程序运行,而 JVM 是执行字节码的环境。
- JDK 的完整形式是 Java 开发工具包,而 JRE 的全称是 Java 运行时环境,而 JVM 的完整形式是 Java 虚拟机。
- JDK和JRE是平台相关的,而JVM在字节码级别是平台无关的,但依赖于平台特定的实现。
- JDK包含开发、调试等工具,JRE包含类库和其他支持文件,而JVM不包含软件开发工具。
- JDK 随安装程序提供,而 JRE 仅包含执行源代码的环境,而 JVM 则捆绑在软件 JDK 和 JRE 中。
什么是 JDK?
JDK 是一个用于制作小程序和 Java 应用程序。JDK 的完整形式是 Java 开发套件。 Java 开发人员可以使用它 Windows, macOS, Solaris和 Linux。JDK 帮助他们编写和运行 Java 程序。可以在同一台计算机上安装多个 JDK 版本。
什么是 JRE?
JRE 是用于运行其他软件的软件。它包含类库、加载器类和 JVM。简单来说,如果你想运行 Java 你需要 JRE。如果你不是程序员,你不需要 安装JDK,但只需运行 JRE Java 程序。不过,所有 JDK 版本都捆绑了 Java 运行时环境,因此您无需在 PC 上单独下载和安装 JRE。JRE 的全称是 Java 运行环境。
什么是JVM?
JVM 是一个提供运行时环境来驱动 Java 代码或应用程序。它转换 Java 将字节码转换成机器语言。JVM 是 Java 运行环境(JRE)。它不能单独下载和安装。要安装 JVM,您需要安装 JRE。JVM 的完整形式是 Java 虚拟机.
在许多其他编程语言中,编译器会为特定系统生成机器代码。然而, Java 编译器为称为 JVM 的虚拟机生成代码。
为什么要使用JDK?
以下是使用JDK的重要原因:
- JDK 包含编写所需的工具 Java 程序和 JRE 来执行它们。
- 它包括一个编译器, Java 应用程序启动器、Appletviewer 等
- 编译器将代码转换为 Java 转换成字节码。
- Java 应用程序启动器打开 JRE,加载必要的类并执行其主要方法。
为什么使用 JRE?
以下是使用JRE的重要原因:
- JRE 包含类库、JVM 和其他支持文件。它不包含任何用于 Java 像调试器、编译器等的开发。
- 它使用重要的包类,如 math、swingetc、util、lang、awt 和运行时库。
- 如果你必须跑 Java 小程序,那么您的系统中必须安装 JRE。
为什么选择 JVM?
以下是使用JVM的重要原因:
- JVM 提供了一种与平台无关的执行方式 Java 源代码。
- 它拥有众多的库、工具和框架。
- 一旦你跑 Java 程序,您可以在任何平台上运行并节省大量时间。
- JVM 带有 JIT(Just-in-Time)编译器,可以转换 Java 将源代码转换成低级机器语言。因此,它作为常规应用程序运行得更快。
JDK 的功能
以下是 JDK 的重要特性:
- 它使您能够在单个 catch 块中处理多个扩展。
- JDK 包含 JRE 的所有功能。
- 它包含编译器、调试器等开发工具。
- JDK 提供了开发和执行的环境 Java 源代码。
- 它可以安装在 Windows、Unix 和 Mac 操作系统。
- 可以使用菱形运算符来指定泛型类型接口,而不必编写精确的接口。
JRE 的功能
以下是 JRE 的重要功能:
- Java 运行时环境是 JVM 实际运行的一组工具。
- JRE 包含部署技术,包括 Java Web Start 和 Java 插入。
- 开发人员可以轻松地在 JRE 中运行源代码,但无法编写和编译 Java 程序。
- 它包括以下集成库 Java 数据库连接 (JDBC)、远程方法调用 (RMI)、 Java 命名和目录接口 (JNDI) 等等。
- JRE 有 JVM 和 Java HotSpot 虚拟机客户端。
JVM的特点
以下是 JVM 的重要特性:
- 它使您能够在云环境或设备中运行应用程序。
- Java 虚拟机将字节码转换为机器特定的代码。
- 它提供基本的 Java 功能,如内存管理、安全、垃圾收集等。
- JVM 使用以下库和文件来运行程序: Java 运行环境。
- JDK 和 JRE 都包含 Java 虚拟机。
- 它可以逐行执行 Java 程序,因此也称为解释器。
- JVM 很容易定制,例如,您可以为其分配最小和最大内存。
- 它独立于硬件和操作系统。因此,您只需编写一次 Java 程序,即可在任何地方运行。
JDK 如何运作?
以下是JDK的重要组件:
- JDK 和 JRE:JDK 使程序员能够创建核心 Java JRE可以运行的程序,包括JVM和类库。
- 类库: 它是一组动态可加载库, Java 程序可以在运行时调用。
- 编译器: 这是一个 Java 接受开发人员的文本文件并编译成的程序 Java class 文件。它是编译器给出的常见输出形式,其中包含 Java 字节码。在 Java,主编译器是 Javac.
- 调试器: 调试器是一个 Java 允许开发人员测试和调试的程序 Java 程式。
- Java文件: JavaDoc 是 Sun Microsystems 为 Java. JavaDoc 可用于从源程序生成 HTML 文件中的 API 文档
JRE 如何运作?
JRE 包含 JVM 实例、库类和开发工具。编写并编译 Java 代码,编译器生成具有字节码的类文件。
以下是JRE的重要组件:
- 类加载器: 类加载器加载运行程序所需的各种类 Java 程序。JVM 使用三个类加载器,分别称为引导类加载器、扩展类加载器和系统类加载器。
- 字节码验证器: 字节码验证器验证字节码,以便代码不会干扰解释器。
- 口译员: 一旦类被加载,并且代码被验证,解释器就会逐行读取代码。
- 运行: 运行时是编程中主要用于描述特定程序运行的时间段的系统。
- 硬件: 编译后 Java 本机代码,它运行在特定的硬件平台上。
这样, Java 程序在JRE中运行。
JVM 如何运作?
以下是JVM的重要组件:
1)类加载器
类加载器是用于加载类文件的子系统。它执行三大功能,即加载、链接和初始化。
2)方法区
JVM 方法区存储类的结构,如元数据、 Java 方法和常量运行时池。
3)堆
所有对象、数组和实例变量都存储在堆中。此内存由多个线程共享。
4)JVM语言堆栈
Java 语言堆栈存储局部变量及其部分结果。每个线程都有自己的 JVM 语言堆栈,在创建线程时同时创建。调用方法时会创建一个新框架,方法调用过程完成后会将其删除。
5)PC寄存器
PC 寄存器存储 Java 正在执行的虚拟机指令。在 Java,每个线程都有其单独的PC寄存器。
6)本机方法堆栈
本机方法堆栈保存依赖于本机库的本机代码指令。它在本机堆上分配内存或使用任何类型的堆栈。
7)执行引擎
它是一种用于测试软件、硬件或完整系统的软件。测试执行引擎从不包含有关被测产品的任何信息。
8)Native Method 接口
本机方法接口是一个编程框架。它允许 Java 代码在 JVM 中运行,可供库和本机应用程序调用。
9)本机方法库
本机库是本机库(C, C++),这是执行引擎所需要的。
JDK,JRE和JVM之间的区别
以下是 JDK、JRE 和 JVM 之间的主要区别:
JDK | JRE | JVM |
---|---|---|
JDK 的完整形式是 Java 开发套件。 | JRE 的完整形式是 Java 运行环境。 | JVM 的完整形式是 Java 虚拟机。 |
JDK 是一个软件开发工具包,用于开发应用程序 Java. | 它是一个软件包,提供 Java 包含运行所需组件的类库 Java 码。 | JVM 执行 Java 字节码并提供执行它的环境。 |
JDK 依赖于平台。 | JRE 也依赖于平台。 | JVM 是平台无关的。 |
它包含用于开发、调试和监控 Java 代码的工具。 | 它包含 JVM 执行程序所需的类库和其他支持文件。 | JVM 中不包含软件开发工具。 |
它是 JRE 的超集 | 它是JDK的子集。 | JVM 是 JRE 的一个子集。 |
JDK 使开发人员能够创建 Java 可以由JRE和JVM执行和运行的程序。 | JRE 是 Java 创建 JVM。 | 它是 Java 执行源代码的平台组件。 |
JDK 随安装程序一起提供。 | JRE仅包含执行源代码的环境。 | JVM 捆绑在软件 JDK 和 JRE 中。 |