All articles

Jmix is the new efficient Way of building Business Applications

Developing business applications could be efficient. Oftentimes it is not. There are a lot of reasons for this, but one of the main ones is developers lack the right tool for the job.

Popular libraries and frameworks like Spring Boot (Java), Express JS (Node), React/Angular/Vue (JS) are focusing on technological problems. But they have nothing to do with more specific domain areas: e-commerce websites, line of business applications, or content management systems. They "focus" on all of them, which means they focus on none.

However, you definitely can be more productive if you find a tool that solves particular problems in a specific area. Such tools do exist. In our case, it’s a tool for creating business applications — Jmix.

Jmix is a full-stack framework that holds your hand in a lot more situations than you have ever experienced before when writing business applications.

At first glance, you might think that it’s one of the low-code representatives. Actually, it’s a lot more flexible and gives you the freedom that no low-code platform provides: you fully control every application you develop with Jmix. No charges for end-users, no restrictions on you. Jmix treats your source code as a first-class citizen. It is an open-source “less-code” business application framework from developers for developers.

Did I get you interested? Let's look into the details.

Efficient Application Development

As I mentioned above, Jmix focuses on a particular area: business applications, and they often have similar characteristics:

  • Fine-grained security capabilities
  • Reporting / Filtering mechanisms for data exploration
  • Big data models
  • A lot of UI screens for administrative tasks or master data

To address the above-mentioned requirements, the runtime framework needs three things: a good technical foundation, context-aware tooling and ready-made features to solve typical functional requirements. Those three pillars build the basis for efficient business software development:

  1. Integrated full-stack framework
  2. Tooling support
  3. Ready-made features

Let’s have a look at how Jmix covers those fundamentals.

Introducing Jmix

Jmix is a brand-new framework, which still has the maturity of a platform that is present for more than a decade. It is built on the latest technological underpinnings. Jmix is the ideological successor of CUBA Platform, a framework that is in use by thousands of developers worldwide, from small start-ups to Fortune 500 enterprises. Like CUBA Platform, Jmix aims to create business applications very efficiently, providing solutions to all three pillars of efficient software development.

picture

Jmix covers all aspects of an application, from the UI or API to the database. It leverages industry standard frameworks and tools to provide the best developer experience. The framework is supported by an IntelliJ IDEA plugin Jmix Studio which helps you get rid of problems connected with multiple tooling and speeds up the development process.

The focus on business applications allows Jmix to provide solutions almost perfectly fitting the developers’ needs in this area. As I mentioned above, one of the business software development fundamentals is ready-made features. Jmix provides a marketplace of full-stack add-ons to cover everything from the database to the user interface, including:

  • reporting,
  • full-text-search,
  • business process management,
  • enterprise-grade security.

They can be used immediately without a significant amount of integration work.

Jmix relies on open-source software and is open-source itself: licensed under Apache 2.0. So, you are not forced into any proprietary technology.

Jmix Studio

Being an IntelliJ IDEA plugin, Jmix Studio integrates seamlessly with it and leverages its benefits, such as debugging, test execution, and various ways of source code manipulation that developers need in their daily work. The Studio has a lot of convenient features that enhance your productivity. Based on a visual data model designer, Jmix Studio can scaffold the initial parts of the user interface to adjust the UI later.

You can switch between the source code and visual representation at any time and make changes both ways. This is true for all artifacts like data models, user interface, business processes, or security role definitions.

picture

Jmix Studio has a free version with the main functionality. For the visual designer productivity enhancements, there are two commercial subscription plans.

Jmix Architecture

For various application aspects, Jmix relies on common frameworks and specifications:

  • Spring Boot underpins Jmix and is used for dependency injection and business logic;
  • JPA for data modeling;
  • Liquibase for database schema definition;
  • Vaadin for user interfaces;
  • Gradle as the build system.

Let’s dive a bit deeper into these underlying technologies and their roles.

Spring Boot is the overall basis for Jmix, so developers can easily understand what happens at the Jmix core.

JPA is a widely used Java specification for accessing data from relational databases. Jmix provides a data access API on top of JPA, incorporating additional aspects like security or soft delete capabilities.

When it comes to changes and the evolution of the database schema, Liquibase comes into play. Jmix Studio generates the Liquibase changelogs based on your changes in the entity model. Of course, you are free to adjust them however you want if needed. As for the databases, Jmix supports all major relational database systems, like Postgres, MySQL/MariaDB, and commercial products like Oracle and Microsoft SQL Server, out-of-the-box.

For the user interface, Jmix uses Vaadin by default. Vaadin is a UI framework that focuses on the business applications’ needs and has dedicated UI components. The Vaadin architecture does not require you to write communication APIs between the UI layer and the backend. This reduces boilerplate code. It brings the UI and the backend closer together, which gives you additional benefits like keeping validation logic in one place only or frictionless debugging between the UI and the backend code.

