Задний план

Kotlin — яркий пример самодельного языка. С момента его официального выпуска в начале 2016 года программисты сомневались в этом новом варианте Java, указывая на судьбу Groovy.

Через год на Google I/O в 2017 году Kotlin получил первоклассную поддержку на Android. С тех пор Kotlin почти исключительно ассоциировался с Android и мобильной разработкой.

Несмотря на усилия JetBrains подчеркнуть универсальность языка; ошибочное представление о том, что Kotlin используется только для «создания приложений для Android», все еще остается в силе.

Я, я и Котлин

В 2017 году я работал в стартапе, где полностью написал приложение для Android на Java. Я не участвовал в хайппоезде Kotlin с самого начала. Когда появились новости о поддержке Android, я ослабил бдительность и начал с ней экспериментировать.

Безусловно, лучшая особенность Kotlin — на мой взгляд — это его совместимость с Java. Мне не нужно было ничего переписывать. Мне нужен был новый класс (точнее, класс данных), и я просто написал на Kotlin вместо Java.

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

Рассмотрим этот класс данных в Kotlin: никаких странных ломбокских аннотаций не требуется, но вы получаете удобные equals()/hashCode() с функциями toString() и copy().

data class User(val name: String, val age: Int)

Вскоре я оказался высоко на Kotlin — не только писал на Kotlin, но и преобразовывал в него существующий Java-код. Благодаря множеству функций, таких как неизменяемость, проверка допустимости значений NULL и лямбда-функции, я сэкономил много времени на отладке и начал получать удовольствие от мобильной разработки.

Почему Котлин имеет смысл

Самым большим преимуществом Kotlin является его совместимость с Java, что дает вам:

  • Доступ ко всей экосистеме Java.
  • Легкость принятия. Если вам все еще нравится делать некоторые части на Java, вы все еще можете это сделать.

Это также означает, что кривая обучения Kotlin настолько крутая/плоская, насколько вы хотите. Хотя я настоятельно рекомендую принять неизменность и нулевую безопасность Kotlin. Коды Kotlin делают NullPointerException теоретически делом прошлого. Вы изучаете/работаете с большим фреймворком Java, таким как Spring? Нет проблем, вы можете продолжать делать это, но в Котлине.

Краткий, но мощный код Kotlin идеально подходит для быстрого перемещения и поломки в облаке. Как строго статически типизированный язык с интуитивно понятной поддержкой функционального программирования (смотрим на Java 8) делает Kotlin безопасным выбором для удобства сопровождения, помогая вам достичь элегантной реализации.

Запуск на JVM и использование знакомых систем сборки maven и Gradle означает, что вы можете докеризовать свои чистые или гибридные приложения Kotlin так же, как раньше.

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

Моделирование бизнес-логики на предметно-ориентированном языке (DSL) является хорошей практикой при планировании. Что ж, Kotlin позволяет использовать DSL как код. Многие проекты в экосистеме Kotlin используют это преимущество, чтобы предоставить простой в освоении мощный фреймворк, как в случае с Ktor. DSL для ваших микросервисов — ну, это будущее!

Если вы беспокоитесь о жизнеспособности Kotlin в качестве варианта с вашим облачным провайдером, будьте уверены, поскольку язык заработал себе место в Amazon Web Services, Google Cloud Platform и даже Heroku, если вы хотите попробовать небольшой проект.

Что касается ориентированного на Kubernetes, то, пока его можно докеризовать, его можно преобразовать в Helm chart, ресурс развертывания Kubernetes и т. д. Можно даже составить конфиг Kubernetes в Kotlin DSL, что это за мета?!

Последние мысли

Принятие нового языка сопряжено со своими трудностями, особенно когда речь идет о том, что радикально меняет образ мышления. Будут времена, когда вы будете подвергать сомнению различие между val и var или даже настаивать на переменной, допускающей значение NULL. Не говоря уже о случайной, на мой взгляд, уродливой аннотации @JvmStatic для ваших статических членов. Но с Kotlin вы получаете гибкость и контроль, необходимые для того, чтобы быть конкурентоспособными в облаке, и при этом вам не нужно отказываться от ваших любимых инструментов. Побалуйте себя учебником Kotlin прямо сейчас.