Кроссплатформенность — это способность IT-продукта полноценно работать на любом устройстве вне зависимости от типа операционной системы (ОС).
Задача программистов, обеспечивающих кроссплатформенность — написать такой код, чтобы пользователи смогли получить доступ к сервису (сайту, игре и т.д.) с устройств, работающих на любой операционной системе, будь то компьютерные Windows, Linux и MacOS или мобильные Android, iOS и т.д.
Особенно актуальной кроссплатформенность стала в 2010-е годы на фоне резкого роста числа мобильных посетителей интернета.
Кроссплатформенность – это конкурентное преимущество сайта или сервиса. Она повышает конверсию и место в выдаче поисковых систем. Посетитель будет дольше находиться на портале с адаптированным и интуитивно понятным интерфейсом.
Пример употребления на «Секрете»
«Например, в 2010 году нам казалось неплохой идеей использовать для разработки интерфейса своего продукта Microsoft Silverlight. Он обеспечивал кроссплатформенность, но при этом не страдал от недостатков браузерных веб-интерфейсов. Но теперь, когда поддержка Silverlight прекращена, нам пришлось бы полностью переписывать клиентскую часть на другую платформу, потратив на это массу времени».
Как сделать визуальную программу на C++ в Linux для Windows (кроссплатформенная разработка)
(Отрывок из рассуждений сооснователя компании «МойСклад» Аскара Рахимбердиева о том, как предпринимателю управлять разработчиками.)
Ошибки в употреблении
Не путать с кроссбраузерностью. Это способность сайта работать в Google Chrome, Opera, Mozilla Firefox и других браузерах, не теряя при этом скорости работы и читабельности страниц. Задача разработчика – сделать портал пригодным для удобного использования в любом браузере.
Нюансы
Адаптировать код под различные ОС можно с помощью современных кроссплатформенных языков программирования (например, C, С++). При надлежащем качестве кода достаточно будет переписать только некоторые фрагменты, не трогая при этом основной движок программы.
При работе с устройствами на разных платформах стандартные элементы интерфейса могут искажаться, поэтому в таких случаях нужно позаботиться об адаптивности – способности сайта автоматически «подстраиваться» под размеры экрана пользовательского устройства. Не адаптированные ИТ-продукты плохо приспособлены к тому, чтобы их можно было с удобством просматривать на мобильных устройствах.
Источник: secretmag.ru
Кроссплатформенная разработка мобильных приложений
Кроссплатформенная разработка нужна, чтобы ускорить сроки создания приложений и сократить расходы. Сейчас у большинства компаний есть мобильные приложения. Создание — затратный, сложный процесс. В статье дается подробная информация об особенностях подхода, преимуществах и недостатках, фреймворках и области применения.
На чем лучше создавать кроссплатформенные программы на C и C++
Что такое кроссплатформенная разработка?
- Кроссплатформенный язык программирования переводится на нативный на этапе запуска приложения. Это происходит благодаря транспилеру (программа, которая преобразует код).
- К исходному коду добавляются плагины, которые транслируют вызовы из неродного кода к родным функциям системы.
Приложения часто создаются на языке разметки и стилей (HTML, CSS и JavaScript). Они одновременно пишутся и подходят для большинства устройств, поскольку для работы используют механизм браузера.
Плюсы
К преимуществам кроссплатформенной разработки относят:
- Сравнительно невысокая цена и быстрый результат. Это связано с тем, что не нужно писать много кода.
- Один код можно использовать на всех платформах.
- Требует меньше ресурсов (не нужен большой штат).
- Работа на большую аудиторию.Ресурс дает возможность привлечь больше трафика, так как он доступно для всех типов мобильных устройств.
- Возможность использовать одинаковый интерфейс и дизайн на всех устройствах.
Минусы
Недостатками кроссплатформенной разработки являются:
- Трудности при реализации сложных функций приложения из-за ошибок фреймворков.
- Сложность в адаптации под мобильные системы iOS и Android из-за их различий.
- Поддержание кода.
- Меньше информации по поводу устранения ошибок, поскольку большинство программистов используют нативный подход.
- Невысокая скорость работы программы.
- Необходимость работать с интерфейсом каждой платформы.
Фреймворки
Фреймворки — это инструменты, которые используются для увеличения скорости работы приложения, его оптимизации под разные платформы и внедрения новых обновлений.
Рассмотрим самые популярные из них.
Net Core
Кроссплатформенная разработка может происходить на net core. Это модульная платформа, совместимая только с ОС Windows. Поддерживаемые языки программирования: C#, Visual Basic .NET и F#. Каждый модуль можно обновлять по отдельности. Приложение не зависит от обновления.
Майкрософт осуществляет поддержку фреймворка и выпускает обновления.
QT
Для разработки кроссплатформенных приложений на qt используется язык программирования C++. Поддерживаемые платформы: Linux, Apple, Microsoft. Есть подробная документация, с множеством примером, поэтому при изучении модулей не возникнет трудностей. Есть возможность коммуникации между объектами в режиме реального времени.
Unity
Чаще всего разработка кроссплатформенных приложений происходит на unity. Фреймворк позволяет создавать различный интерактивный контент:
- 2D и 3D игры;
- сервисы виртуальной реальности.
Поддерживается больше двадцати пяти платформ.
- Визуальная среда.
- Круглосуточная поддержка.
- Подробная документация.
- Модульная система компонентов.
- Трудности при подключении внешних библиотек.
- Сложность в работе с многокомпонентными схемами.
Flutter
Инструмент, созданный компанией Google. Используется для разработки кроссплатформенных мобильных приложений с единой кодовой базой для десктопных и мобильных устройств.
Язык программирования: Dart.
- С помощью Flutte можно легко создавать красивые интерфейсы так как у него есть собственный графический движок.
- Имеет функцию добавление нового кода без повторной сборки и набор готовых виджетов.
- При помощи этого фреймворка можно выпускать приложения для разных версий Android и iOS без привлечения дополнительных ресурсов.
- Обладает высокой производительностью.
React Native
Фреймворк от компании Facebook. Помогает увеличивать производительность, чтобы кроссплатформенная мобильная разработка была схожа с нативной.
Язык программирования: JavaScript + библиотека React.
- Есть функция Hot Reloading, при помощи которой можно добавлять новый код и внести правки.
- Обширная поддержка, есть богатый выбор сторонних библиотек.
- Используются кастомные модули на языках для нативной разработки, однако их надо будет писать для каждой ОС.
Xamarin
Кроссплатформенный фреймворк для мобильной разработки от компании Microsoft, поддерживается на системе Windows.
Язык программирования: C# + .NET.
- Два инструмента: Xamarin.Android/iOS и Xamarin.Forms.
- Xamarin.Android и Xamarin.iOS наделяют приложение теми же возможностями и интерфейсом, которые есть у нативных решений.
- Для ускорения написания кода используется Xamarin.Forms (все элементы полностью совместимы с любыми платформами).
Ionic
Один из средств кроссплатформенной разработки гибридных приложений.
Язык программирования: JavaScript + HTML, CSS.
- Прост в использовании.
- Автоматическая адаптация к любой платформе.
- Возможность проводить быстрое тестирование прямо в браузере.
PhoneGap
Язык программирования: JavaScript + HTML, CSS.
- Совокупность HTML-страниц с нативными свойствами.
- Страницы находятся в специальном хранилище (облаке), а во время запуска на смартфоне они получают доступ к функциям устройства через сервисы.
- Невысокая производительность.
Для каких приложений подойдет кроссплатформенная разработка
Использование технологии кроссплатформенной разработки подойдет не всем компаниям.
Это будет актуально и удобно для заказчиков, если:
- Есть готовый сайт, и нужно создать тематическое приложение для бизнеса.
- Нужно создать простое приложение, у которого много общих элементов для разных платформ.
- Не требуется постоянная автозагрузка контента и обновлений.
- Нужна быстрая разработка прототипа сложного проекта для нескольких платформ.
Самый яркий пример приложения, для которого будет актуален подход — простая мобильная игра.
Каждый день число пользователей мобильных устройств увеличивается на 800 тысяч. Стационарные устройства используются все меньше, поэтому создание сервисов для смартфонов и планшетов сейчас как никогда актуально. Кроссплатформенная разработка приложений поможет компаниям увеличить трафик и привлечь внимание к своему бренду за счет выпуска нового продукта.
Источник: appfox.ru
Мобильная разработка: 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-код не составит больших проблем, но, если вы делаете приложение вокруг камеры, лучше рассмотреть нативную разработку.
Плюсы и минусы кроссплатформенной разработки
Источник: habr.com