Java中JDK、JRE、JVM三者之间的关系

简介: 在Java生态中,JDK、JRE、JVM呈严格层级包含关系:JDK(开发工具包)包含JRE(运行时环境),JRE又包含JVM(虚拟机)。JVM执行字节码并实现跨平台;JRE提供运行所需类库与JVM;JDK则额外集成编译器、调试器等开发工具。开发者装JDK,用户只需JRE。(239字)

在 Java 生态系统中,JDK、JRE 和 JVM 是三个核心概念,它们之间存在着明确的‌包含关系‌和‌层级依赖‌。

简单来说,三者的关系可以概括为:‌JDK 包含 JRE,JRE 包含 JVM‌。即:JDK > JRE > JVM。

以下是详细的解析:

  1. 核心定义与功能

JVM (Java Virtual Machine,Java 虚拟机)‌

定义‌:JVM 是一个抽象的计算机器,是 Java 程序运行的核心引擎。它负责将编译后的字节码(.class文件)解释或即时编译(JIT)成特定操作系统的机器指令并执行。
核心作用‌:实现 Java 的“一次编写,到处运行”(Write Once, Run Anywhere)。它屏蔽了底层操作系统(Windows, Linux, macOS等)的差异。
主要功能‌:内存管理(垃圾回收 GC)、字节码执行、安全检查、多线程支持等。
注意‌:JVM 本身不能独立运行 Java 程序,因为它缺少运行所需的核心类库。

JRE (Java Runtime Environment,Java 运行时环境)‌

定义‌:JRE 是运行 Java 程序所需的最小环境集合。
组成公式‌:‌JRE = JVM + Java 核心类库 (Libraries/API) + 其他支持文件‌。
核心作用‌为已编译好的 Java 程序提供运行环境。如果你只需要‌运行‌现有的 Java 程序(如 Minecraft 游戏、部署好的 Java Web 应用),只需安装 JRE 即可。
包含内容‌:除了 JVM,还包含了 java.lang, java.util, java.io 等基础类库,以及启动 Java 应用程序的工具(如 java.exe)。

JDK (Java Development Kit,Java 开发工具包)‌

定义‌:JDK 是面向 Java 开发者的全功能软件开发工具包。
组成公式‌:‌JDK = JRE + 开发工具 (Tools)‌。
核心作用‌:用于‌编写、编译、调试‌ Java 程序。如果你需要开发 Java 应用程序,必须安装 JDK。
包含内容‌:
完整的 JRE。
编译器 (javac):将 .java 源码编译成 .class 字节码。
调试器 (jdb)。
文档生成工具 (javadoc)。
打包工具 (jar)。
其他监控和分析工具 (jconsole, javap 等)。

  1. 三者关系图解

可以用以下层级结构来直观理解它们的包含关系:

text
JDK (Java Development Kit)
├── JRE (Java Runtime Environment)
│ ├── JVM (Java Virtual Machine) <-- 核心执行引擎
│ └── Core Class Libraries <-- 核心类库 (如 rt.jar, modules 等)
└── Development Tools <-- 开发工具 (javac, jdb, javadoc, jar 等)

  1. 关键区别对比表
    表格
    维度 JVM (Java 虚拟机) JRE (运行时环境) JDK (开发工具包)
    全称‌ Java Virtual Machine Java Runtime Environment Java Development Kit
    主要用户‌ 底层实现者/跨平台机制 最终用户 (End Users) 开发者 (Developers)
    核心功能‌ 执行字节码、内存管理、跨平台 提供运行 Java 程序的完整环境 提供开发、编译、调试、运行 Java 程序的全部能力
    包含内容‌ 解释器/JIT编译器、GC、运行时数据区 JVM + 核心类库 + 配置文件 JRE + 编译器(javac) + 调试器 + 文档工具等
    是否可单独运行代码‌ 否 (缺少类库支持) 是 (可运行已编译的程序) 是 (可开发并运行程序)
    典型场景‌ 嵌入在 JRE 中,不可见 服务器部署、普通用户运行 Java 应用 程序员写代码、IDE (IntelliJ/Eclipse) 环境配置
  2. 常见疑问解答

Q: 为什么安装了 JDK 就不需要单独安装 JRE?‌

A: 因为 JDK 内部已经包含了一个完整的 JRE。在安装 JDK 的目录下,通常会有一个 jre 文件夹(或在较新版本中集成在 lib 或 modules 中),里面包含了运行 Java 程序所需的所有组件。

Q: 为什么有时候服务器上只装 JRE 而不装 JDK?‌

