В стремительно развивающемся мире разработки мобильных приложений появление кроссплатформенных фреймворков вызвало революцию, бросив вызов многолетнему стандарту нативной разработки. Среди этих инновационных инструментов открытый фреймворк Flutter, разработанный и развиваемый Google, быстро набрал обороты и стал лидером. Эта статья поможет разобраться в его технических тонкостях, тенденциях рынка и прогнозах на будущее, предлагая всесторонний взгляд на потенциальную судьбу Flutter в мире технологий.

Текущее положение Flutter на рынке

С момента своего создания Flutter стремительно набирал популярность, что можно связать с его уникальным подходом к разработке приложений. В отличие от предшественников, Flutter использует язык программирования Dart, предлагая реактивный фреймворк с богатым набором предварительно спроектированных виджетов, позволяющих разработчикам легко создавать визуально привлекательные и высокофункциональные приложения.

Судя по трендам на StackOverflow, Flutter уже давно обогнал своего главного конкурента по кроссплатформенным фреймворкам — React Native.

При сравнении с другими кроссплатформенными фреймворками Flutter выделяется по нескольким причинам:

  1. Производительность. Рендер-движок Skia позволяет ему напрямую компилироваться в нативный код, снижая нагрузку на производительность, которую можно наблюдать в других кроссплатформенных фреймворках. Это приводит к более плавной анимации и отзывчивому интерфейсу, доходящего по производительности до нативных приложений.
  2. Удобство работы для разработчиков. Функция hot reload существенно ускоряет разработчика. Она позволяет видеть результаты изменений своего кода в реальном времени без необходимости по новой собирать приложение.
  3. Одинаковый UI на разных платформах. Модульный подход Flutter обеспечивает одинаковый пользовательский интерфейс на разных платформах. Это часто сложно достичь в других фреймворках, которые полагаются на соединение компонентов с нативными элементами.
  4. Сообщество и поддержка. Благодаря Google, Flutter пользуется поддержкой сообщества, что видно в обширном наборе пакетов, которые создали другие разработчики для ускорения работы с Flutter.

Увеличение популярности Flutter проявляется не только в сообществах разработчиков, но и в бизнес-секторе. Компании, начиная со стартапов и заканчивая технологическими гигантами, всё чаще обращаются к Flutter для разработки мобильных приложений. Этот переход обусловлен возможностью Flutter предоставить более быстрый выход на рынок и снижение затрат на разработку без ущерба для качества и производительности.

Техническое погружение во Flutter

Теперь поговорим об основных характеристиках Flutter, отличающих его от других кроссплатформенных решений.

Язык программирования Dart. Flutter использует Dart, язык, оптимизированный для разработки пользовательского интерфейса. Особенности Dart, такие как компиляция «ahead-of-time» (AOT), способствуют высокой производительности приложений Flutter, делая их практически неотличимыми от нативных приложений по скорости и отзывчивости.

Widget-Based архитектура. Подход Flutter к проектированию пользовательского интерфейса существенно отличается от конкурентов. Фреймворк предлагает обширный набор настраиваемых виджетов, которые позволяют разработчикам легко создавать сложные UI.

Графический движок Skia. В основе процесса рендеринга Flutter находится графический движок Skia, известный своей высокой производительностью. Это позволяет Flutter перерисовывать пользовательский интерфейс со скоростью 60 кадров в секунду, обеспечивая плавное взаимодействие с пользователем.

Для наглядности рассмотрим простой пример. Код ниже создает базовое приложение Flutter с кнопкой в стиле Material Design:

Производительность Flutter часто сравнивают с разработкой нативных приложений. В то время как нативная разработка позволяет достичь наивысшей степени оптимизации, производительность Flutter очень конкурентоспособна. Компиляция Dart-кода в нативный код ARM и эффективный рендеринг UI на GPU позволяют приложениям Flutter демонстрировать производительность, часто не отличимую от нативных приложений во многих сценариях использования.

Эффективность затрат при использовании Flutter

Фреймворк Flutter значительно снижает затраты на разработку приложений. Его унифицированная кодовая база для платформ Android и iOS означает, что разработчики могут написать код один раз и развернуть его на нескольких платформах, сокращая время и ресурсы, обычно требуемые для отдельной нативной разработки. Эта возможность кросс-платформенной разработки становится важным критерием как для стартапов, так и для устоявшихся компаний, так как она оптимизирует процесс разработки и снижает трудозатраты.

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

