文章目录
一、基本概念1.1 JRE (Java Runtime Environment)1.2 JDK (Java Development Kit)
二、核心区别对比三、详细组件分析3.1 JRE包含的核心组件3.2 JDK特有的开发工具
四、工作流程中的角色4.1 开发阶段(需要JDK)4.2 运行阶段(只需要JRE)
五、实际应用场景5.1 需要JRE的情况5.2 需要JDK的情况
六、版本对应关系七、安装与配置7.1 典型安装目录结构7.2 环境变量配置
八、常见问题解答Q1:安装了JDK还需要安装JRE吗?Q2:为什么有些电脑只有JRE没有JDK?Q3:能否只安装JRE来开发Java程序?Q4:Java 8和Java 11在JRE/JDK方面有什么变化?Q5:如何检查系统安装的是JDK还是JRE?
九、现代Java的变化十、总结建议
一、基本概念
1.1 JRE (Java Runtime Environment)
Java运行时环境,是运行Java程序所需的最小环境集合。它包含:
Java虚拟机(JVM):执行Java字节码的核心组件核心类库(Java API):Java标准库,提供基础功能支持其他支持文件:如属性文件、资源文件等
1.2 JDK (Java Development Kit)
Java开发工具包,是用于开发Java应用程序的完整套件。它包含:
JRE的所有内容:因为开发时需要测试运行程序开发工具:编译器、调试器等额外类库:开发专用库(如编译器API、工具API等)
二、核心区别对比
特性JREJDK定位运行环境开发环境包含组件JVM + 核心类库JRE + 开发工具 + 开发库主要用途运行Java程序开发Java程序是否包含编译器否(没有javac)是(包含javac等)是否包含调试工具否是(如jdb)是否包含文档生成工具否是(如javadoc)文件大小较小(约40-60MB)较大(约200-300MB)典型用户终端用户Java开发者能否开发程序不能能
三、详细组件分析
3.1 JRE包含的核心组件
Java虚拟机(JVM)
类加载器(Class Loader)字节码解释器/即时编译器(JIT)内存管理系统垃圾收集器(GC) 核心类库
java.lang(基础类)java.util(集合框架)java.io(I/O操作)java.net(网络编程)java.awt/Swing(GUI,现代已较少使用) 辅助文件
字符集转换文件安全策略文件字体文件等
3.2 JDK特有的开发工具
编译工具
javac:Java编译器,将.java文件编译为.class文件 打包工具
jar:创建和管理JAR文件javapackager:创建原生安装包 调试诊断工具
jdb:Java调试器jstack:线程堆栈分析jmap:内存映射工具jstat:JVM统计监控工具 文档工具
javadoc:生成API文档 其他实用工具
javah:生成C头文件(用于JNI)native2ascii:本地编码转换jshell:Java REPL工具(JDK9+)
四、工作流程中的角色
4.1 开发阶段(需要JDK)
4.2 运行阶段(只需要JRE)
五、实际应用场景
5.1 需要JRE的情况
运行Java Web应用(Tomcat等)执行桌面Java应用程序运行Minecraft等Java游戏使用基于Java的软件(如Eclipse IDE)
5.2 需要JDK的情况
开发Java应用程序编译Java源代码生成API文档调试Java程序性能分析和监控
六、版本对应关系
JDK和JRE有严格的版本对应关系:
JDK 11包含JRE 11不能混合使用不同版本(如JDK 11编译的类文件不能用JRE 8运行)
注意:从Java 9开始,Oracle不再提供独立的JRE安装包,而是采用模块化方式(jlink工具可创建自定义运行时)
七、安装与配置
7.1 典型安装目录结构
JRE目录结构:
jre/
├── bin/ # 可执行文件(java等)
├── lib/ # 核心类库
└── conf/ # 配置文件
JDK目录结构:
jdk/
├── bin/ # 开发工具(javac,java等)
├── lib/ # 开发库
├── jre/ # 内嵌的JRE
├── include/ # 本地接口头文件
└── src.zip # 源代码
7.2 环境变量配置
Windows配置示例:
# JDK配置
set JAVA_HOME=C:\Program Files\Java\jdk-17
set PATH=%JAVA_HOME%\bin;%PATH%
# 验证安装
javac -version
java -version
Linux/macOS配置示例:
# JDK配置
export JAVA_HOME=/usr/lib/jvm/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
# 验证安装
javac -version
java -version
八、常见问题解答
Q1:安装了JDK还需要安装JRE吗?
A:不需要。JDK已经包含了完整的JRE环境。
Q2:为什么有些电脑只有JRE没有JDK?
A:因为这些电脑只需要运行Java程序,不需要开发Java应用。
Q3:能否只安装JRE来开发Java程序?
A:不能。缺少编译器(javac)等必要工具。
Q4:Java 8和Java 11在JRE/JDK方面有什么变化?
A:Java 9开始引入模块化系统,Java 11后Oracle不再提供独立的JRE下载。
Q5:如何检查系统安装的是JDK还是JRE?
A:运行javac -version,如果命令不存在则只有JRE。
九、现代Java的变化
随着模块化系统(Java 9+)的引入:
jlink工具:可以创建包含特定模块的自定义运行时精简运行时:开发者可以裁剪不需要的模块JDK镜像:现在JDK安装包已经包含了完整的运行时环境
十、总结建议
开发者:必须安装JDK(推荐LTS版本如JDK 11/17)普通用户:只需JRE即可运行Java程序(现代Java应用中通常已捆绑)生产环境:建议使用jlink创建最小化运行时镜像版本选择:保持开发环境和运行环境版本一致
理解JDK和JRE的区别有助于:
正确配置开发环境合理部署Java应用避免"类版本不兼容"等常见问题优化应用程序分发大小