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版本的区别|极客教程

相关推荐
程序员清风12 小时前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林55113 小时前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
华仔啊19 小时前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing19 小时前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员
日月云棠1 天前
各版本JDK对比:JDK 25 特性详解
java
用户8307196840821 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide2 天前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code
IT探险家2 天前
Java 基本数据类型:8 种原始类型 + 数组 + 6 个新手必踩的坑
java
花花无缺2 天前
搞懂new 关键字(构造函数)和 .builder() 模式(建造者模式)创建对象
java
用户908324602732 天前
Spring Boot + MyBatis-Plus 多租户实战:从数据隔离到权限控制的完整方案
java·后端