首页 > 编程语言 >Java 23 新特性一览 + Java 24 新动态抢先看

Java 23 新特性一览 + Java 24 新动态抢先看

时间:2024-10-29 15:18:40浏览次数:6  
标签:24 JEP Java JDK 开发人员 23 预览版 API


Java 23 新特性一览 + Java 24 新动态抢先看_java

最近 Oracle 发布了Java 编程语言和虚拟机的最新版本:Java 23。作为 Java 21 之后的第二个非 LTS 版本,该如果你还没了解过,那就一起了解一下吧(内含赠书)。最后,我们再一起看看 Java 24 新动态。

Java 23 新特性

通过 Project Amber 提供的语言特性

JEP 455:Primitive Types in Patterns, instanceof, and switch(预览版)

通过使语言更加统一且更具表达能力,帮助提高 Java 编程的工作效率。通过消除与开发人员在使用模式匹配、instanceof 和 switch 时遇到的基元类型限制,该 JEP 支持所有模式情景的基元类型模式,有助于增强模式匹配,并扩展 instanceof 和 switch,使其能够与所有基元类型一起使用。

JEP 476:Module Import Declarations(预览版)

开发人员可以轻松快速地导入由模块导出的所有程序包,无需将导入代码放到模块中,从而提高工作效率。这简化了所有开发人员对模块化库的重用,让初学者能够更轻松地使用第三方库和基本 Java 类,无需了解它们在程序包层次结构中的位置。

JEP 477:Implicitly Declared Classes and Instance Main Methods(第三预览版)

通过 Java 编程入门教程,学生无需了解为大型程序而设计的语言功能,即可顺利编写第一个程序,加快了上手速度和技能培养速度。有鉴于此,教育工作者和导师可以循序渐进地介绍概念,学生也可以编写简化的单类程序声明,并随着个人技能的提升,无缝扩展程序并使用更高级的功能。此外,经验丰富的 Java 开发人员也可以以简洁的方式编写小程序,无需使用为大型项目设计的工具。

JEP 482:Flexible Constructor Bodies(第二预览版)

允许语句在显式构造器调用之前出现,例如 super(..) 或 this(..),从而帮助开发人员提高工作效率。这些语句无法引用正在构建的实例,但在调用另一个构造器之前可以对其字段进行初始化,这使得方法被覆盖时,类会更加可靠。这不仅让开发人员有更大的自由来表达构造函数的行为,还能够延续现有保证,即允许构造器在类实例化期间按自上而下的顺序运行。

JEP 466:Class-File API(第二预览版)

通过提供用于解析、生成和转换 Java 类文件的标准 API,帮助开发人员提高工作效率。

JEP 469:Vector API (八次孵化阶段)

新推出的 API 允许以一种在运行时,可靠地编译为支持的 CPU 架构上的向量指令方式表达向量计算,帮助开发人员提高生产力。因此,开发人员可以实现优于等效标量计算的表现。

JEP 473:Stream Gatherers(第二预览版)

通过增强 Stream API 来支持自定义中间操作,让流管道以现有内置中间操作无法轻松实现的方式转换数据,从而帮助开发人员提高工作效率。此特性能够使流管道更灵活、更具表达力,允许自定义中间操作处理大小不限的流,帮助开发人员高效读取、写入和维护 Java 代码。

JEP 480:Structured Concurrency(第三预览版)

通过面向结构化并发的新 API 简化并发编程,帮助开发人员提高多线程代码的可维护性、可靠性和可观察性。通过将在不同线程中运行的相关任务组合并为单个工作单元,结构化并发可以消除因取消和关闭而产生的常见风险,例如线程泄漏和取消延迟。

JEP 481:Scoped Values(第三预览版)

支持开发人员在线程内和线程之间共享不可变数据,从而提高项目的易用性、可理解性、性能和稳健性。

性能和运行时更新

JEP 474:ZGC:Generational Mode by Default

通过将 Z Garbage Collector (ZGC) 的默认模式切换到层代模式,帮助开发人员提高效率,从而降低支持两种不同模式所需的资源和维护成本。

工具

JEP 467:Markdown Documentation Comments

通过启用 Javadoc 文档注释以 Markdown 编写而不是仅以 HTML 和 Javadoc @-tags 编写,帮助开发人员提高效率和生产力。通过在文档注释中使用 Markdown 语法以及 HTML 元素和 JavaDoc 标记,开发人员可以更轻松地以源形式编写和读取 API 文档注释,而不会对现有文档注释的解释产生不利影响。

管理职责

JEP 471:Deprecate the Memory-Access Methods in sun.misc.unsafe for Removal

通过帮助开发人员了解其应用何时直接或间接依赖于 sun.misc.Unsafe 中的内存访问方法,该方法计划在将来的版本中删除,从而为开发人员提供了简化的工具集。


每一条新特性都是为了改善或提升编程语言的能力,而语言特性在将来还会不断变化。对于 Java 程序员来说,要如何去应对变化带来的挑战呢?答案是只要掌握好一些经典、通用的编程原则,就能以不变应万变。《Effective Java 中文版(原书第3版)》这本书就总结提炼出了 90 条编程原则,帮助程序员理解 Java 语言精髓,发挥出工具的威力,写好程序。感兴趣的小伙伴通过下面链接购买可以直接优惠购买:

如果你平时喜欢分享技术,这本书目前在社区还有免费赠书额度,使用社区积分直接兑换即可,传送门:https://spring4all.com/7682.html


Java 24 新动态

计划于2025年3月发布的JDK 24 GA版本目前仅包含一个针对JDK 24的JEP。然而,根据已提交的JEP候选和草案,可以推测出其他可能被纳入JDK 24的JEP。以下是一些关键的JEP及其进展:

