JDK 22 和 JDK 23:到目前为止我们所知道的

这篇具有很好参考价值的文章主要介绍了JDK 22 和 JDK 23:到目前为止我们所知道的。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JDK 22 和 JDK 23:到目前为止我们所知道的

Oracle Java 平台组首席架构师Mark Reinhold宣布, JDK 22是自JDK 21以来的第一个非 LTS 版本,现已进入第二个候选版本阶段。主线源代码存储库于 2023 年 12 月中旬(Rampdown 第一阶段)分叉到 JDK稳定存储库,定义了 JDK 22 的功能集。可以解决诸如回归或严重功能问题之类的关键错误,但必须解决这些问题。通过修复请求流程获得批准。根据发布时间表,JDK 22将于2024年3月19日正式发布。

最终的 12 个新功能集(以JEP的形式)可分为四 (4) 类:核心 Java 库Java 语言规范HotSpotJava 工具

其中六 (6) 个新功能属于核心 Java 库

  • JEP 454:外部函数和内存 API
  • JEP 457:类文件 API(预览版)
  • JEP 460:Vector API(第七个孵化器)
  • JEP 461:流收集器(预览)
  • JEP 462:结构化并发(第二预览版)
  • JEP 464:范围值(第二预览版)

其中四 (4) 个新功能属于Java 语言规范

  • JEP 447:super(…) 之前的语句(预览)
  • JEP 456:未命名变量和模式
  • JEP 459:字符串模板(第二次预览)
  • JEP 463:隐式声明的类和实例主要方法(第二预览版)

其中一 (1) 个新功能属于HotSpot类别:

  • JEP 423:G1 的区域固定

最后,其中一 (1) 个新功能被归类为Java 工具

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

我们研究了其中一些新功能,并包括它们在四个主要 Java 项目( Amber、Loom、Panama和Valhalla )支持下的位置,这些项目旨在孵化一系列组件,以便通过精心策划的合并最终包含在 JDK 中。

Project Amber

JEP 463,隐式声明的类和实例主方法(第二预览版),以前称为未命名类和实例主方法(预览)灵活的主方法和匿名主类(预览)以及隐式类和增强的主方法(预览),合并了针对上一轮预览的反馈进行了增强,即 JEP 445、未命名类和实例主要方法(预览)。该 JEP 提议“发展 Java 语言,以便学生可以编写他们的第一个程序,而无需了解为大型程序设计的语言功能。” 此功能推进了Oracle Java 语言架构师Brian Goetz于 2022 年 9 月发布的博客文章“铺平入口” 。Oracle 技术顾问成员Gavin Bierman发布了规范文档的初稿,供 Java 社区审查。有关 JEP 445 的更多详细信息可以在 InfoQ新闻报道中找到。

JEP 459,字符串模板(第二次预览),提供了第一轮预览的第二次预览:JEP 430,字符串模板(预览) ,在 JDK 21 中提供。此功能通过字符串模板(包含嵌入的字符串文字)增强了 Java 编程语言表达式,在运行时解释,其中嵌入的表达式被评估和验证。有关 JEP 430 的更多详细信息可以在 InfoQ新闻报道中找到。

JEP 456,未命名变量和模式,建议在上一轮预览之后最终确定此功能:JEP 443,未命名模式和变量(预览) ,在 JDK 21 中提供。此功能将“使用未命名模式增强语言,该模式与记录组件,但不说明组件的名称或类型,以及未命名的变量,可以初始化但不能使用。” 这两者都由下划线字符表示,如**r instanceof _(int x, int y)和中r instanceof _**。

JEP 447,super(…) 之前的语句(预览版)建议:允许不引用正在创建的实例的语句出现在构造函数中的**this()or调用之前;super()**并保留构造函数现有的安全性和初始化保证。Bierman 还提供了此功能的初始规范,供 Java 社区审查并提供反馈。

Project Loom

JEP 464,Scoped Values (Second Preview),以前称为Extent-Local Variables (Incubator),提出了第二次预览,不做任何更改,以便从一轮孵化和一轮预览中获得额外的经验和反馈:JEP 446 ,范围值(预览版),在 JDK 21 中提供;以及 JEP 429,范围值(孵化器),在 JDK 20 中提供。此功能支持在线程内和线程间共享不可变数据。这比线程局部变量更可取,特别是在使用大量虚拟线程时。

