Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022) — различия между версиями

Материал из 0x1.tv

== Thesis ==

* https://github.com/rhomobile/rhodes
* https://github.com/rhomobile/rhoconnect 

=== Описание и назначение ===
RhoMobile Suite    инструмент для создания переносимых мобильных и настольных приложений. Доступен под лицензией MIT.

Приложение на RhoMobile называется нативно-гибридным. Код приложений похож на код веб-приложений. Пользовательский
интерфейс в основном пишется на HTML5, CSS3, а логика на JavaScript, либо Ruby. 

=== История c 2008 по 2022 ===
* 2008—2011    стартап.
* 2011—2014  часть Motorola Solutions.
* 2014—2015    часть Zebra Technologies.

До 2015 года разработку вела команда инженеров из России, США и Великобритании.

==== Текущий статус ====

С 2015 года часть оригинального коллектива из России осуществляет дальнейшее развитие и поддержку проекта в составе Tau.

За последнее время была добавлена поддержка Sailfish OS, и дистрибутивов Linux, в т.ч. Alt, ROSA, Red OS, Astra.

Стабильная версия  7.4.2, бета версия  7.5.0.beta2.

=== Архитектуры мобильных приложений ===

*  Классическое нативное приложение. Нативные инструменты iOS, Android.
*  Кроссплатформенное нативное приложение  Xamarin, React Native, QT, Flutter и др.
*  Веб приложение  «сайт», запущенный в системном браузере.
*  Гибридное приложение  веб-приложение, обёрнутое в нативный контейнер. Apache Cordova/PhoneGap, Rhomobile  чисто гибридном режиме).
*  Смешанно-гибридное приложение  совмещение нативного, кроссплатформенного и гибридного подходов. Интерфейс реализуется на HTML/CSS, логика пишется на переносимом инструменте и исполняется отдельно от веб-компонента. Пример  RhoMobile.


=== Особенности смешанно-гибридного подхода ===

==== Локальный сервер ====

Разделение UI и логики приложения осуществляется с помощью HTTP(S) сервера внутри процесса приложения. 

Веб-компонент обращается серверу, он исполняет логику и выдаёт ответ в виде HTML.

Веб-компонент также может вызывать API напрямую из JS.

==== Ruby ====
В качестве средства реализации логики выбран язык Ruby. Для клиент-серверного взаимодействия используется адаптированный
фреймворк Ruby-on-Rails. 

Архитектура может быть реализована и с помощью других языков. В частности, в RhoMobile, помимо Ruby, можно также выбрать
Node.js.

=== Расширения ===
В RhoMobile используется механизм CommonAPI, позволяющий описать модули, методы и свойства в общем виде на XML.

=== Сборка в виде библиотеки ===
RhoMobile имеет собственную систему сборки. В некоторых случаях разработчикам может потребоваться встроить часть функций
платформы в их нативный проект. Для этого существует режим сборки платформы в виде библиотеки для целевой платформы.

==== Производительность ====
Производительность интерпретирующей машины: код на Ruby при сборке приложения компилируется в бинарный байт-код iseq.

Механизм расширений позволяет вынести ресурсоёмкие операции в нативную часть.

Часть API возможно вызывать в асинхронном режиме. 

Современные веб-движки хорошо оптимизированы.

==== Нативный «look\&feel» ====
Для реализации интерфейса можно выбрать frontend фреймворк, эмулирующий визуальные компоненты конкретной платформы.

==== Вопросы безопасности ====
Для защиты веб-сервера используется двусторонняя SSL аутентификация с генерацией ключей и сертификатов при каждом
запуске приложения.

=== Поддерживаемые платформы ===
Целевые: iOS, Android, WinCE, Windows, Sailfish, Linux ( Ubuntu, ALT, RED, ROSA, Astra ).

Хостовые: Windows, OS X, Linux.

=== Функции, связанные с применением в бизнес-приложениях ===
==== Защита данных ====
*  шифрование локальной БД;
*  шифрование файлов кода и данных в установочном пакете приложения;
*  детектирование запуска приложения на эмуляторе, под отладчиком, либо на взломанном устройстве.
*  на Android: проверка сигнатуры подписи пакета, проверка идентификатора установщика.


==== Бесшовная интеграция ====
Применяется клиентская библиотека и промежуточный сервер RhoConnect. Они обеспечивают синхронизацию моделей данных
приложения и контроль конфликтов. 

==== Поддержка спецустройств ====
API платформы поддерживает функции ТСД<ref>Терминал Сбора Данных</ref>, такие как сканирование штрихкодов, чтение RFID меток, беспроводную Bluetooth
печать и др.

=== Состав проекта ===
*  Rhodes    фреймворк и набор инструментов для разработки приложений.
*  RhoConnect    сервер интеграции данных.
*  RhoStudio/ VSCode debugger    IDE для редактирования и отладки приложений.


=== Продукты на базе RhoMobile ===
Браузер, приложения для мобильного сервиса, банкинг, страхование, энергетика и др.

В завершающей части доклада будет продемонстрировано создание и запуск приложения на RhoMobile.


