Jakarta EE Platform: Your First Adventure into Enterprise Java
The Big Picture: What’s This All About?
Imagine you want to build a huge LEGO city — with hospitals, schools, shops, and roads. Building it alone would take forever! What if you had a special LEGO kit that came with pre-made buildings you could just snap together?
Jakarta EE is exactly that — a ready-made toolkit for building big, powerful web applications!
Instead of writing everything from scratch, you get a box of pre-built pieces that work together perfectly.
1. What is Jakarta EE?
The Simple Story
Think of Jakarta EE like a restaurant kitchen.
When a chef opens a restaurant, they don’t build their own stove, refrigerator, or sink. They use standard kitchen equipment that works the same way everywhere.
Jakarta EE gives programmers standard tools that work the same way everywhere. No matter which “kitchen” (server) you use, your code works!
What Does It Stand For?
- Jakarta = The name (like calling your pet “Max”)
- EE = Enterprise Edition (for big, serious applications)
Before Jakarta EE…
It was called Java EE (owned by Oracle). In 2017, it moved to a new home called the Eclipse Foundation and got renamed Jakarta EE.
Same toolkit, new name!
Real Life Example
Without Jakarta EE:
- Build your own login system
- Build your own database connector
- Build your own web forms
- Write 10,000 lines of code
With Jakarta EE:
- Use ready-made login (@RolesAllowed)
- Use ready-made database connector (JPA)
- Use ready-made web forms (JSF)
- Write 100 lines of code!
2. Jakarta EE 10 Overview
What’s Special About Version 10?
Jakarta EE 10 is like getting the newest smartphone — faster, easier, and with cool new features!
Released in 2022, it’s the latest major version with improvements that make coding simpler.
Key Changes in Jakarta EE 10
graph TD A["Jakarta EE 10"] --> B["Java 11 or 17"] A --> C["Core Profile - NEW!"] A --> D["Simplified Code"] A --> E["Cloud Ready"] style A fill:#667eea,color:#fff style C fill:#4CAF50,color:#fff
| Feature | What It Means |
|---|---|
| Java 11/17 Required | Uses modern Java features |
| Core Profile | New lightweight option for microservices |
| CDI Lite | Simpler dependency injection |
| Security Updates | Better protection built-in |
Simple Example
Old way (before EE 10):
@Stateless
@LocalBean
public class HelloService {
public String sayHello() {
return "Hello!";
}
}
New way (EE 10):
@ApplicationScoped
public class HelloService {
public String sayHello() {
return "Hello!";
}
}
Less code, same result!
3. Jakarta EE Profiles
The Menu Analogy
Imagine a restaurant with three menu sizes:
- Full Menu = Everything they serve (100 dishes)
- Regular Menu = Popular items (30 dishes)
- Light Menu = Quick bites (10 dishes)
Jakarta EE Profiles work the same way!
The Three Profiles
graph TD A["Jakarta EE Profiles"] --> B["Full Platform"] A --> C["Web Profile"] A --> D["Core Profile"] B --> B1["Everything included"] B --> B2["Big enterprise apps"] C --> C1["Web essentials"] C --> C2["Most common choice"] D --> D1["Minimal & light"] D --> D2["Microservices"] style A fill:#667eea,color:#fff style B fill:#FF6B6B,color:#fff style C fill:#4ECDC4,color:#fff style D fill:#45B7D1,color:#fff
| Profile | What’s Included | Best For |
|---|---|---|
| Full Platform | ALL 40+ APIs | Banks, hospitals, airlines |
| Web Profile | 15 essential APIs | Most web applications |
| Core Profile | 8 core APIs | Microservices, cloud apps |
Which One Should You Use?
Start with Web Profile! It has everything most apps need:
- Servlets (handle web requests)
- JSF (build web pages)
- JPA (save to database)
- CDI (connect components)
- Security (protect your app)
4. Application Architecture
Building a House
Every house has a structure: foundation, walls, roof. Jakarta EE apps have structure too!
The Three-Layer Cake
graph TD A["User clicks button"] --> B["Presentation Layer"] B --> C["Business Layer"] C --> D["Data Layer"] D --> E["Database"] B --> B1["JSF, Servlet, REST"] C --> C1["EJB, CDI Beans"] D --> D1["JPA, JDBC"] style A fill:#FF6B6B,color:#fff style B fill:#4ECDC4,color:#fff style C fill:#667eea,color:#fff style D fill:#45B7D1,color:#fff
Each Layer Explained
1. Presentation Layer (The Face)
- What users see and click
- Web pages, buttons, forms
- Technologies: JSF, Servlet, JAX-RS
2. Business Layer (The Brain)
- Makes decisions
- Calculates, validates, processes
- Technologies: EJB, CDI Beans
3. Data Layer (The Memory)
- Saves and retrieves information
- Talks to the database
- Technologies: JPA, JDBC
Simple Code Example
// Presentation - REST endpoint
@Path("/greet")
public class GreetResource {
@Inject
GreetService service; // Uses CDI
@GET
public String greet() {
return service.sayHello();
}
}
// Business - The brain
@ApplicationScoped
public class GreetService {
public String sayHello() {
return "Welcome to Jakarta EE!";
}
}
5. Jakarta EE Containers
The Apartment Building
Imagine an apartment building. You don’t build your own:
- Electricity system
- Water pipes
- Heating system
The building provides all of that — you just move in!
A Jakarta EE Container is like that building. It provides:
- Security
- Database connections
- Message handling
- Transaction management
Types of Containers
graph TD A["Jakarta EE Server"] --> B["Web Container"] A --> C["EJB Container"] A --> D["Application Client Container"] B --> B1["Servlets"] B --> B2["JSP/JSF"] C --> C1["Business Beans"] C --> C2["Transactions"] D --> D1["Desktop Apps"] style A fill:#667eea,color:#fff style B fill:#4ECDC4,color:#fff style C fill:#FF6B6B,color:#fff style D fill:#45B7D1,color:#fff
| Container | What Lives There | What It Provides |
|---|---|---|
| Web Container | Servlets, JSP, JSF | HTTP handling, sessions |
| EJB Container | Business beans | Transactions, security |
| App Client Container | Desktop apps | Naming, security |
The Magic of Containers
// You write simple code:
@Stateless
public class BankService {
public void transfer(int amount) {
// Just the logic!
}
}
// Container automatically adds:
// - Transaction management
// - Security checks
// - Connection pooling
// - Error handling
You focus on YOUR code. Container handles the plumbing!
6. Application Servers
The Power Plant
Your phone needs electricity to work. Where does it come from? A power plant!
Your Jakarta EE app needs an Application Server to run. It’s the power plant for your code!
Popular Application Servers
| Server | Who Makes It | Free? | Notes |
|---|---|---|---|
| WildFly | Red Hat | Yes | Very popular, fast |
| GlassFish | Eclipse | Yes | Reference implementation |
| Payara | Payara Services | Yes | Based on GlassFish |
| Open Liberty | IBM | Yes | Lightweight, modern |
| TomEE | Apache | Yes | Tomcat + EE features |
How It Works
graph LR A["Your Code .war file"] --> B["Application Server"] B --> C["Running Application"] B --> D["Web Container"] B --> E["EJB Container"] B --> F["Database Pool"] B --> G["Security"] style A fill:#4ECDC4,color:#fff style B fill:#667eea,color:#fff style C fill:#4CAF50,color:#fff
Deploying Your App
- Package your code into a
.warfile - Drop it into the server’s deploy folder
- Server unpacks and runs it
- Users access it via browser
# Package your application
mvn package
# Deploy to WildFly
cp myapp.war /opt/wildfly/standalone/deployments/
# Access at:
http://localhost:8080/myapp
Putting It All Together
The Complete Picture
graph TD A["Developer writes code"] --> B["Jakarta EE APIs"] B --> C["Package as WAR"] C --> D["Deploy to App Server"] D --> E["Server provides Containers"] E --> F["Users access via browser"] style A fill:#4ECDC4,color:#fff style B fill:#667eea,color:#fff style D fill:#FF6B6B,color:#fff style F fill:#4CAF50,color:#fff
Quick Recap
| Concept | Simple Explanation |
|---|---|
| Jakarta EE | Ready-made toolkit for web apps |
| Jakarta EE 10 | Latest version (2022), modern features |
| Profiles | Menu sizes: Full, Web, Core |
| Architecture | 3 layers: Presentation, Business, Data |
| Containers | Apartment building with free utilities |
| App Servers | Power plants that run your app |
Your First Jakarta EE App
Here’s a tiny taste of what Jakarta EE code looks like:
// A complete REST API in 15 lines!
@Path("/hello")
@ApplicationScoped
public class HelloResource {
@GET
@Produces("text/plain")
public String sayHello() {
return "Hello, Jakarta EE!";
}
}
Deploy this to any application server, and you can visit:
http://localhost:8080/myapp/hello
That’s Jakarta EE — powerful, standardized, and surprisingly simple!
What’s Next?
Now that you understand the foundation:
- Pick an application server (try WildFly — it’s free and popular)
- Choose a profile (start with Web Profile)
- Build your first app!
You’ve got the map. Now start the adventure!
