TGViewer
Верхняя полка📝 Верхняя полка📝 @stopshelf · 360 subscribers
Post #428 276
С интересным вопросом пришли недавно коллеги-фронтендеры: хотим, мол, в перспективе перейти на WebTransport API — модно-молодёжную альтернативу WebSocket-ам, с изолированными стримами, out-of-order сообщениями и прочими ништяками. Основная особенность — работа поверх протокола HTTP/3 (который, в свою очередь, построен на QUIC). Отсюда вопрос: а поддерживает ли такое наш бэкенд на #Java? 🤔

Немного поизучав тему, я выяснил, что:
• В самой Java протокол HTTP/3 поддерживается только в качестве клиента и только начиная с версии 26, вышедшей в марте этого года (JEP-517).
• Для поддержки на стороне сервера нужны сторонние библиотеки, в нашем случае это Apache Tomcat, так как API для фронта крутится на нём.
◦ При этом от Java как от платформы требуется реализация DTLS, но она, к счастью, сделана ещё в Java 9.
• А вот Tomcat поддержки HTTP/3 не имеет и не сильно торопится её вводить, потому что:
◦ HTTP/3 построен поверх протокола UDP и сильно оптимизирован для работы в мобильных сетях и прочих нестабильных условиях;
◦ Но Tomcat редко взаимодействует с ними напрямую, т.к. чаще всего стоит за балансировщиком, реверс-прокси, side-car'ом или чем-то ещё внутри корпоративного контура, где соединения уже стабильны, быстры и предсказуемы;
◦ Поэтому разработчики Tomcat считают старый добрый HTTP/1.1 (поверх TCP) всё ещё более подходящим:
Tomcat is not normally directly internet facing. It is typically sat behind some form of load-balancer and/or TLS termination and/or reverse proxy. In those scenarios poor network conditions aren't an issue so using QUIC is costs CPU power which is something folks - particularly those with large installations - try to minimise. It makes more sense to use HTTP/1.1 in those scenarios.
Hence there isn't much requirement for an HTTP/3 implementation in Tomcat at the moment.

◦ В этой связи, авторы Tomcat предлагают страждущим поддержки HTTP/3 ставить перед Tomcat'ом NGINX и снимать HTTP/3 на нём (либо на Caddy, Envoy и др.)
• Но если стоит задача эффективно и быстро упаковывать данные для передачи и приёма именно по WebTransport API, то в этом сценарии бэкендовый сервер всё равно рискует остаться узким местом 🍾

Тогда остаются такие варианты:
• Ждать поддержки HTTP/3 в Tomcat (рано или поздно она, скорее всего, будет);
• Менять Tomcat на другой сервлет-контейнер, например, Jetty, который уже поддержал HTTP/3;
• Переходить с сервлетного стека на реактивный, в котором Reactor Netty тоже поддерживает HTTP/3 ☢️

Есть ли другие альтернативы — не знаю, но не исключаю, что появятся, ведь и сам WebTransport API ещё только в baseline и потому поддерживается не повсеместно. Поживём-увидим 👀
MDN Web Docs WebTransport API - Web APIs | MDN The WebTransport API provides a modern update to WebSockets, transmitting data between client and server using HTTP/3 Transport. WebTransport provides support for multiple streams, unidirectional streams, and out-of-order delivery. It enables reliable transport…
  • 👍 14
More from @stopshelf
  1. Oct 2, 2026Post #485
  2. Sep 18, 2026#инструменты для презентаций на Markdown Сегодня нужно было по-быстрому сделать слайды для…
  3. Sep 14, 2026Post #483
  4. Aug 31, 2026Игровой портал в прошлое 🔮 Года полтора назад я захотел показать ребёнку игру моего детст…
  5. Aug 29, 2026Post #481
  6. Aug 28, 2026Post #480
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →