专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

JDK vs JRE:到底有什么本质区别?99%的人都答不上来

ins518 2025-09-01 03:48:21 技术文章 6 ℃ 0 评论

一、用开面包店的故事讲清楚核心区别

想象你要开一家面包店:

  • JRE就像顾客区:摆着桌椅和展示柜,顾客可以直接享用面包(运行Java程序)
  • JDK则是整个面包店:不仅有顾客区(JRE),还包含后厨(编译器)、研发室(调试工具)和仓库(类库)

一句话总结:

JRE=能吃面包的地方(运行环境)
JDK=能做+能吃面包的地方(开发+运行环境)

二、3张图看懂技术区别

1. 组成结构对比

特性

JRE

JDK

核心功能

运行Java程序

开发+运行Java程序

包含组件

JVM+类库

JRE+编译器+调试器

用户群体

普通用户

开发者

典型大小

100-200MB

300-500MB

2. Java 9模块化革命

重大变化

  • 移除传统rt.jar,改用jmod模块文件
  • 支持自定义运行时镜像(最小可至40MB)
  • 强封装性:模块间需显式声明依赖

3. JRE的消失之谜

Java 11后官方不再提供JRE,替代方案:

# 生成自定义运行时
jlink --module-path jmods --add-modules java.base --output myjre

三、开发者必知的3个坑

1. 安装误区

只装JRE导致无法编译:javac: command not found
正确姿势:安装JDK并配置环境变量

2. 环境变量优先级陷阱

Windows系统中Java路径优先级:

  1. System32目录 > 2. JAVA_HOME > 3. 其他Path路径

解决:清理System32下的java.exe

3. 多版本切换问题

# 错误示例:同时存在JDK8和JDK11时
java -version  # 可能显示11而非预期的8

解决:修改Path中JDK路径顺序

四、真实生产事故警示

某支付系统因JVM参数设置错误导致OOM:

# 错误配置
-Xms8g -Xmx8g -Xmn8g  # 年轻代大小等于堆大小

# 正确配置(年轻代通常设为堆大小的1/3)
-Xms8g -Xmx8g -Xmn3g

教训:JDK工具链中的jconsole可实时监控JVM状态

五、2025年最新版选择指南

场景

推荐版本

理由

企业开发

JDK 17 LTS

长期支持至2029年

学习入门

JDK 21

虚拟线程等新特性

老旧系统

JDK 8

兼容性最佳

提示:通过java -version和javac -version验证安装是否正确

六、一句话区分

  • 如果你是用户:双击jar文件运行 → 需要JRE
  • 如果你是开发者:写代码编译 → 需要JDK

(注:本文所有架构图来源网络,案例参考Oracle官方文档及CSDN技术博客)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表