Flutter или нативная разработка: что лучше выбрать для проекта
Выбирая между Flutter или нативной разработкой мобильных приложений, мы опираемся на свой практический опыт. С технологиями разработки индивидуально под Android и iOS мы работаем уже более 14 лет, а с 2019 года существенно продвинулись в разработке кроссплатформенных приложений.
Мы уже писали о разнице между разными кроссплатформенными технологиями: в том числе сравнивали Flutter и React Native. Если вы не уверены, Flutter это фронтенд или бэкенд, важно понимать, что это UI-фреймворк для фронтенда, работающий с визуальной частью приложения.
В этой статье разберёмся, для каких целей больше подходит кроссплатформенная, а для каких — нативная разработка мобильных приложений.
Оба подхода предоставляют массу возможностей для масштабирования и позволяют создать качественный UX на мобильных устройствах. Но они сильно отличаются друг от друга. Например, если вы стоите перед выбором Flutter или Swift, важно понимать различия в производительности, сопровождении программного кода и скорости разработки дизайна и запуска продукта.
Flutter или нативная разработка: что выбрать
Рассмотрим плюсы и минусы каждого подхода и объясним, когда стоит использовать Flutter, а когда предпочтительнее нативная разработка.
Flutter
Flutter — популярный кроссплатформенный фреймворк на Dart, который позволяет на единой кодовой базе создавать приложения для шести основных операционных систем и платформ: iOS, Android, Windows, macOS, Linux и веб. Такие приложения не уступают в производительности нативу. Хотя Flutter это фронтенд-фреймворк, он может взаимодействовать с нативными модулями через платформенные каналы.
Google выпустили Flutter в 2018 году, но он уже зарекомендовал себя как удобный набор инструментов. С ним можно эффективно создавать красочные анимации и UX-компоненты. Кроме того, кроссплатформенная разработка не такая сложная как нативная, а это важный момент с точки зрения бизнеса.
Flutter или нативная разработка: что такое нативные технологии
В отличие от Flutter в рамках нативной разработки мобильных приложений продукт создаётся конкретно под Android или iOS. Такие мобильные приложения пишут на языках, которые напрямую полностью поддерживаются поставщиком ОС устройства:
- Языки для Android: Kotlin, Java. Среда разработки: Android Studio
- Языки для iOS: Swift, Objective-C. Среда разработки: Xcode
Нативная разработка позволяет реализовать глубоко интегрированные функции и использовать все возможности операционной системы. У нативных приложений нет серьёзных минусов. В них можно полноценно пользоваться сложными фичами вроде акселерометра, камеры и GPS.
Flutter vs Android Studio: что выбрать для бизнеса
Запрос Flutter vs Android Studio чаще всего означает выбор между Flutter и нативной разработкой на Java/Kotlin. Мы сравниваем оба подхода.
Кроссплатформенный фреймворк от Google позволяет писать один код для двух платформ. Он помогает быстрее и дешевле запускаться сразу на iOS и Android. Готовая общирная UI-библиотека предоставляет красивые интерфейсы без различий между платформами. Фича hot reload удобна разработчикам для быстрых итераций и запуска MVP, а большое комьюнити — для обсуждений, поиска плагинов и документации.
Разработка под Android (Java/Kotlin через Android Studio) даст максимальную производительность, полный доступ к железу, гибкость в подключении любых SDK и API Android и надёжность вне зависимости от сторонних фреймворков. Подходит для долгосрочных и масштабных проектов, если точно нужен Android-only.
В то время как Kotlin в Android Studio предлагает полную нативную поддержку, Flutter мобильная разработка выигрывает за счёт гибкости и скорости кроссплатформенной сборки. Разработка и сопровождение нативных приложений существенно дороже. Разработчикам приходится подстраивать бизнес-логику, интерфейс и вёрстку под фичи каждой платформы. Именно поэтому более экономичный Flutter становится всё популярнее.
То же относится к разработке под iOS. Сложные и ресурсоёмкие приложения (AR, игры, высоконагруженные медиа-сервисы) эксперты советуют писать на нативных языках. В то же время финтех, маркетплейсы, сервисы доставки и компании из ecommerce все чаще выбирают кроссплатформу. Поэтому Flutter или Swift — вопрос, который актуален для компаний, которым важно быстро выйти на рынок без потери качества UI.
Flutter или нативная разработка: сроки разработки
Чаще всего Flutter мобильная разработка позволяет писать единый код для Android и iOS, снижая затраты и ускоряя запуск MVP. А в целом на Flutter можно написать общий код для шести различных платформ, что существенно сокращает сроки и стоимость разработки. К тому же писать его проще, чем в нативе. В случае с нативными технологиями разработки мобильных приложений программистам приходится писать код мобильных приложений отдельно для Android и для iOS, что отнимает больше времени.
Разработка на Flutter, в сравнении с созданием двух нативных приложений, занимает на 20–40% меньше времени. Скорость также зависит от сложности интерфейса и требуемых функций.
Производительность
Когда Google представил Flutter в первый раз, у SDK были определенные проблемы с производительностью и низким значением FPS (кадр в секунду). По мере развития технологии все эти проблемы были решены, и сегодня Flutter обеспечивает такую же производительность, что и нативные приложения.
Исходя из нашего опыта, потребление ресурсов ЦП у нативных приложений примерно на 50% ниже, чем у проектов на Flutter. При этом мобильные React Native-приложения (на еще одном популярном кроссплатформенном фреймворке) показывают еще более высокие значения.
Что касается использования памяти, то здесь выигрывают нативные приложения, которые используют её максимально эффективно. Мобильному приложению на Flutter нужно больше памяти чем аналогичному нативному софту, но меньше чем в случае с React Native.
Сопровождение кода
В большинстве случаев сопровождение нативного приложения занимает больше времени. Во-первых, на поддержку двух кодовых баз требуется немало сил. Во-вторых, для каждой платформы разработчикам приходится писать обновления и фиксить баги. В-третьих, чем больше становится устройств, поддерживающих ОС, тем больше усилий уходит на сопровождение кода.
Что касается приложений на Flutter, их сопровождать куда проще, так как кодовая база едина для двух приложений. Благодаря простоте кода, разработчики быстро находят баги и добавляют поддержку сторонних библиотек. Кроме того, фича Hot Reload во Flutter помогает моментально проверять работоспособность кода и устранять возникшие в приложении проблемы.
Kotlin для Android vs Dart (Flutter): фичи и интеграции
Kotlin — популярный объектно-ориентированный язык, которым пользуются многие программисты для создания приложений для Android. Язык похож на Java, поэтому его легко выучить или перейти на него. То же самое верно и в отношении Dart, используемого во Flutter, но высококвалифицированных Flutter-разработчиков на рынке меньше.
Основное отличие для бизнеса заключается в том, что Flutter позволяет унифицировать бизнес-логику и пользовательский интерфейс и использовать единую базу кода для двух мобильных платформ. Kotlin может унифицировать бизнес-логику, но не пользовательский интерфейс. Flutter предоставляет более эффективные инструменты, такие как плагины для сред разработки. Инструменты Kotlin ограничены в своих возможностях, и отладка с его помощью в настоящее время по большом счету невозможна.
Большинство нативных фреймворков, используемых для кодинга под iOS, включая Swift, обеспечивают высокую безопасность приложения и поддержку быстрой интеграции. То же можно сказать и о Kotlin с Java в случае с Android.
С Dart интеграция уникальных фич с помощью плагинов и библиотек от третьих лиц доступна в полной мере. Однако мобильным разработчикам, которые не знают об этой функциональности языка, такая задача может показаться не самой простой. Кроме того, движок Flutter обладает определёнными ограничениями в области интегрирования нативных модулей с помощью Xcode или Android Studio по умолчанию. Но и в этом случае документация Flutter включает описание решений проблем в работе интеграций с нативными технологиями.
Swift для iOS или Flutter: фичи и интеграции
Swift остаётся одним из наиболее популярных языков, созданных Apple для iOS, а многие разработчики хвалят его фреймворки и документацию за их исключительное качество. Если сравнивать Flutter с нативными приложениями на Swift, интеграция с Swift iOS проще и требует меньшего ручной работы. Однако у Swift могут быть проблемы интеграции с некоторыми сторонними инструментами.
Что касается Flutter, его код подходит для множества платформ, включая Android. Кроме того, писать код с Flutter быстрее, поэтому он отлично подойдет для реализации MVP.
Стоимость разработки приложения
Мобильная нативная разработка дороже, так как требует написания двух кодовых баз для двух разных платформ. Кроме того, для натива требуется нанять больше разработчиков и других специалистов.
По нашему опыту, с Flutter проект может выйти дешевле примерно на 45,6% в разработке, 70,5% на тестировании (с учётом автотестов) и 33,3% на дизайне по сравнению с нативным проектом. В команде меньше людей, что облегчает коммуникацию и флоу. Благодаря этому можно приблизить срок релиза.
Кейсы применения Flutter и нативных технологий
При выборе нативной или кроссплатформенной разработки мобильного приложения важную роль играет коммерческая цель. В настоящее время Flutter в основном используют предприятия среднего и крупного бизнеса. Мы уже писали о том, как создали первое в России банковское приложение на технологии Flutter.
Что касается нативных технологий, разработчики используют их для сложных нишевых приложений с расширенными функциональными возможностями. В таблице ниже — подходящие кейсы для обоих подходов.
Когда лучше выбрать нативные технологии
Нативные технологии, как правило, используются для написания высокопроизводительных приложений с расширенным функционалом. Однако нужно учитывать скорость и стоимость работы команды на всех этапах, включая поддержку.
Когда лучше выбрать Flutter
Мы в Surf уже успели поработать над несколькими крупными проектами на Flutter для российского рынка — приложение для Росбанка, сети аптек Ригла, крупный видеостриминг The Hole и мобильное приложение для сотрудников KFC. Мы убедились, что эта технология подходит различным сферам бизнеса — ретейлу, банкам и фудтеху. Чтобы воплотить в жизнь свое приложение на Flutter, заполните заявку — и мы свяжемся с вами.
Flutter — идеальный «мэтч» для финтех-проектов, так как может в полной мере использовать технологии безопасности, поддерживаемые мобильными устройствами — Touch ID, Face ID, сканер отпечатка пальцев.
Подведём итог
Сравнивая Flutter с нативными технологиями на iOS и Android, мы пришли к выводам:
- Ни один из двух подходов не панацея. Каждый случай индивидуален, и всё зависит от конкретного проекта и особенностей вашего бизнеса.
- Flutter — многообещающий кроссплатформенный фреймворк с точки зрения экономии бюджета. Приложение на Флаттере в среднем стоит на 30% дешевле, чем разработка пары нативных.
- С Flutter написание MVP мобильного приложения уложится в 2–3 месяца.
- Нативные инструменты лучше подходят для сложных, высокотехнологичных нишевых приложений с фичами вроде GPS и множеством анимаций.
Flutter или нативная разработка — выбор зависит от бюджета, сроков и целей проекта. В статье — реальные кейсы Surf. Мы считаем, что Flutter это отличная возможность выйти в мобильный онлайн и предоставить своим клиентам продукт или услугу через приложение.
Если вы ищете способ быстро разработать приложение под iOS и Android без серьёзных потерь качества и бюджета, дайте шанс Flutter и свяжитесь с нами.