一聚教程网:一个值得你收藏的教程网站

热门教程

Java8:Java11:Java15:Java21新特性

时间:2026-06-18 08:43:53 编辑:袖梨 来源:一聚教程网

目录

Java8、Java11、Java15、Java21新特性

一、java8新特性

1.1、Lambda表达式

1.2、函数式接口和API

1.3、Stream API

1.4、默认方法(Default Methods)

1.5、方法引用

1.6、Java时间API

1.7、CompletableFuture

1.8、移除PermGen空间

二、java11新特性

2.1、局部变量类型推断

2.2、新增的字符串方法

2.3、HTTP/2客户端API

2.4、Epsilon垃圾收集器

2.5、ZGC垃圾收集器

2.6、Unicode 10的支持

三、Java15的新特性

3.1、默认的垃圾收集器ZGC

3.2、新的语法特性,如模式匹配和switch表达式

3.3、新的API特性 :

3.4、模块化系统 :

3.5、JDK多个代码仓库合并 :

3.6、Nashorn JavaScript Engine被移除 :

3.7、新增文本块

3.8、CharSequence增强

四、Java21新特性

4.1、String Templates 功能简化了字符串的编写和维护,使开发人员可以更轻松地在 Java 代码中生成复杂的字符串。

4.2、Record Patterns 功能简化了数据查询,使开发人员可以更轻松地从记录类中提取数据。

4.3Pattern Matching for switch 功能简化了复杂的数据查询,使开发人员可以更轻松地从 switch 语句中提取数据。

4.4Virtual Threads 功能提高了并发应用程序的性能,使开发人员可以更轻松地编写高性能的并发应用程序。

4.5Scoped Values 功能简化了线程间数据共享,使开发人员可以更轻松地在线程之间共享不可变数据。


一、java8新特性

1.1、Lambda表达式

Lambda表达式是Java 8的最显著特性之一,它允许以更简洁的方式编写匿名函数。Lambda表达式可以用于函数式接口,使得代码更加简洁、可读性更高。

1.2、函数式接口和API

Java 8引入了函数式接口,这些接口只有一个抽象方法。此外,标准库中还增加了一些支持函数式编程的API,如Stream API、Optional类等。

1.3、Stream API

Stream API提供了一种流式处理集合数据的方式。通过使用Stream API,可以以声明式的方式对集合进行过滤、映射、排序等操作,极大地提高了代码的可读性和简洁性。

1.4、默认方法(Default Methods)

接口中可以定义默认方法,即带有默认实现的方法。这样做允许在接口中添加新方法而不会破坏已有的实现类。

1.5、方法引用

方法引用提供了一种引用已经存在的方法作为Lambda表达式的简化方式。通过方法引用,可以直接传递方法的引用而不是执行具体的Lambda表达式。

1.6、Java时间API

Java 8引入了全新的日期和时间API,取代了原先的Date和Calendar类。新API提供了更好的设计和易用性,以及对时区、日历等功能的支持。

1.7、CompletableFuture

CompletableFuture是一种可组合的异步编程机制,用于处理异步操作和并发编程。它提供了更好的错误处理机制和链式编程风格。

1.8、移除PermGen空间

Java 8中移除了永久代(PermGen space),取而代之的是元数据区(Metaspace)。这样消除了永久代带来的内存溢出问题,并改善了垃圾回收的效率。

二、java11新特性

2.1、局部变量类型推断

引入了var关键字,可以用于局部变量的声明,根据初始化值的类型自动推断变量的类型.需要注意的是,var关键字只能用于局部变量的声明,不能用于成员变量、方法参数、方法返回值等。

var message = "Hello, Java 11!";

2.2、新增的字符串方法

Java 11为String类添加了strip()、stripLeading()、stripTrailing()等方法,用于去除字符串首尾的空格。

2.3、HTTP/2客户端API

引入了新的标准化HTTP客户端API,支持HTTP/2协议,并提供了异步和响应式的特性。

2.4、Epsilon垃圾收集器

新增了Epsilon垃圾收集器,它是一种实验性的垃圾收集器,不进行内存回收操作,适用于性能测试和短期任务。

2.5、ZGC垃圾收集器