{{----}}
[[File:{{#setmainimage:Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022)!.jpg}}|center|640px]]
{{LinksSection}}
<!-- <blockquote>[©]</blockquote> -->

<references/>

[[Категория:OSSDEVCONF-2022]]

Версия 18:14, 17 марта 2024

Докладчик
Александр Епифанов.jpg
Александр Епифанов

В докладе будет рассказано об открытом фреймворке RhoMobile, позволяющим создавать переносимые приложения для большинства актуальных на сегодняшний день мобильных и настольных платформ на языках Ruby и JavaScript. Список целевых платформ фреймворка включает мобильные: iOS, Android, WinCE, Sailfish/Аврора и настольные: Windows, OS X, различные дистрибутивы Linux (Ubuntu, ALT, ROSA, RED, Astra).

Будут освещены особенности архитектуры фреймворка, способы использования, а также продемонстрированы примеры создания и работы приложений на базе фреймворка.

Видео

Презентация

Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022).pdf

Thesis

Описание и назначение

RhoMobile Suite — инструмент для создания переносимых мобильных и настольных приложений. Доступен под лицензией MIT.

Приложение на RhoMobile называется нативно-гибридным. Код приложений похож на код веб-приложений. Пользовательский интерфейс в основном пишется на HTML5, CSS3, а логика на JavaScript, либо Ruby.

История c 2008 по 2022

  • 2008—2011 — стартап.
  • 2011—2014 – часть Motorola Solutions.
  • 2014—2015 — часть Zebra Technologies.

До 2015 года разработку вела команда инженеров из России, США и Великобритании.

Текущий статус

С 2015 года часть оригинального коллектива из России осуществляет дальнейшее развитие и поддержку проекта в составе Tau.

За последнее время была добавлена поддержка Sailfish OS, и дистрибутивов Linux, в т.ч. Alt, ROSA, Red OS, Astra.

Стабильная версия — 7.4.2, бета версия — 7.5.0.beta2.

Архитектуры мобильных приложений

  • Классическое нативное приложение. Нативные инструменты iOS, Android.
  • Кроссплатформенное нативное приложение — Xamarin, React Native, QT, Flutter и др.
  • Веб приложение — «сайт», запущенный в системном браузере.
  • Гибридное приложение — веб-приложение, обёрнутое в нативный контейнер. Apache Cordova/PhoneGap, Rhomobile (в чисто гибридном режиме).
  • Смешанно-гибридное приложение — совмещение нативного, кроссплатформенного и гибридного подходов. Интерфейс реализуется на HTML/CSS, логика пишется на переносимом инструменте и исполняется отдельно от веб-компонента. Пример — RhoMobile.


Особенности смешанно-гибридного подхода

Локальный сервер

Разделение UI и логики приложения осуществляется с помощью HTTP(S) сервера внутри процесса приложения.

Веб-компонент обращается серверу, он исполняет логику и выдаёт ответ в виде HTML.

Веб-компонент также может вызывать API напрямую из JS.

Ruby

В качестве средства реализации логики выбран язык Ruby. Для клиент-серверного взаимодействия используется адаптированный фреймворк Ruby-on-Rails.

Архитектура может быть реализована и с помощью других языков. В частности, в RhoMobile, помимо Ruby, можно также выбрать Node.js.

Расширения

В RhoMobile используется механизм CommonAPI, позволяющий описать модули, методы и свойства в общем виде на XML.

Сборка в виде библиотеки

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

Производительность

Производительность интерпретирующей машины: код на Ruby при сборке приложения компилируется в бинарный байт-код iseq.

Механизм расширений позволяет вынести ресурсоёмкие операции в нативную часть.

Часть API возможно вызывать в асинхронном режиме.

Современные веб-движки хорошо оптимизированы.

Нативный «look\&feel»

Для реализации интерфейса можно выбрать frontend фреймворк, эмулирующий визуальные компоненты конкретной платформы.

Вопросы безопасности

Для защиты веб-сервера используется двусторонняя SSL аутентификация с генерацией ключей и сертификатов при каждом запуске приложения.

Поддерживаемые платформы

Целевые: iOS, Android, WinCE, Windows, Sailfish, Linux ( Ubuntu, ALT, RED, ROSA, Astra ).

Хостовые: Windows, OS X, Linux.

Функции, связанные с применением в бизнес-приложениях

Защита данных

  • шифрование локальной БД;
  • шифрование файлов кода и данных в установочном пакете приложения;
  • детектирование запуска приложения на эмуляторе, под отладчиком, либо на взломанном устройстве.
  • на Android: проверка сигнатуры подписи пакета, проверка идентификатора установщика.


Бесшовная интеграция

Применяется клиентская библиотека и промежуточный сервер RhoConnect. Они обеспечивают синхронизацию моделей данных приложения и контроль конфликтов.

Поддержка спецустройств

API платформы поддерживает функции ТСД[1], такие как сканирование штрихкодов, чтение RFID меток, беспроводную Bluetooth печать и др.

Состав проекта

  • Rhodes — фреймворк и набор инструментов для разработки приложений.
  • RhoConnect — сервер интеграции данных.
  • RhoStudio/ VSCode debugger — IDE для редактирования и отладки приложений.


Продукты на базе RhoMobile

Браузер, приложения для мобильного сервиса, банкинг, страхование, энергетика и др.

В завершающей части доклада будет продемонстрировано создание и запуск приложения на RhoMobile.


Разработка приложений для мобильных и настольных платформ с помощью единого инструмента (Александр Епифанов, OSSDEVCONF-2022)!.jpg

Примечания и ссылки

  1. Терминал Сбора Данных