Writing QUIC in Pure Java
Описание и применение
Создан полностью неблокирующий стек QUIC на Java, позволяющий использовать HTTP/3, DNS‑over‑QUIC и WebSocket‑over‑HTTP/3 в фреймворке gumdrop без нативных зависимостей и потоков на соединение.
Задача
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