Jmix 0.9 - это последняя предрелизная, “практически стабильная” ветка фреймворка. Вместе с этим релизом мы также обновляем инструмент для Jmix разработчиков - Jmix Studio: 0.9.1-202.
В этом релизе мы “заморозили” все основные API: определение модели данных, слой доступа к БД, а также систему безопасности. С большой долей вероятности все это будет перенесено без изменений в версию 1.0. Это означает, что можно рассматривать Jmix 0.9 как отличный вариант для разработки MVP. Ожидается, что миграция на 1.0 будет практически незаметной.
Давайте взглянем на самые заметные изменения в разных частях фреймворка.
Jmix Studio
Первая вещь, о которой стоит упомянуть: теперь на Jmix можно создавать разные виды проектов. В версии 0.9 при создании проекта вы можете выбрать три вида шаблонов:
- Application - для создания “обычного” Jmix приложения.
- Theme - для создания темы CSS для приложения. Тему можно будет установить в Jmix приложение в виде компонента.
- Widget - этот тип проекта упрощает разработку собственного элемента пользовательского интерфейса.
Для облегчения работы Studio предоставляет отдельное окно для работы с проектом. С его помощью вы можете просматривать файлы настроек приложения, исследовать модель данных, конфигурировать источники данных и делать ещё множество специфичных для Jmix вещей.
Core
Ядро фреймворка сейчас основано на Spring Boot 2.4.2, и мы планируем обновить его до последней версии - 2.4.4 в Jmix 1.0. И, конечно же, процесс обновления на этом не остановится, а продолжится с выходом новых версий Spring Boot.
Как уже было объявлено, основным средством обновления БД в Jmix становится Liquibase. Как это было в CUBA, при обновлении модели данных в приложении обновляются и скрипты создания БД. Но в отличие от предшественника, в Jmix эти скрипты теперь создаются в формате XML и благодаря движку Liquibase могут выполняться на разных СУБД.
Опытные CUBA разработчики обязательно заметят непривычную деталь: теперь в коде “пустого” приложения появился класс User
, который раньше прятался в недрах фреймворка. Это сознательный ход: мы решили генерировать ключевые классы подсистемы управления пользователями непосредственно для каждого приложения. Это должно сильно упростить изменение функциональности по работе с пользователями и привилегиями, если такая необходимость возникнет.
Backoffice UI
В настоящий момент все компоненты переделаны под использование API Jmix и готовы к релизу. Напоминание: в Jmix Backoffice UI располагается в одном модуле с бизнес-логикой. Больше нет разделения на модули core
и web
, как это было в CUBA.
На данный момент Backoffice UI добавляется в Jmix проект по умолчанию. Но это всего лишь ещё одна запись в списке зависимостей в скрипте сборки. Так что при необходимости вы можете легко удалить UI из приложения. И, конечно же, генераторы экранов доступны в Jmix Studio, так что добавление CRUD функциональности в приложение делается за пару кликов.
React UI
Генератор React клиента был значительно улучшен. Продолжается разработка библиотек для упрощения разработки на ReactJS под Jmix. В настоящий момент уже доступны две библиотеки: Jmix React Core для работы с сущностями и сервисами Jmix и Jmix React UI - набор UI компонентов для быстрой разработки пользовательского интерфейса.
И теперь есть возможность применения собственных тем для React клиента, аналогично тому, как это делается для Backoffice UI. Созданию новых тем посвящен целый раздел документации.
Компоненты
Сейчас для скачивания доступно шесть компонентов:
- REST API
- Maps
- Dynamic Attributes
- Entity Log
- Entity Inspector
Мы продолжаем активную работу над адаптацией компонентов для Jmix, и для версии 0.9 будут выпущены BPM и Charts компоненты. К выпуску 1.0 мы постараемся адаптировать большинство самых часто используемых компонентов.
Заключение
Если у вас были мысли об использовании Jmix, то сейчас очень хорошее время, чтобы начать это делать. API стабилизирован, так что ничего не нужно будет переделывать при миграции MVP на стабильную версию в будущем.
И в то же время, при работе с фреймворком можно уже попробовать добавлять компоненты Spring Boot, разворачивать приложение в облаках при помощи встроенной генерации Docker образа, и все это - при сохранении непревзойденной скорости разработки, так знакомой тем, кто начинал с CUBA.