前几天我在老版本的STS(3.x 版本)上想配置个JDK17,结果没配置成功,提示没有 JRE,我以为是那个文件有问题,又重新下载了一个JDK17,结果还是一样的,依旧没有 JRE,这是为什么呢?
调查之后发现,在Java 9版本之后,Oracle 改变了 Java 的发行方式,移除了JRE(Java Runtime Environment)的独立发布。因此,Java 9(以及之后的版本)也没有单独的 JRE 了。
一、JDK和JRE对比
JDK(Java Development Kit)和JRE(Java Runtime Environment)都曾经是Java 相关的两种重要组件,它们有不同的用途和功能。
1、JDK(Java Development Kit)
JDK 是 Java 开发工具包,它是用于开发 Java 程序的完整工具集。它包含了编译器、调试工具、文档生成工具等,供开发者使用。
JDK 包含了 JRE,因此 JDK 具备运行 Java 程序的能力。
编译器(javac)用于将 Java 源代码(.java文件)编译成字节码(.class文件)。
调试器(jdb)用于调试 Java 程序。
其他开发工具:包括 Javadoc(生成 API 文档的工具)、JAR(Java Archive,用于打包类文件)等。
JDK 是为开发人员准备的,开发人员需要它来编写、调试和编译 Java 应用程序。
2、JRE(Java Runtime Environment)
JRE 是 Java 运行时环境,它是一个提供 Java 程序运行所需的环境。JRE 主要用于运行 Java 应用程序。它包括JVM和类库。
JVM:是执行 Java 程序的核心部分,它负责加载字节码并执行代码。
类库:JRE 包含了 Java 标准库(如 java.util、java.io 等),这些库是 Java 程序运行时所需要的类和包。
JRE 是为普通用户提供的,普通用户只需要它来运行 Java 应用程序,而不需要开发工具。
3、两者对比
4、什么时候使用 JDK,什么时候使用 JRE:
开发阶段:如果我们是 Java 开发人员,编写和编译 Java 程序,那么我们需要安装 JDK。
运行阶段:如果我们只是需要运行已经编译好的 Java 程序,而不进行开发,我们只需要安装 JRE。
二、为什么没有JRE
1、模块化系统(Project Jigsaw):
在 Java 9 引入了模块化系统(Project Jigsaw),这使得 JDK 的结构更加模块化。
Java 运行时环境的组成变得更加灵活,用户可以选择需要的模块,而不再需要安装完整的 JRE。
2、JDK 中包含了运行时环境:
在 Java 9 之后,JDK 包含了开发工具(如编译器、调试器)以及JVM 和所有 Java 类库,也就是说运行 Java 程序所需的运行时环境已经和开发工具捆绑在一起。
所以,Java 9 和之后的版本中,不再单独发布 JRE,用户和开发者都只需要安装 JDK,JDK 中包含了 JVM 和所有必需的类库,满足开发和运行 Java 程序的需求。
3、对用户的影响
如果我们只需要运行 Java 程序,以前我们可能只需要 JRE,但现在我们只需要安装 JDK,因为 JDK 自带了运行时环境(JVM 和类库)。
三、最后总结
现在,在 Java 9 和之后的版本中,不再单独发布 JRE,用户和开发者都只需要安装 JDK,JDK 中包含了 JVM 和所有必需的类库,满足开发和运行 Java 程序的需求。
因此我们也不再需要关注JRE了,只要知道在历史的版本中曾经有这么个玩意就行了。
从JDK8一下子跳到了JDK17,突然没有JRE了,还真有点不习惯,但慢慢会习惯的。
领取专属 10元无门槛券
私享最新 技术干货