CodeWalk

Java 11 HttpClient与ZGC特性详解

作者:专业代码师 · 2026-05-30 12:55

请详细说明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专题目。