Upgrade & Secure Your Future with DevOps, SRE, DevSecOps, MLOps!
We spend hours scrolling social media and waste money on things we forget, but wonβt spend 30 minutes a day earning certifications that can change our lives.
Master in DevOps, SRE, DevSecOps & MLOps by DevOps School!
Learn from Guru Rajesh Kumar and double your salary in just one year.

What is Jakarta EE?
Jakarta EE (formerly known as Java EE, or Java Platform, Enterprise Edition) is an open-source, community-driven platform for building enterprise-grade applications. Jakarta EE provides a set of specifications that enable developers to build robust, scalable, and secure applications using Java. The platform is focused on simplifying the development of large-scale applications, including web applications, microservices, and cloud-based applications.
Jakarta EE builds upon core Java technologies such as Java SE (Standard Edition) but extends its capabilities to meet the needs of large-scale business applications. It offers a comprehensive set of APIs for services like transaction management, security, messaging, persistence, and web services.
The transition from Java EE to Jakarta EE occurred when the stewardship of the Java EE platform was handed over to the Eclipse Foundation. As a result, the Java EE platform was rebranded as Jakarta EE. While the name changed, the functionality and purpose of Jakarta EE remain consistent with the Java EE standards.
Key features of Jakarta EE include:
- Comprehensive API set: Jakarta EE offers a wide range of services such as persistence (JPA), web services (JAX-RS), messaging (JMS), and more.
- Enterprise integration: It provides tools for integrating with external services, including databases, message brokers, and web services.
- Cross-platform compatibility: Jakarta EE applications are designed to run on any platform that supports the Java runtime.
- Microservices support: It provides support for microservices and cloud-native applications through a lightweight approach.
Major Use Cases of Jakarta EE
Jakarta EE is used across various industries and application domains due to its robustness, scalability, and flexibility. Some of the major use cases include:
1. Web Applications
One of the primary use cases for Jakarta EE is the development of dynamic, scalable web applications. With technologies like JavaServer Faces (JSF), Jakarta Server Pages (JSP), and Jakarta Servlets, Jakarta EE provides all the necessary tools for creating web interfaces and handling HTTP requests.
- JSF: A framework for building user interfaces for web applications.
- JSP and Servlets: They are used for generating dynamic content, such as HTML, and for managing HTTP requests.
2. Enterprise Applications
Jakarta EE is widely used in enterprise environments for building large-scale, complex applications. These applications typically require multiple layers, such as presentation, business logic, and data access layers. Jakarta EE supports these types of architectures with its built-in tools for transaction management, messaging, and data persistence.
Key components used in enterprise applications:
- Jakarta Persistence API (JPA): For managing database interactions.
- Jakarta Enterprise Beans (EJB): For building business logic and transaction management.
- Jakarta Message Service (JMS): For messaging between different parts of an application.
3. Microservices
In recent years, Jakarta EE has evolved to support microservices architectures. With its lightweight containers and the inclusion of tools like Jakarta RESTful Web Services (JAX-RS) and Jakarta JSON Processing (JSON-P), Jakarta EE makes it easier to build and deploy microservices.
- JAX-RS: Used to build RESTful web services for microservices.
- CDI (Contexts and Dependency Injection): Allows for more flexible and modular architecture in microservices environments.
4. Cloud Applications
Jakarta EE can also be used to develop cloud-native applications. The platformβs focus on portability and scalability makes it a good fit for building applications that run on cloud platforms such as AWS, Microsoft Azure, or Google Cloud. Jakarta EEβs container-based model allows applications to scale easily as they run in cloud environments.
5. Messaging Systems
Jakarta EE provides support for messaging systems through technologies such as JMS. Many enterprise applications use messaging systems to communicate asynchronously between different parts of the application. Jakarta EE supports both point-to-point and publish-subscribe messaging models.
How Jakarta EE Works Along with Architecture

