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

Сейчас ситуация снова меняется.

Microsoft продолжает изменять Windows, вызывая недовольство у части пользователей. Более доступные ноутбуки Apple завоевывают популярность среди разработчиков и креативных специалистов. Valve продвигает Linux в сегменте массовых игр, и SteamOS больше не выглядит как эксперимент из прошлой эпохи. В то же время Google готовит более серьезное десктопное направление развития Android-устройств.

Для разработчиков приложений фрагментация рынка усложняет выбор технологического стека.

И как это ни странно, именно это может стать для Flutter самой большой возможностью.

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

Причины очевидны.

Производительность снова имеет значение.

Electron решил задачу кроссплатформенной разработки десктопных приложений для целого поколения компаний, но ценой высокой нагрузки на память, увеличения времени запуска и ощущения, что каждое десктопное приложение работает внутри собственного браузера. Пользователи мирились с этим, поскольку выигрыш в производительности труда разработчиков был огромен. Visual Studio Code, Discord, Slack и многие другие успешные продукты доказали, что «нативный» пользовательский опыт больше не является обязательным для массового внедрения.

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

Многих разработчиков привлекает такой баланс.

Инженеры встраиваемых систем используют Flutter для инструментов на базе Linux. Корпоративные разработчики создают внутреннее десктопное программное обеспечение, ориентированное в первую очередь на Windows, но с возможностью последующего расширения на macOS и Linux с относительно небольшими доработками. Команды, разрабатывающие коммуникационные платформы, CRM-системы, медиаплееры и утилиты, все чаще сообщают, что десктопная версия Flutter «работает как надо».

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

Интеграция Flutter с нативным кодом через FFI (Foreign Function Interface — интерфейс внешних функций) создает уникальную промежуточную позицию. Разработчики могут реализовывать низкоуровневую функциональность на C или C++, напрямую взаимодействовать с API операционной системы и при этом сохранять основную логику приложения на Dart. Эта возможность важна для десктопного ПО, где доступ к аппаратному обеспечению, системным событиям, нативным сервисам и пользовательским операциям, критичным к производительности, по-прежнему играет ключевую роль.

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

Рост популярности Flutter на настольных платформах происходит в примечательный исторический момент.

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

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

Canonical, похоже, четко осознает это. В некотором смысле энтузиазм в отношении Flutter для настольных систем сегодня сильнее в экосистеме Linux, чем внутри самой Google.

Тем не менее, Flutter для десктопных приложений не лишен недостатков.

Наиболее часто адресуемое ему замечание обосновано: стандартные интерфейсные решения Flutter по-прежнему сильно ориентированы на мобильные паттерны взаимодействия.

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

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

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

Flutter здесь совершенствуется, но этот процесс развивается постепенно.

Однако есть и обнадеживающие признаки.

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

На уровне движка такие улучшения, как Impeller, также меняют восприятие. Производительность на macOS значительно повысилась, поддержка Windows продолжает развиваться. Экосистемы плагинов, которые когда-то отставали (отчеты о сбоях, интеграция хранилищ, системы автоматического обновления), наконец-то становятся более зрелыми.

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

У Flutter на десктопных платформах это ощущение усиливается.

Завоюет ли он рынок?

Вероятно, не в абсолютном смысле.

Веб-приложения остаются чрезвычайно популярными, потому что развертывание практически не создает проблем. Для многих бизнес-продуктов достаточно вкладки браузера. С экономической точки зрения веб-развертывание явно выгоднее, если нет необходимости в нативных возможностях.

Но доминирование на рынке не всегда является критерием ценности продукта.

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

  • высокой производительности;
  • интеграции с нативным кодом;
  • ориентации на несколько операционных систем;
  • менее тяжеловесного фреймворка, чем Electron;
  • менее затратного процесса создания, чем традиционная нативная разработка.

Это уже большой рынок.

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

Прежнее предположение о том, что настольные приложения должны идеально соответствовать внешнему виду нативной платформы, значительно ослабло.

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

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


Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи Yuri Novicow: Will Flutter dominate the desktop apps development market?

Предыдущая статья5 ключевых понятий инжиниринга данных