Язык программирования kotlin для чего
Что такое Kotlin и с чем его едят: обучающее руководство и сравнение нового языка Android-разработки с Java
Kotlin — это относительно молодой язык от российской компании JetBrains. Появился он в 2011 году. На конференции Google I/O 2017 команда разработчиков Android сообщила, что Kotlin получил официальную поддержку для разработки Android-приложений.
Вот основные возможности и преимущества Kotlin:
Разберём некоторые из них поподробнее.
Null-безопасность
Гибкость и простота синтаксиса
Простые функции и структуры можно объявить одной строкой. Геттеры и сеттеры задаются за кулисами для интероперабельности с Java-кодом. Добавление data-аннотации к классу активирует автоматическую генерацию различных шаблонов.
Рассмотрим следующий пример:
Отличия от Java
Null-безопасность
Как уже говорилось ранее, Kotlin не допускает возникновения NullPointerException, выдавая ошибку компиляции.
Классы данных (Data Classes)
Легко создавать копии классов данных при помощи метода copy() :
Функции-расширения
Kotlin позволяет расширять функциональность существующих классов, не прибегая к наследованию. Это делается при помощи функций-расширений. Для объявления такой функции к её имени нужно приписать префикс в виде расширяемого типа. Вот так можно добавить функцию swap в MutableList :
Ключевое слово this внутри функции-расширения относится к объекту-получателю, который передаётся перед точкой. Теперь мы можем применить функцию swap к любому изменяемому списку:
Умные приведения типов
Вывод типов
В Kotlin необязательно явно указывать тип переменной:
Функциональное программирование
Важно отметить, что Kotlin заточен под функциональное программирование. Он предоставляет большое количество полезных возможностей, например, функции высшего порядка, лямбда-выражения, перегрузку операторов и ленивые вычисление логических выражений. Вот пример работы с коллекциями:
Функции высшего порядка — это функции, которые принимают другие функции в качестве аргументов и возвращают функции. Рассмотрим следующий пример:
Лямбда-выражения, или анонимные функции — это функции, которые не объявляются, а передаются в виде выражений. Вот пример:
Сравнение скорости Java и Kotlin
Первая сборка Kotlin-кода занимает примерно на 15–20% больше времени, чем аналогичный процесс на Java. Однако инкрементная сборка Kotlin даже немного быстрее, чем у Java. Таким образом, языки примерно равны по скорости компиляции.
Будущее Kotlin
Kotlin — это следующий этап развития Java, с которой он полностью совместим. Это делает его отличным инструментом для мобильных и энтерпрайз-приложений. А поскольку Kotlin теперь является официальным языком Android, можно не бояться, что, изучив его, вы останетесь без работы.
29 апреля в 13:00, Онлайн, Беcплатно
В изучении этого языка вам поможет серия статей, описывающая процесс создания простого мобильного приложения Keddit — клиента для популярного ресурса Reddit. Все ее части для вашего удобства мы перечислили в списке ниже.
Вам потребуются следующие библиотеки:
Все исходники доступны на GitHub. Серия состоит из следующих частей:
Если вам удобнее видеоформат, обратите внимание на русскоязычный видеокурс по Kotlin.
Что такое 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 — для разработки мобильных приложений под андроид.
Частые вопросы
Что такое Kotlin?
Какова текущая версия Kotlin?
Свободен ли Kotlin?
Да. Kotlin был, есть и будет свободным. Он разрабатывается под лицензией Apache 2.0, а исходный код доступен на GitHub.
Является ли Kotlin обьектно-ориентированным или функциональным?
Какие преимущества есть у Kotlin по сравнению с Java?
Kotlin более лаконичен. Код на Kotlin примерно на 40% короче. Также Kotlin является типобезопасным. Благодаря null-безопасности приложения менее уязвимы к NullPointerException. В списке других возможностей: умное приведение типов, функции высшего порядка, функции-расширения и лямбда-выражения с получателями. Они позволяют писать выразительный код и поддерживать создание DSL.
Совместим ли Kotlin с Java?
Да, Kotlin на 100% совместим с Java. Возможности вашего существующего кода на Java правильно взаимодействовать с Kotlin уделено много внимания. Вы можете запросто вызывать код на Kotlin из Java и наоборот. Благодаря этому, внедрение Kotlin в проект намного проще и безопасней. Также стоит отметить автоматический конвертер кода из Java в Kotlin. Он встроен в IDE и позволяет упростить переход существующего кода на Kotlin.
Для чего я могу использовать Kotlin?
Kotlin может быть использован для разработки для множества платформ, будь то сервер, клиент, веб или Android. C релизом Kotlin/Native (который на текущий момент в разработке) появится поддержка таких платформ, как встроенные системы, macOS и iOS. Люди используют Kotlin для мобильных и серверных приложений, клиентских приложений с JavaScript или JavaFX, в data science и так далее.
Можно ли использовать Kotlin для разработки для Android?
Можно. Kotlin поддерживается как основной язык для Android, наравне с Java. Сотни приложений для Android уже используют Kotlin, к примеру Basecamp, Pinterest и так далее. Чтобы узнать больше, смотрите статью про разработку для Android.
Можно ли использовать Kotlin для разработки серверных приложений?
Можно. Kotlin на 100% совместим с JVM, а значит вы можете использовать любые фреймворки для Java, такие как Spring Boot, vert.x или JSF. Также есть фреймворки для Kotlin, как например Ktor. Смотрите статью о разработке серверных приложений.
Можно ли использовать Kotlin для веб-разработки?
Да. Кроме использования в бэкэнде, вы также можете использовать Kotlin/JS для клиентской стороны. Kotlin может использовать определения из DefinitelyTyped для статической типизации для популярных библиотек на JavaScript. Также Kotlin совместим с модульными системи, такими как AMD и CommonJS. Смотрите статью о разработке для клиентской стороны.
Можно ли использовать Kotlin для разработки Desktop-приложений?
Да. Вы можете использовать любой UI-фреймворк, например JavaFx, Swing и т.д. В добавок, существуют фреймворки для Kotlin, такие как TornadoFX.
Можно ли использовать Kotlin для нативной разработки?
Kotlin/Native в текущий момент в разработке. Kotlin/Native позволит компилировать исходный код в нативный, который может работать без виртуальной машины. На данный момент готова технологическая демо-версия, но она еще не готова к продакшену и не поддерживает некоторые платформы, которые запланированы к версии 1.0. Смотрите пост, анонсирующий Kotlin/Native.
Какие IDE поддерживают Kotlin?
Kotlin поддерживается всеми крупными IDE для Java, включая IntelliJ IDEA, Android Studio, Eclipse и NetBeans. Также доступен отдельный компилятор, полностью поддерживающий все возможности компиляции и запуска приложений.
Какие инструменты для сборки поддерживают Kotlin?
Во что может компилироваться и транслироваться Kotlin?
В Java-байткод и ES5.1, поддерживаемый модульными системами AMD and CommonJS. Скоро появится возможность компилировать в код для конкретной платформы с LLVM.
Kotlin поддерживает лишь Java 6?
Не только. Вы можете выбирать между байткодом 6 или 8 версии. Чем новее версия Java, тем лучше и эффективнее байткод.
Сложен ли Kotlin?
Kotlin похож на Java, C#, JavaScript, Scala и Groovy. Мы пытались сделать Kotlin простым для изучения, чтобы на него можно было перейти всего за неколько дней. Более детальное изучение языка займёт немного больше времени, но в общем это несложный язык.
Какие компании используют Kotlin?
Kotlin используют множество компаний. Из числа тех, что обьявили об использовании языка: Square, Pinterest, Basecamp и Corda.
Кто разрабатывает Kotlin?
Где можно узнать больше про язык?
Лучше всего начать прямо на этом сайте или на https://kotlinlang.org. На kotlinlang.org можно скачать компилятор или попробовать его онлайн Доступны справочник и туториалы.
Существуют ли книги про Kotlin?
Список книг есть здесь. Из самых популярных: Kotlin в Действии, написанная членами команды разработчиков Дмитрием Джемеровым и Светланой Исаковой, а также Kotlin for Android Developers.
Есть ли онлайн-курсы для изучения Kotlin?
Pluralsight Kotlin Course от Кевина Джонса, курс O’Reilly от Хади Харири и курс Udemy от Петра Соммерхоффа.
Также есть множество записей Kotlin talks, которые можно найти на YouTube и Vimeo.
Есть ли сообщество у Kotlin?
Да. У Kotlin очень отзывчивое сообщество на форумах Kotlin, StackOverflow и, наиболее активно, Kotlin Slack (примерно 7000 участников в мае 2017).
Проходят ли какие-то мероприятия по Kotlin?
Проходят ли конференции, посвящённые Kotlin?
Есть ли Kotlin в социальных сетях?
Наиболее активный аккаунт на Twitter. Также есть группа Google+.
Есть ли ещё какие-либо онлайн-ресурсы по Kotlin?
В сообществе Kotlin вы можете найти множество ресурсов, включая Дайджесты Kotlin, организуемые сообществом, новостную рассылку, подкаст и так далее.
Зачем учить язык Kotlin?
Kotlin на текущий момент однозначно находится на пике популярности и может принести немало пользы в тестировании. Но не все так просто, в чем вы можете убедиться из этой статьи.
Откуда взялся этот ваш Kotlin?
Язык начал набирать популярность после того, как на конференции JavaOne 2015 Hans Dockter, CEO of Gradle, заявил, что Котлин получает официальную поддержку для написания Gradle билд-скриптов. Тогда он все еще был в бете, но новость всколыхнула всех неравнодушных. Волна хайпа начала подниматься уже в тот момент. На пике популярности язык оказался в мае этого года на конференции Google I/O, где было объявлено о том, что Котлин наряду с Java становится официальным языком разработки под платформу Android. Сразу же после этого весь Twitter был в постах о новом языке, появилась куча блог-постов с признаниями в любви ему. Представители JetBrains в различных источниках стали заявлять, что Kotlin — это будущее разработки на JVM.
В целом если смотреть на ситуацию здраво, то причины хайпа вполне понятны. Джава развивается слишком медленно. Java 8 появилась аж в 2014 году, Java 9 на момент публикации уже вышла, но в самом языке слишком мало новых фишек. Более того, с Java 9 у многих все в момент перестало работать. И тут людям дают язык, наполненный фичами, часть из которых появится только в 10-ке.
Чем этот ваш Kotlin круче?
Авторы языка признаются, что не пытались придумать что-то кардинально новое. Язык специально задумывался максимально прагматичным и удобным в использовании для разработчиков. Вот небольшой список фишек, которые в нём есть:
C более полным списком можно ознакомиться по ссылке.
Как оно помогает жить?
Null safety — это selling point Kotlin. Проверка на nullable type осуществляется еще во время компиляции.
Это очень удобно и помогает избежать многих багов.
Extension functions — это фича, которой разработчикам часто очень не хватает в Java. Ниже пример, как с помощью всего пары функций можно улучшить существующий Selenium API
По итогу можно писать тесты в таком формате:
String template — позволяет форматировать строки, что удобно использовать в тестах.
Как видите, SQL запрос не содержит уродливых переносов строк и конкатенаций. Его просто читать, копировать и редактировать.
Reified type — фишка, которая позволяет сделать ваш код очень красивым и лаконичным. Например, с применением библиотеки Apache DBUtils код получается таким:
и получить следующий код:
В этом случае тип, в который конвертируется результат запроса, будет браться из типа объявленной переменной. Это гораздо удобнее, чем Java Generics.
Совместимость с Java
Из официальной документации известно, что Kotlin разрабатывался с оглядкой на максимальную совместимость с Java. Java Interop подается под соусом, что мы можем взять любой код, написанный раньше, и вызвать в Kotlin. Либо же обратно — няшный Kotlin-код вызвать в унылой джавке.
Так ли это на самом деле? Давайте разбираться.
Kotlin vs Rest Assured
Посмотрим, как библиотека — Rest Assured будет работать в Kotlin.
Так так, when зарезервированное слово. Обойти такое ограничение можно, обернув его в такие вот интересные кавычки, которые сложно с первого раза найти на клавиатуре.
Kotlin + Selenide
Для написания UI тестов удобно использовать Selenide. Давайте посмотрим на совместимость.
Kotlin + Hamcrest (AssertJ)
Все мы при написании тестов активно используем такие библиотеки, как Hamcrest и AssertJ. Что с совместимостью?
Здесь нас тоже ждут ограничения.
Все через костыли
Когда начинаешь натыкаться на такие ограничения, то напрашивается вполне логичная мысль.
Чиним Kotlin и Rest Assured
На самом деле все предыдущие примеры можно в какой-то степени починить. Смотрим на пример с Rest Assured:
Чиним Kotlin vs Selenide
Чиним Kotlin + Hamcrest (AssertJ)
Увы, по этому пункту нас ждет разочарование. Если Hamcrest еще как-то совместим с Kotlin, то AssertJ починить не получится из-за несовместимости в Generic types. Здесь нам нужно просто взять и заменить библиотеку. Благо, на GitHub уже есть энтузиасты, которые написали порт — assertk.
Следует отметить, что assertk обладает более удобным API и полностью совместима с Kotlin.
Вроде бы все наши проблемы мы «подлечили», ну или хотя бы подставили костыли. Естественно, вы можете не натолкнуться на трудности, приведенные выше, если на старте проекта будете выбирать библиотеки и технологии, совместимые с Kotlin.
Чем же все-таки хорош Kotlin?
В дополнение к языковым фичам и синтаксическим конструкциям, можно отметить, что язык очень лаконичный и позволяет строить удобные DSL. В подтверждение ниже показан пример теста, написанного с применением библиотеки Kirk, которая призвана заменить Selenide для Kotlin.
Пример четко демонстрирует, какого формата DSL можно писать. По сути — это BDD, только в коде, со всеми плюшками в виде строгой типизации, автодополнениями и поддержкой рефакторинга.
Что имеем в итоге?
Kotlin — очень приятный язык. Все, что уже реализовано у конкурентов Java, в нем есть. Конвертировать существующий код на Java в Kotlin немного проблематично. Нет еще пока полной совместимости со всеми самыми популярными Java-фреймворками и библиотеками. Выбирать Kotlin или хейтить его и идти учить JS — это Ваше решение. Но вы просто можете перейти по ссылочке на свежий репорт от Rebel Labs о состоянии Java-экосистемы, в котором Kotlin назван самым любимым языком c коэффициентом удовлетворенности 9.1 из 10.
Язык программирования Kotlin: от бэкенд до мобильного софта
Язык программирования, названный в честь острова в Финском заливе, быстро завоевал популярность. Окончательно он укрепил свои позиции после презентации Google I/O 2019. Востребованность Kotlin при разработке бэкенд-приложений и софта на платформе Android невозможно отрицать. Если вы решили изучить новый язык, но сомневаетесь с выбором, то вот пара доводов в пользу Kotlin.
Чем Kotlin понравился профессионалам
Молодой язык программирования, представленный российской компанией JetBrains в 2011 году, неспроста был признан Google приоритетным инструментом в мае 2019-го. Во-первых, код на Kotlin, если сравнивать с Java, занимает меньшее число строк. Во-вторых, язык напрямую поддерживается «корпорацией добра» — уже вышло несколько стабильных версий. В-третьих, Kotlin настолько лаконичен, что его код читается как текст на английском языке. Наконец, если у специалиста есть знания по Java-разработке, можно использовать в процессе все существующие фреймворки и библиотеки Java.
Курс Kotlin Backend Developer
Освоить перспективный инструмент программирования поможет онлайн-курс Kotlin Backend Developer, подготовленный образовательной платформой OTUS. Он рассчитан на 5 месяцев обучения — это по 4 академических часа в неделю. Начало занятий запланировано на 23 декабря. Вы освоите основы Kotlin и Kotlin Multiplatform, принципы разработки бэкенда, научитесь взаимодействовать с фреймворками, погрузитесь во все аспекты создания проекта вплоть до мониторинга готового продукта. Вы сможете стать слушателем программы, если имеете навыки работы на Linux и опыт программирования на любом языке ООП. Чтобы записаться на курс, нужно успешно выполнить вступительный тест.
Кстати, советуем посетить бесплатный вебинар, который поможет понять, как организовано обучение в OTUS. Он будет посвящён созданию современного микросервиса на Kotlin. Демоурок состоится 17 декабря в 19:00. Для получения доступа к занятию потребуется пройти тестирование. На вебинаре под руководством Вячеслава Лапина, профессионала с 12-летним опытом в IT, вы рассмотрите методологию компании Heroku, пионера в облачных решениях.
Курс Android Developer на Kotlin
Этот онлайн-курс рассчитан на профессиональное создание Android-приложений. Программа включает в себя углублённое изучение Android Architecture Components, тестирование мобильных утилит, RxJava, Dagger 2, многопоточности в Android, Koin, Material Design. Обучение начнётся 24 декабря и продлится 5 месяцев. Если у вас есть опыт в программировании, проверьте свой уровень подготовки до записи на курс, пройдя 15-минутный тест.
Перед обучением стоит посетить открытый урок 11 декабря в 20:00, посвящённый теме Unit-тестирования. На бесплатном вебинаре расскажут о модульной проверке и технологии TDD, научат тестировать компоненты, классы и методы в Java. Однако и данное мероприятие без успешного прохождения проверки знаний не посетить.
Как организован процесс обучения
Вебинары проходят в мессенджере Slack — там же взаимодействуют преподаватели и сокурсники. Раз в две недели вам придётся делать домашнее задание, рассчитанное на 3-4 часа свободного времени. При выполнении задач слушатели всегда могут получить обратную связь от менторов. Все лекции сохраняются в личном кабинете и доступны даже после обучения. Финальный месяц курса посвящён выполнению индивидуального проекта, который станет достойной частью вашего портфолио. Самые успешные выпускники получат приглашение на собеседование в партнёрские компании — OZON, «МТС», X5 Retail Group и многие другие.