In Vaadin, you develop the user interface through Java code. This lets you stay in one language for all parts of your application, which makes your development experience more efficient and less cumbersome.

Jmix enriches the mechanisms of Vaadin with a declarative layout definition, additional UI components, screen abstractions and APIs.

You can also create a completely custom UI with client-side-based UI frameworks like React or Angular.

Security is one central piece of Jmix. Why? Because a lot of business software strongly needs it. It comes with very sophisticated security mechanisms, that lets you define the interactions between the data and the users very precisely. It’s a complete role-based access control functionality. But it does not stop there: row-based security requirements like “User Andrew can only see Customers starting with zip-code 9” or “User Andrew is allowed to change Customers’ name, but credit card information is not visible” is easily configurable. The declarative definition either happens at development or runtime by the administrators of the system.

The data access rules are enforced throughout the system. Jmix UI components respect the currently active security settings on a per-user basis. The same is true when accessing data through the API or programmatically within the application. It prevents you from shooting yourself into the foot when it comes to security. With that, Jmix will never put you into a straitjacket. In case you need to go around the general security mechanisms, there are options for you.

Jmix switches the toggle to “secure by default” so that you don’t have to think about security in every piece of code you write, following the Secure-by-Design philosophy.

As you can see, this offering is already quite a bit. But in fact, there is more, covering the ready-made features. But instead of having all functionalities in the framework itself, Jmix allows creating and using add-ons that enhance the capabilities in a modular way.

Jmix Add-ons

Jmix add-ons provide specific solutions to common tasks of business applications. Add-ons are complete solutions, so they differentiate from a library that you need to integrate into your application, writing a lot of integration glue code.

BPM

Business applications usually need to model some process specific for the business. BPMN is a standard that provides a solution for this. Jmix BPM add-on extends an application with a BPMN workflow engine built on top of a commonly used Java framework for BPM: Flowable. The add-on integrates Flowable to a Jmix application seamlessly and provides an additional set of features like a process designer, Process Admins UIs and simplified APIs. With those capabilities, the collaboration of multiple people as part of the business process can be easily modeled.

picture

Reports

The Reports add-on tackles the creation of reports with various data presented in the application. Reports support various formats like DOCX, XLSX, PDF, HTML, etc. The add-on integrates the reporting engine into a Jmix application with extra features like a report UI wizard and report data fetching from the data model.

Search

Convenient navigating through data is an important aspect of data-centric applications. Jmix offers two solutions. In the core framework, there is an extended Filter UI component, which lets users filter the data by attributes and related entities (and their attributes).

For unstructured search, Jmix provides a search add-on based on Elasticsearch. Users can search by keywords in a Google search style. The add-on allows you to configure Elasticsearch indexes, automatically sends changed data from the database to the search engine and provides UI components for embedding search into your application UI. Additionally, it seamlessly integrates with the data-access security so that users only see the data they are supposed to see. So once again: it takes away your integration burden.

Email

Jmix comes with multiple add-ons to integrate Email into your application. Send outgoing emails from the application either through the action of a user or programmatically. Receiving emails via IMAP programmatically to trigger further actions is also possible.

Email integrates with the BPM add-on to combine the power of business process management and user notification.

LDAP / SAML

In a lot of businesses, centralized user management is a requirement for applications to integrate with. Jmix supports this with add-ons for LDAP and SAML for single-sign-on (available in February 2022). The existing user management within Jmix automatically adapts to the external user management system when the add-ons are used.

API

Integrating with other systems is crucial for every modern application. With the Spring Boot base, you can of course build a complete custom API for external applications through various protocols. Also, two add-ons automatically expose data and functionality through common approaches: REST API and GraphQL (available in February 2022). Integration with data-access security is baked in by default.

Those were the most frequently used add-ons. There are various others, by the Jmix core team or by the community, that solve dedicated problems like audit logs, translations, maps or dynamic attributes. Jmix Studio comes with an add-on marketplace as an easy way to explore and install an add-on with a few clicks.

Summary

Jmix is a specialized tool for creating business applications. Through the focus on the problem domain, it reduces friction and speeds you up.

Jmix covers the essentials of efficient software development with an integrated full-stack framework on top of the Java ecosystem, developer tooling support and add-ons with solutions to common tasks.

Due to its modular and open architecture, the framework is very flexible. You can extend or change the core functionalities in almost any way. Jmix has a growing community and active development in the core framework and add-ons ecosystem.

Efficient software development leads to faster feedback cycles, which leads to more interaction with your users and therefore to better solutions for your business. And that is what we all want, right?

If this sounds promising to you and you want to learn more, jump over to the Quickstart or try it out on your own. There is also an open community waiting for you, so don’t hesitate to ask any questions.

Jmix is an open-source platform for building enterprise applications in Java