简述JDK8、11、17、21的主要更新特性

JDK8:

  1. Lambda表达式: Lambda表达式是一种匿名函数。它可以简化编写内部类的过程,使代码更加简洁和易读,并且可以方便地处理集合数据。

  2. 函数式接口:JDK 8引入了函数式接口的概念,即只包含一个抽象方法的接口。Java 8为函数式接口引入了一个新的注解@FunctionalInterface ,用来标记函数式接口。

  3. Stream API:Stream API提供了一种新的处理集合数据的方式——函数式编程。它可以通过链式操作来处理数据,包括过滤、映射、排序等操作,使得代码更加简洁和易读。

  4. 默认方法和静态方法:默认方法是接口中的一种新特性,允许在接口中定义具有默认实现的方法。这样可以在不破坏现有代码的情况下向接口中添加新的方法。而静态方法则允许我们在接口中定义静态方法。

  5. 方法引用:方法引用是一种简化Lambda表达式的语法。它可以直接引用已经存在的方法或者构造器,不需要重新编写Lambda表达式,使得代码更加简洁和易读。

  6. 新的日期和时间API:JDK 8引入了新的日期和时间API,以替代旧的java.util.Datejava.util.Calendar类。它提供了更加灵活和易用和线程安全的日期和时间处理方式。

  7. CompletableFuture类:用于支持异步编程和并发操作。

  8. 其他改进:JDK 8还包括其他一些改进,如重复注解、类型注解、新的编译器API等。

 JDK11:

字符串API增强:

isBlank()

用来判断字符串是否为空字符 "" 或者 trim() 之后( " " )为空字符

lines()

将一个字符串按照行终止符(换行符 \n 或者回车符 \r )进行分割

strip()

去除字符串前后的“全角和半角”空白字符

repeat(n)

按照给定的次数重复串联字符串的内容

var可以用于修饰Lambda局部变量

在Java 11中 var 可以用于修饰Lambda局部变量

文件中读写字符串内容更新

可以通过 Files 工具类提供的新的静态方法 readString 和 writeString 分别进行读写文件的字符串内容

嵌套类的访问控制规则更新

两个新的属性: NestMembers 的属性,用于标识其它已知的静态 nest 成员;NestHost 属性,用于标识出它的 nest 宿主类

HttpClient支持HTTP2

支持HTTP2,底层进行了大幅度的优化,并且完全支持异步非阻塞。

 其它

比如引入了ZGC,支持支持 TLS 1.3 协议,引入了动态调用(invokedynamic)机制。

JDK17:

内部 API 的强封装:许多 JDK 内部 API 在 JDK 17 中被标记为强封装,不再公开为公共 API。

模块的强封装:强化了一些 JDK 内部模块的封装,以防止外部模块直接访问这些内部模块。

Sealed JNI(密封 JNI):引入的一个特性,旨在限制本机接口(JNI)的实现,以提高本机代码的安全性。

改进的垃圾收集器

在 JDK 17 中进行了一些改进和优化,提供更好的垃圾收集器性能和稳定性。如ZGC 、Shenandoah GC、G1 GC都进行了一些改进。在JDK17中,还引入了一组新的垃圾收集器接口,允许开发人员实现自定义的垃圾收集器。

JDK21:

虚拟线程

可以在单个线程上管理多个任务,从而实现更高的资源利用率和更好的性能。

字符串模板

开发者可以更方便地构建和格式化字符串。模板中可以包含变量和表达式,使字符串操作更加灵活和直观。

结构化并发预览

允许开发者在多线程环境中更好地控制和管理任务。通过使用结构化并发,开发者可以更容易地编写可预测和可靠的并发代码。

 密钥封装机制(KEM)API

提供了一种更加安全和灵活的方式来管理加密密钥。通过使用KEM API,开发者可以更容易地实现密钥的生成、存储和使用,从而提高应用程序的安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值