Java 11 新特性及具体应用

发布于:2025-08-19 ⋅ 阅读:(22) ⋅ 点赞:(0)

目录

1. 局部变量类型推断增强(Lambda参数支持var)

2. 字符串增强方法

3. 标准 HTTP 客户端 API

4. 单文件源码直接运行

5. Epsilon 垃圾收集器

6. Flight Recorder 集成

7. 嵌套访问控制(JEP 181)

8. TLS 1.3 支持

总结


Java 11 是长期支持版本(LTS),包含多项重要改进。以下是核心特性及代码示例:


1. 局部变量类型推断增强(Lambda参数支持var

特性:允许在 Lambda 表达式中使用 var 声明参数
应用场景:提高代码可读性,支持对参数添加注解

// 使用 var 声明 Lambda 参数
(var x, var y) -> x.process(y);

// 添加注解
(@NotNull var input, @Nullable var config) -> transform(input);


2. 字符串增强方法

特性:新增 isBlank(), lines(), repeat(), strip() 等方法
应用场景:文本处理与数据清洗

String text = "  Java 11  \n  LTS  ";

// 检查空白字符
System.out.println(text.isBlank());  // false

// 行分割
text.lines().forEach(System.out::println);  // 输出两行:"  Java 11  " 和 "  LTS  "

// 重复字符串
System.out.println("A".repeat(3));  // "AAA"

// 去除首尾空白(支持 Unicode)
System.out.println(text.strip());  // "Java 11  \n  LTS"


3. 标准 HTTP 客户端 API

特性java.net.http 模块标准化
应用场景:替代传统 HttpURLConnection,支持 HTTP/2 和 WebSocket

import java.net.URI;
import java.net.http.*;

// 同步 GET 请求
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.example.com/data"))
        .build();

HttpResponse<String> response = client.send(
    request, HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());


4. 单文件源码直接运行

特性:无需显式编译 .java 文件
应用场景:快速测试脚本

# 直接运行源码文件
java HelloWorld.java

文件内容:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello Java 11!");
    }
}


5. Epsilon 垃圾收集器

特性:无操作的垃圾收集器(仅分配内存)
应用场景:性能测试与短生命周期应用

java -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -Xmx1g MyApp


6. Flight Recorder 集成

特性:JFR 成为 OpenJDK 标准组件
应用场景:生产环境性能监控

# 启动 60 秒性能记录
java -XX:StartFlightRecording=duration=60s,filename=recording.jfr MyApp


7. 嵌套访问控制(JEP 181)

特性:简化嵌套类访问私有成员
应用场景:减少编译器生成的桥接方法

public class Outer {
    private int value = 10;
    
    class Inner {
        int getValue() {
            return value;  // Java 11 直接访问,无需合成方法
        }
    }
}


8. TLS 1.3 支持

特性:默认启用更安全的 TLS 1.3 协议
应用场景:安全网络通信

SSLContext context = SSLContext.getInstance("TLSv1.3");
context.init(null, null, null);  // 使用 TLS 1.3


总结

Java 11 通过语言特性增强(如字符串处理)、API 标准化(HTTP Client)、工具链改进(单文件运行)和性能优化(JFR/Epsilon)提升了开发效率与运行时性能。建议 LTS 版本用户优先升级以获得长期支持与安全更新。


网站公告

今日签到

点亮在社区的每一天
去签到