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

相关推荐
CoderYanger4 小时前
A.每日一题——3432. 统计元素和差值为偶数的分区方案
java·数据结构·算法·leetcode·1024程序员节
huohuopro5 小时前
java基础深度学习 #1
java·开发语言·java基础
csbysj20205 小时前
Django 模板
开发语言
Zaralike5 小时前
Java设计模式
java·开发语言·设计模式
一 乐5 小时前
智慧养老|基于springboot+小程序社区养老保障系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·小程序
JIseven5 小时前
uniapp页面新手引导
java·前端·uni-app
liu****5 小时前
20.预处理详解
c语言·开发语言·数据结构·c++·算法
蕨蕨学AI5 小时前
【Wolfram语言】8 基本图形对象
开发语言·wolfram
froginwe116 小时前
NumPy 数组属性
开发语言