Javalin — легкий фреймворк для тех, кто ценит простоту в Java и Kotlin
Javalin: когда хочется простоты, а не enterprise-монстра
Каждый, кто хоть раз пытался построить простой REST API через Spring Boot, знает это чувство. Ты открываешь проект, а там конфигурация на экранов пять, аннотации повсюду, и для простого эндпоинта нужно понять, как минимум три новые концепции. Не каждому проекту нужна вся эта мощь. И вот тут на сцену выходит Javalin.
Что такое Javalin?
По сути — это легковесный веб-фреймворк для Java и Kotlin. Создатели позиционируют его как инструмент для быстрой разработки веб-серверов, REST API и статических сайтов. Причем без тонн boilerplate-кода, который обычно сопровождает Java-проекты.
Внутри Javalin работает на Jetty — популярном Java-сервере, который здесь уже встроен. Никаких WAR-файлов, никаких внешних серверов приложений. Твой код — это и есть сервер.
Главный принцип — Convention over configuration. Пишешь логику, а не XML-конфиги.
Стартуем за пять минут
Вот оно — настоящее Hello World на Kotlin:
fun main() {
val app = Javalin.create()
app.get("/") { ctx -> ctx.result("Hello World") }
app.start()
}
Никаких web.xml, application.properties, parent pom.xml с семнадцатью зависимостями. Только код.
На Java выглядит так же лаконично:
public static void main(String[] args) {
Javalin app = Javalin.create();
app.get("/", ctx -> ctx.result("Hello World"));
app.start();
}
Чисто, да? Не то что в том же Spring, где для аналогичного примера нужно сначала настроить минимум три файла.
Kotlin — родная стихия
Если работаешь на Kotlin, Javalin раскрывается по полной. Фреймворк изначально проектировался с оглядкой на Kotlin, и это чувствуется. Статические файлы, шаблонизация, WebSockets — всё интегрируется нативно, без костылей.
Хочешь серверный рендеринг? Пожалуйста — Pebble, Freemarker, Velocity. Библиотеки подключаются через плагины и работают из коробки.
Чем выделяется?
1. Никакой конфигурации: В Spring постоянно борешься с auto-configuration. Здесь что написал — то и работает.
2. Встроенный Jetty: Приложение — это сервер. Никаких deploy в Tomcat или Wildfly.
3. WebSockets из коробки: Реал-тайм коммуникация с чистым lambda-based API.
4. Логирование запросов: Встроенный access logger, ничего дополнительно ставить не надо.
5. Type-safe шаблоны: Для Kotlin доступны Handlebars и Pebble с проверкой типов на этапе компиляции.
6. Плагины: Нужна авторизация? Ставь плагин. OpenAPI-документация? Плагин. Система расширений продумана и не мешает основному коду.
Когда Javalin — отличный выбор?
- Микросервисы, которым важна скорость запуска и минимальный overhead
- Быстрое прототипирование, когда Spring со всеми его зависимостями будет тормозить процесс
- Обучение, потому что простой код проще понять и отладить
- Небольшие API, где Spring Boot — это явный оверхед
А когда лучше выбрать другое?
Буду честен: Javalin не пытается быть «всем для всех». Если в проекте нужны глубокий dependency injection, сложное управление транзакциями, интеграция с enterprise-системами — Spring Boot всё ещё король. Javalin знает свои границы и не лезет туда, где проиграет.
Комьюнити
Проект живёт на GitHub, мейнтейнеры отвечают на issue. Документация понятная, примеры — практические, а в Discord-канале реально помогают. Мелочь, но когда в два часа ночи разбираешься с багом, наличие живого человека в чате — это спасение.
Вместо выводов
Java-мир долго страдал от «enterprise-сложности», когда простые задачи требовали сложных решений. Javalin ломает этот тренд. Не заменяет экосистему, а предлагает вменяемую альтернативу для проектов, которым не нужна тяжёлая артиллерия.
Собираешься стартовать новый Java/Kotlin-проект и хочешь фреймворк, который уважает твоё время? Попробуй Javalin. Будущее «я», которое смотрит на минимальный код вместо бесконечной конфигурации, скажет спасибо.
А ты пробовал Javalin? Расскажи в комментариях о своём опыте — или поделись любимым легковесным фреймворком.