Add http3 module: HTTP/3 in the Java HTTP Client (JEP 517), opt-in, discovery modes, fallback timings, proxy downgrade and a packet-loss comparison

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01KqJyCidz3ZgRyHABv2GVJh
This commit is contained in:
2026-09-30 20:27:46 +00:00
co-authored by Claude Sonnet 5.5
parent c8ff3acf09
commit fadfd05670
25 changed files with 617 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
$ java src/OptIn.java https://localhost:4433/hello client (OpenJDK Runtime Environment Temurin-26.0.2.1+1 (build 26.0.2.1+1))
client-level HTTP_3, request 1: HTTP_2
client-level HTTP_3, request 2: HTTP_3
client-level HTTP_3, request 3: HTTP_3
client-level HTTP_3, request 4: HTTP_3
$ java src/OptIn.java https://localhost:4433/hello request (OpenJDK Runtime Environment Temurin-26.0.2.1+1 (build 26.0.2.1+1))
request-level HTTP_3, request 1: HTTP_3
request-level HTTP_3, request 2: HTTP_3
request-level HTTP_3, request 3: HTTP_3
request-level HTTP_3, request 4: HTTP_3
$ java src/OptIn.java https://localhost:4433/hello client (OpenJDK Runtime Environment Temurin-25.0.4.1+1 (build 25.0.4.1+1-LTS))
src/OptIn.java:12: error: cannot find symbol
if (where.equals("client")) builder.version(HttpClient.Version.HTTP_3);
^
symbol: variable HTTP_3
location: class Version
src/OptIn.java:15: error: cannot find symbol
$ first request of a fresh client-level HTTP_3 client, 8 fresh JVMs (OpenJDK Runtime Environment Temurin-26.0.2.1+1 (build 26.0.2.1+1))
client-level HTTP_3, request 1: HTTP_2
client-level HTTP_3, request 1: HTTP_2
client-level HTTP_3, request 1: HTTP_2
client-level HTTP_3, request 1: HTTP_2
client-level HTTP_3, request 1: HTTP_2
client-level HTTP_3, request 1: HTTP_2
client-level HTTP_3, request 1: HTTP_2
client-level HTTP_3, request 1: HTTP_2