ZGC无疑是Java GC算法的一个大变革,相比之前的GC算法,提供了以下亮眼的特性:

亚毫秒级的最大暂停时间 (最大暂停时间为10ms,但实际暂停时间基本在1ms以内)暂停时间与堆大小无关,与活跃对象和根引用集合大小无关堆大小从8M到16T都可以支持

ZGC最早出现在JDK 11中作为实验特性,从Java15开始作为生产特性使用

2.6、Unicode 10的支持

Java 11对Unicode进行了更新,支持Unicode版本10。Unicode 10增加了数百个字符和符号,包括新的表情符号和文字。Java 11的更新确保了对最新Unicode标准的支持,使得开发者可以处理更广泛的字符和文本编码。

三、Java15的新特性

3.1、默认的垃圾收集器ZGC

引入了新的默认垃圾收集器 ZGC,这是一种可扩展、高吞吐量的垃圾收集器。

3.2、新的语法特性,如模式匹配和switch表达式

引入了新的语法特性,如模式匹配和switch表达式。这些新特性可以简化代码并提高可读性。

import java.util.Date;public class PatternMatchingExample {public static void main(String[] args) {Date date = new Date();switch (date.getDay()) {case 1 -> System.out.println("星期一");case 2 -> System.out.println("星期二");case 3 -> System.out.println("星期三");case 4 -> System.out.println("星期四");case 5 -> System.out.println("星期五");case 6 -> System.out.println("星期六");case 7 -> System.out.println("星期日");default -> System.out.println("未知日期");}}}

3.3、新的API特性 :

Java 15 引入了新的 API 特性,如改进的 Stream API : ByteArrayOutputStream和新的日期和时间 API。这些新特性可以使开发人员更方便地处理数据和日期时间。

3.4、模块化系统 :

Java 15 引入了模块化系统,这是 Java 平台长期以来的一个重要改进。模块化系统可以将代码划分为模块,从而提高代码的可维护性和可重用性。

3.5、JDK多个代码仓库合并 :

Java 15 将多个 JDK 代码仓库合并到一个单独的储存库中,方便开发和管理。

3.6、Nashorn JavaScript Engine被移除 :

Java 15 移除了 Nashorn JavaScript Engine 和 jjs 命令行工具,取而代之的是 GraalVM。

3.7、新增文本块

/** * JAVA15 新增文本块 * 终于支持了一种多行字符串文字,写起来更方便了,不用那么多引号加号了 */public class TextBlockTest {public static void main(String[] args) {// 原来的写法String html = "<html>n" +"<body>n" +" <h1>Java 15以前写法,不方便</h1>n" +" <p>xuesong</p>n" +"</body>n" +"</html>";System.out.println(html);// 新写法html = """<html><body> <h1>Java 15 新特性:文本块</h1> <p>xuesong</p></body></html>""";System.out.println(html);}}

3.8、CharSequence增强

CharSequence增加 isEmpty() 方法,实际上也就是StringBuffer,StringBuilder 等实现类都增加了该方法。

/** * JAVA15 CharSequence增加 isEmpty() 方法 */public class CharSequenceTest {public static void main(String[] args) {// CharSequence 的具体是实现类都增加了isEmpty()方法StringBuffer stringBuffer = new StringBuffer();System.out.println(stringBuffer.isEmpty());StringBuilder stringBuilder = new StringBuilder();System.out.println(stringBuilder.isEmpty());}}

四、Java21新特性

4.1、String Templates 功能简化了字符串的编写和维护,使开发人员可以更轻松地在 Java 代码中生成复杂的字符串。
4.2、Record Patterns 功能简化了数据查询,使开发人员可以更轻松地从记录类中提取数据。
4.3Pattern Matching for switch 功能简化了复杂的数据查询,使开发人员可以更轻松地从 switch 语句中提取数据。
4.4Virtual Threads 功能提高了并发应用程序的性能,使开发人员可以更轻松地编写高性能的并发应用程序。
4.5Scoped Values 功能简化了线程间数据共享,使开发人员可以更轻松地在线程之间共享不可变数据。

参考:

​​​​​​​java21新特性 - 代码层面

Java最新技术介绍和分析 (202305) - 知乎

热门栏目