【JAVA】-JDK
JDK(Java Development Kit)发展历史与各发行版本概述
Java Development Kit(JDK)是用于开发和运行 Java 应用程序的工具包,包含了编译器、运行时环境(JRE)、核心类库等。JDK 的演进过程与 Java 语言的发展密切相关,不同的 JDK 版本为开发者提供了越来越丰富的功能和工具,下面是 JDK 的发展历程和各个发行版本的详细介绍。
openJDK-官网 :https://openjdk.org/
JDK 发展历史
JDK 1.0(1996年1月23日发布)
- Java语言的第一个正式版本,提供了Java虚拟机(JVM)、抽象窗口工具包(AWT)和小程序(Applet)等基础功能。
JDK 1.1(1997年2月19日发布)
- 引入了JavaBeans、JDBC、RMI等关键技术,增强了Java的功能性和可扩展性。
JDK 1.2(1998年12月4日发布)
- 标志着Java 2平台的诞生,拆分为J2SE(标准版)、J2EE(企业版)和J2ME(微型版)。
JDK 1.3(2000年5月8日发布)
- 增强了性能和稳定性,改进了JVM和JNDI等组件。
JDK 1.4(2002年2月6日发布)
- 引入了正则表达式、NIO(New I/O)和日志API等新特性。
JDK 5.0(2004年9月30日发布)
- 引入了泛型、枚举、注解、自动装箱等语言特性,显著提升了Java的表达能力。
JDK 6(2006年12月11日发布)
- 主要关注性能提升和Web服务支持。
JDK 7(2011年7月28日发布)
- 引入了语言增强(如try-with-resources语句)和NIO 2.0等特性。
JDK 8(2014年3月18日发布)
- 引入了Lambda表达式、Stream API和新的日期时间API等,极大地提升了开发效率。
JDK 9(2017年9月21日发布)
- 引入了模块化系统(Project Jigsaw),增强了平台的可维护性和可扩展性。
JDK 10(2018年3月20日发布)
- 引入了局部变量类型推断(var关键字),简化了代码编写。
JDK 11(2018年9月25日发布)
- 成为下一个长期支持(LTS)版本,移除了部分过时的功能,提升了性能和安全性。
JDK 12(2019年3月19日发布)
- 引入了Shenandoah垃圾回收器和JVM常量接口等新特性。
JDK 13(2019年9月17日发布)
- 引入了动态CDS归档和ZGC的并发标记等改进。
JDK 14(2020年3月17日发布)
- 引入了JEP 358:ZGC的并发类加载器等新特性。
JDK 15(2020年9月15日发布)
- 引入了JEP 339:外部内存访问API等新特性。
JDK 16(2021年3月16日发布)
- 引入了JEP 376:JVM常量API等新特性。
JDK 17(2021年9月14日发布)
- 成为下一个长期支持(LTS)版本,包含了多项性能和安全性改进。
JDK 18(2022年3月22日发布)
- 引入了JEP 417:Foreign Function & Memory API(第二部分)等新特性。
JDK 19(2022年9月20日发布)
- 引入了JEP 424:Foreign Function & Memory API(第三部分)等新特性。
JDK 20(2023年3月21日发布)
- 引入了JEP 429:Record Patterns(第二部分)等新特性。
JDK 21(2023年9月19日发布)
- 成为下一个长期支持(LTS)版本,包含了多项性能和安全性改进。
JDK 22(2024年3月19日发布)
- 引入了JEP 442:Foreign Function & Memory API(第四部分)等新特性。
JDK 23(2024年9月17日发布)
- 引入了JEP 456:Project Loom的虚拟线程等新特性。
JDK 24(计划于2025年3月发布)
- 计划引入Project Lilliput的64位对象指针压缩等新特性。
JDK 25(计划于2025年9月发布)
- 计划成为下一个长期支持(LTS)版本,包含多项性能和安全性改进。
JDK 与 JRE 及 JVM 的关系
JVM(Java Virtual Machine,Java 虚拟机)
JVM 就像一个“翻译器”,专门帮 Java 程序把“Java 语言”(字节码)翻译成电脑能直接运行的“机器语言”。不同操作系统有不同版本的 JVM,但它们都能理解 Java 字节码,这也是为什么 Java 可以实现“编写一次,随处运行”的关键。
JVM 的主要工作:
- 加载程序:把 Java 文件加载到内存中准备运行。
- 执行代码:把 Java 字节码翻译成机器语言并执行。
- 内存管理:负责管理程序使用的内存区域,如“堆”和“栈”。
- 垃圾回收:自动回收不用的内存,避免手动管理的麻烦。
JRE(Java Runtime Environment,Java 运行时环境)
JRE 是 Java 程序运行所需的“工具包”,包含了 JVM 和一堆 Java 程序常用的“标准工具”(类库)。
JRE 的主要部分:
- JVM:执行 Java 代码的核心工具。
- 类库:比如用来操作文件、网络连接和多线程。
JRE 的作用是让用户能运行 Java 程序。如果你只用 Java 软件而不开发 Java 程序,只需要安装 JRE。
JDK(Java Development Kit,Java 开发工具包)
JDK 是给 Java 开发者用的“全套工具箱”,包含了 JRE 以及写代码、编译、调试 Java 程序的工具。
JDK 的主要部分:
-
JRE:提供 Java 程序运行环境。
-
开发工具
:
- javac:编译器,把你写的 Java 代码变成字节码。
- java:用来运行字节码。
- javadoc:生成 API 文档。
- jar:打包工具,把多个文件封装成一个。
JDK 是你开发 Java 程序必不可少的工具包。
JVM、JRE 和 JDK 之间的关系
- JVM 是 JRE 的一部分,用来运行 Java 程序。
- JRE 是 JDK 的一部分,提供运行环境。
- JDK 包含了 JRE 和开发工具。
简单的层级关系如下:
JDK
└── JRE
└── JVM
如何选择
- 只想运行 Java 程序:安装 JRE。
- 想开发 Java 程序:安装 JDK,它已经包含 JRE。
总结
- JVM 是“翻译器”,负责运行 Java 程序。
- JRE 是“运行环境”,用来运行 Java 程序。
- JDK 是“开发工具箱”,用来开发和运行 Java 程序。
JDK 发行版本及其关系
- OpenJDK — 母版 JDK
- OpenJDK 是 Java 的官方开源实现,是 JDK 标准的参考实现。它是所有 JDK 发行版的基础,各大厂商和社区根据 OpenJDK 开源代码进行定制。
- 开源协议:遵循 GNU General Public License(GPL)v2 + 类路径例外,完全开源。
- Oracle JDK — 商业发行版
- Oracle JDK 基于 OpenJDK,但加入了更多商业特性,如 Java Flight Recorder、JDK Mission Control 等。它提供官方的技术支持和长期更新,但从 JDK 11 起,商业支持需要付费订阅。
- Amazon Corretto
- Amazon Corretto 是由 Amazon Web Services 提供的基于 OpenJDK 的 JDK 版本,提供长期支持(LTS)。它被特别优化以适应 AWS 环境,但也支持其他平台。
- Eclipse Adoptium(原 AdoptOpenJDK)
- Eclipse Adoptium 提供了 OpenJDK 的构建和二进制发布,原 AdoptOpenJDK 项目于 2021 年加入 Eclipse 基金会,提供免费的、基于 OpenJDK 的 JDK 发行版,支持跨平台部署。
- Zulu OpenJDK
- Zulu OpenJDK 是 Azul Systems 提供的 OpenJDK 版本,针对性能进行优化,特别是在内存管理和垃圾回收方面。它为用户提供了长期支持(LTS)版本,适用于大规模应用。
- Red Hat OpenJDK
- Red Hat OpenJDK 由 Red Hat 提供,主要针对在其企业级 Linux 系统(如 RHEL)上运行的 Java 应用。它也基于 OpenJDK,并为企业用户提供商业支持。
JDK 发行版之间的比较
发行版 | 基于 | 商业支持 | 开源情况 | 特别特点 |
---|---|---|---|---|
OpenJDK | 原始的 Java 规范实现 | 无 | 完全开源 | 参考实现,社区驱动,所有厂商都基于其构建 JDK 版本 |
Oracle JDK | 基于 OpenJDK | 商业收费支持 | 部分开源 | 提供额外的优化、性能工具和商业支持 |
Amazon Corretto | 基于 OpenJDK | 长期支持(免费) | 完全开源 | 提供 AWS 优化的 JDK,适用于云环境 |
Eclipse Adoptium | 基于 OpenJDK | 无(社区支持) | 完全开源 | 由 Eclipse 基金会维护,提供多平台的 OpenJDK 安装包 |
Zulu OpenJDK | 基于 OpenJDK | 商业支持(可选) | 完全开源 | 提供 Azul 性能优化,适用于大规模应用 |
Red Hat OpenJDK | 基于 OpenJDK | 商业支持(收费) | 完全开源 | 针对 Red Hat Linux 系统的优化,提供企业级支持 |
总结
JDK 是 Java 开发和运行的重要工具,其中 OpenJDK 是所有 JDK 发行版的基础,各个厂商基于 OpenJDK 构建并定制了自己的发行版。随着 Java 语言和 JDK 的不断发展,JDK 不仅在性能和功能上不断优化,也为开发者提供了更多工具和支持。各个发行版(如 Oracle JDK、Amazon Corretto、Eclipse Adoptium、Zulu OpenJDK、Red Hat OpenJDK)各具特色,适合不同需求的开发者和企业环境。