~/VibeHandbook

Приложения / Mobile

kotlinlang.org

Kotlin

Что это

Kotlin — это современный, статически типизированный язык от JetBrains, который работает на Java Virtual Machine и полностью совместим с Java. Google сделал его предпочтительным языком для разработки под Android, и он также используется для серверного кода, общей мультиплатформенной логики и даже компиляции в нативный код или JavaScript. Он стремится быть лаконичным, безопасным и прагматичным — Java без церемоний.

Сильные стороны

  • Null-безопасность, встроенная в систему типов, устраняет большинство сбоев NullPointerException.
  • Лаконичность: data-классы, функции-расширения и умные приведения резко сокращают шаблонный код.
  • Бесшовная совместимость с Java — используйте любую Java-библиотеку, мигрируйте файл за файлом.
  • Первоклассные корутины для читаемого асинхронного и параллельного кода.
  • Kotlin Multiplatform позволяет разделять бизнес-логику между Android, iOS и бэкендом.

Компромиссы

  • Компиляция в крупных проектах может быть медленнее, чем в Java.
  • JVM означает наличие среды выполнения и некоторые накладные расходы на запуск по сравнению с нативными языками.
  • Multiplatform и Kotlin/Native взрослеют, но менее проверены в боях, чем JVM-таргет.
  • Некоторые продвинутые возможности (корутины, DSL) имеют кривую обучения.

Когда использовать

Выбирайте Kotlin для любого нового Android-приложения и рассматривайте его для JVM-бэкенд-сервисов, где вам нужен более безопасный и лаконичный код, чем на Java. Это сильный выбор по умолчанию везде, где подходит экосистема JVM.

Подходит для вайб-кодинга

Kotlin хорошо работает с AI-ассистентами, потому что его лаконичные идиомы означают меньше кода для генерации и проверки, а null-безопасность выявляет ошибки на этапе компиляции. Просите модель предпочитать неизменяемое val вместо var, использовать data-классы для моделей и писать suspend-функции с корутинами, а не ручную работу с потоками. При таргетинге на Android попросите её сочетать Kotlin с Jetpack Compose, чтобы UI и логика разделяли один современный язык.

data class User(val name: String, val active: Boolean = true)

fun activeNames(users: List<User>): List<String> =
    users.filter { it.active }.map { it.name }

fun main() {
    val users = listOf(User("Ada"), User("Lin", active = false))
    println(activeNames(users))
}