JEP 462,结构化并发(第二个预览版),提出第二个预览版,不做任何更改,以便从上一轮预览中获得更多反馈:JEP 453,结构化并发(预览版),在 JDK 21 中提供。此功能简化了并发编程通过引入结构化并发来“将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消、提高可靠性并增强可观察性”。

Project Panama

JEP 460,Vector API(第七个孵化器),根据前六轮孵化的反馈进行了增强:JEP 448,Vector API(第六个孵化器),在 JDK 21 中交付;JEP 438,Vector API(第五孵化器),在 JDK 20 中交付;JEP 426,Vector API(第四个孵化器),在 JDK 19 中交付;JEP 417,Vector API(第三孵化器),在 JDK 18 中交付;JEP 414,Vector API(第二孵化器),在 JDK 17 中交付;JEP 338,Vector API(孵化器) ,作为 JDK 16 中的孵化器模块提供。JEP 448 中最显着的变化包括对JVM 编译器接口(JVMCI)的增强,以支持 Vector API 值。

JEP 454,外部函数和内存 API,建议经过两轮孵化和三轮预览后最终确定此功能:JEP 412,外部函数和内存 API(孵化器),在 JDK 17 中交付;JEP 419,外部函数和内存 API(第二孵化器),在 JDK 18 中交付;JEP 424,外部函数和内存 API(预览版),在 JDK 19 中交付;JEP 434,外部函数和内存 API(第二预览版),在 JDK 20 中交付;以及 JEP 442,外部函数和内存 API(第三个预览版),在 JDK 21 中提供。自上一个版本以来的改进包括: 一个新的**Enable-Native-Access清单属性,允许可执行 JAR 中的代码在不使用标志的情况下调用受限制的方法--enable-native-access**;允许客户端以编程方式构建 C 函数描述符,避免特定于平台的常量;改进了对本机内存中可变长度数组的支持;并支持本机字符串中的多个字符集。有关 JEP 454 的更多详细信息可以在 InfoQ新闻报道中找到。

JDK 23

计划于 2024 年 9 月发布 GA,目前只有一个针对JDK 23 的JEP。然而,根据一些 JEP 候选者和草案,特别是那些已经提交的草案,我们可以推测哪些额外的 JEP 有可能包含在 JDK 23 中。

JEP 455,模式中的原始类型、instanceof 和 switch(预览版),已针对JDK 23。该 JEP 在 Amber 项目的支持下,建议通过在所有模式上下文中允许原始类型模式来增强模式匹配,并扩展**instanceofswitch**适用于所有原始类型。Oracle 技术人员主要成员Aggelos Biboudis最近发布了此功能的更新草案规范。

JEP 468,派生记录创建(预览版),已从其JDK 草案 8321133升级为候选状态。该 JEP 建议通过记录的派生创建来增强 Java 语言。由于记录是不可变的对象,因此开发人员经常从旧记录创建新记录来对新数据进行建模。派生创建通过从现有记录派生新记录并仅指定不同的组件来简化代码。

JEP 467(Markdown 文档注释)已从JDK草案8316039提升为候选状态。此功能建议使用 Markdown 编写 JavaDoc 文档注释,而不是混合使用 HTML 和 JavaDoc标签。这将使文档注释以源代码形式更容易编写和阅读。@

JEP 466,类文件 API(第二个预览版),已从JEP草案8324965升级为候选状态。此 JEP 提出第二轮预览,以获得上一轮预览的反馈:JEP 457,类文件 API(预览),将在即将发布的 JDK 22 中提供。此功能提供了用于解析、生成、并转换 Java 类文件。它最初将作为JDK 中ASM(Java 字节码操作和分析框架)的内部替代品,并计划将其作为公共 API 开放。Goetz 将 ASM 描述为“一个带有大量遗留包袱的旧代码库”,并提供了有关该草案将如何发展并最终取代 ASM 的背景信息。

JEP 465(字符串模板)已从JEP草案8323333提升为候选状态。此 JEP 建议在两轮预览后最终确定此功能,即 JEP 459,字符串模板(第二次预览),将在即将发布的 JDK 22 中提供,以及 JEP 430,字符串模板(预览),将在 JDK 21 中提供。此功能通过字符串模板(包含嵌入表达式的字符串文字)增强了 Java 编程语言,这些模板在运行时对嵌入表达式进行求值和验证。有关 JEP 430 的更多详细信息可以在 InfoQ新闻报道中找到。

