0

0

Java 功能:深入了解最新的增强功能

霞舞

霞舞

发布时间:2024-12-06 20:27:01

|

794人浏览过

|

来源于dev.to

转载

java 功能:深入了解最新的增强功能

oracle 发布了另一个版本的 java,在字节码操作、工具开发、代码质量等方面进行了强大的增强。以下是最有趣和最有用的 java 23 功能 - 来自在该技术领域拥有 10 多年经验的 java 团队负责人的视角。

随着 java 的不断发展,每个新版本都旨在引入可提高语言性能、可用​​性和灵活性的功能。通过采用此版本,您可以保持领先地位,并为这些功能在未来的 lts 版本中变得稳定做好准备。

在本文中,我将向您快速概述 java 23 中的重大变化,重点关注最值得注意的 jep(jdk 增强提案)。对之前的变化感兴趣的人可以查看我之前关于 java 21 功能的文章,您还可以阅读 dariusz wawer 的旧文章,其中详细描述了 java 17 功能(以及与 java 8 的比较)。

对于代码示例,您必须将 --enable-preview 标志添加到编译器参数中。

立即学习Java免费学习笔记(深入)”;

模式、instanceof 和 switch 中的基本类型(预览)

基本类型一直是 java 不可或缺的一部分,但是以模式、instanceofswitch 构造来处理它们是有限的。 jep 455 旨在扩展模式匹配和 switch 语句以支持原始类型。

 

static string processinput(object obj) {    
   return switch (obj) {        
      case integer i -> "integer value: %s".formatted(i);        
      case double d -> "double value: %s".formatted(d);        
      default -> "unknown type";    
   }; 
} 

