Один код. Много платформ.
Открытый SDK для разработки кросплатформенных настольных и мобильных приложений максимально удобным способом.
Ключевые идеи Stappler:
Единая база кода
Максимальная переносимость и производительность
Минимум внешних зависимостей
Возможность сертификации по требованиям безопасности
Для кого?
Stappler предназначен для команд разработчиков, обслуживающих разнородные информационные системы. В рамках одной такой системы могут быть объединены разнородные подпроекты: серверные приложения, мобильные приложения, автоматизированные рабочие места, средства автоматизации, средства тестирования и многие другие.
Арихитектура фреймворка
Что даёт?
Stappler предполагает использование общей среды и единой кодовой базы для всех информационных систем в проекте, что существенно снижает стоимость разработки и поддержки, снижает требования к числу и специализации разработчиков.
Особенности фреймворка
В Stappler сочетаются современные подходы к разработке и портируемые низкоуровневые решения, подходящие для нестандартных платформ.
Высокопроизводительная графика и вычисления на всех платформах
Копмонент Xenolith представляет собой графический и вычислительный движок низкого уровня. Разрабатывается для использования на современных процессорах и допускает чрезвычайно широкое использование многопоточности.
  • Vulkan
    Для работы с графическими устройствами используется API Vulkan, подходящий и для графических, и для вычислительных задач. Его производительность сравнима с проприетарным интерфейсом CUDA, однако он может быть реализован на значительно более широком круге устройств.
  • Максимальный охват платформ
    ОС: Linux, Windows, Mac OS, Android, iOS
    Архитектуры: x86, e2k (Эльбрус), amd64/ARM, RISC-V, а также потенциальные китайские и индийские процессоры.
  • Графика и вычисления
    • Широкое использование векторной графики.
    • Точный и высокопроизводительный тесселятор позволяет использовать векторную графику, упрощая создание интерфейсов для экранов с различной формой и плотностью пикселей. Тесселятор взаимодействует напрямую с Vulkan, без дополнительных накладных этапов растеризации.
    • Высококачественная типографика.
    • Световые эффекты на основе Signed distance field.
    • Система высокопроизводительных вычислений для задач машинного обучения и статистического анализа.
Единая база кода для всего набора инструментов
Ориентируясь на максимальный охват платформ, мы выбрали язык С++ в качестве основного, и возможность использовать другие языки через виртуальную машину WebAssembly.
  • Упрощенный С++
    Stappler использует лишь ограниченное подмножество языка, и не требует знания наиболее сложных элементов C++, таких, как арифметика указателей и метапрограммирование.
  • Система скриптов на основе WebAssebmly
    • Позволяет создавать скрипты на языках: C/C++, Rust, Java, Go.
    • В будущем: JavaScript, Ruby, Python и другие.
    • Поддерживается живое обновление (live-reload) скриптов.
    • Защищённое окружение исполнения скриптов.
    • Cкорость исполнения скриптов такая же как и нативного кода.
  • Простота и удобство разработки
    • Модульная система сборки.
    • Повторное использование кода.
    • Stappler объединяет классический подход к разработке на языке C++ с практиками, пришедшими из других систем и платформ, чтобы получить наиболее простой и эффективный API.
Создание UI на базе виджетов
Мы совмещаем лучшие и проверенные практики создания пользовательских интерфейсов из таких проектов как: Flutter, Electron, VueJS.
  • Стиль Vue (Proof of concept)
    Создавайте интерфейсы используя Vue-подобный синтаксис разметки SFC (single file components) компонентов.
  • Инструменты
    • Набор интерфейсных элементов (виджетов) на основе Material Design 3.
    • Поддержка экранов с различной ориентаций, разрешением и плотностю пикселей.
Демо
Демонстрационные тесты для инструментов и возможностей графического движка
Встроенная работа с базой данных
API Stappler для работы с базами данных максимально явно и подробно отражает структуру взаимодействия БД, контроля доступа и внешних интерфейсов данных, не становясь при этом “write-only” кодом, требующим чрезмерное количество документации.
  • Поддержка PostgreSQL, SQLite и Postgres Pro
    Компонент db позволяет описывать типы, отношения между полями и схемами данных, контроль доступа и логику автоматизации в одном месте. За счёт полного знания способа работы с данными, компонент db может порождать более оптимальные запросы, автоматически подставлять оптимизации, на что традиционный интерфейс к SQL-базе не способен. Компонент db универсален и может использоваться с одной и той же БД в виде веб-сервера, графического или консольного приложения без изменения кода, отвечающего за данные.
  • Объектно-ориентированный интерфейс наподобие Firebase
    Подход Stappler сочетает преимущества структурированного подхода SQL-БД и гибкость NoSQL (по образцу Firebase). Компонент db сам управляет базой данных и сам способен строить сложные SQL-запросы, а пользователь пользуется NoSQL-подобным API. API может выполнять практически полный комплекс основных задач, включая подвыборки, вычислимые на чтение и запись поля, дельта-запросы, сжатие данных, полнотекстовый поиск и многое другое.
Встроенный модуль веб-сервера
Позволяет реализовать всю инфраструктуру проекта на одном фреймворке. Используется прозрачный сквозной механизм кодирования, сжатия и шифрования данных. Для использования сжатия или шифрования разработчику не требуется вызывать дополнительных функций, система автоматически распознаёт свои форматы сжатия и шифрования, и декодирует их.
  • Серверные приложения
    • Приложения могут автоматически создавать REST-интерфейс для схем баз данных, однако, можно пользоваться и прямым интерфейсом, не задействуя сетевой стек.
    • Удобный роутинг с поддержкой аргументов по умолчанию, подстановочных переменных и жёсткими ограничениями на входные данные.
    • Шаблоны на основе синтаксиса Pug.
    • Простой доступ к БД по принципу ключ-значение или схемы данных.
    • Поддержка протокола WebSocket.
    • Система контейнеризации на основе Docker.
  • Безопасность
    • Авторизация и аутентификация на основе криптографических ключей (в том числе, стандарта ГОСТ 34.10-2018) через встроенные методы HTTP, а также через модифицированную технологию JsonWebToken.
    • К основной концепции JWT добавляется дополнительный шифрованный блок, открыть который может лишь сервер, выписавший токен.
    • Система доступа к БД имеет жёсткий контроль доступа и разграничения прав пользователей.
Stappler в сравнении
Проект конкурирует с различными другими решениями. Ни одна из альтернатив не покрывает полный комплекс платформ, планируемых к поддержке в Stappler SDK.
Команда проекта
  • Катунцев Роман
    Ведущий разработчик
  • Рыбников Виталий
    Разработчик
  • Немчинов Михаил
    Тестировщик
  • Муканин Дмитрий
    Менеджер, технический писатель
Уже используют Stappler SDK
При поддержке
  • Фонда содействия развитию малых форм предприятий в научно-технической сфере
На связи
Дмитрий Муканин
Менджер проекта
Телефон: +7 908 646 39 73
Email: dmitry@stappler.org
Made on
Tilda