Java 26 Ships Native HTTP/3, Kills the Netty Dependency for QUIC
Removing the Netty dependency for QUIC shrinks deployment footprints and simplifies the dependency tree for any Java service that wants HTTP/3's head-of-line blocking fix. Combined with virtual threads, the standard library now handles high-concurrency networking without third-party baggage.
Java 26 ships with native HTTP/3 support in the standard HttpClient, ending the long-standing requirement to pull in Netty or Vert.x just to speak QUIC. Developers can now enable the protocol by setting HttpClient.Version.HTTP_3, with the JVM handling UDP connections directly. The implementation includes automatic fallback to HTTP/2 or HTTP/1.1 when UDP is blocked by a firewall, plus native Alt-Svc header parsing for seamless protocol upgrades on subsequent requests. For internal microservices on controlled networks, a strict mode forces HTTP/3-only connections and fails fast if QUIC is unavailable, skipping the fallback overhead entirely.
Baking QUIC into the standard library shifts HTTP/3 from a specialized, library-dependent feature to a trivial configuration flag, which lowers the barrier for widespread adoption across the Java ecosystem.
The fallback design acknowledges that UDP still faces real-world routing problems, so the JVM treats HTTP/3 as an opportunistic upgrade rather than a hard requirement—a pragmatic choice that avoids breaking existing deployments.
Strict mode targets internal microservices where network paths are controlled, suggesting the JDK team sees HTTP/3's value not just for public internet traffic but for reducing tail latency inside data centers.