Оглавление

    Flutter или нативная разработка: что лучше выбрать для проекта

    Выбирая между Flutter или нативной разработкой мобильных приложений, мы опираемся на собственный практический опыт. С технологиями разработки индивидуально под Android и iOS мы работаем уже более 12 лет, а с 2019 года существенно продвинулись в разработке кроссплатформенных приложений. Мы уже писали о разнице между разными кроссплатформенными технологиями: в том числе сравнивали Flutter и React Native. В этой статье разберёмся, для каких целей больше подходит кроссплатформенная, а для каких — нативная разработка мобильных приложений.

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

    Flutter или нативная разработка: начнем с  того, что такое Flutter  

    Flutter — популярный кроссплатформенный фреймворк на Dart, который позволяет на единой кодовой базе создавать приложения для шести основных операционных систем и платформ: iOS, Android, Windows, macOS, Linux и веб. Такие приложения не уступают в производительности нативу.

    Google выпустили Flutter в 2018 году, но он уже зарекомендовал себя как удобный набор инструментов. С ним можно эффективно создавать красочные анимации и UX-компоненты. Кроме того, кроссплатформенная разработка не такая сложная как нативная, а это важный момент с точки зрения бизнеса.

    Flutter или нативная разработка: что такое нативные технологии

    В отличие от Flutter в рамках нативной разработки мобильных приложений продукт создаётся конкретно под Android или iOS. Такие приложения пишут на языках, которые напрямую полностью поддерживаются поставщиком ОС мобильного устройства: 

    • Языки для Android: Kotlin, Java. Среда разработки: Android Studio
    • Языки для iOS: Swift, Objective-C. Среда разработки: Xcode

    У нативных приложений нет серьёзных минусов. В них можно полноценно пользоваться сложными фичами вроде акселерометра, камеры и GPS. Однако разработка и сопровождение таких приложений существенно дороже.

    Нативным разработчикам приходится подстраивать бизнес-логику, интерфейс и вёрстку под фичи каждой платформы. Именно поэтому более экономичный Flutter становится всё популярнее.

    Flutter или нативная разработка: сроки разработки

    На 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 — популярный объектно-ориентированный язык, которым пользуются многие программисты. Язык похож на 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 — отличная возможность выйти в мобильный онлайн и предоставить своим клиентам продукт или услугу через приложение.

    Если вы ищете способ быстро разработать приложение под iOS и Android без серьёзных потерь качества и бюджета, дайте шанс Flutter и свяжитесь с нами.