Java和JDK的关系;以及JDK版本

这篇具有很好参考价值的文章主要介绍了Java和JDK的关系;以及JDK版本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Java和JDK的关系:

Java是一门面向对象的编程语言,而JDK(Java Development Kit)则是开发Java应用程序所需的软件开发工具包。Java语言本身与JDK之间存在紧密的依赖关系,具体如下:

  1. Java语言:定义了语法、语义、数据类型、类库规范等编程规则,是编写Java程序的基础。

  2. JDK:包含了编译器(javac)、解释器(java)、调试器(jdb)、文档生成工具(javadoc)等开发工具,以及Java运行环境(JRE)和Java基础类库(Java API)。JRE中包含了Java虚拟机(JVM)和Java标准类库,是运行Java程序所必需的环境。因此,可以说JDK是Java开发者用来编译、运行、调试和维护Java程序的完整开发工具集。

总结来说,Java语言是抽象的编程规范,而JDK是实现这一语言的具体工具集合。要编写和运行Java程序,必须安装相应的JDK版本。

二、目前JDK的版本及其发布时间、主要特性变化:

以下是Java(JDK)近年来的主要版本及其发布日期,以及每个版本中引入的一些关键特性和改进:

JDK 8 (LTS)

  • 发布日期:2014年3月18日
  • 主要特性:
    • Lambda表达式:极大地简化了函数式编程风格,增强了代码的简洁性和可读性。
    • Stream API:支持对集合数据流进行高效、声明式的处理。
    • 接口的默认方法和静态方法:允许在接口中定义默认实现,增强接口的灵活性和扩展性。
    • 新的日期/时间API(java.time包):替代旧的Date/Calendar类,提供更加丰富和易于使用的日期、时间、时区处理功能。
    • ** Nashorn JavaScript引擎**:内置高性能JavaScript执行环境。
    • 并发改进:如StampedLock,增强并发控制能力。
  • 注意“JDK 1.8”这种说法实际上是对“JDK 8”的一种习惯性称呼。这里的“1.8”并非表示JDK的版本号是1.8,而是指JDK的第8个主要版本。在Java的发展历史中,早期版本的命名方式确实包含了小数点,如JDK 1.5、JDK 1.6等。但从JDK 7开始,官方的命名方式去掉了小数点,直接采用“JDK 7”、“JDK 8”这样的形式。尽管官方已经采用了新的命名方式,但由于习惯和记忆的原因,很多人仍然沿用旧的命名方式,将“JDK 8”称为“JDK 1.8”。这种称呼在开发者社区中相当普遍,尤其是在讨论早期JDK版本与后续版本之间的区别和兼容性时。因此,当你听到“JDK 1.8”时,你应该明白它实际上指的是“JDK 8”。这是一个约定俗成的称呼,尽管它并不完全符合官方的命名规范。同时,了解这一点也有助于你更好地理解和参与Java开发社区的讨论。

JDK 9 (非LTS)

  • 发布日期:2017年9月21日
  • 主要特性:
    • 模块系统(Project Jigsaw):引入模块化架构,提升了大型应用的组织和部署能力。
    • JShell:交互式Java REPL(Read-Eval-Print Loop),方便快速原型开发和学习。
    • HTTP/2客户端:提供新的API支持HTTP/2协议。
    • 进程API:允许Java程序控制和管理操作系统进程。
    • 改进的Javadoc:支持HTML5,增强文档生成工具的功能和样式。

JDK 10 (非LTS)

  • 发布日期:2018年3月20日
  • 主要特性:
    • 局部变量类型推断(var关键字):简化变量声明,特别是在使用Lambda表达式和流时。
    • 垃圾回收器接口:为GC实现提供了统一的接口,便于定制和替换。
    • 根证书更新机制:通过JDK自动更新根证书存储,增强安全性。

JDK 11 (LTS)

  • 发布日期:2018年9月25日
  • 主要特性:
    • ZGC:低延迟垃圾收集器:实验性引入,提供接近实时的暂停时间。
    • Epsilon GC:无操作垃圾收集器:用于性能基准测试和特殊场景。
    • HTTP客户端标准化:将JDK 9的HTTP/2客户端升级为标准API。
    • Flight Recorder和Mission Control:用于监控、诊断和分析JVM和Java应用程序的工具,正式成为JDK一部分。
    • 移除Java EE和CORBA模块:精简JDK,将这些模块移至独立的项目。

JDK 12 - 1.png (非LTS)

  • 发布日期:2019年3月19日 - 2020年3月17日
  • 主要特性:
    • Switch表达式(预览):增强switch语句,使其能返回值并支持模式匹配。
    • Microbenchmark Suite:内置微基准测试框架,便于性能评估。
    • Shenandoah GC:实验性引入,提供低停顿时间的并发垃圾收集器。

JDK 13 - 1.png (非LTS)

  • 发布日期:2019年9月17日 - 2020年9月15日
  • 主要特性:
    • 文本块(Text Blocks):简化多行字符串的创建和处理。
    • Switch表达式(正式版):在JDK 12的基础上完善并正式启用。

JDK 14 - 1.png (非LTS)

  • 发布日期:2020年3月17日 - 2021年3月16日
  • 主要特性:
    • Records:简化数据类的定义,提供简洁的语法创建不可变对象。
    • Pattern Matching for instanceof:增强instanceof运算符,支持类型检查和解构赋值。

JDK 15 - 1.png (非LTS)

  • 发布日期:2020年9月15日 - 2021年9月14日
  • 主要特性:
    • 隐藏类(Hidden Classes):允许动态生成仅供内部使用的类,提高性能和内存效率。
    • ZGC:并发线程堆栈处理:增强ZGC对线程堆栈的并发处理能力。

