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

相关推荐
kylezhao20191 天前
第1章:第一节 开发环境搭建(工控场景最优配置)
开发语言·c#
啃火龙果的兔子1 天前
JavaScript 中的 Symbol 特性详解
开发语言·javascript·ecmascript
Coder_Boy_1 天前
基于SpringAI的智能平台基座开发-(六)
java·数据库·人工智能·spring·langchain·langchain4j
热爱专研AI的学妹1 天前
数眼搜索API与博查技术特性深度对比:实时性与数据完整性的核心差异
大数据·开发语言·数据库·人工智能·python
Mr_Chenph1 天前
Miniconda3在Windows11上和本地Python共生
开发语言·python·miniconda3
阿狸远翔1 天前
Protobuf 和 protoc-gen-go 详解
开发语言·后端·golang
永远前进不waiting1 天前
C复习——1
c语言·开发语言
伯明翰java1 天前
Java数据类型与变量
java·开发语言
一路往蓝-Anbo1 天前
【第13期】中断机制详解 :从向量表到ISR
c语言·开发语言·stm32·单片机·嵌入式硬件
渣渣盟1 天前
Linux邮件服务器快速搭建指南
linux·服务器·开发语言