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

yumo6662周前 (06-08)技术文章8

前几天我在老版本的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了,还真有点不习惯,但慢慢会习惯的。

相关文章

JAVA模块化 – JDK生成JRE

手写一个JAVA小程序,因为使用了Java11相关的API,必需要Jre11才能运行。到Jdk安装目录中没找Jre,于是去官网下载Jre11,发现官方只提供Jre8。原来自Jdk11之后,Jdk中不带...

JDK vs JRE vs JVM:3分钟搞懂Java三大核心组件的区别!

你是不是刚开始学Java时,总被JDK、JRE、JVM这三个缩写搞得晕头转向?今天我们就用最通俗易懂的方式,帮你彻底理清它们之间的关系! 先看最核心的JVM(Java虚拟机)想象你买了一台进口咖啡机(...

[Maven]Eclipse插件之Maven配置及问题解析.

前言:今天在自己环境装了Maven环境, 并且安装了Eclipse插件, 在查找插件过程中确实遇到一些问题, 好不容易找到一个 却又有问题.装好了插件之后, 用Eclipse创建Maven项目却出现两...