Существует ли кроссплатформа?

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

26 / 07 / 19

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

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

Разберемся, существует ли кроссплатформа, или же это просто неудачные эксперименты. Рассмотрим три подхода к кроссплатформенной разработке - Xamarin, React Native и PWA.




Xamarin 


Из всех подходов, Xamarin больше всего напоминает нативную разработку. Логика пишется на объектно-ориентированном языке С#, а UI реализован на XAML. Удобен, если нужно быстро написать приложение, где пользовательский интерфейс не важен. Ему доступен полный набор функций .NET Core, но на этом преимущества этой платформы и заканчиваются. Xamarin был настолько перспективным, что его купил Microsoft, но несмотря на это, лучше его поддерживать не стали. Недостатки, которые были на старте, остались до сих пор. Их у сервиса хватает:

  • Маленькое комьюнити. Если возникают проблемы, трудно найти решение.
  • Маленькое количество библиотек. Те, которые есть, обновляются редко.
  • Нет согласованности UI. Те же элементы интерфейса выглядят по-разному не только на разных платформах, но даже на разных версиях андроид.
  • Несовместим со сложным UI. Долгий рендер и отсутствие гибкости.
  • Большой размер.
  • Проблемы со стабильностью. Постоянные баги и вылеты.

Когда использовать Xamarin:

  • Приложение простое с архитектурой “клиент-сервер”.
  • Не требуются дополнительные библиотеки.
  • UI не важен.
  • Нет ресурсоемких процессов.


Когда лучше отказаться:

  • Большое количество стилей и верстки.
  • UI специфичен.
  • UI должен быть одинаковым на всех платформах.




React Native и Expo


React Native — это действительно нативный JavaScript-фреймворк. В то время как другие, например Apache Cordova, заворачивают приложение в WebView, этот использует операционную систему девайса.

У React Native большое комьюнити. Многообразие библиотек на нативных языках можно использовать в том числе и для создания UI элементов. По структуре он похож на React.js, поэтому с ним легко работать веб-разработчикам.

Expo облегчает жизнь при работе с React Native. Это SDK, который имеет всё необходимое для мобильной разработки под капотом (например, уведомления, NFC и другие). В React Native код пишется с учетом платформы. Expo позволяет этого избежать, так как реализация происходит на их серверах.

Для отладки у Expo есть отдельный инструмент — Expo Client. Он устанавливается на телефон разработчика и позволяет отлаживать без подключения к компьютеру. Это делается также при помощи их серверов. Expo Client полезен для быстрого просмотра демоверсий различных библиотек. Для этого сканируется QR-код, как это реализовано здесь.

Единственный минус в том, что он не поддерживает нативные компоненты. Следовательно, библиотеки, написанные на нативных языках использовать нельзя. Но если этого не требуется, то Expo позволяет написать клиентское приложение еще быстрее.



Progressive Web Applications


Progressive Web Applications (PWA) — новая технология, которая набирает популярность. Несмотря на то, что это не мобильная разработка, ее результатом может быть полноценное мобильное приложение. При необходимости его можно загрузить в магазин, но оно работает прямо из браузера. По сути это веб-сайт, который работает в оффлайн режиме. Всё реализовано с помощью Service Worker. Это JavaScript-код, который работает в бэкграунде и производит кэширование. Помимо этого он отвечает за обновления и получение уведомлений.

На что способны PWA, можно посмотреть на whatwebcando.today. Следует отметить, что возможностей у Safari меньше, чем у Chrome, поэтому на iOS функционал реализован лишь частично. При разработке рекомендуется использовать Lighthouse. Это расширение проводит анализ сайта. В результате мы узнаем является ли наш проект PWA. Если нет, то отображаются невыполненные пункты. 

Если мобильная версия сайта вас полностью устраивает по функционалу и UX/UI, то ее можно довольно просто обернуть в PWA. Вдобавок к приложению, которое можно залить на мобильный маркет, вы получаете десктопную версию на Mac, Windows и Linux. Если уведомления для вас не так важны, то это лучший вариант.

4.8