What’s New

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

How To Upgrade

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

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 7.4 in gradle/wrapper/gradle-wrapper.properties.

New Features

Business Calendar Add-on

The add-on allows you to manage business calendars containing holidays, scheduled and additional business days. Configured business calendars provide API to work with working dates and times.

This add-on requires the Enterprise subscription.

See the Business Calendars section for more details.

Notifications Add-on

The add-on allows you to create and send notifications via various message channels. Users can receive informational messages, notifications about system events, as well as notifications from business processes.

This add-on requires the Enterprise subscription.

See the Notifications section for more details.

OpenID Connect Add-on

The OpenID Connect add-on provides predefined Spring Security configurations and a set of services that simplifies the following operations:

  • User authentication using an external OpenID Provider (e.g., Keycloak).

  • Mapping of user attributes and roles from OpenID Provider user to Jmix user.

  • Persisting user entity and role assignments after the user is successfully authenticated at OpenID Provider.

At the moment the add-on is not yet published on Marketplace, but you can install it by adding the following dependencies to your build.gradle:

implementation 'io.jmix.oidc:jmix-oidc-starter'
The OpenID Connect add-on is now in the incubating state and its API and behavior may be modified in the future minor and patch releases.

See README in the add-on source repository for more details.

Quartz Add-on

This add-on allows you to manage Quartz jobs via user interface:

  • Create new Quartz jobs from the existing implementation of org.quartz.Job interface.

  • Pause and resume jobs execution.

  • Trigger immediate execution of inactive jobs.

  • Edit job triggers and parameters.

  • Delete jobs.

See the Quartz section for more details.

Application Settings Add-on

The Application Settings add-on provides a simple API and UI to work with mutable values of different types stored in database. These values are usually used as parameters of different functionality of the application.

See the Application Settings section for more details.

Composite Projects

Now Studio allows you to develop multiple add-ons and applications as a single IDE project, even if they are located in different source code repositories.

To create a composite project, start the project wizard and select the Jmix version 1.2.1 or newer and Composite Project template. Studio will create a project with the following structure (provided that the project name is demo):

root-dir/
    demo-all/
        build.gradle
        settings.gradle

After that, you can create or add subprojects using the New → Subproject…​ actions of the Jmix tool window. We recommend placing subprojects inside the project root next to the <project-name>-all aggregator project.

Code Snippets

To improve developer experience, Studio now offers a palette of code snippets. The palette of snippets is displayed in the Code Snippets tool window, which is available on the right side of the IDE when a Java or Kotlin file is opened in the editor. You can drag and drop snippets from the palette to your code.

The snippets are context-dependent and may request parameters from the developer.

All code snippet templates are located in jmix-code-snippets.xml files inside the relevant framework modules. You can define your own snippets on the project or an add-on level: just create a jmix-code-snippets.xml file in the project’s resources using an example from the framework.

JPQL Designer

The JPQL designer allows you to define JPQL queries for loading entities and scalar values from the database.

At the moment, the JPQL designer is opened automatically when you use the Data → Load …​ by query code snippets. After thorough testing, we’ll make it available also for creating and editing queries everywhere in your source code.

The JPQL designer requires the RAD or Enterprise subscription.

Breaking Changes

Handling of duplicated JmixModule id

If you get an exception like java.lang.IllegalStateException: Duplicated Jmix module id 'com.company.untitled3' is provided by XConfiguration and YConfiguration. Consider using @JmixModule.id attribute to specify a unique module id. on context load, specify a unique id for one of the configurations:

@JmixModule(id = "com.company.myapp.test", dependsOn = MyConfiguration.class)
public class MyTestConfiguration {

By default, Jmix module’s id is equal to the package of the configuration class.

Programmatic search index definition mapping

In the Search add-on, the builder API for defining index mapping has been changed. See the new API example at the Programmatic Mapping section.

Changelog