Kotlin multiplatform

Дата публикации: 03 июля 2023
Среднее время чтения: 2 минут(ы)

Kotlin Multiplatform (КМП) — технология, которая переосмысливает понятие разработки программного обеспечения для множества платформ. В эпоху, когда цифровые технологии стирают границы между устройствами и платформами, появляется потребность в инструментах, которые позволяют эффективно реализовывать программные продукты, доступные на всех устройствах.

Kotlin Multiplatform — это набор инструментов и библиотек, разработанных командой JetBrains, который позволяет разработчикам писать на языке Kotlin и компилировать его в нативный байт-код для Android, iOS, Web и сервера на JVM.

Основная идея — сократить объем повторяющегося кода, позволяя разработчикам написать бизнес-логику только один раз в общем модуле, а затем применять ее на всех поддерживаемых платформах. Кроме того, КМП обеспечивает гибкость, позволяя разработчикам писать платформо-зависимый код в случае, если это необходимо для доступа к специфичным API.

История развития

Стоит лишь вспомнить короткую, но динамичную историю развития, чтобы осознать, насколько велики были амбиции команды JetBrains с самого начала. Давайте отправимся в недалекое прошлое, чтобы понять, как Multiplatform стал тем, что он есть сегодня.

Ранние этапы

Kotlin сам по себе был впервые представлен публике в 2011 году командой JetBrains, знаменитой своими разработками в области инструментов для разработчиков. С самого начала он зарекомендовал себя как простой в изучении и использовании язык, воплощающий лучшие практики и инновации из других языков программирования. В 2017 году Google объявила его официальным языком для создания Android-приложений, что было значительным шагом в его развитии.

Однако, идея Multiplatform начала зарождаться только в 2017 году с выпуском Kotlin 1.2. Это был первый релиз, в котором была представлена возможность разделения кода между JVM и JavaScript.

Обновления и улучшения

С тех пор КМП продолжал развиваться и улучшаться. В версии 1.2, JetBrains внедрили экспериментальную поддержку мультиплатформенной разработки, что позволило разработчикам начать применять общий код для JVM и JavaScript.

Позже, с релизом 1.3 в октябре 2018 года, в экосистему была добавлена поддержка нативных платформ, добавив к JVM и JavaScript Android и iOS.

Самой важной вехой в развитии, безусловно, стала поддержка iOS, которая начала появляться с версии Kotlin/Native. Это позволило значительно расширить его сферу применения, сделав его настоящим мультиплатформенным языком программирования.

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

decor decor

Основные преимущества

Понимание преимуществ ключевое для осознания его значимости в современной мультиплатформенной разработке. В своей основе в KMP заложены принципы, позволяющие максимально эффективно затрагивать ресурсы и распределять время разработки, обеспечивая высокую производительность и надежность продуктов. Давайте рассмотрим ключевые преимущества.

  • Совместимость с Java

    Kotlin является полностью совместимым с Java, что позволяет разработчикам безболезненно интегрировать КМП в существующие проекты на Java или Android.

  • Меньше дублирования кода

    Она сокращает объем повторяющегося материала, позволяя разработчикам написать общую бизнес-логику только один раз и использовать ее на всех поддерживаемых платформах.

  • Поддержка множества платформ

    Она поддерживает Android, iOS, JavaScript, JVM и даже native для создания настольных приложений и встраиваемых систем.

  • Эффективность

    Поскольку KMP компилирует написанное в нативный байт-код для каждой платформы, приложения, разработанные с ее использованием, обладают высокой производительностью и эффективностью.

  • Поддержка JetBrains

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

  • Сообщество и экосистема

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

Это далеко не полный список преимуществ. Многие из этих преимуществ обретают наиболее явное проявление в практическом использовании, когда вы начинаете создавать свои собственные мультиплатформенные проекты.

Как работает
Принцип работы впечатляет своей элегантностью и гибкостью.

  • Модули и общий код
    Ключевой концепцией являются модули. Вы создаете общий модуль, который будет содержать код, доступный для всех платформ. Он может включать в себя бизнес-логику, модели данных и любые другие компоненты, которые не зависят от конкретной платформы.
  • Платформенно-специфичный
    Хотя основная идея – это возможность переиспользования кода, KMP также предоставляет разработчикам возможность при необходимости писать платформенно-специфичный. Это может быть полезно, например, при работе со специфическими для платформы API.
  • Совмещение воедино
    Наконец, при компиляции, код из общего модуля и платформенно-специфичных модулей объединяется вместе для создания исполняемого файла для каждой платформы.

Написанное на Kotlin компилируется в нативный байт-код для каждой платформы.

Кейсы использования

Применение Multiplatform в реальных проектах дает наилучшее представление о его возможностях. Это позволяет увидеть, как KMP помогает разработчикам справляться с проблемами мультиплатформенности, сокращая дублирование и обеспечивая высокую производительность. Давайте рассмотрим несколько примеров ее успешного использования.

JetBrains Space

Space — это интегрированная командная среда, разработанная JetBrains. Оно предоставляет набор инструментов для разработки, включая Git-репозитории, систему отслеживания ошибок, непрерывную интеграцию/развертывание (CI/CD), и многие другие функции.

Применение Multiplatform позволило команде Space значительно сократить количество дублей, переиспользовав большую часть бизнес-логики на всех платформах.

Netflix

Netflix также применяет эту технологию Они используют KMP для создания общих библиотек, которые могут быть использованы везде, где работает Netflix.

VMWare

VMWare использовал ее в своем проекте Octant. Октант – это веб-сервис, которое помогает разработчикам понять, как работает их приложение Kubernetes. Технология помог команде Octant создать плагинную систему, которая работает везде.

alt

Сравнение с другими мультиплатформенными инструментами

Выбор инструментов для разработки — важное решение, которое может существенно повлиять на производительность, масштабируемость и стабильность вашего продукта. Для обеспечения полноты картины, в этом разделе мы сравним Kotlin Multiplatform с другими популярными мультиплатформенными инструментами — Flutter, React Native и Xamarin.

Flutter
Flutter — это фреймворк для пользовательских интерфейсов от Google, который позволяет создавать приложения для Android, iOS, web и desktop из одной базы кода.

  • Язык: Flutter использует Dart, в то время как KMP использует Kotlin.
  • Подход к UI: Во Flutter UI и бизнес-логика тесно связаны и написаны на Dart, в то время как в KMP бизнес-логика написана на собственном языке, а для UI используется нативный подход каждой платформы.
  • Эффективность: Приложения на KMP имеют производительность, сравнимую с нативными, так как Kotlin компилируется в нативный код. Flutter также имеет хорошую производительность, но все же работает через C++ движок.

React Native
React Native — это фреймворк от Facebook для создания приложений для Android и iOS с использованием JavaScript и React.

  • Язык: React Native использует JavaScript, в то время как обсуждаемая нами мультиплатформа использует Kotlin.
  • Подход к UI: React Native использует JavaScript для создания UI и бизнес-логики, с использованием нативных компонентов для отображения UI. В KMP бизнес-логика написана на Kotlin, а для UI используется нативный подход каждой платформы.
  • Эффективность: Multiplatform имеет преимущество в производительности, так как компилируется в нативный код. React Native работает через JavaScript bridge, что может привести к меньшей производительности в сравнении с нативными.

Xamarin
Xamarin — это фреймворк от Microsoft для создания мобильных программ на C#.

  • Язык: Xamarin использует C# против Kotlin.
  • Подход к UI: Xamarin позволяет создавать UI на C# или делать выбор в пользу нативных инструментов для создания UI. KMP использует Kotlin для написания бизнес-логики.
  • Эффективность: оба компилируются в нативный код, обеспечивая высокую производительность.

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

Обзор поддержки различных платформ

Kotlin Multiplatform предоставляет богатые возможности для разработки. Однако, чтобы принять взвешенное решение о его использовании, необходимо иметь ясное представление о поддержке каждой из них.

Android и iOS

Разработка для Android и iOS является ключевым фокусом КМП. Здесь она позволяет максимально использовать преимущества языка в сфере бизнес-логики и архитектуры приложения.

JVM и JavaScript

Этот язык программирования изначально разрабатывался как альтернатива Java на JVM, поэтому поддержка JVM здесь на высоком уровне. Для разработки на стороне сервера, KMP может стать привлекательным выбором.Что касается JavaScript, то с помощью мультиплатформы можно создавать полноценные front-end приложения, использовать общую бизнес-логику с мобильными и даже разрабатывать мультиплатформенные библиотеки.

Нативные приложения (Linux, Windows, macOS)

Kotlin/Native — это технология, позволяющая компилировать его в нативный бинарный код, который может работать без JVM. Это открывает двери для создания нативных приложений для Linux, Windows и macOS и т.д.

WebAssembly

WebAssembly (Wasm) — это бинарный формат для исполняемого кода в веб-браузерах. Это новый и волнующий тренд в веб-разработке, который может значительно улучшить производительность веб-продуктов. Несмотря на то, что поддержка Wasm в KMP пока находится в стадии эксперимента, будущее этой технологии выглядит очень многообещающим.

alt

Остались вопросы?

Оставьте контактные данные и мы свяжемся с вами в ближайшее время

    Всегда на связи
    Офисы
    Москва
    125167, Ленинградский проспект, 37, БЦ Аэродом
    Смотреть на карте
    Калининград
    236006, ул. Театральная 35, БЦ Морской
    Смотреть на карте