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也自带支持协程了。


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

相关推荐
P.H. Infinity8 分钟前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天12 分钟前
java的threadlocal为何内存泄漏
java
caridle24 分钟前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
^velpro^29 分钟前
数据库连接池的创建
java·开发语言·数据库
苹果醋333 分钟前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花37 分钟前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端40 分钟前
第六章 7.0 LinkList
java·开发语言·网络
Wx-bishekaifayuan1 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
全栈开发圈1 小时前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