Kotlin Multiplatform vs Flutter: что лучше выбрать для проекта
Выбор стека технологий для разработки — важный этап, который напрямую влияет на успешность сервиса или продукта. С появлением таких технологий, как Kotlin Multiplatform и Flutter, популярность кроссплатформенной разработки возросла. Помимо того, что эти технологии позволяют разработчикам создавать качественные решения, сопоставимые с нативными, они также сокращают затраты на разработку и time-to-market. Тем не менее, при выборе инструментов для кроссплатформенной разработки важно учитывать требования к ПО и ваши коммерческие цели.
В этой статье мы сравнили две кроссплатформенных технологии — Kotlin Multiplatform и Flutter.
Что такое Flutter?
Flutter — это комплект средств разработки (SDK) с открытым исходным кодом, вышедший в 2017 году. С его помощью можно создавать кроссплатформенные приложения для мобильных и веб-устройств. На Flutter можно создавать приложения под iOS, Android, Windows, Linux и другие операционные системы на одной кодовой базе.
Flutter создала и поддерживает команда Google, но также его поддержкой занимается сообщество разработчиков, число которых неуклонно растёт. В отличие от других кроссплатформенных фреймворков, Flutter не полагается на виджеты и веб-браузер. Он написан на объектно-ориентированном языке Dart, а для рендеринга виджетов использует собственный движок.
Движок Flutter Engine представляет собой среду выполнения кроссплатформенных приложений и включает основные библиотеки Flutter, отвечающие за графику и анимацию, архитектуру плагинов, комплекс инструментов компиляции, а также файловые и сетевые операции ввода-вывода.
SDK Flutter содержит следующие компоненты:
- Фреймворк, который могут кастомизировать разработчики.
- Широкий спектр виджетов для форматирования под iOS в соответствии с Material Design.
- Движок для 2D-рендеринга на мобильных устройствах с поддержкой текста.
- Dart DevTools для тестирования и отладки ПО.
- Программные интерфейсы приложения (API) для юнит-тестов и интеграционных тестов.
- Плагины и API для взаимодействия с системой и сторонними наборами инструментов для разработки ПО.
- Инструменты командной строки для создания, тестирования и компиляции приложений.
- Система тестирования в консоли, с помощью которой можно прогонять тесты на Linux, Mac и Windows.
Обновления для Flutter выходят приблизительно раз в три месяца. Google постоянно повышает стабильность и производительность фреймворка, а также добавляет новые фичи.
С момента релиза версии Flutter 1.0 в декабре 2018 года эту технологию использовали для разработки более 100 000 приложений. Множество всемирно известных компаний используют Flutter в своих проектах. Среди них Alibaba Group, eBay, Google Pay, Nubank, Toyota и BMW.
Мы разработали на Flutter более десяти приложений. В их числе крупный видеостриминг The Hole, приложение сети аптек Ригла и корпоративное приложение для KFC.
Мы создали первое в Европе и второе в мире банковское приложение на Flutter для Росбанка. В 2021 году приложение «Росбанк Бизнес» было признано «Лучшим приложением для финансовой компании». Подробнее о том, какие фичи реализовали наши Flutter-разработчики и какие задачи они решили, вы можете прочитать в кейсе приложения.
Основные преимущества Flutter
1. Затраты и time-to-market сокращаются
Конкуренция среди программных продуктов и сервисов крайне высока. Чтобы повышать удовлетворённость и процент удержания клиентов, компаниям необходимо выпускать новые решения и регулярно обновлять существующие. Суть кроссплатформенных технологий в том, что разработчики пишут одну кодовую базу и используют её на всех целевых платформах. Благодаря этому, не приходится нанимать несколько команд, чтобы написать разные приложения под iOS и Android.
Выбрав для кроссплатформенной разработки Flutter, вы можете существенно уменьшить time-to-market, при этом сократив расходы на разработку 30%–50%. Конечно, нативные приложения можно писать параллельно. Однако на одной платформе на выполнение некоторых задач может уйти больше времени, чем на другой.
Flutter представляет собой полноценный набор инструментов разработки, в который входит целый ряд виджетов Material Design, инструментов Dart DevTools для тестирования и отладки, а также инструментов командной строки для сборки и компиляции приложений.
Кроме того, во Flutter есть фича Hot Reload, которая позволяет разработчикам вносить изменения в код и видеть их в реальном времени. Hot Reload позволяет экономить время на разработке и компиляции. Заметьте, что нативные технологии такой функциональности не предоставляют.
2. Сопровождать продукт легко
Это одно из основных преимуществ кроссплатформенной разработки с помощью Flutter. Намного быстрее и проще выпустить обновление или добавить новую фичу, когда у вас вместо нескольких кодовых баз одна.
3. UX почти не отличается от нативного или максимально на него похож
Разработка кроссплатформенного приложения с Flutter даёт множество преимуществ, в числе которых возможность дать пользователям приложение, которое будет похоже на нативное. Это возможно потому, что во Flutter доступны элементы нативного UI для Android и iOS.
Более того, Flutter позволяет разработчикам создавать практически любые анимации или взаимодействия, при этом обеспечивая их единообразие на разных платформах. Также с помощью Flutter разработчики могут внедрить в приложение жестовую навигацию.
4. Приложение работает стабильно
Flutter позволяет создавать высокопроизводительные и стабильные приложения. Формально, технология обеспечивает производительность 60 кадров в секунду (FPS), а значит, она отлично подходит для разработки видеостриминговых и обучающих платформ и других приложений, предназначенных для широкой аудитории и требующих быстрого отклика.
В некоторых случаях можно даже достичь производительности 120 FPS, что эквивалентно показателям нативного ПО. Приложения на Flutter работают так быстро потому, что фреймворк написан на языке программирования Dart, который компилируется в нативный машинный код различных операционных систем.
Немаловажно и то, что для Flutter довольно часто выходят обновления, которые повышают его стабильность и улучшают производительность. Так, в мае 2020 года создатели Flutter добавили поддержку Metal API, с помощью которого им удалось улучшить производительность на iOS устройствах почти на 50%. Узнать, как добиться максимальной производительности с Flutter, вы можете в нашей статье.
5. Создать пользовательский интерфейс (UI) можно быстро
В отличие от Kotlin Multiplatform, Flutter позволяет разработчикам создавать UI намного быстрее. К примеру, во Flutter есть множество качественных виджетов для форматирования под iOS в соответствии с Material Design. С помощью этой технологии можно даже создавать собственные виджеты или кастомизировать существующие.
Недостатки Flutter
1. Приложение занимает много места
Как правило приложения, написанные с помощью Flutter, занимают довольно много места по сравнению с нативными.
2. Нативные фичи требуют времени
Если разработчикам потребуется создать мобильное приложение с нативной функциональностью, они скорее всего потратят на это больше времени, чем при нативной разработке.
3. Обновления UI
Компоненты нативного пользовательского интерфейса воссоздаются движком Flutter. В результате может получиться, что с выходом новой версии ОС и новых элементов UI или с изменением существующих компонентов разработчики будут вынуждены ждать, пока фреймворк не подтянет новые ресурсы.
Что такое Kotlin Multiplatform?
Kotlin — статически типизированный, объектно-ориентированный язык программирования, разработанный компанией JetBrains. Kotlin работает поверх Java Virtual Machine (JVM), но может компилироваться и в JavaScript или нативный код. Первый официально стабильный релиз (Kotlin v1.0) вышел в 2016 году. Спустя три года Google анонсировали, что Kotlin стал приоритетным языком разработки Android-приложений.
По состоянию на 2020 год Kotlin оставался основным языком Android-разработки. По данным Google, 70% из 1000 самых популярных готовых программ на Google Play были написаны на Kotlin. Чистый и понятный синтаксис Kotlin позволяет разработчикам писать мобильные приложения быстрее, чем на Java.
Совсем недавно, чтобы помочь разработчикам писать приложения для разных операционных систем, JetBrains добавили поддержку кроссплатформенной разработки. Благодаря ей, разработчики могут писать Common Kotlin код (включая язык, ключевые библиотеки и основные инструменты), который работает на всех платформах.
С помощью Kotlin Multiplatform разработчики могут даже переиспользовать код и ключевую бизнес-логику в различных ОС. Однако, в отличие от Flutter, с помощью Kotlin Multiplatform программисты не могут создавать пользовательский интерфейс.
Kotlin Multiplatform – сравнительно новая кроссплатформенная технология, тем не менее многие известные компании, например, Yandex, Philips, Netflix, Quizlet и Autodesk, уже используют кроссплатформенный язык Kotlin в своих продуктах.
Сценарии использования Kotlin Multiplatform:
1. Разработка приложений под Android и iOS
С помощью Kotlin Multiplatform Mobile (KMM) можно переиспользовать код при разработке мобильных приложений под Android и iOS. Однако при необходимости разработчики могут писать и платформоспецифичный код, например, чтобы создать нативный UI или интегрировать API в нативное решение.
2. Разработка клиент-серверных приложений
С помощью Kotlin Multiplatform разработчики могут переиспользовать бизнес-логику веб-приложения как в клиентской части (фронтенд), так и в серверной части (бэкенд).
Основные преимущества Kotlin Multiplatform
1. Меньше времени на разработку без потери преимуществ нативных технологий
Kotlin Multiplatform позволяет переиспользовать ключевую бизнес-логику на множестве целевых платформ, включая Android, iOS, JVM, macOS, tvOS, watchOS, Windows, JavaScript и WebAssembly. И хотя Kotlin Multiplatform — это кроссплатформенная технология, с её помощью нельзя собрать проект один раз и развернуть его на любой платформе. Чтобы сделать приложение под Android и iOS, всё равно понадобится писать два отдельных нативных приложения.
Однако с помощью кроссплатформенной технологии Kotlin можно переиспользовать кроссплатформенную логику и код в общем коде или коде для определённой платформы. Таким образом, Kotlin Multiplatform позволяет сократить срок разработки продукта, при этом не теряя преимуществ нативной разработки.
2. Максимальная производительность
Кроссплатформенная технология Kotlin обеспечивает высокую производительность приложений на различных операционных системах. Flutter тоже обеспечивает стабильную работу приложения, но, если вам нужен сложный, удобный для широкой аудитории и способный выдерживать большую нагрузку продукт, вам лучше подойдёт Kotlin Multiplatform. Поэтому Kotlin идеально подходит для разработки маркетплейсов, сложных обучающих приложений и других подобных решений.
3. Доступ к функциям смартфона
В нативных решениях, написанных на Kotlin Multiplatform, как правило, легче получить доступ к таким функциям смартфона, как камера, микрофон и оффлайн-режим. Чаще всего, чтобы внедрить такую функциональность в кроссплатформенное приложение, нужно потратить больше времени и сил.
Недостатки Kotlin Multiplatform
1. Больше времени и расходов на разработку
Kotlin Multiplatform позволяет разработчикам переиспользовать код для нескольких операционных систем, а не написать одну кодовую базу для всех целевых платформ. Кроме того, там нет набора инструментов для разработки UI. В результате на разработку такого кроссплатформенного решения уйдёт больше времени, чем с Flutter.
Также, оценивая преимущества Kotlin Multiplatform, стоит учитывать, что расходы на разработку будут выше.
2. Более сложный процесс отладки
Отладка нативного кода усложняется, когда Kotlin используют для кроссплатформенной разработки. Поддержка сторонних библиотек ограничена, однако над этой проблемой постоянно работают JetBrains, создатели кроссплатформенной технологии Kotlin.
3. Обучающие ресурсы ограничены
Kotlin Multiplatform – сравнительно новая технология, поэтому обучающие ресурсы у неё ограничены. Тем временем, для Flutter написана обширная документация, с помощью которой разработчики могут с лёгкостью приступить к работе с фреймворком и разобраться с определёнными техническими сложностями.
Kotlin Multiplatform или Flutter: подведём итог
И Kotlin, и Flutter позволяют разработчикам создавать приложения, отвечающие стандартам качества, и при этом экономить время и затраты по сравнению с нативной разработкой. С помощью них можно переиспользовать код для множества операционных систем.
Однако у Kotlin и Flutter разное назначение. Kotlin Multiplatform позволяет писать нативные решения и при этом переиспользовать код частично. Таким образом, Kotlin для кроссплатформенной разработки способствует повышению производительности и улучшает пользовательский опыт.
Тем временем у Flutter есть полноценный набор инструментов разработки, благодаря чему это идеальный вариант для компаний, стремящихся выпустить готовое приложение в короткие сроки. Кроме того, этот фреймворк позволяет компаниям сократить расходы на разработку на 30%–50%. С помощью Flutter можно не только добиться быстрой стабильной работы приложения, но и реализовать красивый UI.