Что такое Kotlin и зачем он нужен

Знакомимся с языком Kotlin: откуда он взялся и какие задачи решает.

Kotlin — статически типизированный язык программирования от компании JetBrains, который компилируется в байт-код JVM и полностью совместим с Java.

Kotlin появился в 2011 году и вышел в стабильной версии 1.0 в 2016-м. Его придумали в JetBrains — компании, делающей среды разработки (IntelliJ IDEA). Им нужен был язык лаконичнее Java, но без потери совместимости с огромным миром Java-библиотек. Так и родился Kotlin.

Чем Kotlin отличается от Java

Главные принципы языка — лаконичность, безопасность и совместимость. Сравните одну и ту же мысль на Java и Kotlin: класс-хранилище данных на Java требует десятки строк (поля, конструктор, геттеры, equals, hashCode), а на Kotlin это одна строка.

// Полноценный класс данных в одну строку
data class User(val name: String, val age: Int)

fun main() {
    val u = User("Аня", 25)
    println(u)
}

Вывод:

User(name=Аня, age=25)

Где применяют Kotlin

Kotlin универсален. Его используют для:

  • серверных приложений (Spring Boot, Ktor);
  • мобильной разработки под Android (официальный язык с 2017);
  • кроссплатформенного кода (Kotlin Multiplatform);
  • скриптов и небольших утилит.

В этом курсе мы изучаем сам язык: его синтаксис и идиомы. Android — отдельная большая тема со своим курсом.

Как выглядит точка входа

Программа на Kotlin начинается с функции main. Никаких обязательных классов вокруг неё, как в Java, не нужно.

fun main() {
    println("Привет, Kotlin!")
}

Вывод:

Привет, Kotlin!

Как работает под капотом

Когда вы пишете код на Kotlin, компилятор kotlinc превращает его в байт-код JVM — тот же формат .class, что и у Java. Этот байт-код исполняет виртуальная машина Java (JVM). Поэтому Kotlin может вызывать любой Java-код, а Java — Kotlin-код: для JVM они неразличимы. Многие удобства Kotlin (data class, null-safety) существуют только на уровне компилятора: он сам генерирует за вас рутинный байт-код, которого вы не видите.

Частые ошибки

  • Думать, что Kotlin — это «про Android». Android лишь одно из применений; язык самодостаточен и работает где угодно на JVM.
  • Искать public static void main. В Kotlin точка входа — просто fun main() без класса-обёртки.
  • Ставить точки с запятой в конце строк. В Kotlin они не нужны.

Итог

  • Kotlin — статически типизированный язык на JVM от JetBrains.
  • Его ценят за лаконичность, безопасность и полную совместимость с Java.
  • Код компилируется в байт-код JVM и исполняется виртуальной машиной Java.
  • Точка входа — функция main.
Проверьте себя
1. В какой формат компилируется код Kotlin для запуска по умолчанию?
AВ машинный код процессора
BВ байт-код JVM
CВ JavaScript
DВ исходный код Java
2. Как выглядит точка входа в программу на Kotlin?
Apublic static void main(String[] args)
Bfun main()
Cdef main():
Dfunction main()
3. Какая компания разработала Kotlin?
AGoogle
BOracle
CJetBrains
DMicrosoft