JEP 401,空限制值对象存储(预览版),以前称为原始类(预览版),在 Valhalla 项目的支持下,引入了开发人员声明的原始类 - 由值对象 API 定义的特殊类型的值类 - 即定义新的原始类型。

Oracle 的 Java 架构师Paul Sandoz提交了JEP 草案 8326878,Vector API(孵化器)。经过从 JDK 16 到 JDK 22 集成的七轮孵化后,此 JEP 建议在 JDK 23 中重新孵化API,相对于 JDK 22 没有 API 更改,也没有实质性的实现更改。此功能将引入一个 API 来“表达向量计算可以在运行时可靠地编译为支持的 CPU 架构上的最佳向量指令,从而实现优于同等标量计算的性能。”

Bierman 和PatientEXP 创始人兼首席执行官Archie Cobbs介绍了JEP 草案 8325803,Flexible Constructor Bodies (Second Preview),这是一个提出第二轮预览并更改名称以获取上一轮预览反馈的 JEP,即 JEP 447,Super(…) 之前的语句(预览版),将在即将发布的 JDK 22 中提供。此功能允许不引用正在创建的实例的语句出现在构造函数中的**this()or调用之前;super()**并保留构造函数现有的安全性和初始化保证。该 JEP 的变化包括: 对本地类的处理;并将在显式构造函数调用之前不能访问字段的限制放宽为在显式构造函数调用之前不能读取字段的要求。Bierman 提供了此 JEP 的初始规范,供 Java 社区审查并提供反馈。

JEP 草案 8307341,准备限制 JNI 的使用,建议限制本质上不安全的 Java 本机接口 (JNI) 的使用以及外部函数和内存 (FFM) API 中受限制方法的使用,该 API 预计将成为JDK 23 中的最后一个功能。从 JDK 23 开始,对齐策略将使 Java 运行时显示有关 JNI 使用的警告,除非 FFM 用户在命令行上启用不安全的本机访问。预计在 JDK 23 之后的版本中,使用 JNI 将抛出异常而不是警告。

JEP 草案 8313278,Java 虚拟机的提前编译,建议“增强 Java 虚拟机,使其能够加载编译为本机代码的 Java 应用程序和库,以实现更快的启动和基线执行”。

JEP 草案 8312611,计算常量(预览版) ,引入了计算常量的概念,定义为最多初始化一次的不可变值持有者。这提供了现场的性能和安全优势**final**,同时在初始化时间方面提供了更大的灵活性。此功能将作为预览API 首次亮相。

JEP 草案 8283227,JDK 源结构,一种信息性 JEP 类型,描述了 JDK 源代码以及 JDK 存储库中相关文件的总体布局和结构。该 JEP 建议帮助开发人员适应 JDK 9 中提供的 JEP 201(模块化源代码)中描述的源代码结构。

JEP 草案 8278252,JDK 打包和安装指南,一个信息性 JEP,建议为在 macOS、Linux 和 Windows 上创建 JDK 安装程序提供指南,以减少不同 JDK 提供商安装 JDK 时发生冲突的风险。目的是通过规范安装目录名称、包名称和其他可能导致冲突的安装程序元素,在安装 JDK 更新版本时提供更好的体验。

我们预计 Oracle 很快就会开始针对 JDK 23 提供更多 JEP。


JDK 22 and JDK 23: What We Know So Far - InfoQ文章来源地址https://www.toymoban.com/news/detail-842358.html

