首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OjfwFcwWLnBlIAnG7rfkMEuw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券