Оглавление

    Flutter или Xamarin: что выбрать для кроссплатформенной разработки

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

    Краткий обзор Flutter

    Flutter был создан компанией Google в 2017 году. Этот фреймворк работает на языке Dart, который тоже разработали в Google. Flutter знаменит тем, что он хорошо справляется с ресурсозатратной графикой и анимациями. При этом он обеспечивает производительность приложений почти равную нативной. Среди популярных приложений, написанных на Flutter — b2b приложение Росбанка, приложения сети аптек Ригла, видеостриминговый сервис The Hole.

    Ещё больше примеров приложений на Flutter смотрите тут

    Краткий обзор Xamarin

    Кроссплатформенный фреймворк Xamarin разработан одноимённой американской компанией в 2011 году. Технология основана на проекте с открытым исходным кодом Mono и включает инструменты для разработки приложений под Android и iOS.

    В 2016 году Microsoft купили Xamarin и сделали его частью фреймворка .NET. Xamarin работает на языке C#. На Xamarin разработаны приложения BBC Good Food, UPS Mobile, Alaska Airlines.

    Стоимость

    Flutter — набор инструментов с открытым исходным кодом. Он доступен всем разработчикам бесплатно: для коммерческого и некоммерческого использования.

    Xamarin — тоже проект с открытым исходным кодом и доступен бесплатно для физлиц и небольших организаций. Но так как Xamarin тесно связан с Visual Studio, крупным компаниям нужно купить годовую подписку на Visual Studio Enterprise. Цены на неё варьируются от 59 000 до 442 000 рублей в год за одного пользователя.

    Итог: побеждает Flutter.

    Архитектура и переиспользование кода

    Xamarin работает с языком C#. Так как это один из языков фреймворка .NET, он открывает доступ к множеству фич .NET, например, LINQ Query Syntax и асинхронному программированию. Благодаря Xamarin.Forms API и стандартным элементам интерфейса, переиспользование кода может достигать 96%.

    К тому же в Xamarin доступны инструменты Xamarin.Android и Xamarin.iOS, с помощью которых можно внедрить в приложение фичи, переиспользуя до 75% кода. Код в Xamarin можно переиспользовать только в рамках стека технологий .NET.

    Flutter использует язык Dart, а большинство его компонентов встроены во фреймворк. Благодаря этому, у разработчиков есть все необходимые инструменты для кроссплатформенной разработки. Приложения на Flutter состоят из виджетов, которые легко кастомизировать и подстроить под внешний вид нативного UI. Для рендеринга есть собственный мощный движок Skia на C++. Процент переиспользуемого кода во Flutter достигает 80%. 

    У обоих фреймворков надёжная архитектура и есть собственная техподдержка — Microsoft (Xamarin) и Google (Flutter).

    Итог: очевидного победителя нет.

    Разработка и тестирование

    Во Flutter есть множество виджетов и API, которые упрощают процесс разработки, а также фича Hot Reload, которая позволяет разработчикам видеть изменения в приложении, как только они внесли правку в код, без необходимости повторно собирать всё приложение целиком.

    Также фреймворк поддерживает возможность тестирования на уровне интеграции (всего приложения целиком или его части), виджета (отдельного компонента) или сегмента (отдельной функции или класса). Google составили исчерпывающую документацию по тестированию на Flutter.

    У Xamarin есть фича, похожая на Hot Reload во Flutter, — Live Reload. Она позволяет разработчикам видеть, какие изменения внесли в код в реальном времени без необходимости компилировать или разворачивать приложение. У этого фреймворка есть собственная среда Test Cloud и поддержка тестирования сегментов и UI в Visual Studio. Кроме того, можно использовать сторонние инструменты тестирования: Appium, XCUITest или Expresso. 

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

    Итог: побеждает Flutter.

    Производительность и UI

    У приложений на Xamarin хорошая производительность. Однако многое зависит от используемого вида фреймворка Xamarin. Инструменты Xamarin.Android и Xamarin.iOS обеспечивают производительность, сопоставимую с нативом, так как используют нативные компоненты. Однако у Xamarin.Forms производительность ниже, особенно в проектах с тяжёлой графикой.

    Несмотря на то, что Xamarin.Forms использует одни и те же компоненты UI на нескольких платформах, многие из них приходится писать отдельно под iOS и Android. Это значит, что Xamarin может оказаться не лучшим выбором для приложений со сложным UI.

    Так как для взаимодействия с нативными компонентами фреймворку Flutter не требуется JavaScript-мост, а в арсенале у него есть мощный графический движок Skia, написанные на нём приложения обладают максимальной производительностью, реже тормозят и «съедают» кадры. Flutter не использует нативные элементы, а обновляет внешний вид (иконки, шрифты) и характеристики (скроллинг, навигация) виджетов в соответствии с визуальным стилем платформ. Это сделано с помощью систем форматирования Material Design и Cupertino.

    Итог: побеждает Flutter.

    Простота изучения

    Чтобы писать приложения на Flutter, разработчик должен знать Dart — относительно новый язык программирования. По сути, он больше нигде не используется, кроме Flutter. Поэтому, если вам не знаком Dart по другим проектам Google, придётся учить новый язык. Хорошая новость в том, что выучить его довольно легко, если вы знакомы с JavaScript, C++ или другими объектно ориентированными языками.

    Xamarin работает на C#, одном из пяти самых популярных языков программирования. Он относится к группе языков .NET, поэтому любой, кто работал в экосистеме Microsoft, сможет без труда начать писать на Xamarin. Опыт работы в Visual Studio Code станет ещё одним большим плюсом, так как Xamarin интегрирован со средой разработки Visual Studio.

    Итог: побеждает Xamarin.

    Популярность среди разработчиков и поддержка сообщества

    По итогам 2021 года Flutter стал первым по популярности кроссплатформенным фреймворком, в то время как Xamarin занял пятое место. Процент разработчиков, которые выбирают Flutter, вырос с 39% до 42% за период с 2020 по 2021 годы, а число сторонников Xamarin сократилось с 14% до 11%.

    Снижение популярности может замедлить процесс разработки, так как число разработчиков на непопулярном фреймворке становится всё меньше. Кроме того, из-за этого появляется меньше сторонних библиотек. Тем не менее обе технологии существуют при поддержке техногигантов Google и Microsoft, а значит находят своих сторонников.

    Итог: побеждает Flutter.

    Подведём итоги

    Оба фреймворка предоставляют сопоставимые по эффективности инструменты и возможности для разработки как простых, так и сложных кроссплатформенных приложений. Однако Xamarin нельзя использовать бесплатно в масштабных коммерческих целях, а число его сторонников в последнее время сокращается. Возможно, этот фреймворк лучше выбрать тем, кто уже работает в экосистеме Microsoft, или если остальные сервисы написаны на языках .NET. Несмотря на то, что простые приложения на Xamarin почти так же производительны, как нативные, не стоит забывать, что в приложениях с тяжёлым UI кадровая частота может снижаться.

    Flutter же справляется со сложными анимациями и тяжёлой графикой легче остальных кроссплатформенных технологий. Благодаря широкому выбору инструментов тестирования и кастомизируемых виджетов, он идеально подходит для разработки любых приложений: от MVP до сложных приложений с богатым UI. Для некоторых  необходимость изучить относительно новый язык Dart может оказаться препятствием. Однако учитывая стабильно растущую популярность фреймворка, разработчики могут быть уверены — на приобретённые навыки появится спрос.

    У компании Surf более 10 лет опыта разработки приложений. В своих проектах мы активно используем Flutter. Хотите разработать приложение? Заполните небольшую анкету, а мы свяжемся с вами в течение суток и выполним расчёты для вашего проекта.