What’s New

This section covers new features of Jmix framework 1.6, as well as some breaking changes to be aware of when upgrading from a previous version of the framework.

Version 1.6 doesn’t come with a corresponding version of Studio. Instead, we recommend using the latest available Studio 2.x.

How To Upgrade

To create new projects with Jmix 1.6 or to upgrade an existing project, you need Studio 2.3 or later, so update your Jmix Studio plugin first.

Studio 2.3 requires IntelliJ IDEA version 2023.3 or newer.

See Upgrading Project section for how to upgrade your project using Studio. The automatic migration procedure makes the following changes in your project:

  • Updates the version of Jmix BOM which in turn defines versions of all dependencies.

  • Updates the version of Jmix Gradle plugin.

  • Updates the version of Gradle wrapper to 8.0.2 in gradle/wrapper/gradle-wrapper.properties.

See also the full list of breaking changes that can affect your project after the upgrade.

Updated Dependencies

ch.qos.logback:logback-classic:1.2.13
ch.qos.logback:logback-core:1.2.13
com.fasterxml.jackson.core:jackson-core:2.16.1
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.16.1
com.fasterxml.woodstox:woodstox-core:6.5.1
com.google.guava:guava:33.1.0-jre
com.google.gwt:gwt-dev:2.10.0
com.google.protobuf:protobuf-java:3.21.12
com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20220608.1
com.hazelcast:hazelcast:5.3.6
com.ibm.icu:icu4j:74.2
com.jayway.jsonpath:json-path:2.9.0
com.nimbusds:nimbus-jose-jwt:9.37.3
com.nimbusds:oauth2-oidc-sdk:9.43.4
com.opencsv:opencsv:5.9
com.thoughtworks.xstream:xstream:1.4.20
commons-io:commons-io:2.15.1
net.sf.jasperreports:jasperreports-fonts:6.20.6
net.sf.jasperreports:jasperreports:6.20.6
org.apache.commons:commons-compress:1.26.0
org.apache.james:apache-mime4j-core:0.8.10
org.apache.logging.log4j:log4j-core:2.18.0
org.apache.poi:poi:5.2.5
org.apache.tika:tika-parsers:1.28.5
org.apache.xmlgraphics:batik-*:1.17
org.apache.xmlgraphics:fop:2.8
org.apache.xmlgraphics:xmlgraphics-commons:2.8
org.docx4j:docx4j-ImportXHTML:8.3.11
org.docx4j:docx4j-JAXB-ReferenceImpl:11.3.2
org.docx4j:docx4j-export-fo:11.3.2
org.dom4j:dom4j:2.1.4
org.elasticsearch.client:elasticsearch-rest-high-level-client:7.17.18
org.freemarker:freemarker:2.3.32
org.glassfish:jakarta.el:3.0.4
org.hsqldb:hsqldb:2.7.2
org.jsoup:jsoup:1.17.2
org.postgresql:postgresql:42.7.3
org.springframework:spring-web:5.3.37
org.springframework:spring-webmvc:5.3.37
org.webjars.npm:grapesjs-blocks-basic:1.0.2'
org.webjars.npm:grapesjs-blocks-flexbox:1.0.1'
org.webjars.npm:grapesjs-custom-code:1.0.2'
org.webjars.npm:grapesjs-parser-postcss:1.0.3'
org.webjars.npm:grapesjs-plugin-ckeditor:1.0.1'
org.webjars.npm:grapesjs-plugin-forms:2.0.6'
org.webjars.npm:grapesjs-preset-newsletter:1.0.2'
org.webjars.npm:grapesjs-preset-webpage:1.0.3'
org.webjars.npm:grapesjs-style-filter:1.0.2'
org.webjars.npm:grapesjs-tabs:1.0.6'
org.webjars.npm:grapesjs-tooltip:0.1.8'
org.webjars.npm:grapesjs-tui-image-editor:1.0.2'
org.webjars.npm:grapesjs:0.21.8'
org.webjars.npm:mime-db:1.51.0'
org.webjars:jquery-ui:1.13.2
org.yaml:snakeyaml:2.2
xerces:xercesImpl:2.12.2

New Features and Improvements

Sorting by Multiple Columns in DataGrid

Sorting by multiple columns in DataGrid is now possible when you click a column header while holding down the Shift key.

GroupTable Sorts by Grouping Columns

GroupTable now automatically adds sorting by grouping columns. So, when using pagination, the distribution of data between pages corresponds to grouping.

You can add the sortOnGroupEnabled="false" attribute to the groupTable element to turn off this feature.

Collection Properties in Generic Filter

The Filter component now allows you to create conditions for collection (to-many) properties.

For example, in the Onboarding application, you can filter Users by the steps property and its nested properties: steps.dueDate, steps.step.name, etc. The JPA data store will automatically create an appropriate JPQL query with the join clause. Previously, you could achieve this only by defining a JPQL condition manually.

Total Progress in FileMultiUploadField

FileMultiUploadField now displays the total progress of uploaded files. It provides better feedback to users when uploading many small files.

Use totalProgressFormat property to set a custom total label format and totalProgressEnabled property to set whether to display the total progress bar.

Monitoring Loaders in Screens

Data loaders now provide detailed monitoring data through the Micrometer API.

See #3023 and #1704 for more information.

Breaking Changes

Removed Flow UI

Last year, when we released Jmix 2.0, we announced that Classic UI would continue to exist in the Jmix 1.x branch, while Flow UI would be included in Jmix from version 2.0 onwards (see Extended Support for Classic UI).

Therefore, we have removed Flow UI modules from Jmix 1.6.

If you have a project on Jmix 1.5 using Flow UI, migrate to the latest Jmix 2.x.

YARG Classes Moved Into Reports

The YARG report engine has been moved from an external dependency into the Reports add-on sources. If you have used com.haulmont.yarg.* classes in your project, replace their imports to io.jmix.reports.yarg.*.

Data Repositories Initialization

Previously optional @EnableJmixDataRepositories annotation is now required to initialize data repositories in the project. See #3428 and #1589 for more information.

Lazy Loaded Soft Deleted OneToOne Reference

The lazy loading of soft-deleted one-to-one references has been fixed. Now it behaves the same as eager loading with fetch plans:

  • Soft-deleted entities are loaded through one-to-one references from the owning side.

  • Soft-deleted entities are NOT loaded through one-to-one references from the mappedBy side.

Previously, the behavior of lazy loading was opposite.

See #2466 for more information.

Changelog

Resolved issues in Jmix Framework: