Java22已发布,支持SpringBoot3.3.0正式版

Java22已发布,支持SpringBoot3.3.0正式版

文章目录

  • Java22已发布,支持SpringBoot3.3.0正式版
  • 1. JDK22现已推出!
  • 2. Java22的新功能
    • 1. 语言改进
      • 1. 语言预览
    • 2. 库文件
    • 3. 性能
    • 4. 工具
  • 3. 资源

Java 22现已发布
下一个Java版本提高了Java应用程序开发的性能、稳定性和安全性。了解所有新功能和优点

SpringBoot3.3.0正式版也会支持Java22

1. JDK22现已推出!

Oracle 自豪地宣布面向开发人员、企业和最终用户全面推出 JDK 22。

2. Java22的新功能

JDK 22 提供了 12 项增强功能,这些增强功能足以保证他们自己的 JDK 增强提案 (JEP),包括 7 个预览功能和 1 个孵化器功能。它们涵盖了对 Java 语言、其 API、性能以及 JDK 中包含的工具的改进。

1. 语言改进

未命名的变量和模式 - JEP 456

提高了需要但未使用变量声明或嵌套模式时的可读性。两者都由下划线字符表示

价值:

  • 捕获开发人员的意图,即给定的绑定或 lambda 参数未被使用,并强制执行该属性以阐明程序并减少出错的机会。
  • 通过识别必须声明的变量(例如,在 catch 子句中)但未使用的变量,提高了所有代码的可维护性。
  • 允许多个模式出现在单个事例标签中,如果它们都没有声明任何模式变量。
  • 通过省略不必要的嵌套类型模式来提高记录模式的可读性。

1. 语言预览

[super (…) 预览] 之前的语句** - JEP 447:

在构造函数中,允许不引用正在创建的实例的语句出现在显式构造函数调用之前。

价值:

  • 为开发人员提供更大的自由来表达构造函数的行为,从而能够更自然地将当前必须分解为辅助静态方法、辅助中间构造函数或构造函数参数的逻辑。
  • 保留构造函数在类实例化期间以自上而下的顺序运行的现有保证,确保子类构造函数中的代码不会干扰超类实例化。
  • 不需要对 Java 虚拟机进行任何更改。此 Java 语言功能仅依赖于 JVM 的当前能力来验证和执行在构造函数中显式构造函数调用之前出现的代码。

字符串模板(第二预览版)- JEP 459:

字符串模板通过将文本与嵌入的表达式和模板处理器耦合来生成专门的结果,从而补充了 Java 现有的字符串文本和文本块。

价值:

  • 通过轻松表达包含运行时计算值的字符串来简化 Java 程序的编写。
  • 增强混合文本和表达式的表达式的可读性,无论文本适合单个源行(如字符串文本)还是跨多个源行(如文本块)。
  • 通过支持模板及其嵌入表达式的值的验证和转换,提高了 Java 程序的安全性,这些程序从用户提供的值组成字符串并将其传递给其他系统(例如,为数据库构建查询)。
  • 通过允许 Java 库定义字符串模板中使用的格式语法来保持灵活性。
  • 简化了接受以非 Java 语言(例如 SQL、XML 和 JSON)编写的字符串的 API 的使用。
  • 允许创建从文本和嵌入表达式计算的非字符串值,而不必通过中间字符串表示形式进行转换。

隐式声明的类和实例主方法(第二预览版)- JEP 463:

学生可以编写他们的第一个 Java 程序,而无需了解为大型程序设计的语言功能。学生可以为单班课程编写简化的声明,然后随着技能的增长无缝扩展他们的课程以使用更高级的功能,而不是使用单独的语言方言。

价值:

为了加速 Java 的学习 -

  • 为 Java 编程提供平稳的入门通道,以便教师可以循序渐进地介绍概念。
  • 帮助学生以简洁的方式编写基本程序,并随着技能的增长而优雅地增长他们的代码。
  • 减少了编写简单程序(如脚本和命令行实用程序)的仪式。
  • 不介绍单独的 Java 语言初学者方言。
  • 不引入单独的初学者工具链;学生程序应使用与编译和运行任何 Java 程序相同的工具进行编译和运行。

2. 库文件

外部函数和内存 API - JEP 454:

允许 Java 程序与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即 JVM 外部的代码)并安全地访问外部内存(即不受 JVM 管理的内存),API 使 Java 程序能够调用本机库并处理本机数据,而不会像 JNI 那样脆弱和危险。

价值:

  • 生产力 — 用简洁、可读和纯 Java API 取代本机方法和 Java 本机接口 (JNI) 的脆弱机制。
  • 性能 — 提供对外部函数和内存的访问,其开销与 JNI 和 sun.misc.Unsafe 相当,甚至更好。
  • 广泛的平台支持 — 在运行 JVM 的每个平台上实现本机库的发现和调用。
  • 统一性 — 提供在多种内存(例如,本机内存、持久内存和托管堆内存)中对无限大小的结构化和非结构化数据进行操作的方法。
  • 健全性 — 保证不会出现释放后使用错误,即使在多个线程之间分配和解除分配内存也是如此。
  • 完整性 — 允许程序使用本机代码和数据执行不安全的操作,但默认情况下会警告用户此类操作。

2.1) 库预览和孵化器

类文件 API(预览版)- JEP 457:

提供用于解析、生成和转换 Java 类文件的标准 API。

价值:

  • 该 API 允许依赖它的框架和程序自动支持来自最新 JDK 的最新类文件,以便可以快速轻松地采用在类文件中表示的新语言和 VM 功能。

流收集器(预览版)- JEP 461:

增强 Stream API 以支持自定义中间操作。这将允许流管道以现有内置中间操作不容易实现的方式转换数据。

价值:

  • 通过使流中的常见自定义操作更加灵活和富有表现力,提高了开发人员的工作效率和代码可读性。尽可能允许中间操作操作无限大小的流。

结构化并发(第 2版预览版)- JEP 462:

简化并发编程。结构化并发将不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和消除,提高可靠性并增强可观测性。

价值:

  • 通过推广一种可以消除因取消和关闭而产生的常见风险(如线程泄漏和取消延迟)的编程风格,简化并发代码的开发,并提高并发代码的可观测性。

作用域值(第 2版预览版)- JEP 464:

支持在线程内和线程之间高效共享不可变数据。

价值:

  • 易用性 — 提供一个编程模型,用于在线程内和与子线程共享数据,以简化有关数据流的推理。
  • 可理解性 — 使共享数据的生存期从代码的语法结构中可见。
  • 稳健性 — 确保呼叫者共享的数据只能由合法的被叫方检索。
  • 性能 — 将共享数据视为不可变数据,以允许大量线程共享,并启用运行时优化。

Vector API(第 7 个培养箱)- JEP 460:

一个用于表达向量计算的 API,该 API 在运行时可靠地编译为受支持的 CPU 架构上的最佳向量指令,从而实现优于等效标量计算的性能。

此 JEP 建议在 JDK 22 中重新孵化 API,相对于 JDK 21 对 API 进行小幅增强。该实现包括错误修复和性能增强。我们包括以下值得注意的更改:

  • 支持使用堆 MemorySegments 进行向量访问,这些堆 MemorySegments 由任何基元元素类型的数组提供支持。以前,访问仅限于由字节数组支持的堆 MemorySegments。

价值:

  • 提供清晰简洁的 API,能够清晰简洁地表达各种向量计算,这些计算由循环中组成的向量操作序列组成,并可能具有控制流。
  • 该 API 被设计为与 CPU 架构无关,支持在支持矢量指令的多个架构上实现。
  • 在 x64 和 AArch64 体系结构上提供可靠的运行时编译和性能。
  • 与英灵殿计划保持一致。

3. 性能

G1 的区域固定 - JEP 423:

通过在 G1 中实现区域固定来减少延迟,这样就不需要在 Java 本机接口 (JNI) 关键区域期间禁用垃圾回收。

价值:

在使用 JNI 时,无需等待 Java 线程才能完成 G1 GC 操作,从而提高了开发人员的工作效率。

4. 工具

启动多文件源代码程序 - JEP 458:

允许用户运行作为多个 Java 源代码文件提供的程序,而无需先对其进行编译。

价值:

  • 通过使从小程序到大程序的过渡更加缓慢,提高开发人员的工作效率,使开发人员能够选择是否以及何时去配置构建工具。

请注意,预览功能是完全指定和完全实现的 Java SE 平台的语言或 VM 功能,但不是永久性的。它们在 JDK 功能版本中提供,以便允许开发人员根据实际使用情况提供反馈,然后再在将来的版本中永久使用。这也为工具供应商提供了在最终确定为 Java SE 标准之前提供支持功能的机会。

孵化器模块中的 API 将非最终 API 和非最终工具交到开发人员和用户手中,以收集反馈,最终提高 Java 平台的质量。

除了 JEP 中描述的更改之外,发行说明中还列出了许多较小的更新 ,许多应用程序开发人员和系统管理员都会对此感兴趣。其中包括弃用过时的 API 和删除以前弃用的 API。

Java 22 发行说明中的一些关键更新:

  • 向 keytool 和 jarsigner 添加其他算法。
  • 垃圾回收器吞吐量改进,特别是当它与“年轻”垃圾有关时。
  • 为系统模块描述符提供更好的版本报告。
  • 改进了本机代码的“等待”处理选项。
  • Unicode 通用区域设置数据存储库已更新到版本 44。
  • 类型注释支持从字节码加载的类型。
  • ForkJoinPool 和 ForJoinTasks 现在可以更好地处理不可中断的任务。
  • 配置客户端与服务器 TLS 连接属性的额外灵活性。
  • 改进了本机内存跟踪,包括报告峰值使用量的功能。

最后,与所有功能版本一样,JDK 22 包含数百个性能、稳定性和安全更新,包括适应底层操作系统和固件更新以及标准。用户和应用程序开发人员通常会从这些更改中受益,而不会注意到它们。

以及所有 JDK 版本中包含的不变功能:可预测性

JDK 22 是第 13个功能版本,按时交付了六个月的发布节奏。这种级别的可预测性使开发人员能够轻松管理他们对创新的采用,这要归功于源源不断的预期改进。

在这里插入图片描述

Java 提高性能、稳定性和安全性的能力继续使其成为世界上最受欢迎的编程语言。

Oracle 不会为 JDK 22 提供长期支持;我们将在 2023 年 9 月之前提供更新,届时它将被 Oracle JDK 23 取代。

Java 22,齐心协力

与以前的版本一样,Java 22 庆祝 OpenJDK 社区中许多个人和组织的贡献——我们一起构建 Java!

JDK 22 固定比率

多年来,JDK 版本随时间的变化率基本保持不变,但在六个月的节奏下,交付生产就绪功能和改进的速度急剧增加。

我们不再像过去的主要版本那样,每隔几年就进行数以万计的修复并交付近百个 JEP(JDK 增强提案),而是在更精简的功能版本中以更易于管理和可预测的六个月计划交付增强功能。这些更改的范围从重要的新功能到日常维护、错误修复和文档改进的小增强。每个更改都表示在 JDK Bug System 中单个问题的单个提交中。

在 Java 11 到 Java 22 正式发布时标记为已修复的 26,447 个 JIRA 问题中,有 18,842 个由 Oracle 员工完成,而 7,605 个由个人开发人员和为其他组织工作的开发人员贡献。通过处理这些问题并整理来自受托人的组织数据,可以得到以下组织赞助 Java 贡献开发的图表:

在这里插入图片描述

在 Java 22 中,在标记为已修复的 2,251 个 JIRA 问题中,有 1,554 个由 Oracle 完成,而 697 个由 Java 社区的其他成员贡献。

在这里插入图片描述

Oracle 感谢为亚马逊、ARM、谷歌、华为、IBM、英特尔、ISCAS、Microsoft、Red Hat、Rivos、SAP 和腾讯等组织工作的开发人员做出的杰出贡献。我们也很高兴看到 Bellsoft Data Dog 和 Loongson 等小型组织的贡献,以及独立开发人员的贡献,他们共同贡献了 Java 22 中 7% 的修复。

此外,通过 OpenJDK 质量推广计划,我们要感谢以下 FOSS 项目,它们在测试 Java 22 抢先体验版本方面提供了出色的反馈,以帮助提高发布的质量:

  • 阿帕奇晕厥(Francesco Chicchiriccò)
  • Apache Tomcat(马克·托马斯)
  • ApprovalTests.Java (拉尔斯·埃卡特)
  • AssertJ (斯特凡诺·科尔迪奥)
  • 阿瓦杰(乔赛亚·诺埃尔)
  • 码头 (Simone Bordet)
  • MyBatis(岩尾大道)
  • 并行收集器 (Grzegorz Piwowarek)
  • RxJava (大卫·卡诺克)

3. 资源

Java 仍然是当今技术趋势的 #1 编程语言。正如 Java 22 的按时交付改进所表明的那样,通过持续的深思熟虑的规划和生态系统的参与,Java 平台已为云中的现代开发和增长做好了准备。

继续通过以下方式了解最新的新闻和更新:

  • 访问 Dev.java(Oracle 的专用门户,用于提高您的 Java 知识和社区参与度)。
  • 访问Inside.java(Oracle Java 团队的新闻和观点)。
  • 收听 Inside.java 播客(一个面向 Java 开发人员的音频节目,直接来自 Oracle 的 Java 开发人员。对话将讨论语言、JVM、OpenJDK、平台安全、Loom 和 Panama 等创新项目,以及介于两者之间的一切。
  • 观看Inside.java新闻广播(将Inside.java播客扩展为视频格式的视频节目)。
  • 在 YouTube 上观看 Java (Oracle 收集的相关 Java 视频,可帮助您提高 Java 专业知识)。
  • 观看 JEP Café(Oracle 对流行的 JDK 增强提案的技术探索)。
  • 观看 Sip of Java(Oracle 的 1 分钟短视频,介绍了鲜为人知的 Java 增强功能,这些增强功能提供了性能、稳定性和安全性改进)。
  • 加入 OpenJDK 邮件列表(了解您最喜欢的 OpenJDK 项目进度的地方)。
  • 继 OpenJDK 和 Java on X(提供有关 Java 持续发展的更新和新闻的社交流)之后。
    能,这些增强功能提供了性能、稳定性和安全性改进)。
  • 加入 OpenJDK 邮件列表(了解您最喜欢的 OpenJDK 项目进度的地方)。
  • 继 OpenJDK 和 Java on X(提供有关 Java 持续发展的更新和新闻的社交流)之后。
  • 订阅 Inside Java Newsletter(一份月刊,总结了 Oracle 的许多关键 Java 技术和社区更新)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/285366.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java安全 反序列化(4) CC1链-LazyMap版

Java安全 反序列化(4) CC1链-LazyMap版 实验环境:存在漏洞的版本 commons-collections3.1-3.2.1 jdk 8u71之后已修复不可利⽤ 文章目录 Java安全 反序列化(4) CC1链-LazyMap版一.跟踪挖掘CC1_LazyMap原理二.完整CC1_Lazy版Poc 接着上一篇文章我们通过ChainedTransFormer实现任意…

爬楼梯C语言

方法一&#xff1a;动态规划 int climbStairs(int n) {int f[100] {0};f[0] 0;f[1] 1;f[2] 2;for(int i 3;i<n;i)f[i] f[i-1] f[i-2];//可能是从i-1阶爬上第i阶&#xff0c;也有可能是从i-2阶 return f[n]; } 方法二&#xff1a;滚动数组 int climbStairs(int n){int…

Day08 Java复习8 Spring MVC概念

Day09 Java复习9 Spring MVC spring mvc 的核心组件是什么&#xff1f; DispatcherServlet 1.JAVA 和Spring 、Spring Boot 、Spring MVC的关系 你要举办一个生日派对&#xff0c;而且你希望它既特别又好玩。Java就像是举办派对的地方&#xff0c;Spring、Spring Boot和Spri…

AWTK T9 输入法实现原理

1. T9 输入法的中文字典数据 网上可以找到 T9 输入法的中文字典数据&#xff0c;但是通常有两个问题&#xff1a; 采用 GPL 协议&#xff0c;不太适合加入 AWTK。 只支持单个汉字的输入&#xff0c;不支持词组的输入。 经过考虑之后&#xff0c;决定自己生成 T9 输入法的中…

物联网应用技术中的stm32该怎么学,该从哪入手?

物联网应用技术中的stm32该怎么学&#xff0c;该从哪入手&#xff1f; STM32是只物联网中的一部分&#xff0c;单纯的学个STM32是没法满足物联网开发需求的&#xff0c;实际产品开发过程中会考虑成本等多种因素选择合适的方案&#xff0c;比如使用单片机还是stm32或是更高端的芯…

企业微信变更主体公证怎么弄?

企业微信变更主体有什么作用&#xff1f;现在很多公司都用企业微信来加客户&#xff0c;有时候辛辛苦苦积累了很多客户&#xff0c;但是公司却因为各种各样的原因需要注销&#xff0c;那么就需要通过企业微信变更主体的方法&#xff0c;把企业微信绑定的公司更改为最新的。企业…

代码+视频,R语言logistic回归交互项(交互作用)的可视化分析

交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技&#xff0c;几乎在高分的SCI中必出现&#xff0c;因为把人群分为亚组后再进行统计可以增强文章结果的可靠性&#xff0c;不仅如此&#xff0c;交互作用还可以使用来进行数据挖掘。在既往文章中&#xff0c;我们已…

深度学习pytorch——GPU加速(持续更新)

使用 .to(device)&#xff0c;以前使用 .cuda() &#xff0c;但是现在基本不使用了。 代码示例&#xff1a; 查看电脑GPU运行情况&#xff1a; 使用Ctrl Shift ESC快捷键&#xff1a;

