Разработка приложения: кроссплатформенная или нативная
Какой метод разработки мобильного приложения выбрать: нативный или кроссплатформенный, и какой фреймворк? Рассказывает эксперт Владислава ЛаркинаРуководитель проектного офиса, операционный директор CleverPumpkin. Опыт в управлении проектами — более 7 лет, в разработке мобильных приложений — 10 лет. Автор экспертных статей.
Мобильные приложения становятся все более востребованными: с одной стороны, с каждым днем растет количество пользователей смартфонов, с другой — компании выпускают мобильные продукты, которые эффективно решают вопросы клиентов, оставляя конкурентов без приложений далеко позади.
Сегодня уже недостаточно иметь сайт — приложение выполняет гораздо больше функций, при этом для его использования не нужно заходить в браузер, вспоминать и набирать адрес и совершать множество дополнительных действий. Приложения усиливают имидж компании, они надежны, упрощают взаимодействие с пользователем, позволяют проводить аналитику, не говоря уже об увеличении конверсии и повышении лояльности клиентов.
Несмотря на огромное разнообразие производителей и моделей смартфонов, подавляющее большинство работает на одной из двух операционных систем — Android или iOS.
Как же создавать приложения, чтобы ими могли пользоваться на обеих платформах?
Есть два способа это сделать: используя нативную разработку и кроссплатформенную. В первом случае потребуется писать отдельный код для Android (с помощью программной среды Android Studio) и отдельный — для iOS (с помощью среды XCode). Во втором случае в основе программы будет лежать единый для обеих систем исходный код.
В этой статье я расскажу, чем отличаются эти способы и какой из них лучше всего подойдет для создания вашего приложения.
Нативная разработка
Нативная, или, другими словами, платформенно-ориентированная разработка означает, что используется оригинальный язык и инструменты конкретной операционной системы. Это можно сравнить с тем, что вы разговариваете с собеседником на родном языке — при этом вы не просто отлично понимаете друг друга, но также можете выразить любой оттенок смысла.
Преимущества нативной разработки:
- Повышает производительность приложений. Поскольку используется язык родной системы, без дополнительных прослоек, обеспечивается высокая производительность программы.
- Можно создавать приложение любой сложности. Нативная среда позволяет писать код без ограничений и полноценно реализовывать все идеи.
- Легко обновлять код и добавлять новые функции. Применяя «родные» инструменты, разработчик может по максимуму использовать потенциал и преимущества выбранной платформы — это позволит совершенствовать приложение и выпускать новые обновления без каких-либо проблем.
- Отдельный интерфейс для каждой платформы. Это делает приложение максимально удобным для пользователей, поскольку используются только привычные элементы и сценарии.
- Более высокий статус на рынке за счет соответствия требованиям App Store и Google Play. Нативные версии приложений активно публикуются в рекламных разделах (Featured) App Store и Google Play, что положительно сказывается на количестве скачиваний и получении прибыли.
Таким образом, нативная разработка — это удобное и мощное средство создания приложений, поскольку среда разработки и весь набор необходимых утилит заточены под конкретную платформу.
А теперь посмотрим, какие здесь есть подводные камни.
Минусы нативной разработки:
- Зависимость от платформы. Приложение, разработанное для одной системы, можно запустить только в рамках этой системы.
- Найм большего количества программистов.
Увеличение команды может вести к сложностям в коммуникации, могут появиться труднораспознаваемые различия между платформами, отставания в обновлениях и рассинхронизация в фичах. - Более высокая стоимость. Чтобы программой могли пользоваться и владельцы Android, и приверженцы iOS, придется нанимать две команды разработчиков — бюджет в этом случае может возрасти примерно на 20% по сравнению с кроссплатформенной разработкой.
Кроссплатформенная разработка
С нативным подходом понятно, но как тогда устроен второй вариант — кроссплатформенная разработка?
Представьте, что вы говорите на русском, а ваш собеседник — на китайском. Язык друг друга вы не знаете, зато владеете английским — это не родной для вас язык, а язык-посредник. В таком случае вы будете понимать вашего собеседника, но при этом потеряется возможность выражать тонкие нюансы смыслов — общаться вы сможете, используя только вариации типовых выражений.
По такому принципу работает кроссплатформенная разработка — в ней используются такие фреймворки (то есть инструменты), как React Native, Flutter, Kotlin Multiplatform Mobile (KММ).
- В основе React Native лежит язык программирования Java Script. React Native выявляет ошибки на ходу, сокращает время отладки, предоставляет готовые компоненты и позволяет повторно использовать значительную часть кода, что способствует сокращению времени разработки и запуска.
- Фреймворк Flutter разработан компанией Google на собственном языке Dart. Встроенная функция Hot Reload позволяет вносить изменения в бэкэнд и мгновенно наблюдать за переменами фронтэнда, уменьшая необходимость часто перезагружать все приложение. Данная функциональная способность позволяет командам экономить время на разработку и компиляцию.
- КММ — это мультиплатформенный фреймворк на базе Kotlin, который позволяет переиспользовать бизнес-логику приложения на разных платформах, при этом оставляет приложениям нативный UI и UX. Таким образом KMM использует плюсы как кроссплатформенной, так и нативной разработки.
После создания структуры и логики приложения код интегрируют в нативный запускающий элемент на основе среды XCode или Android Studio.
Преимущества кроссплатформенной разработки:
- Трудозатраты на разработку приложений для двух платформ меньше до 30% по сравнению с нативной разработкой.
При создании версии для первой платформы в обоих типах разработки код пишется с нуля и учитывает и бизнес-логику, и функционал, и юзабилити. Однако в кроссплатформенной разработке есть возможность переиспользовать часть кода для написании версии для второй платформы, что может сократить трудозатраты до 30%. - Меньше вероятности появления ошибок при разработке.
Это достигается за счет того, что для каждой платформы применяется одна и та же база кода, одна и та же бизнес-логика приложения. - Нужен меньший бюджет, чем при нативной разработке.
Это связано с тем, что при разработке версии для второй платформы будет частично использоваться код для первой, что снижает затраты. Но нужно помнить, что стоимость документации, дизайна, менеджмента, тестирования, развертывания и поддержки не изменится, поэтому разница будет не очень значительной.
А теперь посмотрим, какие есть недостатки у кроссплатформенной разработки.
- Низкая эффективность.
Для обработки кода на разных языках приложению требуется задействовать больше ресурсов, в результате заряд батареи расходуется быстрее. - Необходимо знание нативного кода.
Кроссплатформенная разработка не означает отказ от языка оригинальной платформы. В любом случае для реализации сложных функций и исправления кода некоторых компонентов потребуется использовать нативные языки. - Проблемы с обновлением.
Возможности, которые появляются в новых версиях мобильных платформ, невозможно встроить в приложение, пока они не появятся во фреймворке. Это может занять время и негативно сказаться на отношении пользователей к приложению. Более того, некоторые функции в принципе будет невозможно реализовать. - Увеличение веса приложения.
Специфика кроссплатформенного подхода подразумевает увеличение объема кода, что делает программу менее удобной для скачивания и хранения на устройстве. - Нехватка специалистов нужного уровня.
При смене разработчика есть риск, что будет затрачено много времени и финансов на поиск программиста необходимой квалификации, так как количество соискателей в кроссплатформенной разработке в разы меньше, чем в нативной. - Усложняется поиск источника ошибок в коде.
В ходе разработки сложнее по сравнению с нативом вносить коррективы, отслеживать и устранять источники ошибок и неполадок.
Что же выбрать — кроссплатформенное или нативное приложение
Выбирайте нативную разработку, если:
- важна производительность приложения;
- необходимо сделать удобный интерфейс;
- приложение будет использовать функции устройства (например, GPS, камеры, датчики) и системные ресурсы;
- энергопотребление должно быть низким;
планируется интеграция со сторонними сервисами.
Выбирайте кроссплатформенную разработку, если:
- вас устроит невысокая производительность приложения;
- нужно несложное приложение с простым интерфейсом;
- в дальнейшем приложение не будет активно развиваться и усложняться.
Выводы и наш выбор
Кроссплатформенная разработка позволяет делать проекты под iOS и Android, сохраняя одну и ту же логику приложения. Это в некоторой степени экономит время и средства, однако затрудняет доработку приложений и добавление новых функций.
В нативном подходе проект создается под каждую систему отдельно. При этом оригинальные, родные инструменты разработки позволяют скомпилировать код, который будет оптимальным для конкретной платформы.
CleverPumpkin занимается сложными и развивающимися проектами, поэтому практически всегда использует нативную разработку: в результате такими приложениями удобно пользоваться, их легко дорабатывать и обновлять, у них гибкий функционал и хорошая масштабируемость.
Однако мы понимаем, что иногда может возникнуть необходимость в создании кроссплатформенного продукта. В таких случаях мы используем КММ — фреймворк шеринга кода, который позволяет сохранить все преимущества натива, но сократить время разработки на второй платформе благодаря единой бизнес-логике и использованию части кода, не связанного с интерфейсом.
Интересное:
Новости отрасли:
Все новости:
Публикация компании
Профиль
Контакты