Что такое Quarkus
Quarkus — фреймворк для серверных приложений на Java. Он помогает быстро написать REST API или микросервис: принимает HTTP-запросы, превращает объекты в JSON, работает с базой данных, проверяет права доступа. Главная идея Quarkus — приложение должно быстро запускаться и потреблять мало памяти, чтобы его было удобно запускать в облаке и контейнерах.
Почему Quarkus быстрый
Обычный Java-фреймворк при каждом запуске сканирует классы, читает аннотации и строит внутренние структуры. Quarkus делает большую часть этой работы заранее — во время сборки проекта. Этот приём называется build-time processing (обработка при сборке). В результате:
| Что | Что это даёт |
|---|---|
| Быстрый старт | Приложение запускается за секунды, а нативная сборка — за десятки миллисекунд |
| Мало памяти | Меньше классов загружается во время работы |
| Режим разработки | Код меняется и сразу работает без перезапуска вручную |
| Нативная сборка | Приложение можно собрать в обычный исполняемый файл без JVM |
Стандарты вместо своего API
Quarkus не придумывает новые аннотации там, где есть стандарт. Вы будете писать код на привычных спецификациях Jakarta EE и MicroProfile:
- Jakarta REST — аннотации
@Path,@GET,@POSTдля REST-эндпоинтов; - CDI — внедрение зависимостей через
@Inject; - Jakarta Persistence и Hibernate ORM — работа с базой данных;
- MicroProfile Config — настройки из
application.properties.
Возможности подключаются расширениями (extensions) — это Maven-зависимости вида quarkus-rest, quarkus-hibernate-orm-panache. Нужна база данных — добавили расширение, не нужна — его нет в проекте.
Версия в курсе
Курс написан для Quarkus 3.40 и Java 25. Quarkus 3 работает на Java 17, 21 и 25; генератор проектов сам выбирает версию Java, на которой он запущен. Сборка — через Maven.
Проверьте, что Java установлена:
java -versionКоманда должна показать версию 25 (подойдёт и 21). Maven отдельно ставить не обязательно: в каждом проекте Quarkus есть обёртка mvnw, которая скачает Maven сама.
Что мы построим
Через весь курс мы будем делать REST API блога:
- Эндпоинты
/postsдля списка, просмотра, создания и удаления постов. - Комментарии к постам и база данных через Hibernate ORM с Panache.
- Проверку входных данных, обработку ошибок, настройки.
- Тесты, проверки здоровья, метрики, защиту паролем.
- Сборку в jar, нативный файл и контейнер.
Мы будем вызывать API через curl — утилиту командной строки для HTTP-запросов. Она есть в Windows 10+, macOS и Linux.
Частая ошибка
Quarkus требует Java 17 или новее. Если в системе старая Java, сборка падает уже на первой команде с ошибкой вида:
UnsupportedClassVersionError: io/quarkus/bootstrap/runner/QuarkusEntryPoint has been compiled
by a more recent version of the Java Runtime (class file version 61.0), this version of the
Java Runtime only recognizes class file versions up to 60.0
Номер 61 — это Java 17, а 60 — Java 16. Установите JDK 25 и проверьте, что переменная JAVA_HOME указывает именно на него.