Writing QUIC in Pure Java
说明与用途
在 gumdrop 中实现了完全非阻塞的纯 Java QUIC 堆栈,支持 HTTP/3、DNS‑over‑QUIC 和 WebSocket‑over‑HTTP/3,无需本机依赖或每个连接线程。
问题
Adding HTTP/3 support to a pure‑Java async framework was blocked by the lack of a non‑blocking QUIC implementation; existing solutions required native binaries or a thread‑per‑connection model.
结果
A fully non‑blocking, pure‑Java QUIC implementation enabling HTTP/3, DNS‑over‑QUIC, and WebSocket‑over‑HTTP/3 in gumdrop without native dependencies or per‑connection threads.
工作流
- 1. Identified limitations of existing QUIC options (native JNI, blocking Kwik).
- 2. Designed a pure‑Java QUIC implementation with non‑blocking I/O.
- 3. Implemented packet protection, loss detection, NewReno, connection migration, 0‑RTT, QPACK, and HTTP/3 support.
- 4. Integrated the QUIC stack into gumdrop’s selector loop and async DNS resolver.
- 5. Collaborated with Agent15 to use TLS 1.3 handshake layer.
- 6. Released the QUIC layer as part of gumdrop, removing native build steps.
- 7. Added servlet container support for HTTP/3 compatibility with existing J2EE code.
证据
The QUIC layer ships today: packet protection, NewReno, QPACK dynamic tables, 0-RTT, Retry packets, passive connection migration, WebSocket-over-HTTP/3 (RFC 9220), and automatic h3/h2/h1.x negotiation.
No native build step, no QUICHE_DIR, no BoringSSL — just Java 17+.
- 记录日期: 2026-09-07T06:53:20.765Z