Офтоп
Lena Bardina
631

Кросс-платформенная разработка. Преимущества

Лена Бардина. Head of marketing Bacca
В закладки

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

Эта концепция относится к разработке мобильных приложений, которые могут быть использованы на нескольких мобильных платформах. В деловом мире растет BYOD (Bring Your Own Device) тенденция. BYOD подход применим к сотрудникам, приносящим свое личное мобильное устройство на рабочее место, вместо использования настольных компьютеров или предоставленных компанией мобильных устройств для доступа к приложениям и корпоративным данным. Из-за BYOD компаниям стало необходимо разрабатывать собственные мобильные приложения и отправлять их на множество различных устройств, которые используют разные операционные системы.

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

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

В идеальном сценарии эти приложения работают в нескольких ОС с одной кодовой базой.

Существует 2 типа кросс-платформенных приложений:

1. Собственные (Xamarin, Marmelade)

2. Гибрид ‘HTML5’ (ReactNative, Mobile Angular UI)

Собственные кросс-платформенные приложения

Каждая крупная мобильная операционка имеет свой SDK (Software Development Kit) для создания мобильных приложений. У этих пакетов SDK есть предпочтительные языки программирования, поддерживаемые поставщиком ОС. Например, для iOS - Objective-C и Swift, в то время как для Android предпочтительными языками являются Java и Kotlin. Приложения, созданные на этих языках с помощью официального SDK, называются нативными.

Однако можно использовать API (Application Programming Interface), предоставляемые собственным SDK, на других языках программирования, которые не поддерживаются поставщиком ОС. Так создаются ”кросс-платформенные" приложения.

Как правило, сторонний поставщик выбирает язык программирования и создает единый API поверх пакетов SDK, предоставляемых различными поставщиками ОС. Используя этот унифицированный API, можно поддерживать несколько операционных систем с единой кодовой базой. Сторонний поставщик предоставляет набор инструментов, которые обрабатывают процесс создания собственного пакета приложений для iOS и Android из одной кросс-платформенной кодовой базы.

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

Гибрид ‘HTML5’ с кросс-платформенных приложений

Большинство мобильных приложений во многом зависят от серверных веб-служб. Грубо говоря, в мобильных приложениях, особенно в области автоматизации бизнес-процессов, почти 60% кода связаны с взаимодействием с сервером. Это огромный выигрыш, так как код пишется только один раз.

iOS, Android и Windows Phone имеют очень продвинутый компонент браузера в своих SDK. Например, в некоторых случаях, используя компонент WebView, программисты могут использовать стандартные веб-технологии HTML5 для разработки и программирования частей своего приложения. Таким образом, приложение состоит по крайней мере из собственного фрейма и HTML/JavaScript, выполняемых в WebView, поэтому они называются “гибридными”. Функции приложения, которым требуются входы датчиков, такие как геолокация, камера или функции более низкого уровня, такие как доступ к файловой системе, обычно используют некоторый мост JavaScript-native, предоставляемый гибридной платформой приложений.

Выгоды внедрения кросс-платформенных приложений

· При тщательном планировании, около 50-80% кода можно использовать повторно для реализации на разных платформах

· Такая разработка имеет больше преимуществ в обслуживании

· Модульные тесты пишутся один раз для общего кода

· Не нужно изучать специфические языки программирования, а можно использовать те, которые уже имеются в арсенале разработчиков

· Кросс-платформенные приложения идеально подходят для автоматизации бизнес-процессов, где время развертывания и эффективность использования является критичными вопросами

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Lena Bardina", "author_type": "self", "tags": [], "comments": 15, "likes": 1, "favorites": 11, "is_advertisement": false, "subsite_label": "flood", "id": 54254, "is_wide": false, "is_ugc": true, "date": "Tue, 25 Dec 2018 12:17:55 +0300", "is_special": false }
0
{ "id": 54254, "author_id": 128898, "diff_limit": 1000, "urls": {"diff":"\/comments\/54254\/get","add":"\/comments\/54254\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/54254"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791, "last_count_and_date": null }
15 комментариев
Популярные
По порядку
Написать комментарий...
2

react native это не html5 видно что люди не разбирающие в кросс платформенной разработке писали

Ответить
–1

Выгоды в статье описали
а недостатков типа нет?
ну нельзя же так тупо "впаривать" свои услуги

Ответить
1

Не уверен что Xamarin нуждается в рекламе. Это все-равно что про Андройд статью написать, и все будут визжать что это реклама)

Ответить
–1

Статья о выгодах :-)

Ответить
0

неполная правда - это ложь

Ответить
0

ок, будет отдельная статья о недостатках)

Ответить
0

Я Вас умоляю! На том Xamarin разработка только и называется что кросс-платформенной, по факту 80% кода пишется разным под разные os. При этом масса ограничений с библиотеками, визуалом и работой с БД. ЧТо уж говорить о кривом кешировании, о подчас невозможности пользоваться сторонними библиотеками.
Кросс-платформенность - это для очень небольших и нетребовательных проектов, которые нужно запустить быстро или они по сути не представляют особой значимости. Возможно кросс-платформенно можно разрабатывать для внутренних нужд компаний. Но так ли это нужно, когда хороший нативщик может сделать все то же самое, и приложения будут выигрывать в скорости и функциональности.

Ответить
0

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

Ответить
0

Действитель, Как?))

Ответить
0

React Native хорошо подходит под обычные приложения, да

Ответить
0

html5(phonegap, ionic, итд), gybrid(react native, nativescript, итд), gpu(fusetools, flutter, итд), compile(xamarin, итд).

html5 - использует для рендера browser(html) этим всё сказано просто сайт под оберткой

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

gpu - для рендера используют opengql(cross), metal(ios), vulkan(android) любые виды анимации свисто перделки на любой вкус минусы жрёт много (если честно не пробовал так что минусов не знаю)

compile - компилится (llvm) под каждую платформу, минусы под каждую платформу нужно дорабатывать

Ответить
0

В целом верно, но есть пара замечаний. Html5 использует для рисования не браузер, а его «движок» - web view. Гибридные - это Hybrid все таки на американском. OpenGL правильно, а то у вас вышла некая помесь с graphQL.

Compile - это вы так native приложения назвали? Ну ок. Хотя в отношении Android/Java говорить compile - некоторая натяжка.

Ответить
–3

А где Flutter, Kivy, Kotlin Native? Под Mobile Angular UI имеется в виду Ionic или NativeScript? Статья из 2013го года?

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }