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

Под нативной разработкой (от английского native – родной) подразумевается использование оригинальных языков и инструментов разработки мобильной операционной системы.

Разработка приложений под ios происходит в среде разработки XCode на языке Swift (а раньше – на Objective-C).

При использовании технологии разработки мобильных приложений на платформе андроид используется среда Android Studio и язык Kotlin (до 2018 года основным языком был Java).

Статья о создании приложений для android.

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

Кроссплатформенная технология разработки мобильного приложения подразумевает использование специальных фреймворков для создания приложения на основе семейства языков JavaScript. Вся структура и логика приложения создается с помощью таких инструментов (React Native, Flutter, Ionic, Xamarin, PhoneGap и др.) на JavaScript, а затем оборачивается в нативный запускающий элемент, т.е. интегрируется в базовый проект для XCode или Android Studio. Это позволяет создавать сборки проекта с одной и той же логикой под несколько операционных систем сразу.

Простая аналогия просматривается в случае с персональными компьютерами: MS Word, Skype, почтовые агенты, календари – это нативно разработанные приложения под настольную операционную систему. Всё, что происходит в браузере (сайты, онлайн-редакторы текста и графики, социальные сети, чаты, форумы) – кроссплатформенные технологии.

appcraft-xcode-vs-android-studio
Логотипы Xcode и Android Studio

Плюсы нативной технологии разработки мобильных приложений

Разработка мобильного приложения на родных технологиях и языках под iOS и Android имеет следующие положительные моменты:

1. Скорость работы приложения

Так как приложение создается с использованием оригинальных инструментов разработки (Xcode, Android Studio), получаемый в результате компиляции проекта код является оптимальным для данной платформы.

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

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

2. Гибкость в реализации

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

3. Использование последних технологий и зависимость от кроссплатформенных фреймворков

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

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

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

4. Легкость и качество тестирования

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

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

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

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

5. Полная поддержка со стороны магазинов приложений App Store и Google Play

Обе компании заинтересованы, чтобы пользователи получали максимально положительный опыт при использовании приложений на соответствующих платформах, который возможен на текущий момент.

Это означает, что приложение должно выглядеть максимально качественно (если у экрана высокое разрешение, а изображения расплывчаты, в App Store приложение просто не пропустят), работать настолько быстро, насколько это возможно (если приложение отображает небольшой список элементов за 20-30 секунд, его так же не пропустят), и вообще все должно быть красиво и удобно.

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

Среди приложений, находящихся во Featured-разделах и App Store, и Google Play, нет ни одного, сделанного с помощью кроссплатформенных технологий. За исключением игровых проектов, в которых интерфейс не является системным.

Плюсы кроссплатформенной технологии разработки мобильных приложений

Кроссплатформенная среда разработки имеет следующие положительные моменты:

  1. Требуется меньше ресурсов для реализации приложения сразу под несколько платформ. В этом, собственно, и суть кроссплатформенной технологии разработки мобильных приложений на платформе андроид и iOS – на обеих платформах работает один и тот же код. Программистов, занимающихся проектом, нужно ровно в два раза меньше. Дизайнер делает только один набор графики. Все это снижает количество рабочих часов и бюджет проекта.
  2. Меньшее время на разработку. За счет отсутствия уникальных элементов интерфейса и более простых технологий разработки кроссплатформенных приложений, время на создание простых продуктов, как правило, меньше.
  3. Упрощенный цикл обновления продукта. Если в проект нужно что-то добавить или исправить какую-то ошибку, это делается сразу для всех платформ, на которые распространяется проект.
  4. Возможность использования мобильной версии сайта. В большинстве случаев языки для кроссплатформенной технологии разработки мобильных приложений входят в семейство языков JavaScript. Поэтому если у вас уже есть мобильная версия сайта, значительная часть кода и материалов может быть использована в приложении без изменений.
  5. Использование единой логики приложения. Логика, заложенная в работу приложения, будет работать гарантированно одинаково для всех платформ. Довольно часто это может являться и минусом из-за разной архитектуры операционных систем.

    Яркий пример – кнопка “Назад” в навигации между экранами. В Android предусмотрена аппаратная кнопка Back для этих целей. У iOS – движение пальцем от левой части экрана или же наличие кнопки в левой части навигационной панели. Если кнопку не делать вовсе, пользователи iOS не смогут вернуться назад. Если сделать, но не на том месте и выглядящую нестандартно, пользователям iOS будет непривычно и неудобно; а если сделать как в iOS, будет непривычно пользователям Android.

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

Выводы

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

Современные игры пишутся в подавляющем большинстве на кроссплатформенных технологиях. Это сильно ускоряет разработку без ущерба для качества, т.к. в этом случае используются специальные графические фреймворки (самый популярный – Unity 3D).

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

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