JDK17居然没有JRE,你发现了吗?从哪个版本没有JRE的呢?

JDK17居然没有JRE,你发现了吗?从哪个版本没有JRE的呢?

编码文章call10242025-06-02 13:59:187A+A-

前几天我在老版本的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、两者对比

特性

JDK

JRE

包含内容

包含 JRE 和开发工具(编译器、调试器等)

仅包含 JVM 和 Java 类库

主要用途

用于开发 Java 程序

用于运行 Java 程序

开发者需求

开发者需要 JDK 来编写和编译程序

用户只需要 JRE 来运行程序

是否包含 JRE

包含

不包含(仅提供运行环境)

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了,还真有点不习惯,但慢慢会习惯的。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4