Оглавление
Совсем недавно к нам зашел проект, основной фишкой которого была возможность расплачиваться в барах и ресторанах с помощью NFC браслета и мобильного Android девайса. Интересный кейс, но самым главным оказалось то, что перед нами поставили задачу написать приложение на Kotlin. До этого момента мы были преданы языку программирования Java. Но, как говорится, challenge accepted! Поставленная задача была выполнена, и теперь наша мобильная команда полностью переключилась на Kotlin. А сейчас мы расскажем почему.
Почему Kotlin?
Вот выдержка из официальной документации:
Kotlin fixes a series of issues that Java suffers from:
- Null references are controlled by the type system.
- No raw types
- Arrays in Kotlin are invariant
- Kotlin has proper function types, as opposed to Java’s SAM-conversions
- Use-site variance without wildcards
- Kotlin does not have checked exceptions
А вот вам список того, что есть в Kotlin, но отсутствует в Java.
- Lambda expressions + Inline functions = performant custom control structures
- Extension functions
- Null-safety
- Smart casts
- String templates
- Properties
- Range expressions
- Operator overloading
- Companion objects
- Data classes
Если говорить простым языком, то писать на Kotlin приятнее, чем на Java. Он имеет целый ряд замечательных особенностей, которые, помимо прочего, сокращают объем кода в разы. А это ускоряет разработку и в теории уменьшает пространство для возможных багов.
На что обратить внимание
Безусловно, и в Kotlin можно найти подводные камни. Например:
- Checked exceptions
- Primitive types that are not classes
- Static members
- Non-private fields
- Wildcard-types
- Ternary-operator a ? b : c
О чем это говорит? О том, что некоторые привычные вам моменты придется пересмотреть и использовать другие подходы в реализации той или иной логики. Также стоит учитывать, что комьюнити у Kotlin значительно меньше, чем у Java. По крайней мере — пока. То есть искать ответы на вопросы будет сложнее. Не забудем и о том, что многие библиотеки написаны на Java, что тоже добавляет некоторые особенности в работе с ними на Kotlin.
Теперь о пороге вхождения. Учитывая, что до этого проекта наша команда вообще не имела опыта работы с Kotlin, мы можем смело заявить: путь с Java на Kotlin сможет осилить любой разработчик. Разумеется, если он знает Java.
У нас все прошло совершенно безболезненно. Прежде чем начать кодить, каждый участник команды ознакомился с языком, используя разные источники. Кто-то читал книги, кто-то — статьи, а кто-то обращался напрямую к главному источнику — официальной документации.
Самое главное, что за несколько дней мы получили достаточно информации для начала работы с кодом. Периодически мы, конечно, поглядывали в те самые источники информации, но они уже выступали в роли подстраховки.
Здесь стоило бы описать шаги миграции с Java на Kotlin, но их, в принципе, не было. Кодить на Kotlin для тех, кто знает Java — дело простое и интуитивно понятное. Первые несколько дней мы пребывали в беспрерывном восторге от того, насколько приятно, быстро и естественно пишется код. А далее мы уже просто не смогли найти какие-либо причины для возвращения к Java.
Примеры кода
Перед вами сравнение одного и того же кода на Java и Kotlin:
Создание класса
Java:
Kotlin:
И это все, что вам нужно написать. Ведь все getters, setters, equals(), hashcode(),toString() and copy() методы вы получаете автоматически. Естественно, при необходимости их можно переопределить.
Работа с Collections
Java:
Kotlin:
И это лишь пара примеров того, насколько лаконичным и красивым может быть код, если вы используете Kotlin. Так что король умер. Да здравствует король!
Вывод
Если вы Android разработчик, желающий найти ответ на вопрос: стоит ли переключаться с Java на Kotlin, остановитесь прямо здесь. Ведь Kotlin это живое воплощение всего, о чем мечтали Android разработчики:
- Высокая скорость разработки
- Null-safety по дефолту
- Низкий порог вхождения
Кроме того, Kotlin полностью совместим со своим предшественником. Конечно, некоторые возразят, сказав, что Kotlin имеет проблемы с производительностью. Это правда. Тем не менее, Kotlin находится в разработке всего год. И мы уверены, что все уязвимости будут исправлены довольно быстро.
По всем вопросам обращайтесь к нам напрямую. Или пишите комментарии.