到了这里,关于JDK 22 和 JDK 23:到目前为止我们所知道的的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Android开发中,JDK版本,Gradle版本,Kotlin插件与Kotlin版本等各自对应关系

    一、Gradle版本和Java版本对应关系 二、Gradle版本和Kotlin版本对应关系 三、Gradle版本和Gradle插件版本匹配关系 可以在Android Studio的 File Project Structure Project 菜单中指定插件版本,也可以在顶级 build.gradle 文件中进行修改

    2024年03月15日
    浏览(68)
  • 我想知道,就目前形势而言,学java好还是C++好?

    就现实点看看,可以对比现在Java和C++的市场占有率,可以看到,到目前为止,Java在国内编程语言的市场仍然是占据着大头,在招聘当中Java的人数占有率仍然是遥遥领先于C++,Java目前开阔的市场以及其巨大的岗位需求,使得你可以在大多数的地方都可以谋一份饭吃。 再来看

    2023年04月24日
    浏览(40)
  • IntelliJ IDEA 2023.1.2 (Ultimate Edition) 要 kotlin-stdlib-jdk8 1.8.0

    IntelliJ IDEA 2023.1.2 (Ultimate Edition) 要 kotlin-stdlib-jdk8 1.8.0 文档:dependency.note 链接:http://note.youdao.com/noteshare?id=bb61eeee46dc0a2bfbe44a598bbb1070sub=F61B12D995DD4CBFBA9B56B015DF4222 添加链接描述 IntelliJ IDEA 2023.1.2 (Ultimate Edition) Build #IU-231.9011.34, built on May 16, 2023 Licensed to signup scooter You have a perpet

    2024年02月09日
    浏览(42)
  • ubuntu22.04离线安装jdk、mysql、redis、mongodb、nginx

    ubuntu22.04离线安装jdk、mysql、redis、mongodb、nginx) 1.1 安装包列表 序号 名称 1 jdk-8u181-linux-x64.tar.gz 1.2 安装方式 2.1 安装包列表 序号 名称 1 net-tools_1.60+git20181103.0eebece-1ubuntu5_amd64.deb 2 unzip_6.0-20ubuntu1.1_amd64.deb 3 g++11.3.zip 4 gcc11.3.zip 5 make_4.3-4.1build1_amd64.deb 2.2 安装方式 3.1 安装包列表

    2024年02月09日
    浏览(51)
  • jdk22+maven环境配置教程+idea的maven环境配置(Windows系统)

    jdk是Java开发必要的编程环境,idea是常用的Java开发工具,这里着重解释一下maven。 maven就是我们经常看见的pom.xml文件,maven有以下三点功能: 1.项目构建(可以帮助我们更快速的打包、构建项目) 2.依赖管理,例如我们连接数据库需要的jar包驱动、处理excel表格的驱动等,还有

    2024年04月13日
    浏览(52)
  • Ubuntu22.04 Hadoop3.3.4 jdk18.02 安装配置

    阅读推荐(105条消息) 大数据安装之hadoop-3.3.4_x_y_z423的博客-CSDN博客 (112条消息) hadoop3.3.4集群安装部署_hwbays的博客-CSDN博客 加倍推荐,Hadoop集群配置内容讲的及其详细 基于docker的hadoop集群搭建 xshell Windows 10 Pro, 64-bit VMware® Workstation 16 Pro Ubuntu22.04 * 3 2、VMware tools安装 apt install

    2023年04月11日
    浏览(44)
  • Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.10

    原因是之前下载的版本kotlin与现在这个项目下载的版本包发生了冲突, 有重复类 解决办法: 1. 给app指明要加载哪个包类 在build.gradle(:app)中 2. 删除已下载的库文件,重新下载

    2024年02月08日
    浏览(69)
  • Android Studio版本升级后的问题 gradle降级、jdk升级 Compose 与 Kotlin 的兼容性对应关系

    AGPBI: {“kind”:“error”,“text”:“Can’t determine type for tag ‘macro name=“m3_comp_switch_disabled_selected_handle_color”?attr/colorSurface’”,“sources”:[{“file”:“/Users/fausto/.gradle/caches/transforms-3/4948d05d0ff6027d2e3c9f4a6010103b/transformed/material-1.7.0-alpha02/res/values/values.xml”}],“tool”:“Resource and

    2024年02月04日
    浏览(78)
  • ubuntu 22.04.3 live server安装JDK21与远程编程环境和maven

    解压jdk压缩包,命令: 打开环境变量,命令: 配置环境变量 重新加载配置文件,命令: 验证安装,命令: 下载JetBrains Gateway 新建ssh链接 验证链接并下载IDE 等待IDEA下载完毕 登录IDEA 下载maven,地址:https://maven.apache.org/download.cgi 解压maven,命令: 创建maven工作路径,并且把

    2024年02月21日
    浏览(55)
  • Java和JDK的关系;以及JDK版本

    一、Java和JDK的关系: Java是一门面向对象的编程语言,而JDK(Java Development Kit)则是开发Java应用程序所需的软件开发工具包。Java语言本身与JDK之间存在紧密的依赖关系,具体如下: Java语言 :定义了语法、语义、数据类型、类库规范等编程规则,是编写Java程序的基础。 JDK

    2024年04月29日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包