JVM、JRE 和 JDK
理论
JVM 语言(例如 Java、Kotlin 或 Scala)可能会让初学者感到困惑,因为许多基本术语一开始可能很难区分。本主题将通过介绍这些基础知识并概述平台的不同组件如何处理代码,让您更熟悉 Java 平台的开发。
§1. Java虚拟机(JVM)
这 Java虚拟机, 或者 JVM是物理计算机的虚拟模拟。它执行源代码编译后的 Java(或与 Java 兼容的)字节码。从某种意义上说,JVM 充当代码和真实机器之间的中介。它使用一组统一的字节码指令进行操作,这些指令被解释并转换为机器指令。
JVM 适用于许多硬件和软件平台,因此您几乎可以在任何地方运行字节码。编译为字节码的程序几乎总是与平台无关的。基本上,当您拥有 JVM 语言代码时,您只需编译一次,获取字节码,然后您就可以在任何具有 JVM 的平台上运行它。
如今,JVM 实现多种多样,其中 Java HotSpot 虚拟机是主要参考。
§2. Java 运行环境(JRE)
Java 运行环境, 或者 执行环境,是一个执行环境。它包括运行已编译的 JVM 程序所需的组件:JVM 本身和 Java 类库 (JCL)。
JCL 本质上是一组标准库,提供最常见的功能:基本类、输入/输出、数学包、集合、安全性、用户界面工具包等。您可以在程序中使用这些库。
当您运行已编译的程序时,JRE 会将程序字节码与必要的库结合起来并运行 JVM,后者执行生成的字节码。
§3. Java 开发工具包(JDK)
Java 开发工具包, 或者 JDK,是用于开发 Java 平台程序的软件包。它包括用于运行程序的 JRE 和开发人员的工具:Java 编译器、调试器、归档器、文档生成器等。
在编译阶段,编译器将源代码转换为包含字节码并可由 JVM 执行的 .class 文件。请注意,如果您使用的是 Java 以外的 JVM 语言,则需要单独下载编译器,因为它们不与 JDK 捆绑在一起。
在实际应用中,程序通常由多个 .class 文件组成,并通过归档工具打包成一个 Java 归档文件 (JAR 文件)。JRE 可以直接运行打包成 JAR 的程序,而无需提取归档文件。由于数据经过压缩,因此生成的文件更便于存储和通过网络共享。
在 Java 11 之前,如果您只想运行 Java 程序,JRE 就足够了。但是,自 Java 11 发布以来,对于大多数 JVM 实现,JRE 不再可作为单独组件下载。如果您想在 JVM 11 或更高版本中运行程序,则必须安装 JDK。
§4. JVM、JRE、JDK的关系
下图说明了JVM,JRE和JDK之间的关系:
§5. 摘要
- Java虚拟机执行编译后的字节码。
- Java运行环境包括JVM和标准库,运行编译后的程序。
- Java开发工具包(Java Development Kit)包括JRE和一些开发工具,供开发人员编写程序。
您还可以查看 hyperskill.org 上的课程.
实践任务及答案
给出了任务和答案选项。正确选项以 蓝色的 颜色。
№1. 作为用户你需要什么
问题: 假设你是一个用户,你有一个已编译的 JVM 程序(.class 文件)。你需要什么来启动该程序?
从列表中选择一个选项:
- Java 编译器
- 字节码解释器
- JRE ✔
- 调试器
解释。 要运行已编译的 JVM 程序(.class 文件),您需要 Java 运行时环境 (JRE),它包含运行该程序所需的字节码解释器。因此正确答案是 JRE。
№2. JVM 在哪里
问题: JVM 包含在...
从列表中选择一个选项:
- 罐
- 杰诚
- 开发者工具
- JRE ✔
解释。 JVM包含在JRE(Java运行时环境)中。
№3. 作为开发人员你需要什么
问题: 假设您要编写一个 Java 程序。首先,您需要编写一个源代码文件,其中包含.java 扩展。然后你将编译它以获得。班级 文件。最后,您要运行该程序。执行所有这些操作所需的最小环境是什么?
从列表中选择一个选项:
- 执行环境
- JDK ✔
- JVM
- Java 编译器
解释。 执行所有这些操作所需的最小环境是 JDK(Java 开发工具包)。
№4. JDK 包含什么
问题: 选择JDK的所有组件。
从列表中选择一个或多个选项:
- JRE ✔
- Java 编译器✔
- git
- 集成开发环境
解释。 JDK的组成部分有:JRE(Java运行环境)、Java编译器
№5. 作为开发人员,您需要什么?
问题: 在 Java 以外的 JVM 语言上编写、编译和运行程序所需的最小环境是什么?
从列表中选择一个选项:
- JVM
- 执行环境
- JDK + 编译器✔
- JDK
- 编译器
解释。 在 Java 以外的 JVM 语言上编写、编译和运行程序所需的最小环境是 JDK(Java 开发工具包)以及该特定语言的编译器。
№6. 将缩写与其定义匹配
问题: 将下列缩写与其定义相匹配。
匹配左列和右列的项目:
- JDK——用于开发程序的工具包,包括 Java 编译器。
- JRE——用于运行程序的工具包,包括 JVM。
- JVM——Java 虚拟机。
- JCL——一组标准类库。
- JAR——一种用于打包程序的存档格式。
№7. JRE 包括什么
问题: 选择JRE的所有组件。
从列表中选择一个或多个选项:
- 类库✔
- JVM ✔
- Java 编译器
- 集成开发环境
解释。 JRE(Java运行环境)的组成部分有:类库、JVM(Java虚拟机)。
№8. 什么是HotSpot?
问题: 什么是热点?
从列表中选择一个选项:
- 这是 Java 虚拟机规范的名称。
- 这是现有的 JVM 实现之一。✔
- 这是JVM唯一合法的实现。
- 这是 Java 虚拟机的同义词。
解释。 HotSpot 是现有的 JVM(Java 虚拟机)实现之一。
№9. Java 编译器在哪里
问题: 您可以在...中找到 javac(Java 编译器)
从列表中选择一个选项:
- JVM(Java虚拟机)
- JDK(Java 开发工具包)✔
- JRE(Java 运行时环境)
- JAR(Java 档案)
- JCL(Java 类库)
解释。 您可以在 JDK(Java 开发工具包)中找到 javac(Java 编译器)。
哪些操作系统默认安装了 JVM?
大多数现代操作系统(例如 Windows、macOS 和各种 Linux 发行版)默认情况下未安装 JVM。但是,某些操作系统(例如 Oracle Solaris)默认安装了 JVM。此外,一些计算机制造商可能会预装 JVM。但是,如果您想在计算机上运行 Java 程序,则应从 Oracle 官方网站或 OpenJDK 网站下载并安装 JRE 或 JDK。