Контакты

Россия 196084 , Санкт-Петербург, ул. Заозерная, дом №8, корпус 2, Литера А, офис 212

Мы работаем по будням с 10.00 до 19.00 +7 (495) 215-53-16 +7 (812) 748-20-96 info@notissimus.com
Социальные сети
Flutter vs. React Native vs. Xamarin

Сравнение самых популярных кроссплатформенных технологий разработки мобильных приложений на основе данных

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

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

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

Эти три технологии сравниваются в данном документе по ряду показателей.

Рубрика LT;DR

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

Чтобы составить общий рейтинг трех технологий, баллы начислялись на основе оценок по каждой метрике:

  • Первое место – 3 очка
  • Второе место – 2 очка
  • Третье место – N/A или 1 очко

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

Введение

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

В этом разделе в порядке от самой старой до самой новой технологии представлены все три основные технологии кросс-платформенной разработки.

Xamarin

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

React Native

React Native был выпущен компанией Facebook (сейчас Meta) в 2015 году. Как и Flutter, React Native – это псевдодекларативный фреймворк пользовательского интерфейса, в котором приложения разрабатываются с использованием готовых или созданных на заказ “компонентов” пользовательского интерфейса. Преимущество такого подхода заключается в том, что он делает разработку чрезвычайно быстрой, а создание пользовательских интерфейсов, близко напоминающих нативные паттерны проектирования, значительно упрощается. Надежная коллекция библиотек и плагинов позволяет расширять фреймворк и/или включать в него функциональность, специфичную для конкретной платформы, не требуя от разработчиков реализовывать поддержку этих функций вручную. React Native гораздо популярнее Xamarin, но, согласно отраслевым исследованиям, его популярность быстро снижается в последние пару лет. Некоторые аналитики указывают на связь между React Native и Meta, которая сталкивается с рядом культурных и политических проблем, как на часть причины снижения вовлеченности разработчиков. Разработчики также гораздо меньше удовлетворены разработкой React Native по сравнению с Flutter.

Flutter

Flutter – самый новый фреймворк из трех, рассматриваемых в этом документе, и был представлен компанией Google в 2017 году. Разработка на Flutter очень похожа на React Native в том смысле, что Flutter также является псевдодекларативным фреймворком, в котором приложения строятся из “виджетов”, которые либо включены в Flutter SDK, либо созданы на заказ для конкретного приложения. Главная причина, по которой Flutter выделяется среди конкурентов, – это его подход к разработке пользовательского интерфейса. Приложения Flutter могут быть созданы так, чтобы выглядеть абсолютно одинаково на всех платформах, поскольку Flutter использует холсты, позволяющие напрямую контролировать каждый пиксель на дисплеях целевых платформ. Это позволяет очень быстро разрабатывать и поддерживать пользовательский интерфейс, который одновременно является визуально привлекательным и соответствует стандартам и шаблонам проектирования платформ. Flutter также является самым популярным кроссплатформенным фреймворком, и его популярность продолжает расти очень быстро. Документация и сообщество Flutter превосходны и обеспечивают сильную поддержку командам разработчиков, использующих Flutter. Однако, поскольку это самый молодой фреймворк в списке, опубликованных приложений, использующих Flutter, меньше, чем React Native. Также очень сложно найти разработчиков с опытом разработки на Flutter.

Вовлеченность/ удовлетворенность разработчиков

Stack Overflow ежегодно проводит опрос разработчиков, в котором они отвечают на вопросы о том, как они учатся, какие инструменты используют и какие функции им больше всего нравятся. Среди изучаемых показателей есть показатели “Любимые и нелюбимые” для различных языков и технологий. Эта статистика часто используется для того, чтобы рассказать об удовлетворенности разработчиков технологиями, которые они используют и потенциально будут использовать.

Среди Flutter, React Native и Xamarin Flutter является самым любимым фреймворком: 68,17% респондентов отметили, что “любят” этот фреймворк. На втором месте оказался React Native с 58,08%. Xamarin оказался наименее “любимым” фреймворком с 43,32%.

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

Среди Flutter, React Native и Xamarin, Flutter является самой популярной технологией на платформе Stack Overflow по состоянию на 6/9/2022 года, и ее активность примерно в два раза выше, чем у React Native, занимающей второе место. Заметим, однако, что популярность на Stack Overflow может быть обоюдоострым мечом для технологий разработки. С одной стороны, популярность на платформе указывает на общую вовлеченность в технологию и общий интерес со стороны разработчиков. Однако это также означает, что помощь с Flutter нужна большему количеству разработчиков, чем с React Native или Xamarin. Потенциально это может указывать на технологию с более сложной кривой обучения или менее эффективной документацией.

Обращение на Stack Overflow также может выявить тенденции относительного роста популярности каждой технологии. За последние несколько лет и в 2022 году популярность Flutter резко возросла. Можно заметить, что популярность React Native выравнивается. Xamarin, безусловно, является наименее популярной кроссплатформенной технологией, и ее популярность снижается уже несколько лет.

Глобальная популярность

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

В 2021 году Flutter был самым популярным кроссплатформенным мобильным фреймворком, используемым разработчиками программного обеспечения во всем мире, с 42%. React Native находится на втором месте с 38%. Xamarin находится на далеком третьем месте с 11%.

Вовлеченность в проекты с открытым исходным кодом

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

Один из методов, с помощью которого разработчики могут выразить свою поддержку проекту на GitHub, – это “отметить” проект звездочкой. Количество звезд для каждого проекта можно отследить с течением времени, чтобы получить представление о степени поддержки разработчиками каждого проекта с открытым исходным кодом.

Примерно с 2020 года Flutter превзошел React Native по общему количеству звезд для каждого из их репозиториев с открытым исходным кодом.

Скорость разработки фреймворка

Еще одно представление, которое можно получить из данных, доступных в репозиториях GitHub для Flutter и React Native, – это скорость разработки самих фреймворков. Для того чтобы компания установила зависимость от Flutter или React Native (или Xamarin), важно определить, насколько быстро фреймворк будет постоянно совершенствоваться и исправлять ошибки. Эта способность может быть показана несколькими способами, один из которых – скорость слияния нового кода в основные ветки каждого репозитория.

Flutter

React Native

Хотя и Flutter, и React Native являются высокоскоростными проектами с частыми коммитами и слияниями, поддерживаемыми как Google/Meta, так и сообществами вокруг каждого проекта, скорость разработки Flutter примерно в два раза выше, чем React Native.

Тематические исследования/заметные приложения

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

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

В этом разделе не рассматриваются приложения, созданные теми же компаниями, которые работают над самими технологиями кросс-платформенной разработки. Например, несколько приложений Google созданы с использованием Flutter, а несколько приложений Meta разработаны с использованием React Native.

Flutter

  • Philips Hue
  • BMW
  • iRobot
  • Toyota
  • Sonos

React Native

  • Tesla
  • Skype
  • Uber Eats
  • Walmart
  • Delivery.com

Xamarin

  • UPS
  • Alaska Airlines
  • Seeing AI