Всем привет! Я Игорь Веденеев, руководитель мобильной разработки в AGIMA. Поговорим немного о нативной и кроссплатформенной разработке. Раньше я по большей части скептически относился ко второй: не устраивало качество конечных приложений в первую очередь.
Однако за последний год темпы развития кроссплатформенных фреймворков уже не в первый раз заставляют пересмотреть свое мнение насчет такого подхода. Поэтому давайте еще раз сравним самые популярные кроссплатформенные решения и нативную разработку.
На всякий случай
Если вы не знаете, что такое нативная и кроссплатформенная разработка:
- нативная разработка (2 независимых приложения на языках Swift и Kotlin);
- кроссплатформенная разработка — общая кодовая база для iOS и Android (с применением фреймворков Flutter или React Native (далее RN)).
У каждого способа есть свои особенности, плюсы и минусы. Соответственно, под каждый конкретный проект и каждую конкретную цель подходит какой-то один из них. Сейчас объясню, как выбрать и на что обращать внимание.
Кроссплатформенные приложения
Нативная разработка
Нативная разработка — это классический способ создания приложения для iOS и Android. Ведется она с использованием инструментов и языков программирования, предложенных вендорами — Apple и Google. Языки в данном случае — Swift (iOS) и Kotlin (Android), а инструментов для профилирования и отладки в нативной разработке очень много.
Однако мы должны понимать, что в данном случае мы делаем два независимых приложения. Разрабатываются они параллельно. Каждое приложение может реализовать фичу по-своему, и у каждого могут быть свои баги. И самое главное, нативная разработка никуда не денется: пока существуют iOS и Android, Apple и Google будут предоставлять инструментарий для создания приложений.
Нативная разработка позволяет создать самое качественное и функциональное приложение, но взамен придется разрабатывать и отлаживать всё 2 раза и следить, чтобы приложения соответствовали друг другу функционально.
Среди разработчиков это пока самый популярный способ создания приложений. Поэтому собрать команду, даже большую, в этом случае проще, чем для кроссплатформы. В первую очередь из-за количества предложений на рынке.
Плюсы и минусы нативной разработки
2 независимых приложения
Стоимость разработки и отладки
Меньше потребляемых ресурсов*
Богатый инструментарий для разработки
Широкий рынок разработчиков
Кроссплатформенная разработка
Кроссплатформенная разработка подразумевает, что мы используем один и тот же код и на iOS, и на Android. Вообще говоря, это всё такое же нативное приложение, но, запустив его, мы сразу проваливаемся в мир Flutter или RN, и всё происходит уже там. Стоит отметить, что разработка на Flutter/RN идет быстрее. Причем не только за счет того, что мы делаем 1 приложение вместо 2-х, а еще и за счет концепций создания приложений, в частности UI.
Чем веб-приложения отличаются от веб-сайтов | Иван Петриченко
Но, увы, не всё так хорошо: кроссплатформа имеет ряд проблем, на которые стоит обратить внимание, прежде чем выбирать этот подход для своего приложения. React Native и Flutter всё же сторонние Open Source-решения. В них могут встречаться баги. Новые фишки iOS и Android там будут появляться не так быстро, как при нативных решениях. Может прекратиться поддержка, в конце концов.
Также, довольно часто придется полагаться на сторонние Open Source-библиотеки, что тоже несет в себе риски потенциальных проблем: например, совместимость версии Flutter/RN. Не исключен вариант, что нужной библиотеки не существует в природе, и тогда придется реализовывать всё с нуля самому. Также нельзя добавить расширения для iOS-приложений или, например, приложение на часы. Это касается и Flutter, и RN.
То есть для реализации определенных фич придется добавлять нативный код, что приведет к смешению технологий. Как минимум надо будет иметь в них компетенции. Как максимум — организовывать передачу данных из нативного кода в кроссплатформенный и наоборот.
Если в приложении много логики и есть необходимость сделать ее многопоточной, это тоже будет проблемой и во Flutter, и в RN. Это возможно, но, скажем, это не то, для чего были предназначены эти фреймворки. Также каждый из фреймворков имеет достаточно тяжелую исполнительную среду, что делает кроссплатформенные приложения более ресурсоемкими и требовательными к процессору/оперативке телефона.
Если приложение подразумевает обширное использование аппаратных возможностей телефона, взаимодействия с ОС, то я бы тоже не рекомендовал использовать кроссплатформу — есть риск, что в какой-то момент или код станет очень запутанным, или мы упремся в ограничения одной из платформ или самого фреймворка. Еще стоит учесть, что нам стоит использовать платформенно нейтральный UI, чтобы не создавать потенциальных проблем с различным поведением на платформах и в принципе не снижать на этом скорость разработки.
На картинке ниже представлены результаты теста с простым списком с изображениями: видим, что нативное приложение выигрывает вчистую. Да, на более новых моделях телефонов разница будет не такой значительной, но тенденцию можно видеть. Результаты остальных тестов тут.
Если проще, то кроссплатформа позволяет разработать приложение в кратчайшие сроки. Лучше всего подходит для приложений-витрин услуг или товаров среднего/малого объема без обширного использования платформенных возможностей. То есть снять фотку на аватар или отсканировать QR-код не составит больших проблем, но, если вы делаете приложение вокруг камеры, лучше рассмотреть нативную разработку.
Плюсы и минусы кроссплатформенной разработки
Источник: habr.com
Кроссплатформенные или гибридные приложения: что это такое и подойдут ли они вашему бизнесу
26.12.2022
Кроссплатформенные приложения появились давно и уверенно покоряют рынок. Но вокруг них до сих пор есть много слухов и предубеждений. Одни люди считают, что такие сервисы работают медленно, другие — что невозможно сделать кроссплатформенный сервис функциональным. Среди обилия информации сложно понять, что правда, а что — нет. Давайте разберемся, что такое кроссплатформенные приложения и на что они способны.
Что такое кроссплатформенные приложения?
Первый вопрос, о котором нужно подумать фаундеру, который хочет запустить мобильное приложение — какой тип разработки выбрать, кроссплатформенный или нативный.
В контексте разработки кроссплатформенность — это способность программы запускаться на устройствах с любой операционной системой. То есть программа подойдет и для Android, и для iOS. Если погружаться в значение слова, приставка «кросс» в словосочетании кросс платформа, означает «скрещивать», «пересекать». Приложение, которое предназначено сразу для нескольких платформ, будет кроссплатформенным, или гибридным.
А вот нативные программы разрабатываются под конкретную операционную систему Android или iOS на «родных» для этих платформ языках разработки. Для Android это язык Java или Kotlin, а для iOS — язык Swift или Objective-C.
Гибридные приложения создаются с помощью фреймворков. Фреймворк ( от английского «framework» — «остов», «каркас») это набор инструментов, который делает разработку проще. Современные технологии позволяют писать практически один и тот же код для всех платформ. Разработчикам нужно доработать под каждую систему только 20-30% кода, остальную часть можно написать один раз. Поэтому, благодаря мультиплатформенности, гибридные программы разрабатываются гораздо быстрее.
Какие инструменты нужны для создания кроссплатформенных приложений?
Есть несколько удобных фреймворков для создания гибридных приложений. По данным Statista, самые популярные из фреймворков на 2021 год — React Native, Flutter, Xamarin и Cordova. Остановимся на них подробнее.
React Native
React Native — это фреймворк на основе JavaScript. Он был запущен в 2015 году, и за несколько лет стал одним из самых удобных и распространенных инструментов для создания гибридных сервисов. Благодаря использованию нативных API этот фреймворк приближен к «родным» и позволяет реализовывать множество доступных нативным продуктам функций. Например, функцию перелистывания экрана с помощью свайпа, как в Tinder.
React Native имеет много наборов компонентов и библиотек. На этом фреймворке были созданы приложения больших компаний — Walmart, Shopify, Discord, Bloomberg, Tesla.
Flutter
Flutter — фреймворк, выпущенный компанией Google. Подходящий для Flutter язык программирования — Dart. Этот фреймворк был создан позже React Native, в 2017 году, но уже обгоняет в популярности своего конкурента. Флаттер можно использовать не только для разработки гибридных мобильных приложений, но и для создания веб-приложений.
Язык Dart базируется на Java, поэтому те, кто знает Java или C#, легко смогут писать на этом языке. Ничего нового учить не придется.
Еще одно отличие от React Native — Flutter не использует нативные компоненты. Все UI-элементы создаются с помощью собственного графического процессора для рендеринга. Поэтому Flutter более производительный и универсальный. Другое преимущество фреймворка — быстрое обновление или Hot-Reload. При добавлении новых функций или исправлении ошибок разработчикам не нужно перезапускать приложение.
Все изменения отображаются сразу. Это экономит время на разработке.
В Google Play Market около 500 000 продуктов, разработанных на Flutter. Среди них — Google Ads, New York Times, Toyota, SpaceX app, Etsy.
Cordova
Это кроссплатформенный фреймворк с открытым исходным кодом, который разработала компания Adobe. Он использует веб-технологии, такие как JavaScript, CSS3 и HTML5. То есть приложение создается в браузере как сайт с использованием соответствующих js-библиотек. С помощью фреймворка можно создать функциональные сервисы, которые будут использовать возможности устройств: геолокацию, камеру, микрофон, карту и т.д.
Cordova поддерживает базовые и сторонние плагины. Это дает программистам широкие возможности: можно добавлять в приложение большой набор функций. Также разработчики могут создать собственный плагин. Например, написание своего плагина понадобится для интеграции приложения с соцсетями.
На фреймворке созданы проекты Untappd, Localeur, SparkChess.
Xamarin
Xamarin — это набор инструментов для кроссплатформенной разработки. Чтобы создать приложение на Xamarin, нужно знать язык C#. Фреймворк позволяет создавать кроссплатформенные программы, почти не уступающие в производительности нативным. Платформа постоянно развивается и обновляется, чтобы облегчить программистам работу. Например, у Xamarin есть собственный инструмент для тестов и отслеживания производительности приложения, который помогает выявить ошибки до публикации.
На Xamarin можно разработать многофункциональный проект со сложной бизнес-логикой. Но в плане дизайна он может уступать другим фреймворкам: на нем не сделаешь навороченный интерфейс или красивые анимации. Поэтому Xamarin не используют для создания игр. А вот для проектов, где главное — функции, а не графика, он подходит.
С помощью фреймворка созданы программы Captio, Life Shopping, Love Republic, Befree.
Плюсы и минусы гибридных приложений
В США ежегодно составляется рейтинг 50 лучших приложений ритейлеров. В 2020 году 74% из этих сервисов были созданы с помощью кроссплатформенной разработки. Многие бренды выбирают именно этот тип разработки благодаря множеству преимуществ. Но у кроссплатформенной разработки есть и минусы, которые могут не подойти другим сферам бизнеса. Сейчас мы рассмотрим все «за» и «против» и определим, кому подойдут гибридные сервисы, а кому — нет.
Преимущества
- Быстрый запуск. Кроссплатформенные фреймворки позволяют создавать единую кодовую базу для всех ОС. Поэтому скорость разработки увеличивается. MVP для гибридного проекта средней сложности можно создать всего за пару месяцев.
- Большой охват пользователей. Кроссплатформа будет доступна и любителям Apple, и пользователям андроидов. А вот нативную программу придется заказывать либо для Android, либо для iOS. Или разрабатывать ее одновременно для двух ОС, что выйдет гораздо дольше и дороже.
- Стоимость. Этот пункт напрямую зависит от скорости разработки. Так как гибридное приложение сразу для двух платформ создается быстрее, чем нативное, его цена будет ниже.
- Пост-релизная поддержка проще и дешевле. Благодаря единому коду программистам не нужно несколько раз исправлять ошибки или добавлять новые функции для разных версий платформы. Достаточно один раз внести изменения в код, и изменения отобразятся у пользователей всех смартфонов.
Недостатки
- Производительность. Кроссплатформенные фреймворки постоянно совершенствуются, но пока не обеспечивают такой же высокой производительности, как нативные инструменты. Есть несколько причин, по которым скорость кроссплатформ ниже. Во-первых, «родная разработка оптимизирована под операционную систему, поэтому нативные сервисы работают быстрее. А во-вторых, в архитектуре гибридных сервисов между ОС и исходным кодом есть «прослойка», которая тоже снижает тоже производительность.
- Длительное тестирование. По сравнению с нативными приложениями, которые нужно проверять только на определенной платформе, тестировать гибридные сервисы сложнее. Тестировщикам нужно предусмотреть гораздо больше нюансов — например, сервис будет вести себя на разных устройствах и операционных системах. Могут вылезать дополнительные ошибки и проблемы, из-за этого кроссплатформенное тестирование затянется.
- Ограничение функций. Каждая операционная система имеет свои уникальные функции. Нативные приложения могут использовать их, а гибридные — пока нет. Например, в Android и iOS есть виджеты — иконки на главном экране, которые отображают информацию из приложений, например, погоды. Гибридную программу интегрировать с виджетами не получится.
Кому подойдет кроссплатформенная разработка?
Если проект простой или средней сложности, разница между нативными и гибридными сервисами для пользователей может быть почти незаметна. А вот если вы задумали сложный функциональный проект, различия могут быть существенными.
Определиться с видом разработки помогут 3 вопроса:
- Насколько вы ограничены бюджетом? Если в вашем распоряжении 2-4 млн рублей, лучше выбирать гибридную разработку. За нативный продукт для двух операционных систем придется выложить в 2 раза больше.
- Нужно быстро запустить приложение? Если есть жесткие временные рамки, например, вы хотите выйти на новые рынки со своей платформой через 2-4 месяца, вкладывайтесь в гибридную разработку. За это время команда программистов легко разработает кроссплатформенный сервис средней сложности.
- В приложении должны быть специфические функции и сложный визуал? Тяжелые анимации, 3D-графика, технологии дополненной реальности — это все не про гибридные продукты. Если у вас сложный проект, его лучше реализовывать с помощью нативных инструментов.
В целом качественные гибридные приложения можно сделать в любой сфере: финтех, образование, медицина, путешествия, недвижимость, игры, спорт и т.д. Все зависит от функций и возможностей заказчика.
Ситуация на рынке мобильных приложений
И в завершении поговорим немного о цифрах и статистике. По ситуации на рынке можно понять, насколько популярны гибридные приложения, легко ли найти команду для создания проекта.
К сожалению, данных по соотношению нативных и кроссплатформенных сервисов на рынке нет. Но мы можем оценить успешность гибридных проектов по другим факторам, например, по количеству загрузок. У кроссплатформенного Tik Tok 2,6 миллиарда загрузок, этот сервис удобен, прост, имеет высокую скорость и огромную популярность. Нативный WhatsApp скачали более 4,9 миллиарда раз.
Благодаря использованию «родных» инструментов, он быстро подключается к микрофону или камере для отправки голосовых сообщений или видеозвонков. Выходит, и гибридные, и нативные продукты бывают успешны и востребованы у пользователей. Главное — идея и качество.
Что касается рынка разработки, здесь все сложнее. Спрос на разработчиков Android/iOS выше, чем на JavaScript-программистов и специалистов по конкретному фреймворку. И зарплата у разработчиков, которые владеют нативными инструментами, выше. Поэтому, даже если вы решите сделать нативное приложение только для Android, оно все равно может стоить дороже, чем одно гибридное.
Для создания приложения можно обратиться в IT-агентство на аутсорсе или поискать фриланс-специалистов. Найти команду программистов будет проще: вам не нужно тратить время на подбор каждого специалиста — дизайнера, разработчика, тестировщика. Тем более, команда уже давно работает вместе и ей не нужно будет тратить время на «притирку» друг к другу. Сейчас можно найти очень много компаний, которые готовы взяться за реализацию гибридного мобильного приложения любой сложности.
Подведем итоги: гибридная разработка уверенно конкурирует с нативной
Учитывая множество плюсов для бизнеса, кроссплатформенная разработка мобильных приложений — хороший вариант для компаний любого размера. Тем более, кроссплатформенные инструменты развиваются, становятся мощнее, интеллектуальнее, функциональнее. Возможно, скоро технологии позволят создавать гибридные сервисы, ничем не отличающиеся от нативных по скорости, производительности и функциям. Уже сейчас это различие почти незаметно для обычных пользователей.
Перед разработкой собственного проекта бывает сложно определиться, какое приложение подойдет. На этапе идеи можно быть непонятно, нужна ли приложению нестандартная графика или специфические функции Android или iOS. Мы поможем вам выбрать оптимальный вариант разработки для вашего бизнеса и создадим приложение, которое полностью отвечает потребностям ваших пользователей.
Источник: q-digital.org