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

相关推荐
vx1_Biye_Design1 分钟前
基于Spring Boot+Vue的学生管理系统设计与实现-计算机毕业设计源码46223
java·vue.js·spring boot·spring·eclipse·tomcat·maven
vx_Biye_Design2 分钟前
基于Spring Boot+vue的湖北旅游景点门票预约平台的设计--毕设附源码29593
java·vue.js·spring boot·spring cloud·servlet·eclipse·课程设计
Cult Of2 分钟前
Alicea Wind的个人网站开发日志(2)
开发语言·python·vue
我找到地球的支点啦8 分钟前
通信扩展——扩频技术(超级详细,附带Matlab代码)
开发语言·matlab
hay_lee20 分钟前
Spring AI实现对话聊天-流式输出
java·人工智能·ollama·spring ai
Hx_Ma1626 分钟前
SpringBoot数据源自动管理
java·spring boot·spring
微小冷27 分钟前
Rust异步编程详解
开发语言·rust·async·await·异步编程·tokio
SunnyDays101127 分钟前
Java 高效实现 CSV 转 Excel
java·csv转excel
starfire_hit28 分钟前
JAVAWEB根据前台请求获取用户IP
java·服务器·网络
fengxin_rou30 分钟前
[Redis从零到精通|第四篇]:缓存穿透、雪崩、击穿
java·redis·缓存·mybatis·idea·多线程