Примеры использования Flutter с точки зрения экономии затрат можно увидеть на практике в различных успешных проектах. Компании сообщают о значительном сокращении времени и ресурсов при использовании Flutter по сравнению с опытом разработки нативных приложений. Эти кейс-исследования подчеркивают роль Flutter не только как технического решения, но и как стратегического бизнес-инструмента, способного привести к более эффективному распределению ресурсов и быстрому возврату инвестиций.

Flutter в действии

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

Приведу несколько примеров использования от ведущих технологических компаний.

  1. Nubank, имеющий более 50 млн. клиентов, перешел от нативной разработки к Flutter. Изначально разрабатывая на Swift и Kotlin, они перешли на Flutter, чтобы улучшить пользовательский опыт и функциональность. Этот пример показывает способность Flutter поддерживать крупномасштабные приложения финансовых услуг.
  2. Reflectly — приложение для ухода за психическим здоровьем, было разработано с использованием Flutter. С участием всего двух разработчиков, первая версия для iOS и Android была создана менее чем за три месяца, что показывает Flutter как подходящий инструмент для быстрой разработки.
  3. Cryptograph — приложение, ориентированное на отслеживание более 1600 мировых криптовалют, использует Flutter для обработки информации в режиме реального времени и эффективного отслеживания рынка, что показывает способность Flutter работать с данными интенсивных приложений.
  4. Hamilton — официальное приложение для мюзикла «Гамильтон», разработанное с использованием Flutter, предоставляет уникальный пользовательский интерфейс для своих поклонников, включая функции караоке и викторины. Как мы видим, Flutter может быть использован в развлекательных и медийных приложениях.
  5. eBay Motors использовал Flutter для обеспечения пользователей возможностью покупки автомобилей на iOS и Android. Их команда разработчиков смогла представить бета-версию в течение трех месяцев, что показывает быстрый цикл разработки Flutter.
  6. Компания Betterment, предоставляющая финансовые услуги, перевела свое мобильное приложение на Flutter, что привело к улучшению процесса разработки и более эффективному взаимодействию команды.
  7. Invoice Ninja использует многоплатформенные возможности Flutter с версиями для мобильных устройств, веба и настольных ПК, что демонстрирует гибкость Flutter на разных платформах.
  8. Philips Hue выпустила два приложения, построенных с использованием Flutter, для управления своими «умными» устройствами, что подчеркивает пригодность Flutter для приложений для Интернета вещей (IoT).

Среди основных причин растущей популярности Flutter можно выделить следующие:

  1. Улучшение производительности. Основой Flutter является язык Dart, известный своей сильной типизацией и компиляцией «Ahead-of-Time» (AOT), что позволяет создавать высокопроизводительные приложения с отличной производительностью во время выполнения. Недавно команда Flutter представила улучшенный движок Impeller для работы на iOS, тем самым ответив на беспокойство пользователей касательно производительности на iOS.
  2. Богатая экосистема и поддержка сообщества. Flutter имеет расширяющуюся экосистему пакетов и плагинов, которые упрощают разработку и значительно ускоряют процесс. Кроме того, его активное сообщество разработчиков — это сильный ресурс, предоставляющий обширную поддержку. Эта коллективная активность способствует благоприятной среде для обучения и совместной работы.
  3. Согласованный дизайн на всех платформах. Виджеты Flutter разработаны с учетом рекомендаций по дизайну Material Design на Android и принципов дизайна Cupertino на iOS, что создаёт одинаковый внешний вид на всех платформах.
  4. Поддержка web и desktop. Возможность Flutter охватывать веб- и настольные платформы представляет собой значительное преимущество, позволяя разработчикам использовать одну и ту же кодовую базу для охвата широкого спектра устройств и расширяя аудиторию пользователей.
  5. Инновационная разработка UI. Flutter упрощает разработку UI, объединяя различные виджеты и предоставляя разработчикам почти полный контроль над их отображением. Эта функция, вместе с `ThemeData` для настройки внешнего вида приложений, делает Flutter привлекательным для разработчиков, сосредоточенных на пользовательском интерфейсе и пользовательском опыте.
  6. Hot Reload и Hot Restart. Эти функции Flutter очень ценятся разработчиками за поддержку способности быстро вносить изменения и исправлять ошибки, повышая производительность и делая процесс разработки более эффективным.
  7. Преимущество кроссплатформенной разработки. Flutter позволяет создавать визуально привлекательные, нативно скомпилированные мобильные, веб- и настольные приложения с использованием одной и той же кодовой базы, что упрощает процесс разработки и уменьшает необходимость в разных командах для разных платформ.

Проблемы и перспективы развития

Стоит отметить, что несмотря на множество своих преимуществ, у Flutter есть некоторые проблемы, например, относительная сложность поиска разработчиков Dart по сравнению с более устоявшимися языками, такими как JavaScript. Тем не менее, знакомство с концепциями Dart для разработчиков JavaScript и растущая популярность Dart помогают минимизировать эту проблему.