Jakarta EE is based on a modular architecture that divides an application into layers, with each layer handling a specific aspect of the application. The Jakarta EE container, known as the Application Server, hosts and manages the components of Jakarta EE applications.
1. Jakarta EE Components
Jakarta EE applications consist of various components that address different application needs, such as presentation, business logic, and data access. Some of the key components include:
- Servlets and JSP: Used to handle HTTP requests and generate dynamic web content.
- EJB (Enterprise JavaBeans): Handles business logic, transactions, and remote communication.
- JPA (Jakarta Persistence API): Manages interactions with databases, allowing developers to use object-relational mapping (ORM) for persistent data.
- JAX-RS (Jakarta RESTful Web Services): Facilitates the creation of RESTful APIs for web services.
2. Jakarta EE Containers
The Jakarta EE container is the environment in which Jakarta EE applications run. The container is responsible for managing the lifecycle of components and services. Jakarta EE containers implement the Jakarta EE specifications and provide services like dependency injection, transaction management, and security.
Some popular Jakarta EE containers include:
- WildFly (formerly JBoss): A highly customizable and robust application server.
- Payara Server: A fork of GlassFish, focused on ease of use and performance.
- TomEE: A lightweight, Tomcat-based server that implements the Jakarta EE specifications.
3. Deployment Architecture
Jakarta EE applications are deployed as EAR (Enterprise Archive), WAR (Web Archive), or JAR (Java Archive) files, which contain the components of the application. These archives are deployed to an application server, where they are managed by the container.
- EAR (Enterprise Archive): A packaging format for deploying full enterprise applications.
- WAR (Web Archive): A packaging format for deploying web applications (servlets, JSPs).
- JAR (Java Archive): A packaging format for standalone Java applications or libraries.
4. Integration with External Services
Jakarta EE provides a variety of APIs to integrate applications with external services. Examples include:
- JMS (Java Message Service): For asynchronous communication between application components.
- JCA (Java Connector Architecture): For integrating Jakarta EE applications with legacy systems or external databases.
- JCA adapters for connecting with various external systems.
Basic Workflow of Jakarta EE
The typical workflow for a Jakarta EE application involves several key stages:
- Development:
- Developers build various components using Jakarta EE technologies such as Servlets, EJBs, and JPA.
- Jakarta EE allows modular development by separating concerns into different layers (presentation, business logic, data access).
- Configuration:
- The configuration of Jakarta EE components is done through annotations (e.g.,
@WebServlet
,@EJB
,@Entity
) or XML descriptors (e.g.,web.xml
,ejb-jar.xml
).
- The configuration of Jakarta EE components is done through annotations (e.g.,
- Deployment:
- Once the application is developed and configured, it is packaged into an EAR, WAR, or JAR file.
- The packaged file is deployed to a Jakarta EE-compatible server like WildFly or Payara.
- Lifecycle Management:
- The application server manages the lifecycle of the Jakarta EE components. It initializes and injects dependencies into components (using CDI), manages transactions, and handles security.
- When an HTTP request is made to a web application, the container processes the request using the appropriate servlet or web component.
- Execution:
- The application server processes user requests by invoking the appropriate component. For example, a user request to view a webpage will be processed by a JSP or JSF page.
- If the request involves business logic, the server invokes the appropriate EJB or service class.
- Data access is managed using JPA, which handles interactions with databases.
- Post-Execution:
- After the application completes the requested tasks, it returns a response to the user, such as a rendered HTML page or a JSON response for a RESTful API.
- Logging and Monitoring:
- Jakarta EE applications can be configured to log and monitor events. The application server provides tools for tracing application behavior and troubleshooting.
Step-by-Step Getting Started Guide for Jakarta EE
To get started with Jakarta EE, follow these steps:
Step 1: Install Jakarta EE Runtime
- Download and Install Jakarta EE Server: Choose a Jakarta EE-compatible application server such as Payara Server, WildFly, or TomEE. Download and install the server according to the documentation.
- Install Java: Jakarta EE applications run on the Java Virtual Machine (JVM), so ensure you have a JDK installed (preferably JDK 11 or higher).
Step 2: Set Up Development Environment
- IDE Setup: Install an IDE such as IntelliJ IDEA, Eclipse, or NetBeans. These IDEs offer plugins and tools that integrate with Jakarta EE servers, making it easier to develop and deploy applications.
- Create a New Jakarta EE Project: You can create a new Jakarta EE project either manually or by using project templates provided by the IDE. Most IDEs support Maven or Gradle for dependency management.
Step 3: Develop Jakarta EE Application
- Create a Servlet: Develop a simple servlet using Jakarta EE.
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("Hello, Jakarta EE!");
}
}
- Set Up JPA for Database Interaction: Create an entity class and repository for managing persistent data.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
Step 4: Build and Deploy
- Package the Application: Use Maven or Gradle to package the application into a WAR or EAR file.
- Deploy the Application: Deploy the packaged file to the Jakarta EE server (Payara, WildFly, or TomEE).
Step 5: Access the Application
Once deployed, access the application by navigating to the appropriate URL (e.g., http://localhost:8080/your-app/hello
).