Java 21 发布,带来诸多新特性又一次创新的飞跃

一、引言

2023年9月19日,Oracle公司正式发布了JDK 21,这是按照六个月发布周期准时交付的第12个功能版本。

这种可预测性让开发者能够轻松地管理他们对创新的采用,感谢稳定的改进流。JDK 21不仅包含了数千个性能、稳定性和安全性更新,还提供了几十个新功能和增强,其中15个增强足够重要,值得拥有自己的JDK增强提案---JEP,涵盖了六个预览功能和一个孵化器功能。

图表显示自Java 8以来每个版本的功能数量 Java的性能、稳定性和安全性的提升,使其继续成为世界上最受欢迎的编程语言。

此外,Oracle将为Java 21提供至少八年的长期支持。这种延长的支持期限让组织能够以最小的维护成本,让应用程序更长时间地保持在生产环境中,并且可以按照他们自己的节奏进行迁移。根据客户反馈和Java生态系统中的使用情况,Oracle还宣布将Java 11的长期支持延长至至少2032年1月,从Oracle那里获得至少八年以上的支持和更新。

与以前的版本一样,Java 21由Oracle与OpenJDK 社区中许多个人和组织的贡献一起构建。Java在已修复的24,196个JIRA问题中,有17,288个由Oracle工作人员完成,而6,908个由其他组织工作人员或个人开发者贡献。通过查看问题并从受让人那里收集组织数据,得到以下图表,显示了在Java中赞助贡献开发的组织:

图表显示每个组织的修复数量 在Java 21中,标记为已修复的2,585个JIRA问题中,有1,868个由Oracle完成,而717个由Java社区其他成员贡献。Oracle感谢在Amazon、ARM、Azul、Google、Huawei、IBM、Intel、ISCAS、Red Hat、Rivos、SAP和Tencent等组织工作的开发者的显著贡献。我们也感谢来自Bellsoft、Loongson等较小组织以及独立开发者的贡献,他们共同贡献了Java 21中8%的修复。

此外,通过OpenJDK质量外展计划,我们还要感谢以下提供了优秀反馈的FOSS项目,他们测试了Java 21早期访问版本,帮助提高了发布质量:

  • Apache Commons
  • Apache ZooKeeper
  • AssertJ
  • BNYM Code Katas
  • JUnit5
  • Karate
  • MyBatis

二、新特性

Java 21 是 Java 平台的 12 个功能版本之一,于 2023 年 9 月 19 日发布。该版本包含了数千项性能、稳定性和安全更新,以及 15 项重大的新特性和增强。

以下是 Java 21 的新功能和增强:

  • Project Amber 项目的六个预览功能:
    • JEP 430:String Templates(字符串模板):允许开发人员在 Java 代码中使用模板来生成字符串,从而简化字符串的编写和维护。
    • JEP 440:Record Patterns(记录模式):允许开发人员使用模式来解构记录类的实例,从而简化数据查询。
    • JEP 441:Pattern Matching for switch(switch 中的模式匹配):允许开发人员在 switch 语句中使用模式匹配,从而简化复杂的数据查询。
    • JEP 443:Unnamed Patterns and Variables(匿名模式和变量):允许开发人员使用匿名模式和变量,从而简化代码的编写和维护。
    • JEP 445:Unnamed Classes and Instance Main Methods(匿名类和实例主方法):允许开发人员使用匿名类和实例主方法来简化简单程序的编写。
  • Project Loom 项目的两个预览功能:
    • JEP 444:Virtual Threads(虚拟线程):允许开发人员使用虚拟线程来编写高性能的并发应用程序。
    • JEP 446:Scoped Values(作用域值):允许开发人员在线程之间共享不可变数据。
  • 其他新特性和增强:
    • 改进了 Java 代码的性能、稳定性和安全性。
    • 新增了对新的硬件平台的支持。
    • 新增了对新的 API 和工具的支持。

以下是 Java 21 中的一些值得关注的新特性和增强:

  • String Templates 功能简化了字符串的编写和维护,使开发人员可以更轻松地在 Java 代码中生成复杂的字符串。
  • Record Patterns 功能简化了数据查询,使开发人员可以更轻松地从记录类中提取数据。
  • Pattern Matching for switch 功能简化了复杂的数据查询,使开发人员可以更轻松地从 switch 语句中提取数据。
  • Virtual Threads 功能提高了并发应用程序的性能,使开发人员可以更轻松地编写高性能的并发应用程序。
  • Scoped Values 功能简化了线程间数据共享,使开发人员可以更轻松地在线程之间共享不可变数据。

官网介绍地址:inside.java/2023/09/19/...

Project Amber

JEP 430: String Templates (Preview):字符串模板

JEP 440: Record Patterns:

JEP 441: Pattern Matching for switch:交换机的模式匹配

JEP 443: Unnamed Patterns and Variables (Preview)

JEP 445: Unnamed Classes and Instance Main Methods (Preview)

Project Loom

JEP 444: Virtual Threads:虚拟线程

JEP 446: Scoped Values (Preview)

JEP 453: Structured Concurrency (Preview)

Project Panama

JEP 442: Foreign Function & Memory API (外部函数和内存API)

JEP 448: Vector API

Core Libraries(核心库)

JEP 431: Sequenced Collections

Performance Updates(性能更新)

JEP 439: Generational ZGC

JEP 452: Key Encapsulation Mechanism API

三、吃瓜群众

他强由他强,清风拂山冈;

他横由他横,明月照大江;

他发任他发,我用Java8。

----总体来总Java也自带支持协程了。


如果文章对你有帮助,欢迎关注+点赞,必回关!!!

相关推荐
Yan.love2 分钟前
开发场景中Java 集合的最佳选择
java·数据结构·链表
椰椰椰耶5 分钟前
【文档搜索引擎】搜索模块的完整实现
java·搜索引擎
大G哥5 分钟前
java提高正则处理效率
java·开发语言
小_太_阳26 分钟前
Scala_【1】概述
开发语言·后端·scala·intellij-idea
智慧老师36 分钟前
Spring基础分析13-Spring Security框架
java·后端·spring
lxyzcm37 分钟前
C++23新特性解析:[[assume]]属性
java·c++·spring boot·c++23
V+zmm101341 小时前
基于微信小程序的乡村政务服务系统springboot+论文源码调试讲解
java·微信小程序·小程序·毕业设计·ssm
Oneforlove_twoforjob2 小时前
【Java基础面试题025】什么是Java的Integer缓存池?
java·开发语言·缓存
xmh-sxh-13142 小时前
常用的缓存技术都有哪些
java
搬码后生仔2 小时前
asp.net core webapi项目中 在生产环境中 进不去swagger
chrome·后端·asp.net