Чаще всего решение создать мобильное приложение связано с необходимостью в короткие сроки догнать конкурентов, либо же исследовать ранее недоступную бизнес-возможность. В обоих случаях время вывода продукта на рынок становится ключевым фактором, влияющим на выбор технологий разработки.
При создании мобильных приложений существует два принципиально разных подхода: нативная и кроссплатформенная разработка.
Нативные — это программы, которые разрабатываются для устройств одной платформы и требуют от разработчиков знания соответствующих языков программирования и умения работать со специальными инструментами для реализации отдельных функций.
Соответственно, для каждой платформы создается отдельное приложение. Недостатки этого подхода очевидны— разработка занимает больше времени и обходится заказчику дороже.
Кроссплатформенные обычно работают подобно сайту внутри браузера, поэтому их создают с использованием веб-технологий, таких как HTML, CSS и JavaScript.
Для создания таких приложений существует ряд различных фреймворков, которых с каждым годом становится все больше. Вот самые популярные из них: React Native, Cordova, Ionic, Xamarin, Titanium Appcelerator и Vue Native.
В отличии от нативной, кроссплатформенная разработка позволяет написать один код для iOS и Android, что на первый взгляд существенно сокращает сроки и экономит деньги.
Действительно ли кроссплатформенные приложения дешевле?
Чтобы дать ответ на этот вопрос, стоит отметить, что мобильный телефон — это очень личное устройство, с которым люди ни на минуту не расстаются и решают с его помощью множество повседневных задач. Сегодня оставить дома бумажник не так страшно как забыть телефон, ведь даже расплачиваемся мы чаще всего именно последним.
Но так было не всегда, этому предшествовал длительный процесс.
Если сейчас вам придется ездить по левой стороне дороги, это вызовет массу неудобств. Так и пользователям iPhone будет неудобно пользоваться смартфоном на Android из-за различий в принципах взаимодействия.
Создавая единый пользовательский интерфейс для двух платформ, приходится игнорировать официальные рекомендации ОС, тем самым обрекая людей на неудобства.
Освоив одну операционную систему, пользователям тяжело привыкать к другой, и если приложение не предлагает что-то действительно революционное, им никто не будет пользоваться.
В плане производительности кроссплатформенные решения также уступают нативным. Это неоспоримый факт, который вынуждены признать даже самые ярые сторонники не нативного подхода.
Почему же кроссплатформенные приложения работают медленнее?
На это влияет несколько факторов.
Когда социальная сеть LinkedIn отказалась от кроссплатформенной версии в пользу нативной, Киран Прасад — старший директор по мобильной разработке — прокомментировал ситуацию следующим образом:
«Кроссплатформенной разработке критически не хватает хорошего инструментария, например, надежных отладочных средств, которые бы помогали своевременно выявлять утечки памяти».
С этим сложно поспорить. Работая с Android и iOS, разработчики имеют дело с огромными корпорациями, которые прикладывают массу усилий, чтобы предоставить все необходимое для решения технических трудностей. Этим не может похвастать ни один кроссплатформенный фреймворк.
Почти весь функционал кроссплатформенного приложения сильно зависит от интернета, потому что архитектура использует преимущественно веб-технологии. Как правило, только те составляющие программы, которые написаны нативными методами, доступны офлайн.
Также кроссплатформенные приложения не могут напрямую использовать возможности устройства (распознавание геопозиции, список контактов и т. д.), и для этого используются специальные нативные плагины, что тоже плохо сказывается на скорости приложения. И реализация подобных возможностей сведет на нет все экономические преимущества. Это же касается работы с некоторыми API, которые не поддерживают работу с гибридными приложениями.
В итоге кроссплатформенные решения больше весят и хуже оптимизируются.
Чем может грозить плохая производительность?
По данным исследований, 79% пользователей дадут второй шанс приложению, если он заработало некорректно при первом запуске, но лишь 16% готовы на третью попытку.
Выбирая гибридную разработку, необходимо понимать, что производительность и пользовательский опыт будет оставлять желать лучшего.
Таким образом, разработка гибридная разработка поможет сэкономить деньги в начале, но будет обходится значительно дороже в долгосрочной перспективе, когда потребуется расширять функционал.
Почему тогда кроссплатформенные решения становятся все популярнее?
Существует основное заблуждение, которое и подталкивает к выбору кроссплатформенной разработки — якобы ПО должно быть одновременно доступно на iOS и Android.
Возьмем, например, сверхпопулярный Instagram. В 2010 году в разделе часто задаваемых вопросов представители компании заявили: «В настоящее время мы работаем над тем, чтобы сделать версию для iPhone максимально стабильной. Только после этого мы рассмотрим другие платформы». Instagram потребовалось два года, чтобы выпустить версию для Android.
Кстати, мы уже рассказывали, почему обычно сначала ведется разработка для iOS, и в каких случаях рекомендуется начинать с Android.
Человеческий фактор, о котором не принято говорить
Кроссплатформенная разработка подразумевает, что код нужно написать всего один раз, и создать такое приложение может фронтенд-разработчик, обладающий весьма базовыми знаниями о мобильной архитектуре.
Поэтому, если компания занимается веб-разработкой, то для создания МП легче обучить своих сотрудников, а не нанимать отдельных мобильных разработчиков. Отсюда большая фрагментация, которая свойственна веб-разработке.
Как мы уже писали выше, кроссплатформенных решений очень много, и все они между собой соревнуются за звание лучшего. Сейчас это бесспорно React Native, но существует мнение, что скоро первенство перейдет Vue Native. Если это действительно произойдет, то поддерживать код на React Native со временем будет все сложнее. В случае с нативным подходом фрагментация намного ниже, новые технологии внедряются постепенно, поэтому обычно мобильные разработчики знают сразу несколько языков.
Что же выбрать?
Если задача состоит в том, чтобы создать демонстрационную версию приложения, доступны только фронтенд разработчики, сроки поджимают и бюджет ограничен, то разумно выбрать кроссплатформенное приложение, во всех остальных случаях нативный подход даст больше преимуществ.