Что такое 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 неважно, из какого языка был сделан байт-код.
Выразительность. Kotlin — это компактный язык без кусков избыточного кода:
Безопасность. Язык Kotlin и его среда программирования — это продукт одной компании, которая постоянно обновляет базу ошибок и помогает разработчикам редактировать код до момента исполнения программы.
На этапе компиляции в Kotlin срабатывает null-защита: Kotlin автоматически проверяет типы данных, отслеживает null-значения и предотвращает появление NullPointerException — распространённой Java-уязвимости.
Недостатки
Низкая скорость. Чаще всего разработчики жалуются на непредсказуемую скорость компиляции. По быстродействию Kotlin уступает Java, поскольку в его основе лежит виртуальная машина JVM — фундаментальная программа, выпущенная специально под язык Java, а не под Kotlin.
Другие нюансы смотрите в твиттере Даниила Попова — андроид-инженера Авито, который изучает Kotlin на практике и рассказывает о свежих технических багах.
Маленькое сообщество и единственный владелец языка. Kotlin всё ещё не такой популярный, как Java. Причина в том, что Kotlin — это не продукт Гугл. Разработчики боятся, что через какое-то время Гугл откажется от него, придумает какую-то свою версию языка или поссорится с JetBrains.
Малочисленное сообщество тормозит развитие Kotlin: под него медленно выпускаются новые библиотеки и обновления, а для решения технических проблем нужно обращаться в баг-трекер — написать в техподдержку JetBrains, добавить свою проблему в очередь задач, ждать и надеяться на её исполнение.
В сентябре 2020 в баг-трекере Kotlin около 40 000 задач, которые закрываются по мере критичности. До некоторых задач очередь доходит через несколько лет, но есть и те, что остаются нерешёнными — в таких условиях разработчики вынуждены искать костыльные решения или переходить на другой язык с развитым сообществом.
Для чего используется
Kotlin используется для создания мобильных приложений, веб-разработки, бэкенда и мультиплатформенного программирования:
Для мультиплатформенного программирования предусмотрены технологии разработки интерфейсов в React, создания серверного HTTP API в Ktor и адаптирования андроид-приложений под операционную систему iOS.
Google, Netflix, Twitter, Uber, Netflix и другие компании переводят некоторые свои продукты на Kotlin. Кейсы есть на developer.android.com в разделе «Истории разработчиков».
С чего начать
Почитайте у нас статью про Java — это язык, на котором написано множество приложений, библиотек и фреймворков. Перечисленное часто используется в мобильной разработке и в обозримом будущем не будет переводиться на Kotlin.
Скачайте IntelliJ IDEA или Android Studio. Обе программы — это среда разработки под язык Kotlin. IntelliJ IDEA больше подходит для сайтов и десктопных программ, а Android Studio — для разработки мобильных приложений под андроид.
Установите плагин EduTools — это специальный инструмент, разработанный для изучения языка Kotlin. Есть в IntelliJ IDEA и Android Studio. Познакомьтесь с официальным руководством по языку Kotlin. Если возникнут сложности с переводом — посмотрите неофициальную русскоязычную версию.
Kotlin. Общий обзор
Начало разработки Kotlin было анонсировано JetBrains в 2011 году. Планировался он как альтернатива языкам Java и Scala, так как тоже выполняется под управлением Java Virtual Machine. И спустя 6 лет компания Google анонсировала начало официальной поддержки Kotlin, как языка для разработки под операционную систему Android.
Почему именно Kotlin? Потому что Kotlin — это язык со свежим взглядом на старые вещи. Он дает нам простые и удобные инструменты, которые позволяют писать лаконичный код.
Какую бы статью про Kotlin я не читала, в них всегда присутствует сравнение того, как один и тот же код выглядит на Java и Kotlin. После чего следует вывод, что на Kotlin все кратко и красиво. По факту так и есть. На своем небольшом опыте работы с обоими языками могу сказать, что как только я начала использовать Kotlin в своих проектах, то у меня сразу отпало желание возвращаться к Java. И это не потому что Java какой-то плохой язык. Просто Kotlin удобнее и к этому быстро привыкаешь.
К тому же Android Studio полностью поддерживает Kotlin, позволяя создавать новые проекты с файлами Kotlin, добавлять файлы Kotlin в существующий проект и даже конвертировать Java в Kotlin. Абсолютно все инструменты, доступные в Android Studio, можно использовать при разработке на Kotlin.
Так как Kotlin полностью совместим с Java, то при работе с Android API можно заметить, что очень часто код выглядит почти также как и соответствующий код на Java. С единственной поправкой — вызовы методов можно комбинировать с особенностями языка Kotlin.
Релизы
На данный момент последняя версия Kotlin вышла 16 ноября 2021 года — 1.6.0. Подробнее.
Версия 1.5.30, дата выхода — 24 августа 2021 года. Подробнее
Версия 1.5.20, дата выхода — 24 июня 2021 года. Подробнее
Версия 1.5.0, дата выхода — 5 мая 2021 года. Подробнее
Версия 1.4.30, дата выхода — 3 февраля 2021 года. Подробнее
Версия 1.4.20, дата выхода — 23 ноября 2020 года. Подробнее
Версия 1.4.0, дата выхода — 17 августа 2020 года. Подробнее
Версия 1.3.70, дата выхода — 3 марта 2020 года. Подробнее.
Статьи
В данном разделе будут ссылки на мои статьи о Kotlin.
Классы и объекты
Библиотеки
Полезные ссылки
Официальная документация — на английском языке.
Learn Kotlin by Example — изучай Kotlin на примерах. Понятно и коротко объясняются основные фичи Котлина с такими же доступными примерами, которые можно здесь же запустить и посмотреть результат выполнения.
Неофициальный сайт с частичным переводом документации на русский язык.
Kotlin blog.
Kotlin Christmas — ресурс, где вы найдете множество интересных статей по Kotlin, библиотеках, фреймворках и лучших практик.
Kotlin Cheat Sheet — шпаргалка для новичков по основному синтаксису.
Concise. Cross‑platform. Fun.
Simplify the development of cross-platform projects with Kotlin Multiplatform. It reduces time spent writing and maintaining the same code for different platforms while retaining the flexibility and benefits of native programming. Kotlin applications will work on different operating systems, such as iOS, Android, macOS, Windows, Linux, watchOS, and others.
Big, friendly and helpful
community
Kotlin has great support and many contributors in its fast-growing global community. Enjoy the benefits of a rich ecosystem with a wide range of community libraries. Help is never far away — consult extensive community resources or ask the Kotlin team directly.
Kotlin Usage Highlights
Gradle
Gradle is introducing Kotlin as a language for writing build scripts
Corda
Corda is an open-source distributed ledger platform, supported by major banks, and built entirely in Kotlin
При подготовке материала использовались источники:
https://thecode.media/kotlin/
https://bimlibik.github.io/posts/kotlin-overview/
https://kotlinlang.org/