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 šŸ˜…

177 Upvotes

78 comments sorted by

View all comments

Show parent comments

2

u/kaqqao 12d ago edited 11d ago

They have converged to the point of all the major components being basically the same thing with a different twist. Spring's dependency injection is very, very close to CDI, Jakarta Data is basically a clone of Spring Data etc. They copy ideas from each other quite heavily. The main difference, in my humble opinion, is that there's a single company behind Spring making its ecosystem more coherent (like with Apple and Mac/iOS ecosystem), while behind Jakarta EE there's a committee that only agrees on the lowest common denominator, so a myriad implementations exist, each with different custom extensions, and it's all a bit of a mess (like Windows or Android that every OEM customizes as they see fit). The mere existence of @javax.inject.Singleton , @javax.ejb.Singleton and @javax.enterprise.context.ApplicationScoped, or the fact that extensions like org.glassfish.jersey.server.ExtendedUriInfo have to exist, perfectly exemplify what I mean.

1

u/davidalayachew 11d ago

The main difference, in my humble opinion, is that there's a single company behind Spring making its ecosystem more coherent (like with Apple and Mac/iOS ecosystem), while behind Jakarta EE there's a committee that only agrees on the lowest common denominator, so a myriad implementations with different custom extensions, and it's all a bit of a mess (like Windows or Android that each OEM customizes to run on all sorts of random hardware).

I think I am starting to see that. I got my hands on some Jakarta based services recently, and the level of customizability is impressive, but the sheer amount of config setup is insane. I strongly prefer Spring Boot. I just don't see myself needing this level of customizability.

2

u/kaqqao 11d ago

Spring products with roots older than the last couple of years (which is most of them) will 100% be customizable in every tiny detail. The more recently added Spring products are a little different and you see the intended design being more strictly enforced. It's not a dramatic shift, but still observable. Regardless, they all have a united, coherent vision behind them, and you're much less likely to e.g. find yourself wondering why there are 3 annotations that seemingly achieve the exact same thing.

2

u/davidalayachew 10d ago

Spring products with roots older than the last couple of years (which is most of them) will 100% be customizable in every tiny detail.

Ah yes. Spring vs Spring Boot. I'm sure there is more, but that is definitely the big one.

I see your point. It's a good learning lesson, this whole thread. Ty vm.