Открытый российский SDK

Импортозамещение кроссплатформенной разработки

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

Интерфейс приложения на Stappler SDK

Ключевые идеи Stappler SDK

Единая база кода

Максимальная переносимость и производительность

Минимум внешних зависимостей

Простота освоения и удобство разработки

Для кого?

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

Что даёт?

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

Особенности фреймворка

В Stappler сочетаются современные подходы к разработке и портируемые низкоуровневые решения, подходящие для нестандартных платформ.

Высокопроизводительная графика и вычисления на всех платформах

Компонент Xenolith представляет собой графический и вычислительный движок низкого уровня. Разрабатывается для использования на современных процессорах и допускает чрезвычайно широкое использование многопоточности.

Векторная графика 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.

Код Stappler SDK

Используйте упрощённый 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.

Интерфейс на виджетах Stappler

Стиль 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 может выполнять практически полный комплекс основных задач, включая: подвыборки, вычислимые на чтение и запись поля, виртуальные поля, триггеры, дельта-запросы, сжатие данных, полнотекстовый поиск и многое другое.

Встроенный модуль веб-сервера

Используется прозрачный сквозной механизм кодирования, сжатия и шифрования данных. Для использования сжатия или шифрования разработчику не требуется вызывать дополнительных функций: система автоматически распознаёт свои форматы сжатия и шифрования и декодирует их.

Веб-сервер Stappler

Серверные приложения

  • Шаблонизатор на основе синтаксиса Pug.
  • Общий код и инструменты клиент/сервер.
  • Интеграция C/C++ и другого кода, Vulkan на сервере.
  • Нативная производительность — низкая стоимость ресурсов.
  • Поддержка протокола WebSocket.
  • Система контейнеризации на основе Docker.
  • Возможность нетиповых решений.

Криптография

  • Авторизация и аутентификация на основе криптографических ключей (в том числе ГОСТ 34.10-2018, ГОСТ 34.11-2018, ГОСТ 34.12-2018) через встроенные методы HTTP, а также через модифицированную технологию JsonWebToken.
  • К основной концепции JWT добавляется дополнительный шифрованный блок, открыть который может лишь сервер, выписавший токен.
  • GnuTLS и OpenSSL.
  • Пользовательские криптохранилища.
  • Упрощённый интерфейс.

Stappler в сравнении

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

Stappler SDKFlutterQtKotlin MultiplatformReact Native
Платформы Android, iOS, Linux, Windows, MacOS, отечественные, китайские и др.Web, iOS, Android, Linux, Windows, MacOSWeb, iOS, Android, Linux, Windows, MacOSWeb, iOS, Android, Linux, Windows, MacOSWeb, iOS, Android, Linux, Windows, MacOS
Типы приложений Настольные, мобильные, командной строки, модули веб-сервера, гибридные (графические API на веб-сервере и подобные)Настольные и мобильныеНастольные, мобильные, командной строки, модули веб-сервераНастольные, мобильные и серверныеНастольные и мобильные
Язык разработки C/C++, Rust, Go, JVM Languages, JavaScript и др.DartC++/QMLKotlinJavaScript
Режим исполнения Компиляция кода, интерпретация WASM, компиляция WASM в нативный кодКомпиляция, интерпретацияКомпиляцияВиртуальная машинаКомпиляция, интерпретация
Инструменты создания интерфейсов Виджеты, похожие на нативные компоненты платформы, возможность создания отдельного UIKit платформыВиджеты, похожие на нативные компонентыСобственные виджеты QtВиджеты Material и SwiftНативные компоненты для Android и iOS
Графика Собственный графический движок Xenolith на базе API VulkanСобственный графический движок Skia на базе API OpenGLСобственная реализация графики под каждую платформуСобственная реализация графики под каждую платформуНативная графика
Производительность Очень высокая (жёсткая оптимизация графики, использование оптимизированных форматов обмена данными, использование сжатия)Высокая (требует глубокой оптимизации кода приложения)ВысокаяСредняя (ограничена виртуальной машиной)Высокая, близкая к нативной
Работа с БД Унифицированные интерфейсы определения и доступа к БДЧерез сторонние проектыЧерез сторонние проектыЧерез сторонние проектыЧерез сторонние проекты
Бэкенд Есть унифицированные интерфейсы, не нужны дополнительные специалистыЧерез сторонние проектыЕсть серверные компонентыСерверные компоненты JavaЧерез сторонние проекты
Ограничения кодовой базы Необходимы адаптеры для функций платформы. Используется штатный компилятор и библиотеки платформы.Необходимо портирование компилятора и библиотек под платформу.Необходимо портирование средств сборки и частично библиотек на платформу. Необходимы адаптеры для функции платформы.Необходимо портирование JVMНеобходимо полное портирование на платформу. Портирование осложняется ограничениями нативных виджетов.
Зависимости Необходимый минимум стандартных библиотек. Стандартный компилятор платформы.Собственные средства сборки и библиотекиСобственные средства сборки и библиотекиJVMСобственные средства сборки и библиотеки
Средства для разработчика Hot-reload, средство покрытия кода, машиночитаемая кодовая база (структура кода заголовков в виде JSON для генерации кода на их основе)Hot-reloadHot-reloadHot-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

Наше выступление на конференции OS Day 2024

Партнёры

При поддержке

Фонд содействия инновациям

Фонда содействия развитию малых форм предприятий в научно-технической сфере

Наши контакты и чат для общения

+7 908 646 39 73
admin@stappler.dev

Telegram-чат