public static void main(string[] args) {
   system.out.println(processinput(10));    // integer value: 10
   system.out.println(processinput(5.5));   // double value: 5.5 }

此增强功能使开发人员能够编写更清晰、更简洁的代码。

类文件 api(第二预览版)

java 的类文件格式对于字节码操作和工具开发至关重要。 jep 466 引入了新的类文件 api 的第二个预览版,简化了对 java 类文件的访问和操作,而无需开发人员依赖 asm 或 bcel 等第三方库。

良精商城网店购物系统
良精商城网店购物系统

良精商城网店购物系统是一套能够适合不同类型商品、超强灵活的多功能在线商店系统,三级分销 PC+移动端+微网站,为您提供了一个完整的在线开店解决方案。良精网店购物系统除了拥有一般网上商店系统所具有的所有功能,还拥有着其它网店系统没有的许多超强功能。多种独创的技术使得系统能满足各行业广大用户的各种各样的需求,是一个经过完善设计并适用于各种服务器环境的高效、全新、快速和优秀的网上购物软件解决方案。

下载

这个 api 将使那些使用需要检查或修改类文件的框架、编译器或工具的人受益匪浅。凭借其简单的设计,它增强了灵活性,同时让开发人员更接近 java 的本机机制。您可以在下面找到与新 api 交互的简单示例:

public static void main(string[] args) throws ioexception {
   classfile classfile = classfile.of();
   classmodel model=classfile.parse(paths.get("/home/exampleclass.class"));
   system.out.println("class name: " + model.thisclass());
   // class name: 7 java23/exampleclass
   model.methods().foreach(
method -> system.out.println(" - " + method.methodname()));
   //- 
   //- sayhello
}

流收集者(第二次预览)

另一个预览功能为 java stream api 带来了非常好的增强。正如 jep473 文档所述,主要目标是使流管道更加灵活和更具表现力,并允许自定义中间操作来操纵无限大小的流。以下是内置收集操作的一些示例:

stream.of("a", "b", "c", "d", "e")
       .gather(gatherers.fold(() -> "", (a, b) -> a + b))
       .foreach(system.out::println);
//abcde
stream.of("a", "b", "c", "d")
       .gather(gatherers.windowfixed(2))
       .foreach(system.out::println);
//[a, b]
//[c, d]

当然,您可以创建收集器。为此,您只需实现 java.util.stream.gatherer 接口。 

范围值(第三次预览)

jep 481 引入了作用域值,这是线程局部变量的替代方案。它们提供了一种在特定范围内共享值的机制,使得使用多线程应用程序变得更容易。让我们深入研究代码示例:

public class jep481scopedvalues {
   private static scopedvalue x = scopedvalue.newinstance();


   public static void main(string[] args) {
       foo();
   }


   static void foo() {
       scopedvalue.runwhere(x, "foo", () -> bar());
   }


   static void bar() {
       system.out.println("printing x from bar(): " + x.get());
       scopedvalue.runwhere(x, "bar", () -> baz());
       system.out.println("printing x from bar(): " + x.get());
   }


   static void baz() {
       system.out.println("printing x from baz(): " + x.get());
   }
}


output:


printing x from bar(): foo
printing x from baz(): bar
printing x from bar(): foo

灵活的构造函数主体(第二预览版)

jep 482 重新审视了 java 中构造函数的灵活性。传统上,java 中的构造函数体在如何构建以及如何处理异常方面受到限制。此 jep 引入了更多灵活性,允许开发人员在构造函数中编写更复杂的初始化逻辑,从而增强对对象创建的控制。

public class Java481FlexibleConstructors extends BigInteger {
   Java481FlexibleConstructors(long value) throws Exception {
       if (value < 0) throw new Exception("Invalid value");
//that wasn’t possible before
       System.out.println("Initialized with value: " + value);
       super(String.valueOf(value));
   }
}

java 23 中的其他值得注意的功能

除了我已经介绍过的 jep 之外,java 23 还引入了其他几个值得一提的增强功能:

  • 性能改进(jep 474:默认情况下的 zgc 分代模式):java 23 通过默认启用其分代模式来优化 z 垃圾收集器。此功能通过隔离堆中的年轻对象和旧对象来提高垃圾收集性能,从而提高内存管理效率,特别是对于具有长时间运行进程的应用程序
  • 安全更新(jep 471:弃用 sun.misc.unsafe 中的内存访问方法以进行删除):此更新弃用了
  • sun.misc.unsafe 中广泛使用的某些内存访问方法直接内存操作,增强平台的安全性。
  • 库增强(jep 467:markdown 文档注释):jep 467 在 javadoc 注释中引入了对 markdown 的支持。此功能允许开发人员在代码注释中使用 markdown 语法编写格式更好、更具可读性的文档,从而改进内部和外部文档实践​
  • 模块系统改进(jep 476:模块导入声明):jep 476 添加了在 java 源文件中使用导入模块声明的功能。这简化了模块管理,特别是在多模块项目中,因为允许开发人员导入整个模块,而不仅仅是单个类或包。
概括

java 不断发展,版本 23 带来了大量改进,从模式匹配中更好地处理原始类型到更灵活的构造函数和高级流处理,这些改进将增强开发人员的体验。请务必探索这些更改并开始将它们合并到您的开发工作流程中 - 因为它们可能很快就会从预览功能转变为核心功能。 

如果您对更多 java 相关内容(包括深入研究版本 21 和 17)感兴趣,请查看我们博客上的一些其他出版物:

    java 21 功能:详细了解新 lts 版本中最重要的变化
  1. java 17 功能:版本 8 和 17 之间的比较。这些年来发生了哪些变化?
  2. jvm kubernetes:为 java 开发人员优化 kubernetes
  3. github copilot 教程:我们已经使用 java 对其进行了测试,您也可以按照以下方法进行操作
  4. 如何写好代码?凭借良好的实践、优秀的团队和 java 代码质量工具

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

825

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

724

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

728

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

395

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

398

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

445

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

428

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16861

2023.08.03

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SQL 教程
SQL 教程

共61课时 | 3.2万人学习

Java 教程
Java 教程

共578课时 | 40万人学习

oracle知识库
oracle知识库

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号