Преимущества Kotlin и как стать Junior Kotlin Developer

Герман Сидоренко – Lead Developer в компании Exadel, эксперт в языках программирования Java и Kotlin.

В этой статье Герман освещает основные преимущества Kotlin для разработчиков, а также рассказывает, что необходимо знать, чтобы стать Junior Kotlin Developer. Итак, слово профессионалу.

Kotlin – это относительно молодой язык программирования, разработанный компанией Jetbrains.

Впервые он представлен в 2011 году, а в феврале 2016 выпущена версия 1.0 stable. Это язык с открытым исходным кодом. То, что Kotlin используется исключительно в мобильной разработке, – миф. Kotlin можно выбрать как для настольных приложений, так и для разработки backend для enterprise приложений.

К примеру, автор данной статьи спроектировал два backend приложения, где языком платформы был исключительно Kotlin. Kotlin на 100% совместим с популярным фреймворком Spring/Boot. Также Kotlin, кроме JVM, умеет компилироваться для JS и Native окружений.

Какие преимущества Kotlin дает разработчику

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

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

Отдельно можно выделить следующие преимущества:

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

Совместимость. Kotlin отлично совместим с Java и ее библиотеками. Вы можете спокойно вызывать Java код из своего проекта на Kotlin и наоборот. А это означает, что все те наработки, которыми обросла Java за почти 30 лет, вам доступны. Начиная от библиотек шифрования, работы в сети или с файлами и заканчивая Data Science.

Безопасность. В Kotlin отсутствует «the billion dollar mistake». Точнее, даже не отсутствует, а стала осознанной, то есть программист всегда будет знать, где эта ошибка возможна и допустима.

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


Что необходимо, чтобы стать Junior Kotlin Developer

В этой статье Kotlin рассматривается с точки зрения backend программиста, хотя Kotlin не ограничивается backend. На нем сейчас пишут и мобильные приложения – это, наверное, самое большое применение языка – и настольные приложения, и даже где-то был замечен репозиторий с IoT проектом на Kotlin.

Если у вас есть опыт программирования, особенно Java или Scala, то выучить Kotlin до уровня junior или даже middle вы сможете за пару дней. Создатели Kotlin утверждают, что в основном синтаксис был взят из Java, и мой опыт это подтверждает. Иногда не сразу понятно, на каком языке написан тот или иной кусок кода, например на StackOverflow.

Но есть и серьезные отличия, которые поначалу могут сильно тормозить разработку. Дело в том, что в Kotlin стиль написания кода смещен от ООП в сторону функциональной парадигмы, функциональные конструкции в нем сделаны настолько удобно, что всё это подталкивает к тому, чтобы использовался именно функциональный подход.

И таких нюансов в Kotlin после Java много. Но по прошествии некоторого времени всё нормализуется, а если придется опять писать на Java, то вам будет не хватать той гибкости и удобства, которые предоставляет Kotlin.

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

Синтаксис языка. Это справедливо для любого языка программирования. Знать нужно, как оформляется код в Kotlin, ключевые слова и операторы, конструкции языка, управляющие инструкции: операторы ветвления, перехода и т.д.

Типы данных. Также справедливо для любого языка. Необходимо знать, какие типы данных существуют в Kotlin: числа, строки, списочные типы/коллекции, словари.

На последние два стоит обратить особое внимание, так как по ним очень любят задавать вопросы на собеседованиях да и встречаться в работе вы с ними будете не реже, чем с остальными типами данных.

Также стоит обратить внимание, что в Kotlin отсутствуют примитивные типы, точнее они есть, но компилятор сам будет решать, когда использовать объектный тип, а когда примитивный. Соответственно вопросы по boxing/unboxing в Kotlin не актуальны.

ООП. Всё же Kotlin – объектно-ориентированный язык, поэтому обязательно нужно знать основы ООП: интерфейсы, классы, свойства, поля, методы, геттеры/сеттеры, модификаторы доступа, пакеты.

Вам нужно понимать разницу между классом и объектом класса, классы данных, вложенные, запечатанные классы, перечисления.

Паттерны проектирования и то, какие из них поддерживаются на уровне языка. Есть в Kotlin хорошая особенность: некоторые паттерны встроены, можно сказать, в сам язык и не надо писать свою реализацию, а только знать, где и как их применить.

Делегирование или декоратор, прокси/ленивая инициализация, синглтон, фабричный метод, стратегия. Знать остальные паттерны также необходимо.

Функциональное программирование. Речь о функциях, лямбдах. Желательно знать часто используемые встроенные функции, например: map, let, apply, forEach и т.д. Они обычно приводятся в книгах по Kotlin.

Kotlin vs. Java. Функционал, который отличает Kotlin от Java, – раздел довольно специфичный.

Если вы изучаете Kotlin после Java, то желательно знать, в чем отличие Java от Kotlin, потому что в работе, скорее всего, вам придется подавлять желание сделать “как в Java”, но со знанием отличий этих двух языков будет проще.

Вопросы на эту тему часто задают на собеседованиях, если кандидат претендует на позицию более опытного, чем junior, разработчика и у него в резюме указано знание Java.

Обобщения. Довольно спорный вопрос, нужно ли новичку знать обобщения. Обобщения или Generics – одна из самых сложных тем не только в Kotlin, но и в других языках программирования и особенно в JVM языках.

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

Разобравшись с этим вопросом, использовать массивы, списки, сеты и прочее, а также писать свои классы на основе обобщений, будет легче.

Источники

Литература

D.Jemerov, S.Isakova. Kotlin in Action – лучшая книга по Kotlin на сегодняшний день. Она есть как на английском, так и на русском языках. Объясняется все доступно, не перегружена сравнением с Java, что очень часто бывает в других источниках.

Другие полезные ссылки:

Сайт по Паттернам/шаблонам проектирования

Источник

Посмотрите еще

Комментировать