Мы рады объявить о выпуске Jmix 2.6, который включает новую функциональность, улучшения и оптимизацию производительности. Этот релиз приносит значительные обновления в Jmix Studio, представляет новые UI-компоненты и повышает продуктивность благодаря умным инструментам и интеграциям.

Ниже представлен краткий обзор ключевых возможностей Jmix 2.6.

Улучшения в Studio

Jmix AI Assistant

Jmix AI Assistant теперь интегрирован в панель инструментов Jmix Studio. Помощник в Studio синхронизирует историю чатов со своим веб-аналогом, обеспечивая бесшовный переход между Studio и веб-браузером.

Новые сниппеты кода

Jmix 2.6 добавляет более 20 новых сниппетов, связанных с UI: уведомления и диалоги, открытие экранов и фрагментов, асинхронное выполнение и примеры API. Эти сниппеты ускоряют и упрощают реализацию типовых UI-паттернов в ваших проектах.

Перемещение экранов

Теперь перемещать экраны между пакетами стало проще благодаря действию контекстного меню Move View в панели Jmix. Эта функция перемещает вместе и Java-контроллер, и XML-дескриптор, автоматически обновляя ключи сообщений в бандле. Кроме того, при перемещении Java-контроллера или XML-дескриптора в панели Project, Studio также предложит переместить соответствующий файл и обновить ключи сообщений.

Создание рендереров для UI-компонентов, таких как колонки dataGrid, стало более интуитивным. Studio предлагает мастер для генерации ComponentRendererTextRenderer или пустого метода-обработчика, упрощая создание кастомных UI-рендереров.

Замена строк на локализованные сообщения

Новое действие Replace with localized message (доступное в Java и XML-коде) позволяет быстро заменять строковые литералы на локализованные сообщения из бандла.

Например, представьте, что у вас есть следующий код в дескрипторе экрана:

@Subscribe  
public void onInit(final InitEvent event) {  
    someLabel.setText("Hello World");  
}  

Установите курсор на строку "Hello World" и нажмите Alt+Enter. Выберите действие Jmix: Replace with localized message, и Studio откроет диалог для создания локализованного сообщения. После ввода ключа и нажатия OK код изменится следующим образом:

@ViewComponent  
private MessageBundle messageBundle;  

@Subscribe  
public void onInit(final InitEvent event) {  
    someLabel.setText(messageBundle.getMessage("label.text"));  
}  

Поддержка Lombok

Studio теперь поддерживает аннотации @Getter и @Setter на сущностях и @RequiredArgConstructor на Spring-бинах, избегая избыточного кода. Также добавлено предупреждение об использовании @EqualsAndHashCode или @Data на сущностях, что может привести к проблемам из-за некорректной реализации equals/hashCode.

Производительность в крупных проектах

Производительность Studio значительно улучшена для больших проектов. Дерево проекта в панели Jmix и редактор ролей теперь работают быстро, даже если проект содержит более 1000 сущностей.

Новые UI-компоненты и возможности

Компонент Switch

Представляем новый компонент Switch, позволяющий переключаться между двумя состояниями (например, вкл/выкл или true/false). Его дизайн имитирует физический переключатель с движущимся элементом, добавляя современный стиль в ваш UI.

Улучшения в Tabbed Application Mode

Дополнение Tabbed Application Mode теперь полностью готово к использованию и получило ряд улучшений:

  • Компонент mainTabSheet явно определяется в компоновке главного экрана, поддерживая действия через контекстное меню вкладок или горячие клавиши, а также перетаскивание вкладок.

  • Аннотация @TabbedModeViewProperties для определения параметров экрана во вкладках.

  • Сохранение состояния UI и вызов UIRefreshEvent при обновлении страницы.

Автодополнение в CodeEditor

Компонент codeEditor теперь поддерживает автодополнение для определённых языковых режимов или кастомных обработчиков предложений.

Размещение в слотах HorizontalLayout

Компонент hbox теперь поддерживает добавление компонентов в слоты startcenter или end, упрощая позиционирование внутри HorizontalLayout. Например:

<hbox id="horizontalBox" width="100%" css="border: 1px solid black;" padding="true">  
    <startSlot>  
        <textField label="Start component" width="9em"/>  
    </startSlot>  
    <middleSlot>  
        <textField label="Middle component" width="9em"/>  
    </middleSlot>  
    <endSlot>  
        <textField label="End component" width="9em"/>  
    </endSlot>  
</hbox>  

Экспорт/импорт шаблонов сообщений

Дополнение Message Templates теперь поддерживает действия Export и Import, упрощая перенос шаблонов между приложениями.

Улучшения в REST DataStore

В дополнении REST DataStore упрощен вызов удалённых сервисов через REST API. Теперь для этого достаточно создать интерфейс, отражающий методы сервиса, и пометить его аннотацией @RemoteService.

Кроме того, теперь в дополнение входит бин restds_RestOidcAuthenticator, позволяющий использовать внешний провайдер аутентификации (например, Keycloak) при интеграции приложений.

Библиотека UI-тестирования Masquerade

Jmix 2.6 представляет Masquerade — библиотеку для end-to-end тестирования UI, разработанную специально для Jmix-приложений. Основанная на Selenium WebDriver и Selenide, Masquerade упрощает тестирование, предоставляя удобные обёртки и облегчая доступ к функциям веб-элементов.

Обновлённые зависимости

Релиз Jmix 2.6 включает обновления основных зависимостей:

  • Spring Boot версии 3.5.

  • Vaadin версии 24.7.

Эти обновления гарантируют, что Jmix продолжает работать на современной, безопасной и производительной основе.

Планы на будущее

Следующий функциональный релиз ожидается в октябре 2025 года. Мы сосредоточимся на следующем функционале:

  • Группировка в компоненте DataGrid

  • Новый компонент UserMenu

  • Визуализация модели данных

  • Дополнение SAML

  • Возможность определять отчёты в Java-коде

  • Реверс-инжиниринг: генерация атрибутов из колонок БД для уже отображённых сущностей

Заключение

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

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

Большое спасибо всем участникам сообщества за отчеты об ошибках, запросы на функциональность, идеи и предложения. Мы надеемся, что Jmix 2.6 принесёт ещё больше успеха вашим проектам

Комментарии (0)