Kotlin Multiplatform и Flutter: решения для кроссплатформенной разработки
В стремительно развивающемся мире технологий разработчики постоянно ищут эффективные платформы и инструменты, которые помогут им создавать качественные приложения. Однако при выборе из доступных вариантов важно не зацикливаться на поиске так называемого лучшего решения, поскольку такой подход не всегда приводит к наиболее подходящему выбору.
Каждый проект уникален и предъявляет особые требования. Эта статья поможет вам разобраться в возможных вариантах и лучше понять, какая технология — Kotlin Multiplatform или Flutter — лучше подходит для вашего проекта, чтобы вы могли принимать обоснованные решения.
Кроссплатформенная разработка: единый подход к созданию современных приложений
Кроссплатформенная разработка позволяет создавать приложения, работающие на нескольких платформах на основе единой кодовой базы, избавляя от необходимости заново реализовывать одни и те же функции для каждой системы. Хотя такой подход часто ассоциируется с разработкой мобильных приложений — для Android и iOS — его возможности гораздо шире: он охватывает веб, настольные компьютеры и даже серверные среды.
Основная идея заключается в максимальном повторном использовании кода при сохранении возможности реализовывать специфичные для платформы функции, когда это необходимо. Такой подход упрощает процесс разработки и сокращает усилия на сопровождение. Команды могут ускорить циклы разработки, снизить затраты и обеспечить согласованность между платформами, поэтому кроссплатформенная разработка — разумный выбор в современном мире приложений, где используется всё больше разных платформ.
Kotlin Multiplatform и Flutter: упрощение разработки для разных платформ
Flutter и Kotlin Multiplatform — две популярные кроссплатформенные технологии, упрощающие разработку приложений для разных платформ.
Flutter
Flutter — это платформа с открытым исходным кодом для создания нативно компилируемых многоплатформенных приложений на основе единой кодовой базы. Она позволяет создавать насыщенные возможности для пользователей на Android, iOS, в вебе, на настольных компьютерах (Windows, macOS, Linux) и во встроенных системах — используя общий код приложения. Приложения Flutter пишутся на языке программирования Dart. Flutter поддерживается и используется Google.
Впервые представленная в 2014 году под названием Sky, Flutter 1.0 была официально анонсирована в декабре 2018 года на мероприятии Flutter Live.
Сообщество разработчиков Flutter велико и отличается высокой активностью, обеспечивая постоянное развитие и поддержку. Flutter позволяет использовать общие пакеты, созданные разработчиками в экосистемах Flutter и Dart.
Kotlin Multiplatform
Kotlin Multiplatform (KMP) — это технология с открытым исходным кодом, созданная JetBrains. Она позволяет разработчикам создавать приложения для Android, iOS, веба, настольных компьютеров (Windows, macOS, Linux) и серверной части, эффективно повторно используя код Kotlin на этих платформах и сохраняя при этом преимущества нативной разработки.
Kotlin Multiplatform предлагает разные варианты: можно совместно использовать весь код, кроме точек входа приложения, отдельный фрагмент логики (например, модуль для работы с сетью или базой данных) либо бизнес-логику, оставив интерфейс нативным.
Kotlin Multiplatform впервые появилась в составе Kotlin 1.2 в 2017 году. В ноябре 2023 года Kotlin Multiplatform стала стабильной. Во время Google I/O 2024 Google объявила о поддержке Kotlin Multiplatform для совместного использования бизнес-логики в Android и iOS.
Чтобы узнать больше об общих направлениях развития Kotlin Multiplatform, ознакомьтесь с нашей публикацией в блоге «Что дальше для Kotlin Multiplatform и Compose Multiplatform».
Compose Multiplatform
С помощью Compose Multiplatform — современной декларативной платформы JetBrains, основанной на Kotlin Multiplatform и Jetpack Compose от Google, — можно создавать общий код пользовательского интерфейса для нескольких платформ.
На данный момент Compose Multiplatform имеет стабильный статус на iOS, Android и настольных компьютерах, а для веба доступна в бета-версии.
В нашей отдельной статье рассматривается связь между Compose Multiplatform и Jetpack Compose, а также основные различия между ними.
Обзор Kotlin Multiplatform и Flutter
Kotlin Multiplatform |
Flutter |
|
|---|---|---|
Создано |
JetBrains |
|
Язык |
Kotlin |
Dart |
Гибкость и повторное использование кода |
Совместно используйте любые части кодовой базы, включая бизнес-логику и/или интерфейс, от 1% до 100%. |
Управляйте каждым пикселем приложения, чтобы создавать индивидуальные адаптивные дизайны с общим кодом для всех платформ. |
Пакеты, зависимости и экосистема |
Пакеты доступны в Maven Central и других репозиториях, в том числе klibs.io, созданном для упрощения поиска библиотек KMP. В этом списке представлены одни из самых популярных библиотек и инструментов KMP. |
Пакеты доступны на сайте Pub.dev. |
Система сборки |
Gradle (а для приложений, предназначенных для устройств Apple, также Xcode). |
Инструмент командной строки Flutter (который использует Gradle и Xcode внутри). |
Совместное использование кода |
Android, iOS, веб, настольные компьютеры и серверная часть. |
Android, iOS, веб, настольные компьютеры и встроенные устройства. |
Компиляция |
Компилируется в байт-код JVM для настольных компьютеров и Android, в JavaScript или Wasm для веба и в платформозависимые бинарные файлы для нативных платформ |
В отладочных сборках код Dart выполняется в виртуальной машине. Релизные сборки создают платформозависимые бинарные файлы для нативных платформ и JavaScript/Wasm для веба. |
Взаимодействие с нативными API |
Доступ к нативным API непосредственно из кода Kotlin обеспечивается с помощью объявлений expect/actual. |
Взаимодействие с хост-платформой возможно с помощью каналов платформы. |
Отрисовка интерфейса |
Compose Multiplatform позволяет совместно использовать интерфейс на разных платформах. Решение основано на Jetpack Compose от Google и использует движок Skia, совместимый с OpenGL, ANGLE (который преобразует вызовы OpenGL ES 2 или 3 в нативные API), Vulkan и Metal. |
Виджеты Flutter отображаются на экране с помощью собственного движка Impeller, который напрямую взаимодействует с GPU через Metal, Vulkan или OpenGL — в зависимости от платформы и устройства. |
Итеративная разработка интерфейса |
Предварительный просмотр интерфейса доступен даже из общего кода. С помощью Compose Hot Reload можно сразу видеть изменения интерфейса, не перезапуская приложение и не теряя его состояние. |
Доступны плагины IDE для VS Code и Android Studio. |
Компании, использующие эту технологию |
Forbes, Todoist, McDonald’s, Google Workspace, Philips, 9gag, Baidu, Autodesk, TouchLab, Instabee и другие представлены в наших примерах использования KMP. |
Xiaomi, Wolt, Universal Studios, Alibaba Group, ByteDance, Geico, eBay Motors, Google Pay, So Vegan и другие представлены на странице примеров Flutter. |
Также ознакомьтесь с публикацией Google в блоге «Упрощение кроссплатформенной разработки для разработчиков», в которой рассказывается, как выбрать подходящий стек технологий для проекта.
Если вам нужно дополнительное сравнение Kotlin Multiplatform и Flutter, посмотрите видео «KMP и Flutter» Филиппа Лакнера. В нём он делится интересными наблюдениями об этих технологиях с точки зрения совместного использования кода, отрисовки интерфейса, производительности и перспектив их развития.
Тщательно оценив конкретные потребности, цели и задачи вашего бизнеса, вы сможете определить кроссплатформенное решение, которое лучше всего отвечает вашим требованиям.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/kotlin-multiplatform-flutter.html