Концепции
Jmix — это платформа для разработки, включающая фреймворк, дополнения и Studio IDE.
Если вы хотите быстро получить общий обзор Jmix, посмотрите диаграммы ниже, а также 7-минутное видео на YouTube.
Чтобы познакомиться с идеями, лежащими в основе Jmix, и его возможностями, а также получить ответы на вопросы типа "почему оно так устроено?", прочитайте разделы Принципы и Обзор возможностей. Это поможет вам принимать обоснованные решения и использовать платформу более эффективно.
Обзор архитектуры
Здесь представлены несколько диаграмм в нотации C4, которые показывают общую картину ландшафта Jmix.
Контейнеры
Во-первых, давайте разделим типичную информационную систему, построенную с помощью Jmix, на контейнеры. Контейнер здесь – это отдельно запускаемый / развертываемый модуль, который выполняет код или хранит данные.
Как видите, основная часть системы включает в себя веб-приложение, работающее на JVM, и реляционную базу данных. Веб-приложение основано на Spring Boot и может быть написано на Java или Kotlin. Реляционная база данных используется для хранения данных подсистем Jmix (например, конфигурации безопасности) и в качестве основного хранилища данных приложений.
Приложение Jmix может подключаться к любому количеству дополнительных хранилищ данных и использовать отдельное файловое хранилище в файловой системе или в облаке. Кроме того, Jmix предлагает интеграцию с Elasticsearch для полнотекстового поиска по данным приложения и с сервером OIDC (или LDAP) для внешней аутентификации и единого входа.
Приложение Jmix предоставляет пользователям веб-интерфейс. Он создан на Java/Kotlin и XML с использованием подсистемы пользовательского интерфейса Jmix.
Вы также можете создать отдельное фронтенд-приложение и подключить его к бэкенду Jmix через Jmix REST API или путем создания собственного API. Обратите внимание, что фронтенд-приложения выходят за рамки Jmix, и вы можете создавать их с помощью любой технологии по вашему выбору.
Компоненты
Давайте подробнее рассмотрим контейнер Jmix Application и его компоненты.
Приложение Jmix всегда содержит зависимости от Spring Boot и ряда подсистем Jmix. Существует две категории подсистем Jmix:
-
Основные подсистемы (Core subsystems) обеспечивают функциональность системного уровня и включены в большинство проектов.
-
Дополнения (Add-ons) – это дополнительные подсистемы, которые могут быть включены в проект по требованию. Они публикуются на маркетплейсе Jmix.
Технически, как основные подсистемы, так и дополнения организованы одинаково. Подсистема содержит один или несколько функциональных модулей и соответствующие стартеры Spring Boot, упакованные в JAR-файлы. Подсистема может зависеть от других подсистем: например, многие дополнения содержат экраны, которые требуют зависимости от основной подсистемы пользовательского интерфейса.