JEE #1: Understanding JEE

Geschreven door

in

I’ve been working with JEE for quite some time now, and for a while I’ve wanted to write a series of blog posts about it. There are a couple of reasons for this.

First, I’ve always felt that there is a lack of good online resources that explain the essence of JEE and provide a clear, logical path for learning it. Second, writing is a great way for me to deepen my own understanding, especially when it comes to the more detailed or nuanced parts of JEE.

Throughout this series, I will use the term JEE to refer to both Java EE and Jakarta EE. Since Jakarta EE is essentially a continuation and renaming of Java EE, I will treat them as the same thing. While some specifics may differ, the core concepts and principles remain fundamentally the same.

What is JEE?

JEE is essentially a collection of documented APIs: it defines what it should be able to do, but not how it is implemented. Similar to Java itself, those implementations are left to vendors. Depending on the vendor, you might end up with a free, open-source solution or a commercial, fully supported one.

Although the abstract description of JEE is similar to that of Java itself, they differ in the goal of the APIs. Java provides APIs for a generic all-purpose programming language, while JEE focuses on APIs for building enterprise applications. As a result, they can be, and often are, used together.

What is an enterprise?

Enterprises are large organisation that require applications to be scalable, secure and reliable. JEE provides these requirements so the developers can focus on implementing business functionality.

Documentation often describes JEE in terms of the multi-tier architecture of enterprise applications, where it mainly covers the web and business tiers. I find that framing somewhat confusing and prefer to describe JEE as focusing on the back-end parts of a system. Still, understanding those tiers can be important in certain situations, such as when creating deployments.

Servers and containers

To deploy a JEE application, a JEE platform is required. This platform provides concrete implementations of the JEE specifications and forms the runtime environment in which applications can operate. The JEE platform runs one or more JEE application servers, which are responsible for all configuration related to non‑functional concerns such as security, transactions, scalability, and the definition of external resources like databases and messaging systems.

Within an application server, JEE applications are deployed into containers. These containers act as the bridge between the application and the server environment by binding externally configured resources to the application at runtime.

In a traditional, centrally managed setup, a JEE platform typically consists of multiple application servers whose configuration is fully controlled by a dedicated platform team. Development teams integrate their applications with these servers by relying on agreed‑upon naming conventions, which allows the application code to reference server‑managed resources without being tightly coupled to their concrete implementations.

Why JEE today?

Personally, I am still looking for a properly convincing reason on why to use pure JEE over alternatives like Spring Boot, Quarkus or Micronaut. JEE doesn’t provide an end-to-end developer experience by itself to quickly and easily run, test and deploy the software I am developing. But it’s probably the most mature technology in the Java ecosystem to bring forward enterprise applications, as it’s used in some way or another by the modern alternatives named above. That’s why it’s relevant to understand JEE to know how and why things work in the way they do.

If I would start a new project today, I would use one of those modern alternatives. But we should not forget that most of our work consists of maintaining and further developing software that has been in operations for a while. We don’t always have the choice on what technology we are working with.

We should admire more the classic technologies that are still used today, as they still solve the problem there was initially. We should be aware of it, and it may come in handy in the future.

In the next post of this series I would like to look at how the vision of JEE is brought into practice.

Reacties

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *