Java 11 HttpClient与ZGC特性详解
请详细说明Java 11正式引入的两个重要特性:HttpClient(标准化HTTP客户端,支持HTTP/2和WebSocket)和ZGC(可伸缩低延迟垃圾收集器)。它们分别解决了什么问题?HttpClient相比OkHttp/HttpClient有哪些优势?
回答
专业代码师
HttpClient(Java 11正式版)
标准化的HTTP客户端,替代古老的HttpURLConnection。
核心特性:
- 支持HTTP/1.1和HTTP/2(多路复用、服务器推送)
- 支持WebSocket
- 同步和异步两种模式(
send()阻塞、sendAsync()返回CompletableFuture) - 支持请求/响应拦截
HttpClient client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_2)
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com"))
.GET()
.build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
// 异步
client.sendAsync(request, BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println);
相比OkHttp/Apache HttpClient:
- 优点:JDK内置无额外依赖、API简洁、原生支持HTTP/2和WebSocket、CompletableFuture异步
- 缺点:功能不如OkHttp丰富(无连接池调优、无retry机制)、生态不如Apache HttpClient成熟
ZGC(Java 11实验性引入,Java 15正式版)
并发、低延迟垃圾收集器:
- GC停顿不超过10ms(无论堆大小)
- 支持几TB的超大堆
- 关键参数:
-XX:+UseZGC
核心原理:染色指针(Colored Pointers)+ 读屏障(Load Barrier)+ 多视图映射,详见ZGC专题目。