Что такое кроссплатформенность. Объясняем простыми словами
Кроссплатформенность — это способность IT-продукта полноценно работать на любом устройстве вне зависимости от типа операционной системы (ОС).
Задача программистов, обеспечивающих кроссплатформенность — написать такой код, чтобы пользователи смогли получить доступ к сервису (сайту, игре и т.д.) с устройств, работающих на любой операционной системе, будь то компьютерные Windows, Linux и MacOS или мобильные Android, iOS и т.д.
Особенно актуальной кроссплатформенность стала в 2010-е годы на фоне резкого роста числа мобильных посетителей интернета.
Кроссплатформенность – это конкурентное преимущество сайта или сервиса. Она повышает конверсию и место в выдаче поисковых систем. Посетитель будет дольше находиться на портале с адаптированным и интуитивно понятным интерфейсом.
Пример употребления на «Секрете»
«Например, в 2010 году нам казалось неплохой идеей использовать для разработки интерфейса своего продукта Microsoft Silverlight. Он обеспечивал кроссплатформенность, но при этом не страдал от недостатков браузерных веб-интерфейсов. Но теперь, когда поддержка Silverlight прекращена, нам пришлось бы полностью переписывать клиентскую часть на другую платформу, потратив на это массу времени».
(Отрывок из рассуждений сооснователя компании «МойСклад» Аскара Рахимбердиева о том, как предпринимателю управлять разработчиками.)
Ошибки в употреблении
Не путать с кроссбраузерностью. Это способность сайта работать в Google Chrome, Opera, Mozilla Firefox и других браузерах, не теряя при этом скорости работы и читабельности страниц. Задача разработчика – сделать портал пригодным для удобного использования в любом браузере.
Нюансы
Адаптировать код под различные ОС можно с помощью современных кроссплатформенных языков программирования (например, C, С++). При надлежащем качестве кода достаточно будет переписать только некоторые фрагменты, не трогая при этом основной движок программы.
При работе с устройствами на разных платформах стандартные элементы интерфейса могут искажаться, поэтому в таких случаях нужно позаботиться об адаптивности – способности сайта автоматически «подстраиваться» под размеры экрана пользовательского устройства. Не адаптированные ИТ-продукты плохо приспособлены к тому, чтобы их можно было с удобством просматривать на мобильных устройствах.
Мобильная разработка: Cross-platform или Native
Всем привет! Я Игорь Веденеев, руководитель мобильной разработки в 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-код не составит больших проблем, но, если вы делаете приложение вокруг камеры, лучше рассмотреть нативную разработку.
Плюсы и минусы кроссплатформенной разработки
Кроссплатформенность и нативность: что это значит
Вы наверняка сталкивались с такими понятиями, как «нативный» и «кроссплатформенный». Чаще всего они относятся к какому-либо программному обеспечению. Что значат эти слова? Рассказываем подробно — и с примерами.
С точки зрения разработки
Термин «нативный» имеет несколько разных трактовок — тут все зависит от сферы применения. Мы в данном случаем говорим о программах и приложениях.
Нативная программа — ПО, созданное под конкретную платформу или операционную систему.
Windows, Linux, MacOS, Android и iOS имеют свои уникальные архитектурные особенности. Написать универсальный код, работающий абсолютно на всех ОС, непросто. В каждой системе используются свои инструменты и библиотеки. Одно из решений этой проблемы — нативная разработка, когда программисты пишут версию для каждой конкретной ОС.
Под «нативностью» также понимают использование «родных» для платформы средств разработки. Например, Swift для iOS или Java, Kotlin для Android.
Нативные приложения под конкретную ОС, как правило, более быстро и плавно работают. Кроме того, появляется возможность в полной мере использовать аппаратные средства. Но стоит все это довольно дорого, а от разработчиков требуется высокая квалификация.
Чаще всего термин «нативный» применяют в сфере мобильной разработки, когда для каждой ОС создается с нуля собственная версия приложения. Это, как правило, системные приложения: календарь, камера, будильник… Но не только. Например, в Shazam для максимально быстрого распознавания треков использовалась именно нативная разработка — для каждой ОС версия писалась с нуля.
Кроссплатформенность — это способность ПО работать с несколькими аппаратными платформами или операционными системами.
Да, универсальный код все-таки создать можно. По крайней мере, большую его часть. Есть приложения, которые разрабатываются с помощью специальных кроссплатформенных средств. Программисты пишут один универсальный код, а фреймворк лишь «подгоняет» программу небольшими доработками под выбранную ОС.
Кроссплатформенным считаются приложения, использующие веб-инструменты — HTML, CSS, Javascript. Гибридные приложения сочетают в себе функции нативных и веб-приложений. Это также обеспечивает кроссплатформенность. Такой подход существенно ускоряет создание программы. Однако код получается не столь оптимизированным. Кроме того, в этом случае не всегда доступна часть функционала разных устройств.
С точки зрения приложений
Все вышеописанное больше касается разработчиков, а в трактовке терминов есть различные нюансы. Большинству обычных пользователей можно просто запомнить следующее:
- Нативное приложение — созданное под конкретную ОС или аппаратную платформу.
- Кроссплатформенное приложение — созданное для нескольких операционных систем.
Например, в такой трактовке назвать нативными можно известные приложения MSI Afterburner и UltraISO. Они распространяются только для операционной системы Windows. Другой пример — эксклюзивные приложения для MacOS. Как правило, это фирменный софт от самой Apple или ее партнеров — Logic Pro (звукозапись), Final Cut Pro (видеоредактор) и другие.
Кроссплатформенными, в свою очередь, являются практически все крупные приложения: браузеры, социальные сети, фото- и видеоредакторы. На официальном сайте, как правило, вы можете скачать софт для актуальных Windows и MacOS, реже — для Linux. Разработчики мобильных приложений обычно создают кроссплатформенные продукты для iOS и Android (раньше — еще и для Windows Phone).
В общем, если софт может работать минимум в двух разных операционных системах, его можно назвать кроссплатформенным.
С точки зрения гейминга
В игровой индустрии вы также можете встретить термин «кроссплатформенности». Его очень часто путают с «мультиплатформенностью».
Если игра имеется на ПК (Windows) и на Sony PlayStation, то ее называют мультиплатформенной. Сейчас большинство игр можно скачать минимум на несколько разных устройств — как десктопных, так и мобильных.
Кроссплатформенность — это поддержка прогрессии или мультиплеера между разными игровыми платформами.
Чаще всего сыграть с другом в какую-либо игру по мультиплееру вы сможете только в том случае, если у вас одинаковые платформы. Например, игроки ПК-версии Batttlefield 1 не могут сыграть с владельцами XboX. В игре не поддерживается кроссплатформинг.
А вот в No Man’s Sky кроссплатформенность реализована: игроки с ПК, XboX и PlayStation могут сыграть вместе.
Имеется кроссплатформенность и в шутерах, например, в Call of Duty: Modern Warfare 2019. Однако там система подбирает игроков в зависимости от способа управления. Геймеры с геймпадами попадают в одно лобби, а с клавиатурой и мышкой — в другое.
Слово «нативный» в игровой сфере практически не используется — но так можно назвать «эксклюзивы». Это игры, в которые можно играть исключительно на одной платформе — конкретной приставке или ОС. Для PlayStation это будут God of War Ragnarok, Horizon Forbidden West и так далее. Для платформы Nintendo — это Super Mario Odyssey, отдельные части The Legend of Zelda.
При этом игра может быть «нативной» не только по отношению к платформе, но и аппаратной начинке. Так, Demon’s Souls, как и дополнение Burning Shores для Horizon можно запустить только на Play Station 5.
Отдельной категорией идут VR-игры — они требуют наличия шлема виртуальной реальности. Кроссплатформенными можно назвать те проекты, которые запускаются на нескольких моделях шлемов. Например, Half Life: Alyx поддерживает практически все VR-шлемы, совместимые с ПК (Valve Index, HTC Vive, Oculus Rift, Oculus Quest). А вот запустить Horizon Call of the Mountain вы сможете исключительно на PlayStation VR2.
Итак, что мы выяснили про «кроссплатформенность»?
- в разработке — это создание универсального кода программы для нескольких ОС;
- в приложениях — это наличие у программы скачиваемых версий для разных ОС;
- в играх — это возможность играть в кооператив или мультиплеер с разных платформ.
«Нативный» условно можно сравнить с «эксклюзивным» — это софт или игра, которую вы можете запустить только на определенном устройстве или операционной системе.
При подготовке материала использовались источники:
https://secretmag.ru/enciklopediya/chto-takoe-krossplatformennost-obyasnyaem-prostymi-slovami.htm
https://habr.com/ru/companies/agima/articles/586092/
https://club.dns-shop.ru/blog/t-57-tehnologii/93571-krossplatformennost-i-nativnost-chto-eto-znachit/