В целом будущее Flutter выглядит многообещающим благодаря продолжающимся разработкам, инструментам и улучшениям производительности. Обновления, такие как система дизайна Material 3, расширения UI Themes и улучшенные пакеты для разработчиков, свидетельствуют о приверженности Google к успеху этой платформы.

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

Больший размер приложений. Одной из заметных проблем с Flutter является более крупный размер создаваемых приложений. Приложения Flutter являются автономными и включают в себя весь необходимый код и не используют так активно элементы платформы. Это приводит к бóльшим размерам приложений по сравнению с другими приложениями, что может вызывать беспокойство у разработчиков, потому что по статистике магазинов чем больше приложение, тем менее вероятно, что его установят изначально, и более вероятно могут удалить впоследствии.

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

Ограниченная поддержка платформ. В настоящее время поддержка Flutter для платформ, таких как watchOS, tvOS или Apple CarPlay, ограничена. Это значительный недостаток, учитывая растущий рынок «умных» часов и других «умных» устройств. Несмотря на то что Flutter предлагает обходные пути, такие как добавление нативных расширений Apple Watch в приложения, отсутствие прямой поддержки для этих платформ может быть ограничением для некоторых разработчиков.

Обучение Dart. Для эффективного использования Flutter разработчикам необходимо изучить Dart, язык программирования Google. Dart не так широко известен или используется, как другие объектно-ориентированные языки, такие как C#, Java и JavaScript, что может увеличивать время обучения новых разработчиков. Тем не менее, его структурные и синтаксические сходства с этими языками делают его доступным для тех, кто знаком с объектно-ориентированным программированием.

Производительность на iOS. В редких кейсах оптимизация Flutter на Android может превосходить iOS. Это частично связано с тем, что Flutter — продукт Google и Android более широко используется в мировом масштабе. Разработчики, сфокусированные на рынке iOS, должны активнее следить за релизами Flutter, чтобы обеспечить наилучшую совместимость с устройствами Apple.

В 2021 году в одном из опросов команда Flutter пыталась узнать «Which factors affected users’ decisions to adopt Flutter?». Целью опроса было исследование причин использования разработчиками Flutter и проблем, с которыми они сталкиваются. Он показал высокий уровень удовлетворенности пользователей Flutter: 92% респондентов продемонстрировали положительное настроение. Это соответствует данным за предыдущие кварталы и свидетельствует о последовательной поддержке этой платформы. Уровень удовлетворенности Dart также увеличился и достиг 89%, в сравнении с 80% в 2019 году.

Опрос выявил ряд факторов, влияющих на внедрение Flutter.

Положительные факторы:

  • Общий код. Значительным фактором в пользу внедрения Flutter оказалась возможность использования одной кодовой базы, позволяющей разработчикам писать код один раз и развертывать его на нескольких платформах.
  • Готовые виджеты UI. Обширная библиотека готовых виджетов в Flutter также была важным фактором, так как ускоряет процесс разработки.
  • Hot Reload. Эта функция, позволяющая в режиме реального времени видеть изменения в коде, была выделена как ключевое преимущество, улучшающее производительность разработчиков.

Опасения:

  • Обязательства Google. Существуют опасения относительно долгосрочных обязательств Google по отношению к Flutter, что является критическим фактором для разработчиков, вкладывающих свое время и ресурсы в этот фреймворк.
  • Готовность фреймворка для масштабирования на крупные приложения. Некоторые респонденты выразили опасения относительно зрелости Flutter для масштабирования приложений для разработки на корпоративном уровне.
  • Экосистема пакетов. Доступность, качество и количество пакетов во Flutter вызывают опасения у некоторых разработчиков.

Опрос также показал, что значительная часть разработчиков (40%) в своих проектах Flutter использует облачные сервисы, причем Firebase является наиболее популярным, за которым следуют Google Cloud Platform (GCP) и Amazon Web Services (AWS). Удобство использования с Flutter было основной причиной выбора Firebase и GCP.

В отчете команда Flutter призывает сообщество вносить свой вклад в открытый исходный код, особенно в тех областях, где есть спрос на пакеты высокого качества, такие как мультимедийные и bluetooth-пакеты. Команда сосредотачивается на улучшении экосистемы пакетов и на повышении стабильности основного фреймворка.

Сравнение с другими фреймворками

