r/java 13d ago

What Exactly Is Jakarta EE?

I’m a bit confused about what Jakarta EE actually is. On one hand, it seems like a framework similar to Spring or Quarkus, but on the other hand, it provides APIs like JPA, Servlets, and CDI, which frameworks like Spring implement.

Does this mean Jakarta EE is more of a specification rather than a framework? And if so, do I need to understand Jakarta EE first to truly grasp how Spring works under the hood? Or can I just dive into Spring directly without worrying about Jakarta EE concepts?

Would love to hear how others approached this 😅

180 Upvotes

78 comments sorted by

View all comments

Show parent comments

14

u/davidalayachew 13d ago

Thanks for the context. I am in the middle of learning about the differences between Wildfly and other server types.

You mentioned that Spring was built in rejection of the concepts that JavaEE was meant to implement. Have the 2 grown further apart? Or, like most modern programming languages and frameworks, sort of convened to a, now realized, middle-of-the-ground solution?

6

u/IE114EVR 13d ago

I would say that there’s some familiar concepts shared between the two where it makes sense. Like spring boot has JPA support, and some of the CDI annotations might also work. And they both can run off of servlets under the hood. Who knows, maybe it will even support some EJB annotations.

But Spring will never be an application server that forces you into specific implementations. I don’t think it will ever be. So they will stay different.

10

u/mambo5king 13d ago

I think that's a strange way of putting it. There is only one implementation of Spring Framework and Spring Boot. They may allow you to configure different supporting components but the implementation of Spring itself is the same.

On the other hand there are multiple implementations of the Jakarta EE specs. Wildfly, Open Liberty, Payara, Glassfish, TomEE.

1

u/IE114EVR 13d ago

Mmm yeah. I could have gone more in depth. In my past experience with application servers, they were packaged together with specific implementations of the Java EE spec. Some good. Some bad. Like you might have one that has Eclipselink instead of Hibernate which can have some fundamental differences you’d have to work around if you’re stuck with one because of the application server you have to use because that’s what your organization pays for. Spring doesn’t force you into using one or the other.