Java JDK/JRE/JVM 架构解析
一、核心定义
- JVM (Java Virtual Machine)
- 本质:字节码执行引擎
- 功能:提供内存管理、即时编译(JIT)、垃圾回收(GC)机制
- 特性:平台相关(不同OS需对应JVM实现)
- 生命周期:进程级(每个Java应用启动独立JVM实例)
- JRE (Java Runtime Environment)
= JVM + 核心类库(java.lang/java.util等) + 配置文件
- 作用:Java程序运行的最小完整环境
- 包含:
• rt.jar(运行时类库)
• 安全策略文件
• 本地方法接口(JNI)
- JDK (Java Development Kit)
= JRE + 开发工具链
- 关键组件:
• javac(编译器)
• jar(打包工具)
• jshell(交互式编程)
• jlink(定制化运行时生成)
• 调试/监控工具(jdb, jvisualvm)
二、层级关系
┌───────────┐
│ JDK │
│ ┌───────┐ │
│ │ JRE │ │
│ │ ┌───┐ │ │
│ │ │JVM│ │ │
│ │ └───┘ │ │
│ └───────┘ │
└───────────┘
三、版本演进对比
Java 8 | Java 17 LTS | Java 21 LTS | |
---|---|---|---|
JVM改进 | PermGen移除 | ZGC正式生产可用 | 分代ZGC |
JDK工具 | jmc需要单独下载 | jpackage模块化打包 | 虚拟线程支持增强 |
JRE大小 | ~200MB | ~150MB(基础模块) | ~40MB(自定义运行时) |
四、典型应用场景
- 开发者工作站:必须安装JDK(含完整JRE)
- 生产服务器:只需部署JRE或使用jlink生成的定制运行时
- 客户端应用:通过jpackage生成包含JRE的独立安装包
五、诊断命令示例
# 查看JVM参数
jinfo <pid>
# 分析内存使用
jmap -heap <pid>
# 追踪类加载情况
java -verbose:class MainClass
六、现代Java环境变化
- 模块化系统(JPMS):允许裁剪JRE大小
- GraalVM:支持多语言运行的增强型JVM
- Project Leyden:推进静态编译技术发展
附:官方资源
- JVM规范:https://docs.oracle.com/javase/specs/jvms/se21/html/
- JDK工具指南:https://dev.java/learn/jdk-tools/