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
+19
View File
@@ -0,0 +1,19 @@
$ java src/Fallback.java https://localhost:4433/hello 120 (server: h2 + h1.1 on TCP only; nothing listens on UDP 4433)
request HTTP_3 (ANY) -> HTTP_2 after 3340 ms
client HTTP_3 (ANY) -> HTTP_2 after 31 ms
request HTTP_3_URI_ONLY -> java.net.ConnectException: No response from peer for 30 seconds after 60016 ms
$ java -Djdk.httpclient.http3.maxDirectConnectionTimeout=1 src/Fallback.java https://localhost:4433/hello 120 (same server)
request HTTP_3 (ANY) -> HTTP_2 after 501 ms
client HTTP_3 (ANY) -> HTTP_2 after 45 ms
request HTTP_3_URI_ONLY -> java.net.ConnectException: No response from peer for 30 seconds after 60016 ms
$ java -Djdk.httpclient.quic.maxInitialTimeout=3 src/Fallback.java https://localhost:4433/hello 120 (same server)
request HTTP_3 (ANY) -> HTTP_2 after 3338 ms
client HTTP_3 (ANY) -> HTTP_2 after 39 ms
request HTTP_3_URI_ONLY -> java.net.ConnectException: No response from peer for 3 seconds after 6011 ms
$ java src/Discovery.java https://localhost:4433/hello (server: HTTP/1.1 only, TCP)
ANY -> HTTP_1_1 HTTP_1_1 HTTP_1_1 HTTP_1_1
ALT_SVC -> HTTP_1_1 HTTP_1_1 HTTP_1_1 HTTP_1_1
HTTP_3_URI_ONLY -> ConnectException(No response from peer for 30 seconds) ConnectException(No response from peer for 30 seconds) ConnectException(No response from peer for 30 seconds) ConnectException(No response from peer for 30 seconds)