目录
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 版本用户优先升级以获得长期支持与安全更新。