Найти тему
Журнал «Код»

Что такое Kotlin

И зачем он андроид-разработчику.

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

🤔 Зачем понадобился ещё один язык вместо Java

На этот вопрос есть два ответа.

Официальный ответ: в 2017 году языком Kotlin пользовались около миллиона программистов, и им не хватало поддержки на Андроиде. Гугл пошёл навстречу разработчикам и сделал Kotlin приоритетным языком на Андроиде.

Догадки и слухи: с 2010 года Гугл судится с компанией Oracle по поводу использования Java в системе Андроид. Вот почему:

⠀⠀⠀⠀⠀в основе первых версий Андроида лежала виртуальная
⠀⠀⠀⠀⠀машина Dalvik,

⠀⠀⠀⠀⠀Dalvik построена на основе платформы Apache Harmony,

⠀⠀⠀⠀⠀Apache Harmony — это платформа Java, на которую у Гугл нет ⠀⠀⠀⠀⠀лицензии.

В 2010 году Oracle потребовала от Гугл миллиардную компенсацию и трижды выигрывала суд: в 2012, 2014 и 2015-м. Дело не закрывалось, поскольку в Гугл отказывались столько платить. В 2016 году иск вырос до девяти миллиардов, однако суд встал на сторону Гугл. Дело висит с 2017 года, а Гугл постепенно переводит всю андроид-инфраструктуру с Java на Kotlin.

✅ Преимущества

Совместимость с Java. Kotlin и Java можно использовать в одном проекте. Для этого у языка Kotlin есть собственный компилятор, который выдаёт байт-код, совместимый с обычной Java-машиной. Получается, что с точки зрения Java неважно, из какого языка был сделан байт-код.

Упрощенная схема взаимодействия Java и Kotlin
Упрощенная схема взаимодействия Java и Kotlin

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

В простых программах у Kotlin проще синтаксис и меньше вспомогательных конструкций
В простых программах у Kotlin проще синтаксис и меньше вспомогательных конструкций
В некоторых случаях код на Kotlin может быть в несколько раз короче, чем код на Java
В некоторых случаях код на Kotlin может быть в несколько раз короче, чем код на Java

Безопасность. Язык Kotlin и его среда программирования — это продукт одной компании, которая постоянно обновляет базу ошибок и помогает разработчикам редактировать код до момента исполнения программы.

На этапе компиляции в Kotlin срабатывает null-защита: Kotlin автоматически проверяет типы данных, отслеживает null-значения и предотвращает появление NullPointerException — распространённой Java-уязвимости.

❌ Недостатки

Низкая скорость. Чаще всего разработчики жалуются на непредсказуемую скорость компиляции. По быстродействию Kotlin уступает Java, поскольку в его основе лежит виртуальная машина JVM — фундаментальная программа, выпущенная специально под язык Java, а не под Kotlin.

Другие нюансы смотрите в твиттере Даниила Попова — андроид-инженера Авито, который изучает Kotlin на практике и рассказывает о свежих технических багах.
👉 История Даниила Попова: про андроид-разработку, отказ от тимлидства в Mail.ru Group и переход в инженеры Авито.

Маленькое сообщество и единственный владелец языка. Kotlin всё ещё не такой популярный, как Java. Причина в том, что Kotlin — это не продукт Гугл. Разработчики боятся, что через какое-то время Гугл откажется от него, придумает какую-то свою версию языка или поссорится с JetBrains.

Малочисленное сообщество тормозит развитие Kotlin: под него медленно выпускаются новые библиотеки и обновления, а для решения технических проблем нужно обращаться в баг-трекер — написать в техподдержку JetBrains, добавить свою проблему в очередь задач, ждать и надеяться на её исполнение.

В сентябре 2020 в баг-трекере Kotlin около 40 000 задач, которые закрываются по мере критичности. До некоторых задач очередь доходит через несколько лет, но есть и те, что остаются нерешёнными — в таких условиях разработчики вынуждены искать костыльные решения или переходить на другой язык с развитым сообществом.

С 2002 года популярность Java постепенно снижается, однако по-прежнему на высоком уровне
С 2002 года популярность Java постепенно снижается, однако по-прежнему на высоком уровне

Для чего используется

Kotlin используется для создания мобильных приложений, веб-разработки, бэкенда и мультиплатформенного программирования:

⠀⠀⠀⠀⠀Для веб-разработки предусмотрена компиляция с JavaScript и ⠀⠀⠀⠀⠀инструменты для HTML и CSS-кода.

⠀⠀⠀⠀⠀Для бэкенда предусмотрена компиляция Java и Kotlin в одном ⠀⠀⠀⠀⠀проекте. По отдельности Kotlin и Java совместимы по умолчанию.

⠀⠀⠀⠀⠀Для мультиплатформенного программирования предусмотрены ⠀⠀⠀⠀⠀технологии разработки интерфейсов в React, создания серверного ⠀⠀⠀⠀⠀HTTP API в Ktor и адаптирования андроид-приложений под ⠀⠀⠀⠀⠀операционную систему iOS.

Google, Netflix, Twitter, Uber, Netflix и другие компании переводят некоторые свои продукты на Kotlin. Кейсы есть на developer.android.com в разделе «Истории разработчиков».

Андроид-приложения с оптимизированным Kotlin-кодом. Источник: developer.android.com
Андроид-приложения с оптимизированным Kotlin-кодом. Источник: developer.android.com

С чего начать

Почитайте у нас статью про Java — это язык, на котором написано множество приложений, библиотек и фреймворков. Перечисленное часто используется в мобильной разработке и в обозримом будущем не будет переводиться на Kotlin.

Скачайте IntelliJ IDEA или Android Studio. Обе программы — это среда разработки под язык Kotlin. IntelliJ IDEA больше подходит для сайтов и десктопных программ, а Android Studio — для разработки мобильных приложений под андроид.

Установите плагин EduTools — это специальный инструмент, разработанный для изучения языка Kotlin. Есть в IntelliJ IDEA и Android Studio. Познакомьтесь с официальным руководством по языку Kotlin. Если возникнут сложности с переводом — посмотрите неофициальную русскоязычную версию.