Что такое Kotlin и почему его выбрал Google
Kotlin — современный язык на JVM, который с 2019 года официально считается приоритетным для Android-разработки, а с версии 2.0 работает на новом компиляторе K2.
Суть: Kotlin даёт лаконичный синтаксис, защиту от null на уровне типов и полную совместимость с Java, поэтому вы пишете меньше кода и реже ловите ошибки времени выполнения.
Если вы хоть раз видели старый Android-код на Java, вы помните многословность: геттеры, сеттеры, проверки на null через if, анонимные классы на десять строк ради одного клика по кнопке. Kotlin появился как ответ на эту усталость. Его придумала компания JetBrains — та самая, что делает IntelliJ IDEA и Android Studio, — и язык с самого начала проектировался прагматично: убрать лишний шум, оставить выразительность, не ломая совместимость с гигантским миром Java-библиотек.
В 2017 году Google объявил Kotlin официально поддерживаемым языком для Android, а в 2019-м — приоритетным (Kotlin-first). Это значит, что новые библиотеки Jetpack, документация и примеры пишутся в первую очередь на Kotlin. Сегодня, в эпоху Kotlin 2.x, язык вышел далеко за пределы Android: на нём пишут бэкенды, мультиплатформенные приложения и даже фронтенд. Но именно Android остаётся его главной витриной, и для джуниора это прямой путь к коммерческой разработке.
Чем Kotlin отличается от Java
Первое, что бросается в глаза, — отсутствие лишних слов. Точки с запятой не нужны, тип переменной чаще всего выводится автоматически, а класс-контейнер данных описывается одной строкой. Сравните объявление в Java на пятнадцать строк с data class на одну — это не косметика, а реальное сокращение объёма кода и поверхности для ошибок.
Второе и главное — null-безопасность. В Java любая ссылка может оказаться null, и NullPointerException годами оставался ошибкой номер один. В Kotlin тип String в принципе не может быть null; чтобы разрешить отсутствие значения, нужно явно написать String?. Компилятор не даст обратиться к возможно-null значению без проверки. Целый класс аварий просто исчезает.
// Java-стиль мышления, но на Kotlin
val name: String = "Аня" // не может быть null
val nickname: String? = null // может быть null, тип помечен ?
// println(nickname.length) // ОШИБКА КОМПИЛЯЦИИ
println(nickname?.length) // безопасно: вернёт null
println(nickname?.length ?: 0) // подстановка значения по умолчаниюТретье — функции высшего порядка и лямбды как часть языка, а не громоздкие анонимные классы. Обработчик клика, который в Java занимал пять строк, в Kotlin умещается в одну.
Как работает под капотом
Kotlin компилируется в тот же байт-код JVM, что и Java. Компилятор переводит ваш .kt-файл в .class-файлы, которые исполняет виртуальная машина (на Android — её аналог ART). Поэтому Kotlin и Java свободно вызывают друг друга: вы можете подключить любую Java-библиотеку и пользоваться ей как родной.
С версии 2.0 за компиляцию отвечает новый фронтенд — компилятор K2. Он переписан с нуля, лучше понимает структуру кода, выдаёт более точные сообщения об ошибках и компилирует заметно быстрее (в некоторых Android-проектах инкрементальная сборка ускорилась до двух раз). Для вас как для новичка важно одно: K2 — это умолчание в актуальной Android Studio, и весь современный материал ориентирован на него.
Ваш код (.kt)
|
v
Компилятор K2 --> Байт-код JVM (.class)
|
v
Среда ART на устройстве --> Запуск приложенияЧастые ошибки
Думать на Java и писать на Kotlin. Новички тащат привычки: ручные геттеры, проверки if (x != null) повсюду, объявление переменных через var без нужды. Kotlin поощряет иммутабельность: по умолчанию выбирайте val (неизменяемая ссылка) и переходите на var только там, где значение действительно меняется.
Игнорировать предупреждения о null. Если компилятор требует ? или !!, это не придирка, а защита. Оператор !! («я уверен, что не null») снимает проверку, но возвращает риск NullPointerException — пользуйтесь им крайне редко.
Best practices
- По умолчанию
val, и только при необходимостиvar— это делает код предсказуемее. - Доверяйте выводу типов, но для публичных функций указывайте тип возврата явно — так читается контракт.
- Не используйте
!!как способ «заткнуть» компилятор; почти всегда есть безопасная альтернатива через?.или?:. - Сразу привыкайте к актуальной версии Kotlin 2.x и компилятору K2 — старые туториалы на Kotlin 1.x могут показывать устаревшие приёмы.
Аналогию с null-безопасностью удобно прочувствовать на простой логике. Запустите врезку ниже: она моделирует то, что Kotlin делает на уровне типов — безопасный доступ к возможно-отсутствующему значению.
# Аналог null-безопасного доступа из Kotlin: ?. и ?:
def safe_length(value):
# моделируем nickname?.length ?: 0
return len(value) if value is not None else 0
names = ["Аня", None, "Борис", None]
for n in names:
print(repr(n), '->', safe_length(n))Попробуй сам ▶ — измените список, добавьте свои значения и пустые строки, посмотрите, как ведёт себя «безопасная длина». В Kotlin за эту логику отвечает сам компилятор, и ошибиться сложнее.
Итог: Kotlin — это прагматичный, безопасный и лаконичный язык, который Google выбрал основным для Android не случайно. Меньше кода, меньше ошибок, полная совместимость с Java и быстрый компилятор K2 делают его идеальной точкой входа в мобильную разработку. В следующих уроках мы разберём базовый синтаксис и постепенно дойдём до полноценных экранов на Jetpack Compose.