当前位置: 首页 > article >正文

【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 的主要工作:

  1. 加载程序:把 Java 文件加载到内存中准备运行。
  2. 执行代码:把 Java 字节码翻译成机器语言并执行。
  3. 内存管理:负责管理程序使用的内存区域,如“堆”和“栈”。
  4. 垃圾回收:自动回收不用的内存,避免手动管理的麻烦。

JRE(Java Runtime Environment,Java 运行时环境)

JRE 是 Java 程序运行所需的“工具包”,包含了 JVM 和一堆 Java 程序常用的“标准工具”(类库)。

JRE 的主要部分:

  1. JVM:执行 Java 代码的核心工具。
  2. 类库:比如用来操作文件、网络连接和多线程。

JRE 的作用是让用户能运行 Java 程序。如果你只用 Java 软件而不开发 Java 程序,只需要安装 JRE。


JDK(Java Development Kit,Java 开发工具包)

JDK 是给 Java 开发者用的“全套工具箱”,包含了 JRE 以及写代码、编译、调试 Java 程序的工具。

JDK 的主要部分:

  1. JRE:提供 Java 程序运行环境。

  2. 开发工具

    • javac:编译器,把你写的 Java 代码变成字节码。
    • java:用来运行字节码。
    • javadoc:生成 API 文档。
    • jar:打包工具,把多个文件封装成一个。

JDK 是你开发 Java 程序必不可少的工具包。


JVM、JRE 和 JDK 之间的关系
  1. JVM 是 JRE 的一部分,用来运行 Java 程序。
  2. JRE 是 JDK 的一部分,提供运行环境。
  3. JDK 包含了 JRE 和开发工具。
    在这里插入图片描述

简单的层级关系如下:

JDK
 └── JRE
      └── JVM

如何选择
  • 只想运行 Java 程序:安装 JRE
  • 想开发 Java 程序:安装 JDK,它已经包含 JRE。

总结
  • JVM 是“翻译器”,负责运行 Java 程序。
  • JRE 是“运行环境”,用来运行 Java 程序。
  • JDK 是“开发工具箱”,用来开发和运行 Java 程序。

JDK 发行版本及其关系

  1. OpenJDK — 母版 JDK
    • OpenJDK 是 Java 的官方开源实现,是 JDK 标准的参考实现。它是所有 JDK 发行版的基础,各大厂商和社区根据 OpenJDK 开源代码进行定制。
    • 开源协议:遵循 GNU General Public License(GPL)v2 + 类路径例外,完全开源。
  2. Oracle JDK — 商业发行版
    • Oracle JDK 基于 OpenJDK,但加入了更多商业特性,如 Java Flight Recorder、JDK Mission Control 等。它提供官方的技术支持和长期更新,但从 JDK 11 起,商业支持需要付费订阅。
  3. Amazon Corretto
    • Amazon Corretto 是由 Amazon Web Services 提供的基于 OpenJDK 的 JDK 版本,提供长期支持(LTS)。它被特别优化以适应 AWS 环境,但也支持其他平台。
  4. Eclipse Adoptium(原 AdoptOpenJDK)
    • Eclipse Adoptium 提供了 OpenJDK 的构建和二进制发布,原 AdoptOpenJDK 项目于 2021 年加入 Eclipse 基金会,提供免费的、基于 OpenJDK 的 JDK 发行版,支持跨平台部署。
  5. Zulu OpenJDK
    • Zulu OpenJDK 是 Azul Systems 提供的 OpenJDK 版本,针对性能进行优化,特别是在内存管理和垃圾回收方面。它为用户提供了长期支持(LTS)版本,适用于大规模应用。
  6. 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)各具特色,适合不同需求的开发者和企业环境。


http://www.kler.cn/a/506513.html

相关文章:

  • 《探索烟雾目标检测开源项目:技术与应用的深度剖析》
  • 【Rust自学】12.4. 重构 Pt.2:错误处理
  • ASP.NET Core - .NET 6 以上版本的入口文件
  • docker 部署 MantisBT
  • 从字符串使用看Golang和Rust对内存使用的区别
  • Scala语言的多线程编程
  • Windows Subsystem for Linux (WSL) 中安装 Redis
  • openharmony设备测试XTS测评用例开发指导
  • 学术内容写作ChatGPT提示词分享
  • 【Qt 常用控件】按钮类(QPushButton、QRadioButton、QCheckBox)
  • 基于 requests 依赖包的 Python 爬虫实战
  • Linux第一课:LinuxC基础 学习记录day11
  • Docker 镜像制作原理 做一个自己的docker镜像
  • 【安卓开发】【Android】总结:安卓技能树
  • 如何学习Transformer架构
  • 目标检测中的Bounding Box(边界框)介绍:定义以及不同表示方式
  • 【MySQL】高级查询技巧 JOIN、GROUP BY、ORDER BY、UNION 应用案列解析
  • Java全栈项目-办公自动化OA系统
  • 计算机网络 (41)文件传送协议
  • 【Linux探索学习】第二十六弹——进程通信:深入理解Linux中的进程通信
  • 网关相关知识
  • 计算机网络 网络层 2
  • PyCharm与GitHub完美对接: 详细步骤指南
  • 基于YOLOv8的卫星图像中船只检测系统
  • 用行动回应“实体清单”,智谱发布了一系列新模型
  • Python 如何操作 PDF 文件?