JDK 版本与 Java 版本的关系


文章目录

  • [一、Java、JDK、JRE 三者概念](#一、Java、JDK、JRE 三者概念)
      • Java
      • [JRE(Java Runtime Environment)](#JRE(Java Runtime Environment))
      • [JDK(Java Development Kit)](#JDK(Java Development Kit))
  • 二、JDK版本就是Java版本!(重点)
  • [三、为什么大家都说 Java8 而不是 JDK8?](#三、为什么大家都说 Java8 而不是 JDK8?)
  • [四、JDK 到底提供什么?](#四、JDK 到底提供什么?)
  • [五、Oracle JDK vs OpenJDK 是什么关系?](#五、Oracle JDK vs OpenJDK 是什么关系?)
  • [六、为什么从 Java9 开始一年一个版本?](#六、为什么从 Java9 开始一年一个版本?)
  • [七、主流 LTS 版本](#七、主流 LTS 版本)
  • 八、你应该使用哪个版本?
  • [九、Java(Java SE)版本与 JDK 版本对应表](#九、Java(Java SE)版本与 JDK 版本对应表)

一、Java、JDK、JRE 三者概念

Java

指的是编程语言(语法规范),比如:

  • if
  • for
  • 面向对象
  • 类
  • 接口
  • 泛型
    等都属于语言部分。

JRE(Java Runtime Environment)

运行 Java 程序必须有 JRE

包含:

  • JVM
  • 标准类库(rt.jar)
  • 必要运行组件

适合运行 Java 程序,不适合开发。


JDK(Java Development Kit)

开发 Java 程序必须安装 JDK

包含:

  • JRE
  • Java 编译器(javac)
  • 调试工具
  • Javadoc
  • 工具链

JDK = JRE + 开发工具


二、JDK版本就是Java版本!(重点)

来看官方说明:

名称 指代
Java 8 Java语言规范 8
JDK 8 Java开发工具包 8
JRE 8 Java运行环境 8

它们都是同一代版本!

因此:

JDK8 = Java8 = JRE8

所以你能看到:

  • Java8
  • JDK8
  • JRE8
  • Java SE 8

说法不同,本质相同。


三、为什么大家都说 Java8 而不是 JDK8?

因为:

  • JDK 是工具
  • Java 是语言版本

开发者更关心语言特性:

  • Lambda
  • Stream
  • Optional
  • default method
  • 新时间API

这些属于语言能力,所以我们说 "Java8 新特性"。

Java8或者JDK8或者JDK1.8或J2SE8或J2SE1.8或J2SE8或J2SE1.8,这几个词汇的概念是一样的。


四、JDK 到底提供什么?

功能 JDK
Java 编译 ✔
运行 Java 程序 ✔
JVM ✔
JRE ✔
工具链 ✔
Javadoc ✔
热点优化 ✔

一句话总结👇

JDK 是完整工具箱,Java 是语言,JRE 是运行环境。


五、Oracle JDK vs OpenJDK 是什么关系?

项目 OpenJDK Oracle JDK
开源 ✔ 部分
授权 GPL 商用需要许可(旧版本)
功能差异 几乎无 几乎相同
更新频率 官方主流 商用支持

📌 简单说:

Oracle JDK 商业版本

OpenJDK 开源标准

目前二者已基本一致。


六、为什么从 Java9 开始一年一个版本?

Java8 -> 2014

然后... 安静了3年 😨

于是 Java 官方决定改策略:

每 6 个月发布一个版本

因此出现:

Java 9(2017)

Java 10(2018)

Java 11(2018)

Java 12(2019)

......

版本变多,但真正长期支持的是 LTS 版本👇


七、主流 LTS 版本

版本 发布时间 LTS
Java 8 2014 ✔
Java 11 2018 ✔
Java 17 2021 ✔
Java 21 2023 ✔

企业一般只使用 LTS 版本。


八、你应该使用哪个版本?

如果你是:

  • 学习
  • 面试
  • 项目入门

👉 JDK8(最稳定,资料最多)

如果你做新项目

👉 JDK17、21(长期支持)

九、Java(Java SE)版本与 JDK 版本对应表

Java / Java SE 版本 JDK 版本 / 名称
Java 1.0 JDK 1.0 (examclouds.com)
Java 1.1 JDK 1.1 (InfoQ 写作社区)
Java 1.2 JDK 1.2 (J2SE 1.2) (examclouds.com)
Java 1.3 JDK 1.3 (J2SE 1.3) (InfoQ 写作社区)
Java 1.4 JDK 1.4 (J2SE 1.4) (InfoQ 写作社区)
Java 5 JDK 5.0 (also sometimes referred to as 1.5) (javacodepoint.com)
Java 6 JDK 6 (1.6) (examclouds.com)
Java 7 JDK 7 (1.7) (examclouds.com)
Java 8 JDK 8 (1.8) (examclouds.com)
Java 9 JDK 9 (codejava.net)
Java 10 JDK 10 (codejava.net)
Java 11 JDK 11 (codejava.net)
Java 12 JDK 12 (codejava.net)
Java 13 JDK 13 (codejava.net)
Java 14 JDK 14 (codejava.net)
Java 15 JDK 15 (codejava.net)
Java 16 JDK 16 (codejava.net)
Java 17 JDK 17 (codejava.net)
Java 18 JDK 18 (codejava.net)
Java 19 JDK 19 (codejava.net)
Java 20 JDK 20 (codejava.net)
Java 21 JDK 21 (codejava.net)
Java 22 JDK 22 (codejava.net)
Java 23 JDK 23 (codejava.net)
Java 24 JDK 24 (java.com)

⚠️ 注意:从 Java 9 开始,Java 的版本号与 JDK 版本号对齐 ------ 所以 "Java 15 / JDK 15" 就是同一个版本。


补充说明/常见混淆

  • 早期版本有些混乱 ------ 比如 Java 5 常被称为 JDK 5.0 ,同时对应 "1.5" "1.5.0" 等多种写法。 (InfoQ 写作社区)
  • 通常人们说 "Java 8"、"Java 11"、"Java 17" 等,实际上就是指对应的 JDK 版本。
  • "JDK" 包含了编译器、运行时、标准库等;而 "Java 版本" 通常指语言 & 标准库版本,也就是你编译/运行代码时所用的版本。

参考资料

Java--Java版本和JDK版本_java版本和jdk版本区别-CSDN博客

Java版本和JDK版本的区别|极客教程

相关推荐
猿究院_夏燊4 小时前
Spring Bean 生命周期
java·后端·spring
Wang's Blog5 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
信誓旦旦的程序猿5 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河5 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年5 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Jlzn88885 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
Williamtym6 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
香吧香6 小时前
GRPC连接机制---长连接分析
java·网络与传输协议
DongQiShanRen6 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CS创新实验室6 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python