To understand what Jakarta EE is, we need to go back to 1999 when an extension to Java 1.2 was released to provide more capabilities to enterprise applications, J2EE was born at that moment. No matter how powerful its features were, J2EE versions were very complex and difficult to implement.
Some lessons were learnt and in 2006 the platform evolved to simplify and reduce complexity, introducing a nicer and lightweight programming model. For the 5th release of the platform, it was decided to brand it as Java EE, and Java EE 5 was born. Subsequent versions followed the new brand name, until the last one Java EE 8 in June 2017.
In September 2017, Oracle (Java’s steward) announced they will stop developing Java EE and decided to give the rights for Java EE to the Eclipse Foundation. Of course, the Java trademark still belongs to Oracle, therefore the Eclipse Foundation renamed it to Jakarta EE. Right now they are working to release Jakarta EE 9 in the next months.
So, Good Bye! Java EE and Hello! Jakarta EE.
What does Jakarta have for me?
Taking maven as the build tool, we just need to create a maven project and add the following dependency.
<dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-api</artifactId> <version>8.0.0</version> <scope>provided</scope> </dependency>
As you can notice, the dependency has provided as the scope. It means, your final “executable” won’t include the dependency. Therefore, we will have a very light-weight “executable”.
And with that only (provided) dependency you have out of the box:
- Context and Dependency Injection (CDI)
- Restful API (JAX-RS)
- Web Socket
- Soap Web-Services
- Persistence API (JPA)
- Transaction API (JTA)
- Servlets
- JSON-B and JSON-P
- And many other specifications, that will allow you to create your application.
How to run a Jakarta EE app?
Well, we can continue using any of the Application Server for Java that exists as before. From the heavy-weight Oracle’s Weblogic to the lightweight Apache Tomcat. However, I prefer to focus on a couple of
- Payara Server (A fork from the good GlassFish, with steroids and less buggy)
- Open Liberty (from IBM, a kind of very light-weight and following standards WAS)
- WildFly (from RedHat guys)
- Apache TomEE (The good Apache Tomcat with steroids to support EE specification out of the box)
All of them are Jakarta EE compatible, and with Micro Profile integrated – I hope to write more about Micro-Profile in future posts. Also, they usually provide nice features for a cloud-native application like integration with Kubernetes, Docker images, and more…
What’s next?
As I mentioned at the beginning, the Eclipse Foundation’s guys are working to release a new version of Jakarta EE and start a new open platform to provide the best framework to develop enterprise applications in Java following the last trends of the industry and keeping the standards at the same time.
For sure, they will do a better job than Oracle.
Nice to meet you, Jakarta EE!!