JDK 26 目前处于早期访问(Early-Access)阶段,虽然 GA 版本预计要到 2026 年 3 月左右才发布,但核心可见的新 API 已经基本确定。对开发者而言,最值得关注的是 HTTP 客户端支持 HTTP/3,以及密码学 PEM 编码 API 的第二次预览。其他变更多为已有特性的迭代或旧 API 的移除。
JDK 26 特性概览
JDK 26 的特性列表在 EA 构建中仍可能微调,最终请以官方 JEP 和 Javadoc 为准。已确定的重要方向包括:
- HTTP/3 支持:通过 JEP 517 让标准库
java.net.http.HttpClient原生支持 HTTP/3。 - PEM 编码 API:加密对象(密钥、证书等)的文本编码/解码能力进入第二次预览。
- Applet API 移除:JEP 504 确认移除过时的 Applet 相关类库。
- 语言演进:Stable Values 等草案特性持续优化 JVM 性能表现。
HTTP 客户端 API 的 HTTP/3 支持(JEP 517)
JEP 517 的核心目标是让 Java 应用在不大幅改动代码的前提下与 HTTP/3 服务器交互。这是一个'显式选择加入'的功能,默认协议不会从 HTTP/2 自动切换为 HTTP/3,确保兼容性。
在 JDK 26 中,HttpClient.Version.HTTP_3 枚举值被引入。开发者可以通过它来优先或强制使用 HTTP/3,从而利用多路复用、头部压缩和低时延等优势。实际是否生效取决于服务器和网络环境,建议通过响应头检查协商结果。
同步请求示例
构建 HttpClient 时指定版本即可,后续发送请求的逻辑保持不变:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Http3Example {
public static void main(String[] args) throws Exception {
// 1. 创建支持 HTTP/3 的 HttpClient
HttpClient client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_3)
.build();
// 2. 构建请求
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.GET()
.build();
// 3. 发送同步请求
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println( + response.version());
System.out.println( + response.statusCode());
System.out.println( + response.body());
}
}


