УДК 004

Обзор и сравнение платформ мобильной разработки

Косарев Глеб Станиславович – магистрант Уфимского университета науки и технологий

Аннотация: В статье рассматриваются основные платформы мобильной разработки. Классифицируются и описываются подходы к разработке. Проводится анализ фреймворков кроссплатформенной разработки и сравнение по заданному набору характеристик. Делаются выводы о наиболее предпочтительных на данный момент фреймворках.

Ключевые слова: мобильная разработка, кроссплатформенная разработка, нативная разработка, React Native, Ionic, NET MAUI, Flutter.

Введение

Мобильные телефоны стали неотъемлемой частью нашей жизни. На данный момент через мобильные телефон проходит почти 60% трафика [1], из-за чего в условиях рынка игнорировать телефон как платформу становится невозможно. При этом мобильные приложения предпочтительнее веб-сайтов по ряду причин:

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

О превосходстве мобильных приложений свидетельствуют и данные исследований: 88% времени пользователи проводят в приложениях, и только 12% – на веб-сайтах [2].

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

Классификация платформ мобильной разработки

Существует два основных подхода к мобильной разработке: нативный и кроссплатформенный.

Нативная разработка предполагает создание приложения под конкретную операционную систему. Например, для Android будет использован Java, а для iOS – Swift.

Кроссплатформенная разработка – это создание одного приложения под несколько операционных систем. Это достигается путем использования общего кода при помощи кроссплатформенных фреймворков.

Плюсы нативной разработки:

  1. При нативном подходе разработчик имеет доступ к конкретным функциям выбранной ОС, а сложные особенности (например AR/VR), как правило, недоступны при использовании кроссплатформенных фреймворков;
  2. Скорость работы повышается, так как используется «родной» для платформы язык;
  3. Нативная разработка предоставляет большую гибкость при разработке UI/UX за счет возможности использования сложных макетов и полной настройки элементов интерфейса.

Плюсы кроссплатформенной разработки:

  1. Снижение стоимости разработки за счет разработки одного предложения для нескольких (как правило двух) целевых платформ;
  2. Достаточно одной команды разработки, что упрощает поиск специалистов;
  3. Приложения под разные платформы имеют общую кодовую базу, что упрощает добавление новых функций или изменение имеющихся.

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

Фреймворки кроссплатформенной разработки

Рассмотрим и сопоставим несколько фреймворков кроссплатформенной разработки. Для этого выделим интересующие нас критерии:

  • язык разработки;
  • производительность;
  • работа с интерфейсами;
  • сообщество и поддержка.

Для анализа были выбраны следующие фреймворки:

  • NET MAUI;
  • React Native;
  • Flutter;

Язык разработки

NET MAUI использует язык C#.

React Native использует язык JavaScript с библиотекой React.JS

Flutter использует свой собственный язык Dart, основанный на JavaScript

Ionic использует HTML, CSS и JavaScript + JS-фреймворки (Angular, React, Vue)

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

.NET MAUI обладает производительностью, близкой к нативной

React Native отличается высокой производительностью. Согласно тестам производительности [4], React Native показал результаты, близкие к нативному приложению на языке Swift.

Flutter демонстрирует наилучшую производительность среди конкурентов за счет того что он единственный не использует для рендера инструментов связи между приложением и ОС. Сравнение с React Native [5] показало, что Flutter показывает более высокие результаты производительности в условиях высоких нагрузок (например, при воспроизведении тяжелой анимации), а в обычных условиях расходует меньше заряда батареи и памяти устройства.

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

Работа с интерфейсом

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

React Native работает схожим образом: интерфейс создается при помощи использования языка разметки JSX, а затем отрисовывается при помощи нативных средств на целевой платформе

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

Ionic использует технологию WebView для рендера html-кода как веб-страницы.

Удобство использования и скорость разработки

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

React Native поддерживает функцию Hot Reload и является относительно простым в изучении, особенно для веб-разработчиков.

Flutter поддерживает функцию Hot Reload и является относительно простым для изучения, однако, требует изучения языка Dart, что не должно составить проблем при наличии опыта работы с Си-подобными языками

Ionic не поддерживает функцию Hot Reload, но является относительно простым в изучении, особенно при условии наличия опыта веб-разработки.

Сообщество

Для анализа были использованы данные ресурса Statista [6]. На данный момент отсутствует статистика популярности .NET MAUI, но мы можем использовать статистику его предшественника – Xamarin.Forms.

Xamarin.Forms и Ionic показывают спад популярности за последние 3 года, тогда как 80% опрошенных используют Flutter и React Native. При этом, Flutter является относительно новым фреймворком и, как видим, быстро набирает популярность.

Итоги сравнения

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

React Native использует самый популярный в мире язык программирования (JavaScript) [3], а также предоставляет высокие показатели производительности и интерфейс, близкий к нативному, при использовании общего кода. Особенно хорошо он подходит для разработки мобильного приложения на основе сайта.

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

Ionic и NET MAUI менее предпочтительны, однако, могут подойти для некоторых сценариев:

Ionic выгодно использовать для разработки мобильного приложения в случае если у разработчика есть опыт работы с HTML+CSS+JS, а размер приложения относительно невелик

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

Выводы

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

Список литературы

  1. Desktop vs Mobile Market Share Worldwide: [Электронный ресурс] // StatCounter. – Режим доступа: https://gs.statcounter.com/platform-market-share/desktop-mobile/worldwide/#yearly-2011-2022.
  2. Yoram Wurmser. The Majority of Americans’ Mobile Time Spent Takes Place in Apps: [Электронный ресурс] // Insider Intelligence. – Режим доступа: https://www.insiderintelligence.com/content/the-majority-of-americans-mobile-time-spent-takes-place-in-apps.
  3. 2022 Developer Survey: [Электронный ресурс] // Stack Overflow. – Режим доступа: https://survey.stackoverflow.co/2022/#most-popular-technologies-language.
  4. Nat Chrzanowska. React Native vs Swift - Performance and Development Comparison: [Электронный ресурс] // Netguru. – Режим доступа: https://www.netguru.com/blog/swift-vs-react-native
  5. Flutter vs. React Native: что выбрать для вашего мобильного приложения: [Электронный ресурс] // Surf.ru. – Режим доступа: https://surf.ru/flutter-vs-react-native-chto-vybrat-dlya-vashego-mobilnogo-prilozheniya.
  6. Cross-platform mobile frameworks used by software developers worldwide from 2019 to 2021: [Электронный ресурс] // Statista. – Режим доступа: https://www.statista.com/statistics/869224/worldwide-software-developer-working-hours.

Интересная статья? Поделись ей с другими: