Starting with JDK 26, Java's `HttpClient` supports HTTP/3. At the API level, this addition is tiny: You can now pass the new `HttpClient.Version` enum value `HTTP_3` to the builder method `version` when building an HTTP client or request. You then go on to use the built instances as you normally would and almost everything else happens beneath the surface. But unlike HTTP/1 and /2, /3 is based on UDP instead of TCP, which means you cannot easily upgrade an existing connection. Consequently, there's no obvious version for the initial connection, which makes it a bit tricky for the API to determine what HTTP version to use. JDK Enhancement Proposal 517 explains the process in detail, so give that a read to understand its tradeoffs and how to configure it.
JEP 517: https://openjdk.org/jeps/517
JDK 26: http://jdk.java.net/26
Come to *JavaOne 2026* in Redwood City (California, USA), March 17th-19th, and *get 100$ off* with code *J12026YTS* : https://www.oracle.com/javaone/