JEP 472:准备限制对JNI的使用

该JEP提议限制与JDK 22中引入的外部函数和内存(FFM)API中的受限方法一起使用的JNI。从JDK 23开始,如果FFM用户未启用不安全的本地访问,Java运行时将显示有关使用JNI的警告,未来版本中将抛出异常而非警告。

JEP 404:分代Shenandoah(实验性)

尽管目前处于Candidate状态,但已更新并包含在JDK 24中。预计将很快提升为Proposed to Target状态。该JEP最初目标为JDK 21,但由于审查风险和时间限制被移除,Shenandoah团队决定在未来版本中实现最佳的分代Shenandoah。

JEP 401:值类和对象(预览版)

在Valhalla项目的支持下,引入开发人员声明的基元类,这些类由Value Objects API定义,用于定义新的基元类型。

JEP 草案 8334712:类文件API

经过两轮预览后,计划在JDK 24中完成该特性。该API用于解析、生成和转换Java类文件,最初作为JDK中ASM的内部替代品,未来将作为公共API开放。

JEP 草案 8326035:CDS对象流

提议在ZGC中添加CDS对象归档机制,具有统一的CDS对象归档格式和加载器,使GC实现细节与CDS存档对象流机制分离。

JEP 草案 8300911:PEM API(预览版)

引入用于编码和解码隐私增强邮件(PEM)格式的API,用于存储和发送加密密钥和证书。

JEP 草案 8291976:在HttpClient中支持HTTP/3

提议更新JDK 11中的HTTP客户端以支持HTTP/3协议,使应用程序和库能够与HTTP/3服务器交互,并获得HTTP/3的好处。

JEP 草案 8312611:稳定值(预览版)

引入计算常数的概念,定义为最多初始化一次的不可变值持有者,提供final字段的性能和安全优势,同时增加初始化时间的灵活性。



标签:24,JEP,Java,JDK,开发人员,23,预览版,API
From: https://blog.51cto.com/u_14299052/12396119

相关文章

  • 2024 江西省赛 ACGHJK
    2024江西省赛ACGHJKA.MaliangLearningPainting思路:签到,加起来就行了。//AConemoretimes//nndbk#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintmod=1e9+7;constintN=2e5+10;intmain(){ios::sync_with_stdio......
  • 2024 黑龙江省赛 BDIJK
    The19thHeilongjiangProvincialCollegiateProgrammingContestBDIJKB.String思路:连续的3个可以删掉,类似括号匹配,用栈模拟即可。//AConemoretimes//nndbk#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintmod=1e9+7;constin......
  • P11234 [CSP-S 2024] 擂台游戏
    看看了看今年的csps,前三题一眼就秒了,这最后一题想了挺久,还写了快两个小时,要是在正式赛场上估计是要暴毙了,不过好在我已经退役了,希望参赛的选手能有好的发挥题目大意太长了,不写了题解考虑每次加入一个人,然后分析变化的答案经过一些分析,可以发现一些性质1.对于完全没有确定能......
  • CSP-J 2024-T1扑克牌
    方法一:使用二维字符数组存储,利用字符串函数比较去重#include<bits/stdc++.h>usingnamespacestd;intn;chara[62][3];//注意此处第二维数组需要开3否则会出现未知错误intcnt;//用于统计去重后的个数intmain(){ //cout<<strcmp("dd","dd")<<""<<strcmp("......
  • NOIP 模拟赛:2024-10-23
    T1:游戏有\(n\)个关卡,编号\(1\simn\),编号\(i\)的关卡的难度是\(p_i\),其中\(p_1,p_2,\dots,p_n\)是\(1,2,\dots,n\)的一个排列。每一个关卡还定义了一个重要度\(d_i\),它的值等于其中前\(i\)个关卡中的难度最小值,即\(d_i=\min_{j=1}^ip_j\)。玩家需通关每个关......
  • 2024.10.29 人工智能技术学 第六课时
    复习——任务导向RTRI/问题导向RPGS通过引用/po原文,并引用用于回答问题的文章段落。格式:({“引文”:。。。})“内心独白法”——辅助课业可以将不想让学生看到的内容,隐藏地放到一个结构化的格式里,然后再把输出展示给学生,解析一下这段输出。只展示能给学生看到的那部分。评估反......
  • 2024/10/29人工智能课
    一:给大语言模型发阅读材料如果你手边现成有原文,而且长度合适,建议自带原文去找大语言模型①SYSTEMUsetheprovidedarticlesdelimitedbytriplequotestoanswerquestions.Iftheanswercannotbefoundinthearticles,write"Icouldnotfindananswer."请使......
  • Java 中的类型推断是如何工作的?_2
    在Java中,类型推断是编译时进行的过程,它可以自动推导出表达式的类型、减少代码冗余及增强可读性。Java的类型推断通过以下方式工作:自动推导泛型参数类型、省略冗余类型信息、简化Lambda表达式的编写。特别是在Java8及以后的版本中,类型推断的特性得到了极大加强。单独展开描述,自动......
  • java计算机毕业设计翰明教育教学管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着教育事业的不断发展,学校规模的扩大以及教育管理要求的日益提高,传统的教育教学管理方式已经难以满足需求。在当今数字化时代,教育领域也迫切需......
  • 2024年10月28日Github流行趋势
    项目名称:Skyvern-AI/skyvern项目维护者:@ykeremy@wintonzheng@LawyZheng@msalihaltun@suchintan项目介绍:使用LLMs和计算机视觉实现基于浏览器的工作流程自动化。项目star数:8,730项目fork数:566项目名称:anthropics/courses项目维护者:@Colt@alexalbertt@rainl......