Введение

Добро пожаловать в документацию Jmix!

Что такое Jmix?

Jmix – это высокоуровневый фреймворк для разработки корпоративных веб-приложений. Он предлагает передовой инструментарий и богатый набор функциональных модулей.

Jmix лучше всего подходит для создания ориентированных на данные приложений со сложной моделью данных и насыщенным пользовательским интерфейсом. Это full-stack фреймворк, что означает поддержку разработки и backend, и UI вашего приложения.

Jmix основан на Spring Boot, что является фактически стандартом для разработки корпоративных веб-приложений на Java. Это означает, что вы можете использовать множество сторонних библиотек и фреймворков после минимальной конфигурации в дополнение к функционалу самого Jmix.

Jmix Studio – это плагин для IntelliJ IDEA, который помогает на всех этапах разработки приложений: создание и конфигурация проекта, определение модели данных, генерация скриптов для миграции базы данных, разработка UI экранов в визуальном редакторе. Он предоставляет продвинутую навигацию, автодополнение кода и инспекции, специфичные для Jmix-проектов.

Начало работы

Если вы новичок в Jmix, настройте свою среду разработки и посмотрите "Быстрый старт" - 15-минутное видео для ознакомления с созданием приложений.

После завершения руководства по быстрому старту, изучите демонстрационные приложения и взгляните на дополнения, чтобы получить представление о функционале Jmix, предоставляемом "из коробки".

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

Используйте данную документацию при разработке на Jmix:

  • В разделе Использование Studio детально представлены особенности Jmix Studio и варианты установки.

  • Корневые разделы от Модели данных до Развертывания объясняют основные функции, помогающие при разработке приложений любого типа.

  • Раздел Дополнения описывает дополнительные модули, которые вы можете использовать в своем проекте.

Обзор архитектуры

Here you can find a few diagrams in C4 Model notation that show a birds eye view of the Jmix landscape.

Контейнеры

First, let’s divide a typical information system built with Jmix into containers. A container here is a separately runnable/deployable unit that executes code or stores data.

architecture containers.drawio

As you can see, the main part of the system includes a web application running on JVM and a relational database. The web application is based on Spring Boot and can be written in Java or Kotlin. A relational database is used to store data of Jmix subsystems (for example, security configuration) and as a main storage of application data.

The Jmix application can connect to any number of additional data stores and use a separate file storage on a file system or in the cloud. Also, Jmix offers integrations with Elasticsearch for full-text search through the application data, and with an OIDC server for external authentication and SSO.

The Jmix application provides users with a web interface. It’s created in Java/Kotlin and XML using the Jmix UI subsystem.

You can also create a separate frontend application and connect it with the Jmix backend through the Jmix REST API or by creating custom endpoints. Note that frontend applications are out of Jmix scope, you can create them with any technology of your choice.

Компоненты

Let’s zoom in to the Jmix Application container and explore its components.

architecture jmix application.drawio

A Jmix application always contains dependencies to Spring Boot and to a number of Jmix subsystems. There are two categories of Jmix subsystems:

  • Core subsystems provide system-level functionality and are included in most projects.

  • Add-ons are optional subsystems that can be included in the project on demand. The add-ons are published at Jmix marketplace.

Technically, both core subsystems and add-ons are organized in the same way. A subsystem contains one or more functional modules and corresponding Spring Boot starters, each packaged in a JAR file. A subsystem can depend on other subsystems: for example, many add-ons contain screens that require dependency on the core UI subsystem.