На конференции Google I/O 2017 компания Google объявила об официальной поддержке языка программирования Kotlin. Во многом это связано с тем, что Kotlin — это современный, удобный язык с огромной выразительной силой, поддержкой функционального программирования, лямбда-функций, мощным выводом типов и аналитикой, а также весьма эргономичным синтаксическим сахаром.
Язык находится в разработке уже несколько лет и обладает совместимостью с существующим кодом на Java, поэтому вы можете вызывать код Java из Kotlin и наоборот. Он имеет отличную поддержку инструментов благодаря плагинам для Android Studio и Gradle, а также интеграцию с отладчиком.
Android SDK Twilio Chat был написан на Java с использованием JNI-моста к библиотекам на C, предоставляемым Twilio, чтобы создать удобный пакет с естественным внешним видом и поведением.
Демонстрационное приложение Chat Demo также было написано на Java, из-за чего его было сложно изучать, поскольку все детали использования Chat SDK скрывались за огромным количеством шаблонного кода Java.
Поэтому мы поставили цель исправить это и сделать демо-приложение более прозрачным, чтобы пользователи могли сосредоточиться на примерах использования SDK, а не пытаться распутывать код на Java.
Долгосрочная цель — перевести код SDK на Kotlin, чтобы уменьшить объем шаблонного кода и улучшить поддерживаемость.
Сначала мы установили новый Android Studio 3.0 — он выглядит намного чище, чем старая серия 2.0, а также имеет полнофункциональную поддержку Kotlin.
Затем откройте в нем проект на Java и перейдите к `Tools > Kotlin > Configure Kotlin`
в командной строке проекта. Это добавит директивы для включения поддержки Kotlin в проекте и синхронизирует его с этими изменениями. Теперь мы можем писать и компилировать код на Kotlin.
Теперь самое интересное. Откройте любой файл Java в проекте и перейдите к `Code > Convert Java File to Kotlin File`
. Это автоматически преобразует код Java в Kotlin.
Процесс конвертации старается максимально сохранить исходную структуру Java, используя при этом несколько идиоматичных конструкций Kotlin, чтобы сделать код чище.
Результат работы плагина можно сразу скомпилировать, поэтому вы можете тестировать конвертацию файл за файлом.
**Рефакторинг кода Java под соглашения Kotlin**
Хотя прямая автоматическая трансляция проста, в Kotlin есть несколько идиоматичных подходов к написанию кода, которые помогут сделать его более чистым.
**Автоматически сгенерированные методы доступа к элементам UI**
Давайте рассмотрим этот код в качестве примера. Синтетические свойства, сгенерированные Kotlin, позволяют вам получать доступ к элементам, определенным в XML, по их ID, как если бы они были обычными константами в вашем коде. Примеры использования смотрите здесь и здесь.
**apply() — это здорово!**
apply() — это метод расширения, доступный для всех классов. Он просто захватывает объект и позволяет вам выполнить блок кода в контексте этого объекта, поэтому следующий код на Java:
Превращается в этот блок кода:
Это намного удобнее, когда вам нужно вызвать несколько методов для временного объекта, как показано выше.
**Anko — это потрясающе**
Вы можете прочитать об Anko здесь и здесь, но суть Anko заключается в предоставлении набора хелперов, которые делают жизнь разработчика на Kotlin невероятно приятной, больше, чем вы могли себе представить.
Anko весьма полезен для программного создания чистых представлений без XML для вашего приложения. Он особенно хорош при создании диалогов `Alert`
Вы можете взглянуть на наш старый код на Java и связанный с ним XML-файл. Anko вообще не потребовался XML, а код получился супер-чистым!
Переходы между активностями? Просто используйте Anko, чтобы упростить их вместе с вызовом намерений (intent) для служб:
Это создает намерение (intent) и задает некоторые дополнительные параметры, необходимые для запуска этой активности.
Или для запуска службы:
**Обратные вызовы слушателей (Listener callbacks)**
Обратные вызовы слушателей работают лучше всего, если они передаются в виде лямбд в последнем параметре метода. Вы можете немного изменить API, используя методы расширения или объекты-обертки, если вы их используете.
Вот несколько хелперов, которые делают установку слушателей в методах SDK гораздо более приятным занятием.
Подождите, что? Да, вы также можете заниматься веб-программированием на Kotlin. Это тема для возможного будущего поста, но посмотрите, что JetBrains с этим сделал — бэкенд на Kotlin и фронтенд на React, полностью созданные на одном языке, прелесть!
В целом, код на Kotlin писать намного проще, и его гораздо приятнее читать впоследствии, так что попробуйте и поделитесь своим опытом в комментариях!
Дайте знать, для чего вы используете Kotlin, свяжитесь со мной через:
Email: berkus@twilio.com
GitHub: berkus