SCI一区 | Matlab实现SSA-TCN-BiGRU-Attention麻雀算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现SSA-TCN-BiGRU-Attention麻雀算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现SSA-TCN-BiGRU-Attention麻雀算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…

HTML_CSS学习:表格、表单、框架标签

一、表格_跨行与跨列 1.相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>表格_跨行与跨列</title> </head> <body><table border"1" cellspacing"0&qu…

Linux: 线程安全

Linux 线程共享了进程的资源(地址空间, 页表等), 多个线程同时访问同一个资源就可能产生问题:数据竞争 临界资源: 多个线程共享的资源临界区: 访问临界资源的区域互斥: 任何时刻, 只有一个执行流能进入临界区同步: 以一定顺序访问临界资源原子性: 要么完成, 玩么未完成 锁 死…

2024.3 个人survey 医疗大模型关系梳理

大体上是这样&#xff0c;具体模型规格看他们的arxiv或者github吧。 仲景 https://github.com/pariskang/CMLM-ZhongJingDoctorGLM https://arxiv.org/abs/2304.01097 https://github.com/xionghonglin/DoctorGLM本草 https://arxiv.org/pdf/2304.06975.pdf https://github.co…

C++ - 类和对象(上)

目录 一、类的定义 二、访问限定符 public&#xff08;公有&#xff09; protected&#xff08;保护&#xff09; private&#xff08;私有&#xff09; 三、类声明和定义分离 四、外部变量和成员变量的区别与注意 五、类的实例化 六、类对象的模型 七、类的this指针…

好用的GPTs:指定主题搜索、爬虫、数据清洗、数据分析自动化

好用的GPTs&#xff1a;指定主题搜索、爬虫、数据清洗、数据分析自动化 Scholar&#xff1a;搜索 YOLO小目标医学方面最新论文Scraper&#xff1a;爬虫自动化数据清洗数据分析 点击 Explore GPTs&#xff1a; Scholar&#xff1a;搜索 YOLO小目标医学方面最新论文 搜索 Scho…

武汉星起航引领跨境电商新潮流,深耕平台助力创业者实现财富增长

在全球电商市场不断演进的时代背景下&#xff0c;跨境电商已经从一种新兴趋势演变成为商业领域的主流。亚马逊&#xff0c;作为全球电商巨头&#xff0c;更是以其庞大的用户基础和高效的运营体系&#xff0c;吸引着全球数以百万计的卖家纷纷入驻&#xff0c;共同探索这片充满商…

Set A Light 3D Studio中文--- 打造专业级3D照明效果

Set A Light 3D Studio是一款专业的灯光模拟软件&#xff0c;专为摄影师和电影制片人打造。它允许用户在计算机上模拟并预览各种布光效果&#xff0c;助力拍摄出真实、精准且具有艺术感的作品。软件提供了丰富的灯光和场景模型&#xff0c;用户可以灵活调整光源参数&#xff0c…

Django Ajax

【一】Json 【1】介绍 JSON&#xff08;javascript object otaition&#xff09;是一种轻量级的数据交换格式JSON使用了Javascript的一部分语法来定义其数据格式&#xff0c;但Json是独立于语言的Json采用完全独立于语言的文本格式&#xff0c;使得Json成为理想的数据交互语言…

ARIMA

一.数据平稳性与差分法 1.平稳性&#xff1a; 2.差分法&#xff1a; 错开时间点&#xff0c;使得数据可以平稳 原数据➡️一阶差分➡️二阶差分&#xff1a; 二、arima 1.自回归模型 2.移动平均模型 关注的是误差项的累积 3.arma p d(几阶差分&#xff09; q自己指定 4.总…

微信小程序button动态跳转到页面

微信小程序中如何动态的跳转到某个页面。 目录 1、首先在js文件中定义事件函数 2、在页面中进行传参调用 3、其它跳转方法简单说明 1、首先在js文件中定义事件函数 goto(e){const urle.currentTarget.dataset.url;wx.navigateTo({url: url})}, 2、在页面中进行传参调用 &l…

基于Java中的SSM框架实现考研指导平台系统项目【项目源码+论文说明】

基于Java中的SSM框架实现考研指导平台系统演示 摘要 应对考研的学生&#xff0c;为了更好的使校园考研有一个更好的环境好好的学习&#xff0c;建议一个好的校园网站&#xff0c;是非常有必要的。提供学生的学习提供一个交流的空间。帮助同学们在学习高数、学习设计、学习统计…