Помимо Flutter есть и другие заметные фреймворки: React Native и Xamarin. Для понимания преимуществ Flutter и потенциальных областей для улучшения полезно сравнить разные кроссплатформенные технологии друг с другом.

  1. Производительность. Flutter выделяется своей производительностью, особенно в части плавных анимаций и отзывчивости пользовательского интерфейса, благодаря непосредственной компиляции в нативный код. Xamarin использует Mono для компиляции, но непосредственная компиляция Flutter в нативный код часто обеспечивает лучшую производительность. React Native, с другой стороны, использует мост JavaScript, что иногда может привести к медленной производительности.
  2. Пользовательский интерфейс. Самодельные виджеты Flutter обеспечивают высокую степень контроля над пользовательским интерфейсом, что позволяет создавать высококастомизированные и визуально привлекательные интерфейсы.
  3. Язык разработки. Выбор между Flutter, React Native и Xamarin также может зависеть от знакомства команды разработчиков с Dart, JavaScript или C#.
  4. Сообщество и ресурсы. Все три фреймворка имеют активные сообщества и обширные ресурсы, но React Native извлекает выгоду из более крупного сообщества JavaScript, а Xamarin хорошо интегрирован в экосистему .NET.
  5. Разработка для нескольких платформ. В то время как все три фреймворка поддерживают разработку для нескольких платформ, подход Flutter и Xamarin может быть более эффективным по сравнению с решением React Native, основанным на мосте.

Будущее Flutter

Процесс адаптации Flutter продолжает усиливаться с ростом числа разработчиков и компаний, интегрирующих его в свои процессы разработки. Способность фреймворка создавать высококачественные приложения, близкие к нативным, на разных платформах является ключевым фактором, способствующим этому росту. Поскольку бизнес продолжает искать эффективные и экономичные решения для разработки приложений, привлекательность Flutter, скорее всего, будет расти дальше.

Технологическое развитие Flutter — это еще один фактор, формирующий его будущее. Постоянные усовершенствования в Dart и улучшения в производительности и возможностях пользовательского интерфейса Flutter указывают на траекторию развития в сторону более надежных и универсальных решений для разработки приложений.

Расширение Flutter на разработку web- и desktop-приложений открывает новые возможности для фреймворка. Это соответствует более широкой отраслевой тенденции к многоплатформенным взаимодействиям.

Сообщество Flutter играет ключевую роль в его будущем. Живое и растущее сообщество означает больше общих знаний, лучшую поддержку, и по мере роста сообщества растет и экосистема вокруг Flutter, создавая более широкий спектр сторонних инструментов и библиотек.

Одними из ключевых характеристик Flutter являются подход с одним исходным кодом, богатый набор виджетов пользовательского интерфейса и функция hot reload, что делает его привлекательным выбором для разработчиков, стремящихся создавать высококачественные, эффективные и привлекательные приложения для разных платформ.

Мы также рассмотрели проблемы, с которыми сталкивается Flutter, включая вопросы размера приложения, обучение Dart и размера его экосистемы. Расширение за пределы мобильных устройств, постоянное технологическое развитие и сильное сообщество указывают на то, что Flutter будет продолжать развиваться и играть значительную роль в области разработки приложений.

Flutter представляет собой значительный сдвиг в разработке кроссплатформенных приложений, предлагая сочетание эффективности, производительности и универсальности. Команда Flutter также подталкивает людей пользоваться BaaS (backend as a service), в особенности Firebase, что в итоге ускоряет разработку и позволяет упростить вход разработчиков в технологию.

Существуют гигантские аутсорсинговые компании, которые специализируются на Flutter и создают большое количество проектов, используя только Flutter и вносят свой вклад в Open Source. Примеры: Very Good Ventures и Surf.

Мы разобрали основные опасения разработчиков, использующих Flutter, и можем констатировать, как с каждым годом эти проблемы все больше решаются. Наибольший страх представляет собой непредсказуемость Google, которая любят закрывать свои продукты, но во Flutter они вовлечены путем обширного использования в нескольких собственных приложениях, а также в экспериментальной операционной системы Fuchsia.

Я думаю, Flutter прочно займет свое место на рынке и останется навсегда, потому что большинство нынешних приложений не используют все возможности смартфона, не требуют максимальной загрузки процессора и не используют сложную логику при взаимодействии с датчиками. На данный момент компании абсолютно точно готовы инвестировать в разработку внутренних приложений (для складов, админ-панелей, обслуживания торговых точек) и не видят никаких рисков. В случае приложений для общего пользования есть множество примеров от интернет-банкинга до приложения BMW. Скорее всего Flutter не сможет приблизиться к пиковым возможностям нативных платформ в вопросах работы с ИИ, GPS, дополненной реальности и 3D-игр, но большинству это и не нужно.