Introduction

Welcome to the Jmix documentation!

Please note that Jmix is currently in preview. We are working on finalizing features, stabilizing API, bugfixing and documentation.

What is Jmix?

Jmix is a high-level framework for enterprise web applications. It comes with advanced tooling and a rich set of functional modules.

Jmix is best suited for creating data-centric applications with a complex data model and rich user interface. It is a full-stack framework in the sense that it provides support for creating both the backend and UI of your application.

Jmix is based on Spring Boot, which is a de-facto standard for creating enterprise Java web applications. It means that you can use a lot of third-party libraries and frameworks with minimal configuration, in addition to the functionality provided by Jmix.

Jmix itself consists of a number of fine-grained modules that you include in your project using starters, as you would do for any Spring Boot application. All modules except the core one are optional, so you can have only dependencies that you really need.

Jmix Studio is a plugin for IntelliJ IDEA that helps you at all stages of the application development: creating and configuring a project, defining data model, generating database migration scripts, developing UI screens in a visual editor. It provides advanced navigation, code completion and inspections specific to Jmix projects.

Key Concepts

Jmix provides a convenient way of working with one or multiple relational databases. With some additional effort, you can connect to any data source like a no-SQL database or an external API.

Developing with Jmix usually starts from defining the data model. Jmix Studio creates the database schema from the data model automatically, and when your data model evolves, Studio helps you synchronize the database schema with the model by generating database migration scripts. If you have an existing database already, you can generate the data model from your database schema, also with the help of Studio.

Jmix is based on Spring Framework, so use Spring beans to create the business logic that works with your data model.

As soon as you have some entities in the data model, Studio can generate UI screens for CRUD operations on the entities. Then you can customize the UI in many ways: change the layout, add and remove visual components, adjust the data loading.

Choosing UI

You can use any frontend technology to work with Jmix backend through its Generic REST or custom endpoints of your application.

Moreover, Jmix provides two specific options for rapid creation of the user interface:

  1. Backoffice UI allows you to develop the rich web UI using just Java/Kotlin and XML. In this case, your UI components work in the same JVM as your backend, which simplifies working with data and invoking business logic. Also, you don’t have to be familiar with the modern JavaScript/HTML/CSS stack.

    The downside of this technology is limited scalability: the backend side of the UI is stateful and consumes the amount of resources proportional to the number of concurrent user sessions. So Backoffice UI is suitable when you have a predictable and not very high (up to tens of thousands) number of users working with the system at the same time.

  2. Frontend UI allows you to create a traditional frontend with React and TypeScript, working with the Java backend through the REST API. It is more flexible in terms of layout customization and enables easy integration of UI libraries and components from the vast JavaScript ecosystem. It’s also infinitely scalable, as the UI state resides in the user’s browser and the backend is stateless.

    On the other hand, the entry barrier to the Frontend UI is higher if you don’t have experience in frontend technologies, and the speed of development is usually lower. This differentiation is amplified by the fact that currently Studio supports Backoffice UI much better than Frontend UI.

Choosing UI is not an "either-or" decision: you can use both technologies in your project. For example, you can quickly create a bunch of administrative screens for internal users of your application with Backoffice UI, and develop a more polished UI with specific functionality for external users using Frontend UI. Both UIs in this case will work with the same data model and business logic.

Documentation Overview

If you are new to Jmix, set up your development environment and go to the Quick Start section which will walk you through the creation of a small fully functioning application.

Check out the Using Studio section to get more information about Jmix Studio features and installation options.

The rest of the documentation is organized by topics:

  • The top-level sections from Data Model to Deployment explain basic topics that help you develop any kind of application.

  • The Add-ons section describes additional modules that provide out-of-the-box functionality to your project.

  • Appendices contain some reference information and the Migration from CUBA guide.