小工具知识网

当前位置: 首页 > 行业知识 > Java8、Java11、Java15、Java21新特性

行业知识

Java8、Java11、Java15、Java21新特性

2026-10-26 00:20:00 来源:互联网转载

目录

()

一、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 = "\n" +                "\n" +                " 

    Java 15以前写法,不方便

    \n" + "

    xuesong

    \n" + "\n" + ""; System.out.println(html); // 新写法 html = """

    Java 15 新特性:文本块

    xuesong

    """; 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) - 知乎

上一篇:路由器没网络怎么进入主机设置

下一篇:微信怎么推广网站?