
文章目录
- [一、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 版本" 通常指语言 & 标准库版本,也就是你编译/运行代码时所用的版本。
参考资料