Открытый российский SDK
Импортозамещение кроссплатформенной разработки
Открытый фреймворк для разработки настольных и мобильных приложений, сделанный в России
Ключевые идеи Stappler SDK
Максимальная переносимость и производительность
Минимум внешних зависимостей
Простота освоения и удобство разработки
Stappler предназначен для команд разработчиков, обслуживающих разнородные информационные системы. В рамках одной такой системы могут быть объединены подпроекты: серверные приложения, мобильные приложения, автоматизированные рабочие места, средства автоматизации, средства тестирования и многие другие.
Stappler предполагает использование общей среды и единой кодовой базы для всех информационных систем в проекте, что существенно снижает стоимость разработки и поддержки, снижает требования к числу и специализации разработчиков.
Особенности фреймворка
В Stappler сочетаются современные подходы к разработке и портируемые низкоуровневые решения, подходящие для нестандартных платформ.
Высокопроизводительная графика и вычисления на всех платформах
Компонент Xenolith представляет собой графический и вычислительный движок низкого уровня. Разрабатывается для использования на современных процессорах и допускает чрезвычайно широкое использование многопоточности.
Vulkan
Для работы с графическими устройствами используется Vulkan API:
- Производительность сравнима с CUDA.
- Огромный круг поддерживаемых устройств.
- Lavapipe — там, где нет поддержки Vulkan.
Максимальный охват платформ
- Android, iOS, Linux, Windows, Mac OS.
- amd64/ARM, x86, e2k.
- Быстрая адаптация под новые платформы (RISC-V, LoongArch и другие).
Графика и вычисления
- Точный и высокопроизводительный тесселятор позволяет использовать векторную графику, упрощая создание интерфейсов для экранов с различной формой и плотностью пикселей.
- Высококачественная типографика.
- Световые эффекты на основе Signed distance field.
- Система высокопроизводительных вычислений для задач машинного обучения и статистического анализа.
Единая база кода для всего набора инструментов
Ориентируясь на максимальный охват платформ, мы выбрали язык C++ в качестве основного, и возможность использовать другие языки через виртуальную машину WebAssembly.
Используйте упрощённый C++
Stappler SDK использует лишь ограниченное подмножество языка и не требует знания наиболее сложных элементов C++.
Или любой другой язык
- Система скриптов на основе WASM (WASI + WIT).
- Позволяет создавать скрипты на языках: C/C++, Rust, Go, JVM languages (Java, Kotlin, Clojure, Scala и др.), JavaScript.
- В будущем: Python, Ruby и другие.
- Поддерживается живое обновление (live-reload) скриптов.
- Защищённое окружение исполнения скриптов.
- Скорость исполнения скриптов такая же, как у нативного кода.
Простота и удобство разработки
- Модульная система сборки
- Повторное использование кода
- Stappler объединяет классический подход к разработке на языке C++ с практиками, пришедшими из других систем и платформ, чтобы получить наиболее простой и эффективный API
Создание UI на базе виджетов
Мы совмещаем лучшие и проверенные практики создания пользовательских интерфейсов из таких проектов как Flutter, Electron, VueJS.
Стиль Vue (Proof of concept)
Создавайте интерфейсы, используя Vue-подобный синтаксис разметки SFC (single file components) компонентов.
Инструменты
- Набор интерфейсных элементов (виджетов) на основе Material Design 3.
- Поддержка экранов с различной ориентацией, разрешением и плотностью пикселей.
- Возможность создания отдельного UIKit платформы.
Демо
Демонстрационные тесты для инструментов и возможностей графического движка
Встроенная работа с базой данных
API Stappler для работы с базами данных максимально явно и подробно отражает структуру взаимодействия БД, контроля доступа и внешних интерфейсов данных, не становясь при этом «write-only» кодом, требующим чрезмерное количество документации.
Поддержка PostgreSQL, SQLite и Postgres Pro
- Компонент db позволяет описывать типы, отношения между полями и схемами данных, контроль доступа и логику автоматизации в одном месте.
- Компонент db универсален и может использоваться с одной и той же БД в виде веб-сервера, графического или консольного приложения без изменения кода, отвечающего за данные.
- Подход Stappler сочетает преимущества структурированного подхода SQL-БД и гибкость NoSQL (по образцу Firebase).
- API может выполнять практически полный комплекс основных задач, включая: подвыборки, вычислимые на чтение и запись поля, виртуальные поля, триггеры, дельта-запросы, сжатие данных, полнотекстовый поиск и многое другое.
Встроенный модуль веб-сервера
Используется прозрачный сквозной механизм кодирования, сжатия и шифрования данных. Для использования сжатия или шифрования разработчику не требуется вызывать дополнительных функций: система автоматически распознаёт свои форматы сжатия и шифрования и декодирует их.
Серверные приложения
- Шаблонизатор на основе синтаксиса Pug.
- Общий код и инструменты клиент/сервер.
- Интеграция C/C++ и другого кода, Vulkan на сервере.
- Нативная производительность — низкая стоимость ресурсов.
- Поддержка протокола WebSocket.
- Система контейнеризации на основе Docker.
- Возможность нетиповых решений.
Криптография
- Авторизация и аутентификация на основе криптографических ключей (в том числе ГОСТ 34.10-2018, ГОСТ 34.11-2018, ГОСТ 34.12-2018) через встроенные методы HTTP, а также через модифицированную технологию JsonWebToken.
- К основной концепции JWT добавляется дополнительный шифрованный блок, открыть который может лишь сервер, выписавший токен.
- GnuTLS и OpenSSL.
- Пользовательские криптохранилища.
- Упрощённый интерфейс.
Stappler в сравнении
Проект конкурирует с различными другими решениями. Ни одна из альтернатив не покрывает полный комплекс платформ, планируемых к поддержке в Stappler SDK.
| Stappler SDK | Flutter | Qt | Kotlin Multiplatform | React Native | |
|---|---|---|---|---|---|
| Платформы | Android, iOS, Linux, Windows, MacOS, отечественные, китайские и др. | Web, iOS, Android, Linux, Windows, MacOS | Web, iOS, Android, Linux, Windows, MacOS | Web, iOS, Android, Linux, Windows, MacOS | Web, iOS, Android, Linux, Windows, MacOS |
| Типы приложений | Настольные, мобильные, командной строки, модули веб-сервера, гибридные (графические API на веб-сервере и подобные) | Настольные и мобильные | Настольные, мобильные, командной строки, модули веб-сервера | Настольные, мобильные и серверные | Настольные и мобильные |
| Язык разработки | C/C++, Rust, Go, JVM Languages, JavaScript и др. | Dart | C++/QML | Kotlin | JavaScript |
| Режим исполнения | Компиляция кода, интерпретация WASM, компиляция WASM в нативный код | Компиляция, интерпретация | Компиляция | Виртуальная машина | Компиляция, интерпретация |
| Инструменты создания интерфейсов | Виджеты, похожие на нативные компоненты платформы, возможность создания отдельного UIKit платформы | Виджеты, похожие на нативные компоненты | Собственные виджеты Qt | Виджеты Material и Swift | Нативные компоненты для Android и iOS |
| Графика | Собственный графический движок Xenolith на базе API Vulkan | Собственный графический движок Skia на базе API OpenGL | Собственная реализация графики под каждую платформу | Собственная реализация графики под каждую платформу | Нативная графика |
| Производительность | Очень высокая (жёсткая оптимизация графики, использование оптимизированных форматов обмена данными, использование сжатия) | Высокая (требует глубокой оптимизации кода приложения) | Высокая | Средняя (ограничена виртуальной машиной) | Высокая, близкая к нативной |
| Работа с БД | Унифицированные интерфейсы определения и доступа к БД | Через сторонние проекты | Через сторонние проекты | Через сторонние проекты | Через сторонние проекты |
| Бэкенд | Есть унифицированные интерфейсы, не нужны дополнительные специалисты | Через сторонние проекты | Есть серверные компоненты | Серверные компоненты Java | Через сторонние проекты |
| Ограничения кодовой базы | Необходимы адаптеры для функций платформы. Используется штатный компилятор и библиотеки платформы. | Необходимо портирование компилятора и библиотек под платформу. | Необходимо портирование средств сборки и частично библиотек на платформу. Необходимы адаптеры для функции платформы. | Необходимо портирование JVM | Необходимо полное портирование на платформу. Портирование осложняется ограничениями нативных виджетов. |
| Зависимости | Необходимый минимум стандартных библиотек. Стандартный компилятор платформы. | Собственные средства сборки и библиотеки | Собственные средства сборки и библиотеки | JVM | Собственные средства сборки и библиотеки |
| Средства для разработчика | Hot-reload, средство покрытия кода, машиночитаемая кодовая база (структура кода заголовков в виде JSON для генерации кода на их основе) | Hot-reload | Hot-reload | Hot-reload | |
| Инструменты тестирования и отладки | Стандартный подход C/C++ (gdb, lldb). LLDB для кода на wasm. Любая свободная и открытая IDE. | Собственные инструменты | Собственные инструменты | Kotlin: нет свободных и открытых IDE | Собственные инструменты |
| Сложность освоения | Низкая — средняя (зависит от языка) | Средняя (JavaScript-подобный язык, собственная инфраструктура) | Высокая (C/C++), средняя (QML) | Высокая (корпоративные подходы Java) | Низкая (JavaScript) |
| Бизнес-модель | Открытый и свободный код. Поддержка создателей независимых ОС и устройств | Vendor lock-in, средство разработки от Google | Открытый код для разработки, платное распространение | Vendor lock-in, продажа средств разработки | Vendor lock-in, средства разработки от Facebook |
| Доп. возможности | Высокопроизводительные вычисления на Vulkan. Встроенные средства криптографии (ГОСТ). Тотальная ориентация на многопоточность. Глубокая интеграция энергосберегающих функций | Лёгкая интеграция с Google-сервисами (Firebase, Ads и др.) |
Команда проекта
-
Катунцев Роман
Ведущий разработчик
-
Рыбников Виталий
Разработчик
-
Немчинов Михаил
Тестировщик
-
Муканин Дмитрий
Менеджер, технический писатель
Уже используют Stappler SDK
Финуч
Учебное пособие по финансовой грамотности и учебно-методические материалы к нему. В проекте реализована wiki-подобная редакторская система, система сборки учебника в нескольких форматах и уникальное мобильное приложение, контент которого доступен даже в условиях полного отсутствия интернета. С технической стороны, используются возможности SDK по интеграции со сторонними системами (например, для трансляции формул в формате LaTeX используется серверный пакет, транслирующий формулу в SVG), дельта-запросы к БД для обновления контента приложения, графический движок для отрисовки страниц приложения (собственный мини-браузер). Для подготовки приложения используются дополнительные системы, позволяющие встроить актуальную БД учебника напрямую в пакет приложения, чтобы приложение содержало контент даже если запущено без интернета.
ПерейтиMedicase
Искусственный интеллект, экспертная система, оценивающая вероятность болезней и состояний на основании опроса пользователя. Экспертная система работает в качестве ассистента для живого консультанта, значительно повышая качество выводов специалиста. Система указывает специалисту, на какие ответы и сочетания факторов стоит обратить внимание для принятия решения. С помощью SDK реализована как сама экспертная система, так и среда для работы консультантов и общения с клиентами.
Перейти
Stappler Science
Приложения и сайты для журналов научной направленности. С помощью SDK реализованы как сами приложения, так и система загрузки, хранения, обработки и доставки информации. Гибкость SDK позволяет конвертировать данные из различных форматов, извлекать метаданные и подготавливать данные для экспорта в наукометрические базы.
ПерейтиSold Online
Профильный сайт для подготовки и контроля недвижимости на торгах. Для экспертов сайта на базе SDK создана аналитическая система, находящая, классифицирующая и оценивающая объекты из общегосударственных баз данных ЕФРСБ и torgi.gov.ru. Кроме этих данных, система собирает и комбинирует массу дополнительной информации о кадастровых записях и проведении торгов непосредственно на торговой площадке. Система позволяет обрабатывать и архивировать всю совокупность данных средствами одного локального сервера, расположенного в офисе у заказчика, тогда как альтернативные предложения предполагали в десятки раз большие затраты на техническую инфраструктуру. Для оценки эффективности, полная пересборка архива и актуальных внутренних баз с нуля занимает не более 32 часов (около 750Гб сжатых архивов, около 4Тб распакованных). Аналогичные задачи, выполняемые другими средствами на том же аппаратном обеспечении, занимают более 240 часов.
ПерейтиНаше выступление на конференции OS Day 2024
Партнёры
При поддержке
Фонда содействия развитию малых форм предприятий в научно-технической сфере