Зачем Котлин командам

Обычно выбирают Котлин из сочетания факторов: меньше шаблонного кода, чем в Java; типы отделяют nullable и не-nullable; корутины дают структурированную модель асинхронности без «ада колбэков». Для Android весома позиция Google и Jetpack. На сервере фреймворки давно поддерживают Котлин при сохранении JVM-операций. Переписывать всё сразу не нужно — Котлин и Java компилируются в один байткод и сосуществуют в одном модуле.
Меньше церемоний: data class, аргументы по умолчанию
Безопасность null в типах
Корутины для async
Интероп: файл за файлом
Котлин и Java — одна платформа, разный UX
Сравнение (обзорно)
ТемаJavaКотлин
NullOptional<T>; легко ошибиться с nullT и T? на уровне компилятора
ДанныеPOJO + геттеры/equals/hashCodedata class в одну строку
ФункцииМетоды в классе; staticФункции верхнего уровня; однострочный синтаксис
Ветвлениеswitchwhen как выражение, smart cast
СтрокиКонкатенация, String.formatШаблоны $name ${expr}
AsyncКолбэки, CompletableFuturesuspend и корутины
Ресурсыtry-with-resourcesuse { }
Преимущества на практике
Карточки
Что Котлин не убирает сам

На JVM остаются паузы GC, сложность classpath и задачи распределённых систем. Синтаксис учится быстро; идиоматический Котлин — дольше. Производительность в стационарном режиме обычно сопоставима с Java — сначала алгоритмы и I/O.

Постепенная миграция
Легаси Java
Прод
Подключить Котлин
Плагин Gradle
Новый код .kt
Тесты или фичи
Горячие места
По желанию
Один JAR
Смесь байткода
Ориентируйтесь на kotlinlang.org и официальный гайд по стилю — единообразие важнее микросинтаксиса.