Оглавление

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

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

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

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

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

    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 интеграция уникальных фич с помощью сторонних плагинов или библиотек не представляет такой сложности. Однако разработчикам, которые не знают об этой функциональности языка Dart, эта задача может показаться сложной. Кроме того, движок Flutter обладает определёнными ограничениями, когда речь заходит об интеграции нативных модулей через Xcode или Android Studio по умолчанию. Документация Flutter включает инструкции о том, что делать в случае возможных осложнений и как успешно интегрировать его в приложение под Android и iOS. 

    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, ни нативные технологии не панацея. Каждый случай индивидуален, и всё зависит от конкретного проекта и нужд вашего бизнеса.   
    • Flutter — многообещающий кроссплатформенный фреймворк с точки зрения сроков разработки и экономии бюджета.
    • На Flutter реально написать MVP приложения за 2-3 месяца.
    • Разработка полноценного продукта на Flutter в среднем стоит на 30% дешевле, чем разработка двух нативных приложений. 
    • Нативные технологии лучше подходят для сложных, высокотехнологичных нишевых приложений с фичами вроде GPS и множеством анимаций.

    Мы считаем, что Flutter — отличная возможность выйти в онлайн и предоставить своим клиентам продукт или услугу через мобильное приложение.

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