【Java 基础(人话版)】JDK 与 JRE

embedded/2025/3/14 13:41:26/

JDK 与 JRE:你真的了解它们的区别吗?

在 Java 开发的世界里,我们经常会听到 JDK(Java Development Kit)JRE(Java Runtime Environment) 这两个名词。很多初学者甚至部分开发者,对它们的区别和联系并不完全清楚。今天,我们就用通俗易懂的方式,一起来搞懂 JDK 和 JRE,并看看 Java 版本的演进带来了哪些变化。


1. JDK 和 JRE 到底是什么?

JDK:完整的 Java 开发工具包

JDK 是 Java 开发人员必备的工具包,包含了开发和运行 Java 程序所需的一切组件。其中包括:

  • JRE(Java 运行环境):保证 Java 程序可以正常运行。
  • 编译器 javac:将 Java 源代码(.java 文件)转换成字节码(.class 文件)。
  • 开发工具
    • javadoc:自动生成 Java API 文档的工具。
    • jdb:调试 Java 程序的调试器。
    • jconsole:用于监控 Java 进程的工具。
    • javap:反编译 .class 文件的工具。

简单来说,JDK = JRE + 开发工具,是 Java 开发的“全家桶”。

JRE:只负责运行 Java 程序

JRE 是 Java 运行环境,它本身不能用于开发 Java 程序,只是负责让 Java 应用能跑起来。JRE 主要包含两部分:

  1. JVM(Java Virtual Machine):即 Java 虚拟机,负责执行 Java 字节码,让 Java 代码可以跨平台运行。
  2. Java 标准类库(Class Library):提供各种常用的 API,比如 I/O 操作、网络通信、数据结构等。

总结

  • 如果你只是想运行 Java 程序(比如玩一个 Java 写的游戏),只需要 JRE。
  • 如果你要开发 Java 程序(写代码、编译、调试),就需要安装 JDK。

2. 为什么 JDK 9 之后不再需要 JRE 了?

在早期的 Java 版本中,JDK 和 JRE 是两个相对独立的概念。但从 JDK 9 开始,Java 引入了模块化系统(Jigsaw 项目),改变了 JDK 的结构,使得 JRE 和 JDK 的界限变得模糊。主要有以下几个变化:

(1)JDK 9:模块化系统

JDK 9 采用 模块化(Modules) 设计,将整个 JDK 重新组织成了 94 个模块。开发者可以按需选择所需的模块,而不必安装完整的 JDK。

(2)jlink 工具:自定义 Java 运行时

Java 9 还引入了 jlink 工具,它可以根据应用程序的需求,创建一个精简版的 Java 运行时环境,仅包含必要的模块。这带来的好处包括:

  • 更小的体积:不用再安装冗余的 JRE。
  • 更高的安全性:减少了攻击面,降低潜在的安全风险。
  • 更适合现代开发:在微服务、容器化和云原生环境下,更轻量的 Java 运行时能提高部署效率。
(3)JDK 11 之后,Oracle 不再提供单独的 JRE

JDK 11 开始,Oracle 官方不再发布单独的 JRE 下载,而是鼓励开发者使用 jlink 来创建适用于自己应用的 Java 运行时。


3. JDK 9+ 的优势:为什么要拥抱模块化?

模块化系统给 Java 带来了很多好处,尤其是对于现代软件架构,比如:

  • 微服务架构:可以为每个微服务定制一个小型的 Java 运行环境,而不是让所有服务都依赖一个庞大的 JDK。
  • 容器化和云原生开发:轻量级的 Java 运行时可以减少 Docker 镜像大小,提高部署效率。
  • 增强安全性:减少未使用的 API 依赖,降低潜在的安全风险。

4. 总结:JDK 和 JRE 你应该怎么选?

需求选择
只是运行 Java 应用以前:JRE(JDK 11 之后建议使用 jlink 生成的自定义运行时)
开发 Java 应用JDK(包含所有开发工具)
优化 Java 运行环境使用 jlink 生成最小化 Java 运行时

从 JDK 9 之后,JRE 已经逐渐被模块化的 jlink 方案取代,而 JDK 仍然是开发者不可或缺的工具。


http://www.ppmy.cn/embedded/172501.html

相关文章

CSS 知识点总结1

CSS 知识点总结1 今天写了两个页面,用到的知识点,总结一下 1. Flexbox 布局 display: flex;:启用 Flexbox 布局,用于创建灵活的容器。flex-direction: column;:将子元素垂直排列。justify-content:控制子元素在主轴…

windows第十二章 MFC控件常用消息

文章目录 控件反射消息机制文本框控件EN_CHANGE消息EN_UPDATE消息EN_SETFOCUS消息EN_KILLFOCUS消息EN_MAXTEXT消息EN_ERRSPACE消息EN_HSCROLL消息 按钮控件BN_CLICKED消息BN_DOUBLECLICKED消息BN_SETFOCUS消息BN_KILLFOCUS消息 单选按钮BN_CLICKED 消息 复选框BN_CLICKEDBN_DOU…

《Transformer如何进行图像分类:从新手到入门》

引言 如果你对人工智能(AI)或深度学习(Deep Learning)感兴趣,可能听说过“Transformer”这个词。它最初在自然语言处理(NLP)领域大放异彩,比如在翻译、聊天机器人和文本生成中表现出…

大语言模型(一) 初识大模型

课程讲解视频:《大语言模型》1.1 语言模型发展历程 开源学习网站:https://www.datawhale.cn/learn/content/107/3267 语言模型的发展历程 大模型技术基础 GPT和DeepSeek模型介绍

完美解决ElementUI中树形结构table勾选问题

完美解决ElementUI中树形结构table勾选问题 实现功能效果图全选取消全选取消父节点取消某个子节点 关键代码 实现功能 1. 全选/取消全选,更新所有节点勾选状态 2. 勾选父/子节点,子/父节点状态和全选框状态更新 效果图 全选 取消全选 取消父节点 取消某…

通义万相 2.1 × 蓝耘智算:AIGC 界的「黄金搭档」如何重塑创作未来?

我的个人主页 我的专栏: 人工智能领域、java-数据结构、Javase、C语言,希望能帮助到大家!!! 点赞👍收藏❤ 引言 在当今数字化浪潮席卷的时代,AIGC(生成式人工智能)领域正…

医院本地化DeepSeek R1对接混合数据库技术实战方案研讨

1. 引言 Deep SEEK R1是一个医疗智能化平台,通过本地化部署实现数据的安全性和可控性,同时提供高效的计算能力。随着医疗信息化的迅速发展,各种数据源的增加使得医院面临更多复杂的挑战,包括如何处理实时监测数据、如何进行大数据环境下的复杂查询以及如何整合多模态数据等…

Python+DeepSeek:开启AI编程新次元——从自动化到智能创造的实战指南

文章核心价值 技术热点:结合全球最流行的编程语言与国产顶尖AI模型实用场景:覆盖代码开发/数据分析/办公自动化等高频需求流量密码:揭秘大模型在编程中的创造性应用目录结构 环境搭建:5分钟快速接入DeepSeek场景一:AI辅助代码开发(智能补全+调试)场景二:数据分析超级助…