A:
安全性‌:JDK 包含编译器 (javac) 和调试工具,如果服务器被入侵,攻击者可能利用这些工具编译恶意代码。仅安装 JRE 可以缩小攻击面。
资源节省‌:JRE 比 JDK 更轻量,占用磁盘空间更小,适合容器化部署(如 Docker)。

Q: Java 是编译型还是解释型语言?‌

A: Java 既有编译过程也有解释/即时编译过程。
编译‌:使用 JDK 中的 javac 将源代码编译成字节码(.class)。
执行‌:JVM 加载字节码,通过解释器或 JIT 编译器将其转换为本地机器码执行。
总结
如果你是‌Java 开发者‌,你需要安装 ‌JDK‌,因为它提供了开发、编译和运行所需的一切。
如果你只是‌普通用户‌,只需要运行 Java 程序(如某些游戏或应用软件),你只需要安装 ‌JRE‌。
JVM‌ 是这一切的基础,它是 Java 跨平台特性的核心,但它是嵌套在 JRE 和 JDK 内部工作的,用户通常不直接与其交互。

目录
相关文章
人工智能 数据可视化 Python
402 0
人工智能 安全 iOS开发
181 0
|
2月前
|
运维
经典 PLC 软件 STEP7 V5.7 安装详细教程附安装包
STEP7 V5.7 Professional 是西门子S7-300/400及ET200系列PLC的最终稳定版编程软件(2021年发布),符合IEC 61131-3标准,支持LD、FBD、ST等5种编程语言,广泛用于老旧产线运维与调试。
557 1
经典 PLC 软件 STEP7 V5.7 安装详细教程附安装包
|
2月前
|
SQL NoSQL 数据可视化
DBeaver|免费全能数据库管理工具 下载和安装
DBeaver 是一款免费开源、跨平台(Windows/macOS/Linux)的通用数据库管理工具,基于 Java/Eclipse 架构。支持 MySQL、PostgreSQL、Oracle、MongoDB、Redis 等 50+ 关系型与 NoSQL 数据库,提供可视化 SQL 编辑、ER 图生成、结构/数据可视化操作及 SSH/SSL 安全连接。
563 0
|
9月前
|
新能源 5G 芯片
Ansys Electronics 全流程电磁仿真降本增效,附安装包
Ansys Electronics Suite是Ansys推出的电磁仿真与电子系统设计平台,覆盖芯片、组件到系统级的电磁、热、电路及多物理场耦合仿真,广泛应用于5G、汽车、航天等领域,助力工程师优化设计、提升性能,缩短研发周期,降低开发成本。
822 2
|
9月前
|
Cloud Native IDE Go
升级 GoLand 2025.1 = 云原生开发提速 80%!微服务 + 容器化一键适配+安装包
GoLand 2025.1 是 JetBrains 推出的 Go 语言旗舰 IDE,全面支持 Go 1.23 新特性,强化泛型、模块化与并发开发体验。内置 AI 辅助、多版本切换、云原生工具链,深度优化性能,提升编码、调试、测试全流程效率,助力开发者高效构建现代 Go 应用。
447 2
|
3月前
|
XML 安全 Java
长期稳定无忧,JDK21.0.5 下载安装+配置详情步骤
JDK 21.0.5 是 Java 21 LTS 的第五个维护更新版,专注安全加固(JMX/TLS/XML/类加载漏洞修复)、JVM优化(ZGC分代改进、虚拟线程Pinning修复)、网络IO与工具链增强,无新语法特性,是中小项目及微服务稳定投产首选版本。(239字)
435 0
|
10月前
|
网络安全 数据库 索引
Everything(文件搜索工具)安装教程!电脑端最强文件搜索神器
Everything是一款毫秒级响应的轻量级文件搜索工具,直接读取NTFS文件系统MFT,无需建库索引,安装包仅1.7MB,资源占用极低。输入关键词即可瞬间定位电脑中的文件与文件夹,支持快速筛选与浏览,大幅提升文件查找效率。
1340 1
|
4月前
|
算法 数据挖掘 Windows
MATLAB R2025b 专业科学计算仿真软件安装详细教程,附安装包
MATLAB R2025b是MathWorks最新版科学计算与工程仿真平台,支持全系统,广泛应用于科研、算法开发与工科教学。含完整安装教程及激活指引,开箱即用。(239字)
697 0
|
5月前
|
Shell Windows
鼠标右键管理,鼠标右键功能如何更改?鼠标右键选项太多怎么处置呢?
这是一款绿色单文件Windows右键菜单管理工具,支持文件、文件夹、桌面、回收站等全场景右键项增删改;界面简洁,操作只需勾选/取消,实时刷新生效;还支持按文件类型定制及Shell高级扩展,兼顾新手与进阶用户需求。(239字)
839 1