JDK 27 выходит через неделю, а битва за облако разгорается сильнее. Разбираемся, какой фреймворк реально выигрывает в 2026 году — и стоит ли мигрировать.
TL;DR: быстрый расклад
Spring Boot остаётся индустриальным стандартом для enterprise-проектов — экосистема, комьюнити и найм решают. Но если у вас Kubernetes и жёсткие ограничения по памяти или startup-времени, Quarkus и Micronaut дают объективно лучшие цифры. JDK 27 с G1 по умолчанию и встроенной post-quantum криптографией добавляет веса всем трём, но особенно — контейнерным рантаймам.
Что изменилось к 2026 году
Весной 2026 вышли JDK 26, а JDK 27 готовится к GA 15 сентября. Ключевое: G1 теперь GC по умолчанию на всех конфигурациях, а не только при большой куче. Это влияет на startup всех трёх фреймворков, но особенно заметно для тех, кто работает в контейнерах с ограниченной памятью.
В экосистеме тоже движение: Micronaut 5.0 вышел в мае 2026, Spring Boot 4.0 идёт с поддержкой Jakarta EE 11, Quarkus держит стабильный релиз-трайн. GraalVM для native image тоже заметно повзрослел — время сборки сократилось, а совместимость улучшилась.
Бенчмарки: две независимые площадки
Чтобы не опираться на один источник, я сверил данные из двух независимых замеров. Первый — Gillius Programming (Mac M2 Pro, GraalVM 25, JDK 25, Postgres 17) с тестовым приложением на JDBC + Flyway + JSON API. Второй — techoral.com (AMD EPYC 7763, JDK 25, PostgreSQL 16, REST API + база данных). Цифры совпадают по порядку, хотя абсолютные значения различаются из-за железа.
Startup time
На JVM Micronaut традиционно быстрее всех: 0,66 секунды против 1,15 у Quarkus и 1,9 у Spring Boot в тесте Gillius. На native images разрыв практически исчезает — Quarkus и Micronaut оба укладываются в 50 мс, Spring Boot Native в 104 мс.
На EPYC-сервере (techoral) результаты выше из-за другого окружения, но соотношение сохраняется:
- Spring Boot 3.4 (JVM): ~2 850 мс, Native: ~83 мс
- Quarkus 3.11 (JVM): ~720 мс, Native: ~18 мс
- Micronaut 4.5 (JVM): ~890 мс, Native: ~38 мс
Потребление памяти
Вот где разрыв самый драматичный. На native images Quarkus использует 3,2 МБ heap против 11 МБ у Spring Boot — в 3,4 раза меньше. Общий RSS-расход (вся память процесса) у Quarkus ~70 МБ против ~149 МБ у Spring Boot Native.
| Режим | Spring Boot 3.4 | Quarkus 3.11 | Micronaut 4.5 |
|---|---|---|---|
| JVM, heap idle | ~218 МБ | ~95 МБ | ~110 МБ |
| JVM, heap под нагрузкой | ~420 МБ | ~210 МБ | ~240 МБ |
| Native, heap idle | ~78 МБ | ~42 МБ | ~58 МБ |
| Native, heap под нагрузкой | ~185 МБ | ~98 МБ | ~115 МБ |
| Throughput, req/s (JVM) | ~17 840 | ~21 950 | ~19 700 |
Источники: Gillius Programming (Java 25 startup benchmark, M2 Pro), techoral.com (Spring Boot vs Quarkus vs Micronaut 2026 benchmark, AMD EPYC 7763)
Throughput
На JVM Quarkus выдаёт ~22 000 req/s, Micronaut ~20 000, Spring Boot ~18 000. На native images throughput у всех немного падает из-за отсутствия JIT-оптимизаций — но разрыв между Quarkus native (~18 600) и Spring Boot JVM (~17 840) уже не в пользу Spring.
Когда что выбирать
Spring Boot — если вы строите большое enterprise-приложение, вам важна экосистема (Spring Cloud, Spring AI, Security, Data), проще всего нанимать разработчиков. 20+ лет библиотек и документации — это аргумент, который сложно перебить.
Quarkus — если Kubernetes pod startup time или лимит по памяти это бизнес-требование. Quarkus делает build-time processing из коробки, GraalVM native-first, CDI-подход совместим с Jakarta EE. Разрыв в 4 раза по памяти под нагрузкой на облаке превращается в реальные деньги при 100+ подах.
Micronaut — если вы в serverless (Lambda, Cloud Functions) или вам критически важна надёжность native image. Compile-time DI означает ноль рефлексии в рантайме — это убирает главную причину сбоев при сборке в native. Micronaut 5.0 вышел в мае 2026, так что ветка 4.x всё ещё актуальна для большинства.
Что JDK 27 меняет для всех троих
JDK 27 приносит девять фич, и несколько из них напрямую затрагивают микросервисные рантаймы:
- JEP 534: Compact Object Headers — заголовки объектов становятся компактнее по умолчанию. Меньше метаданных на объект — меньше потребление памяти в GC-куче. Это важно для всех, кто работает на JVM с большим количеством мелких объектов.
- JEP 527: Post-Quantum Hybrid Key Exchange для TLS 1.3 — включён по умолчанию. Для сервисов, которые ходят во внешние API или работают в regulated-индустрии, это уже не future-proofing, а актуальное требование.
- JEP 533: Structured Concurrency (седьмой preview) — новый тип ExecutionException и обновлённый Joiner. Если вы уже используете StructuredTaskScope — обновите обработку ошибок.
- JEP 535: JFR In-Process Data Redaction — чувствительные данные из command-line и environment variables убираются из flight recordings до выхода из процесса. Важно для compliance.
Все три фреймворка уже поддерживают JDK 27 в nightly-сборках. GA 15 сентября — неделя с хвостиком.
Стоит ли мигрировать с Spring Boot
Короткий ответ: нет, если у вас работает и команда не страдает. Переход с Spring Boot на Quarkus ради 3х по памяти имеет смысл только при наличии конкретной проблемы — жёсткие K8s-лимиты, serverless cold start, cost reduction на масштабе.
Если вы стартуете новый сервис и знаете, что он будет в Kubernetes с ограничениями — имеет смысл сразу смотреть в Quarkus. Если у вас облако и serverless — Micronaut. Для всего остального Spring Boot 3.4 + JDK 25 LTS — это всё ещё наиболее прагматичный выбор.
