Kotlin Multiplatform и React Native: сравнение кроссплатформенных решений
Кроссплатформенная разработка значительно изменила подход команд к созданию приложений, позволив выпускать приложения для нескольких платформ на основе общей кодовой базы. Такой подход упрощает разработку и помогает обеспечить более единообразный пользовательский интерфейс на разных устройствах.
Раньше для разработки под Android и iOS требовалось поддерживать две отдельные кодовые базы, часто силами разных команд. Это приводило к дублированию усилий и заметным различиям между платформами. Кроссплатформенные решения ускорили вывод продуктов на рынок и повысили общую эффективность.
Среди доступных инструментов особенно выделяются Kotlin Multiplatform, React Native и Flutter — три наиболее распространённых решения. В этой статье мы подробнее рассмотрим первые два, чтобы помочь вам выбрать вариант, который лучше всего подойдёт вашему продукту и команде.
Kotlin Multiplatform и Compose Multiplatform
Kotlin Multiplatform (KMP) — это технология с открытым исходным кодом, разработанная JetBrains. Она позволяет совместно использовать код на Android, iOS, настольных платформах (Windows, macOS, Linux), в веб-приложениях и на сервере. Разработчики могут повторно использовать код на Kotlin в разных средах, сохраняя нативные возможности и производительность.
Технология набирает популярность: за год число респондентов двух последних опросов Developer Ecosystem, использующих Kotlin Multiplatform, более чем удвоилось — с 7% в 2024 году до 18% в 2025 году. Это наглядно свидетельствует о растущем интересе к технологии.
С KMP вы можете выбрать подходящий способ совместного использования кода: от общего кода для всего приложения, кроме точек входа, до одного модуля с логикой (например, сетевого модуля или модуля базы данных) или бизнес-логики при сохранении нативного UI.
Чтобы совместно использовать код UI на разных платформах, можно воспользоваться Compose Multiplatform — современной декларативной средой JetBrains, созданной на базе Kotlin Multiplatform и Jetpack Compose от Google. Она имеет стабильную версию для iOS, Android и настольных платформ. Поддержка веб-платформы пока находится на этапе бета-тестирования.
Kotlin Multiplatform впервые появилась в Kotlin 1.2 (2017), а в ноябре 2023 года получила стабильный статус. На Google I/O 2024 Google объявила об официальной поддержке Kotlin Multiplatform для совместного использования бизнес-логики между Android и iOS.
React Native
React Native — это фреймворк с открытым исходным кодом для разработки приложений под Android и iOS. Он использует React — библиотеку для веб-интерфейсов и нативных пользовательских интерфейсов — и нативные возможности платформы приложения. React Native позволяет разработчикам использовать JavaScript для доступа к API платформы, а также описывать внешний вид и поведение UI с помощью компонентов React — повторно используемых блоков кода, которые можно вкладывать друг в друга.
О React Native впервые объявили в январе 2015 года на React.js Conf. Позже в том же году Meta представила React Native на F8 2015 и с тех пор продолжает его развивать.
Хотя за продукт React Native отвечает Meta, экосистема React Native включает партнёров, основных участников проекта и активное сообщество. Сегодня в развитие фреймворка вносят вклад отдельные разработчики и компании со всего мира.
Kotlin Multiplatform и React Native: сравнение
Kotlin Multiplatform |
React Native |
|
|---|---|---|
Разработчик |
JetBrains |
Meta |
Язык |
Kotlin |
JavaScript, TypeScript |
Гибкость и повторное использование кода |
Совместно используйте любые части кодовой базы — бизнес-логику и/или UI — от 1% до 100%. Внедряйте технологию постепенно или используйте её с самого начала разработки приложений с нативным внешним видом для разных платформ. |
Повторно используйте бизнес-логику и компоненты UI на разных платформах — от отдельных функций до полноценных приложений. Добавляйте React Native в существующие нативные приложения, чтобы создавать новые экраны и пользовательские сценарии. |
Пакеты, зависимости и экосистема |
Пакеты доступны в Maven Central и других репозиториях, в том числе klibs.io, который упрощает поиск библиотек для KMP. В этом списке собраны наиболее популярные библиотеки и инструменты для KMP. |
Библиотеки React Native обычно устанавливают из реестра npm с помощью менеджера пакетов Node.js, например npm CLI или Yarn Classic. |
Инструмент сборки |
Gradle (а для приложений на устройствах Apple также Xcode). |
Инструмент командной строки React Native и сборщик Metro, которые под капотом запускают Gradle для Android и систему сборки Xcode для iOS. |
Целевые среды |
Android, iOS, веб, настольные платформы и серверная часть. |
Android, iOS, веб и настольные платформы. Поддержка веб- и настольных платформ обеспечивается проектами сообщества и партнёров, такими как React Native Web, React Native Windows и React Native macOS. |
Компиляция |
Компилируется в байт-код JVM для настольных платформ и Android, в JavaScript или Wasm для веба и в платформенные бинарные файлы для нативных платформ |
React Native использует Metro для сборки кода JavaScript и ресурсов. В комплект React Native входит Hermes, который при сборке компилирует JavaScript в байт-код Hermes. React Native также поддерживает JavaScriptCore в качестве движка JavaScript. Нативный код компилируется с помощью Gradle на Android и Xcode на iOS. |
Взаимодействие с нативными API |
Благодаря совместимости Kotlin со Swift/Objective-C и JavaScript к нативным API можно обращаться непосредственно из кода на Kotlin. |
React Native предоставляет набор API для связи нативного кода с кодом приложения на JavaScript: Native Modules и Native Components. В новой архитектуре для достижения аналогичных результатов используются Turbo Native Module и Fabric Native Components. |
Отрисовка UI |
Compose Multiplatform позволяет совместно использовать UI на разных платформах. Он основан на Jetpack Compose от Google и использует движок Skia, совместимый с OpenGL, ANGLE (который преобразует вызовы OpenGL ES 2 или 3 в нативные API), Vulkan и Metal. |
React Native включает базовый набор независимых от платформы нативных компонентов, таких как |
Итеративная разработка UI |
Предварительный просмотр UI доступен даже из общего кода. С помощью Compose Hot Reload вы можете мгновенно видеть изменения UI, не перезапуская приложение и не теряя его состояние. |
Fast Refresh — это функция React Native, которая позволяет практически мгновенно видеть изменения в компонентах React. |
Компании, использующие технологию |
Forbes, Todoist, McDonald's, Google Workspace, Philips, 9gag, Baidu, Autodesk, TouchLab, Instabee и другие представлены в наших примерах использования KMP. |
Facebook, Instagram, Microsoft Office, Microsoft Outlook, Amazon Shopping, Mercari, Tableau, WordPress, Puma, PlayStation App и другие представлены в галерее приложений React Native. |
Также вы можете ознакомиться со сравнением Kotlin Multiplatform и Flutter.
Как выбрать подходящую кроссплатформенную технологию для проекта
Выбирая кроссплатформенный фреймворк, не стоит искать универсальное решение на все случаи жизни — важно подобрать вариант, который лучше всего соответствует целям проекта, техническим требованиям и опыту команды. Правильный выбор зависит от ваших приоритетов: будь то создание многофункционального продукта со сложным UI или быстрый запуск проекта с использованием уже имеющихся навыков. Учитывайте, насколько вам важен контроль над настройкой UI, насколько важна долгосрочная стабильность и какие платформы вы планируете поддерживать.
Команде с опытом работы с JavaScript React Native может показаться практичным выбором, особенно для быстрого создания прототипов. Kotlin Multiplatform, в свою очередь, обеспечивает иной уровень интеграции: он позволяет создавать полностью нативные приложения для Android и компилировать код в нативные бинарные файлы для iOS с беспрепятственным доступом к нативным API. UI может быть полностью нативным или совместно использоваться на разных платформах с помощью Compose Multiplatform, который обеспечивает качественную отрисовку благодаря высокопроизводительному графическому движку. Поэтому KMP особенно привлекателен для команд, которым важны нативный внешний вид, удобство сопровождения и производительность, но при этом они хотят пользоваться преимуществами совместного использования кода.
Дополнительные рекомендации вы найдёте в нашей подробной статье о том, как выбрать подходящие фреймворки для кроссплатформенной разработки для следующего проекта.
Часто задаваемые вопросы
В: Готова ли Kotlin Multiplatform к использованию в промышленной разработке?
О: Kotlin Multiplatform — это стабильная технология, готовая к использованию в промышленных проектах. Это означает, что Kotlin Multiplatform можно использовать для совместного использования кода в промышленных приложениях под Android, iOS, настольные платформы (JVM), серверную часть (JVM) и веб — даже в самых консервативных сценариях применения.
Compose Multiplatform — фреймворк для создания общего UI на разных платформах на базе Kotlin Multiplatform и Jetpack Compose от Google — имеет стабильную версию для iOS, Android и настольных платформ. Поддержка веб-платформы пока находится на этапе бета-тестирования.
Чтобы узнать больше об общем направлении развития Kotlin Multiplatform, прочитайте нашу публикацию в блоге «Что дальше ждёт Kotlin Multiplatform и Compose Multiplatform».
В: Kotlin Multiplatform лучше, чем React Native?
О: У Kotlin Multiplatform и React Native есть свои преимущества. Выбор зависит от целей конкретного проекта, технических требований и опыта команды. В приведённом выше сравнении мы рассмотрели ключевые различия в таких областях, как совместное использование кода, инструменты сборки, компиляция и экосистема, чтобы помочь вам выбрать вариант, который лучше всего подходит для вашего сценария.
В: Поддерживает ли Google Kotlin Multiplatform?
О: На Google I/O 2024 Google объявила об официальной поддержке Kotlin Multiplatform на Android для совместного использования бизнес-логики между Android и iOS.
В: Стоит ли изучать Kotlin Multiplatform?
О: Если вы хотите совместно использовать код для Android, iOS, настольных платформ и веба, сохраняя нативную производительность и гибкость, изучение Kotlin Multiplatform будет полезным. Технологию развивает JetBrains, а Google официально поддерживает её на Android для совместного использования бизнес-логики между Android и iOS. Кроме того, компании, создающие кроссплатформенные приложения, всё чаще используют KMP вместе с Compose Multiplatform в промышленных проектах.
© 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-react-native.html