В вакансиях backend-разработчика всё чаще встречается пара «Java/Kotlin» — не как два разных стека, а как один. Причина простая: Kotlin компилируется в тот же байткод JVM, использует те же библиотеки и фреймворки, и команда может писать новый код на Kotlin, не переписывая старый Java-код. Разберёмся, где язык живёт, что даёт и сколько стоит переход.

Где живёт Kotlin

Android. С 2019 года Kotlin — рекомендованный Google язык для Android. Если встретите мобильного разработчика — почти наверняка он пишет на Kotlin.

Backend на JVM. Spring Boot официально поддерживает Kotlin: документация Spring даёт примеры на двух языках, стартеры генерируются с Kotlin-конфигурацией из коробки. Ktor и http4k — фреймворки, написанные на Kotlin изначально. Крупные компании — от JetBrains до банков — держат на Kotlin значительную часть серверного кода.

Инструменты сборки. Gradle-скрипты на Kotlin (build.gradle.kts) вытесняют Groovy-вариант: та же логика, но с автодополнением и проверкой типов в IDE.

Что даёт язык на практике

Null-safety на уровне типов. String и String? — разные типы: компилятор не даст вызвать метод у значения, которое может быть null. Класс ошибок, который в Java ловят в проде, в Kotlin не компилируется. Подробно — в статье про null-safety.

Меньше церемоний. Класс-носитель данных с equals, hashCode, toString и copy — одна строка:

data class Money(val amount: BigDecimal, val currency: String)

В Java это либо record (с Java 16), либо Lombok, либо сотня строк руками.

Функции как граждане первого класса. Extension-функции, лямбды без интерфейсов-обёрток, коллекции с map/filter без Stream-церемонии — код читается ближе к намерению.

Корутины. Лёгкие «потоки» для конкурентного кода — тысячи одновременных операций без тысяч системных потоков. Как это соотносится с virtual threads из Java 21 — отдельный разговор.

Совместимость: главный аргумент

Kotlin и Java живут в одном проекте без прослоек:

  • Kotlin-класс вызывает Java-класс напрямую и наоборот — никаких адаптеров;
  • один Gradle-модуль может содержать и src/main/java, и src/main/kotlin;
  • вся экосистема Java доступна как есть: Spring, Hibernate, Jackson, JUnit, любая библиотека из Maven Central.

Поэтому переход не требует «большого переписывания»: новый сервис или новый пакет пишут на Kotlin, старое остаётся на Java. Так делает большинство команд.

Сколько стоит переход

Java-разработчику Kotlin даётся быстро: модель JVM, память, потоки, сборка, фреймворки — всё уже знакомо. Новое — синтаксис и несколько идиом:

  • неделя — читать чужой Kotlin-код свободно;
  • две-четыре недели — писать рабочий код без подглядывания;
  • пара месяцев — идиоматичный Kotlin вместо «Java с другим синтаксисом».

Последний пункт — самая частая ловушка: код на Kotlin, написанный «как Java», компилируется и работает, но теряет главные преимущества языка. Этот раздел — как раз про идиомы, а не только про синтаксис.

Когда Kotlin не нужен

  • Команда целиком на Java, кода на Kotlin нет, найм — под Java: изучение впрок даст мало.
  • Java уже закрывает нужды: records, sealed classes и pattern matching сократили разрыв — см. современные возможности Java.
  • Проект на другом стеке: Kotlin вне JVM (Kotlin/Native, Kotlin/JS) существует, но в backend-практике встречается редко.

Kotlin — не замена Java, а второй язык той же платформы. Ценность — в широте: разработчик, читающий оба языка, работает в любом JVM-проекте.

Коротко

  • Kotlin живёт на той же JVM: те же библиотеки, тот же Spring, полная совместимость с Java-кодом в обе стороны.
  • Главные практические плюсы: null-safety на уровне типов, data classes, extension-функции, корутины.
  • Переход для Java-разработчика — недели: платформа знакома, новое — синтаксис и идиомы.
  • Частая ошибка — писать на Kotlin «как на Java»: компилируется, но теряет смысл перехода.
  • Java догоняет (records, sealed, virtual threads), поэтому выбор языка — вопрос команды и проекта, а не «что лучше».

Что почитать дальше

  • Синтаксис Kotlin после Java — следующий шаг маршрута.
  • Java: современные возможности — что уже умеет сама Java.
  • Kotlin и Spring Boot — если хочется сразу к практике.