JDK 16 (LTS)

  • 发布日期:2021年3月16日
  • 主要特性:
    • Records:正式启用,作为Java语言的新特性。
    • Packaging Tool (jpackage):简化Java应用程序打包为本地平台可安装格式。

JDK 17 (LTS)

  • 发布日期:2021年9月14日
  • 主要特性:
    • Sealed Classes:限制类的子类化,增强API设计的灵活性和安全性。
    • Pattern Matching for switch:增强switch语句,支持模式匹配。

JDK 18 (非LTS)

  • 发布日期:2022年3月22日
  • 主要特性:
    • Virtual Threads (Project Loom):轻量级线程( fibers),简化并发编程模型。
    • Structured Concurrency:通过try-with-resources风格的API支持结构化并发控制。

JDK 19 (非LTS)

  • 发布日期:2022年9月20日
  • 主要特性:
    • Foreign Function & Memory API (Preview):支持直接调用C/C++代码和操作外部内存。

请注意,上述列表中,LTS(Long-Term Support)版本通常提供更长时间的维护和支持,适合用于生产环境。非LTS版本则通常包含更多实验性或预览特性,适合开发人员探索和试用新技术。同时,每个版本的具体发布日期和特性可能随着Oracle的计划有所变动,建议查阅Oracle官方发布的最新信息以获取最准确的版本详情。文章来源地址https://www.toymoban.com/news/detail-861468.html

到了这里,关于Java和JDK的关系;以及JDK版本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系

    🎥 屿小夏 : 个人主页 🔥个人专栏 : Java入门到精通 🌄 莫道桑榆晚,为霞尚满天! Java作为一门广泛应用的编程语言,其结构和运行环境对于初学者来说可能会带来一些困惑。本文旨在帮助初学者了解Java程序的基本结构以及可能遇到的一些常见问题,同时解释了JDK、JRE和

    2024年02月04日
    浏览(31)
  • 【Java】后端开发语言Java和C#,两者对比注解和属性的区别以及作用

    欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《Java》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。 温馨提示:博主能力有限,理解水平有限

    2024年01月16日
    浏览(35)
  • mac 切换java jdk版本 java8 java11

    1.   终端执行命令  查看本地各版本jdk:mac通常默认安装了jdk1.8 安装目录是 /Library/Java/JavaVirtualMachines/ cd /Library/Java/JavaVirtualMachines/ ls 2.   上述命令列出的各版本目录名 后,在全局配置文件.bash_profile中新增上面命令列出的各版本jdk,并指定当前环境变量默认的版本为jdk1.8

    2024年02月16日
    浏览(29)
  • 多个 JDK 版本(Java 8、Java 17、Java 21)下载和切换

    随着 Spring Boot 的版本不断迭代更新,新发布的 Spring Boot 版本已经不再支持 JDK 8, 对 JDK 版本的最低要求为 17 。 所以,为了在实际中可以任意选择所需的 JDK 版本,将 多个 JDK 版本切换的方法 总结如下: JDK 不同版本可以在 Oracle 官网下载, 下载地址 :点此进入 选择所需的

    2024年02月03日
    浏览(29)
  • Java/JDK查看版本、历史版本对照

    在准备安装Android Studio时,需要查看以前安装的JDK是什么版本的。又想到初学Java时对Java版本和JDK版本各种称呼的迷惑。因此查了一些资料,这里做个记录。 查看电脑已安装的Java/JDK版本: 键盘按键win+R,打开快捷窗口,输入cmd,回车 在控制台输入命令Java --version,适用于新版

    2024年02月05日
    浏览(25)
  • 【Java学习】-Java JDK 1.8与17版本比较

    Java Development Kit(JDK)是Java编程语言的开发环境。它包含了Java编译器(javac)、Java虚拟机(JVM)以及其他必需的工具和库。本文将比较JDK 1.8和17两个版本,分析它们的发展历史和地位,并探讨它们之间的差异和优势。 JDK 1.8,也称为Java 8,于2014年发布。它是Java平台自2006年以

    2024年02月16日
    浏览(21)
  • Java JDK各版本特性

            Java 8 之前版本中有一些重要特性和改进。以下是其中一些主要特性以及它们发布版本: Java SE 7(发布于2011年): Switch 字符串:允许在 switch 语句中使用字符串。 泛型的类型推断:允许在实例化泛型时,不需要重复指定泛型参数类型。 改进的异常处理:引入了多

    2024年02月11日
    浏览(19)
  • Java多版本JDK管理工具

    GitHub - ystyle/jvms: JDK Version Manager (JVMS) for Windows 适用于 Windows 的 JDK 版本管理器 (JVMS),在Windows上轻松的管理多Java版本。 安装 https://github.com/ystyle/jvms/releases 初始化 从上面的链接下载完成 解压zip并将jvms.exe复制到你想要的路径 以管理员身份运行 cmd 或 powershell cd 到jvms.exe其中的

    2024年01月25日
    浏览(26)
  • 如何实现Java JDK的多版本共存&&一键切换版本

    学习Java最一开始就是需要做环境配置啦,安装JDK是必不可少的。大家都知道JDK是Java开发者工具包,那么一般来说要选择什么样的版本来安装呢?可以安装多个JDK吗?是否可以我随时想切换哪个JDK就使用哪个呢? 下面我会主要说明如何实现Java JDK的多版本共存。 一般来说,企

    2024年04月17日
    浏览(23)
  • 如何实现Java JDK的多版本共存

    学习Java最一开始就是需要做环境配置啦,安装JDK是必不可少的。大家都知道JDK是Java开发者工具包,那么一般来说要选择什么样的版本来安装呢?可以安装多个JDK吗?是否可以我随时想切换哪个JDK就使用哪个呢? 下面我会主要说明如何实现Java JDK的多版本共存。 一般来说,企

    2024年01月16日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包