What exactly is Java EE?

JavaJakarta EeEjb

Java Problem Overview


I have been doing Java SE for some years now and moving on to Java EE. However, I have some trouble understanding some aspects of Java EE.

  1. Is Java EE just a specification? What I mean is: Is EJB Java EE?

  2. Are EJB/Spring different implementations of Java EE?

I am sorry to ask but I have some difficulties to understand what Java EE is.

Could someone explain what Java EE is? And EJB?

Java Solutions


Solution 1 - Java

(Updated Feb 2022)

First of all, "Java EE" has since Sep 2019 been renamed to "Jakarta EE", starting with version 8. Historically, there was also the term "J2EE" which covered versions 1.2 until 1.4. The term "Java EE" covered versions 5 until 8. See also Jakarta EE, History on Wikipedia.


> Is Jakarta EE just a specification? What I mean is: Is EJB Jakarta EE?

Jakarta EE is indeed an abstract specification. Anybody is open to develop and provide a working implementation of the specification. The concrete implementations are the so-called application servers, like WildFly, TomEE, GlassFish, Liberty, WebLogic, etc. There are also servlet containers which implement only the JSP/Servlet part of the huge Jakarta EE API, such as Tomcat, Jetty, etc.

We, Jakarta EE developers, should write code utilizing the specification (i.e. import only jakarta.* classes in our code instead of implementation specific classes such as org.jboss.wildfly.*, com.sun.glassfish.*, etc) and then we'll be able to run our code on any implementation (thus, on any application server). If you're familiar with JDBC, it's basically the same concept as how JDBC drivers work. See also a.o. https://stackoverflow.com/questions/7550612/in-simplest-terms-what-is-a-factory

EJB is part of the Jakarta EE specification. Look, it's in the Jakarta EE API. Full-fledged Jakarta EE application servers support it out the box, but simple JSP/Servlet containers don't.

See also:

> Are EJB/Spring different implementations of Jakarta EE?

No, as said, EJB is part of Jakarta EE. Spring is a standalone framework which substitutes and improves many parts of Jakarta EE. Spring doesn't necessarily require Jakarta EE to run. A bare-bones servlet container like Tomcat is already sufficient. Simply put, Spring is a competitor of Jakarta EE. E.g. "Spring" (standalone) competes EJB/JTA, Spring MVC competes JSF/JAX-RS/MVC, Spring DI/IoC/AOP competes CDI, Spring Security competes JAAS/JASPIC, etc.

Back during the old J2EE/EJB2 times, the EJB2 API was terrible to implement and maintain. Spring was then a much better alternative to EJB2. But since EJB3 (Java EE 5), the EJB API was much improved based on lessons learnt from Spring. Since CDI (Java EE 6), there's not really a reason to look at again another framework like Spring to make the developers more easy as to developing among others the service layer.

Only when you're using a bare-bones servlet container such as Tomcat and can't move on to a Jakarta EE server, then Spring is more attractive as it's easier to install Spring on Tomcat. It isn't possible to install e.g. an EJB container on Tomcat without modifying the server itself, you would basically be reinventing TomEE.

See also:

Solution 2 - Java

Java Enterprise Edition (Java EE) is an umbrella specification that references a number of other more detailed specifications, of which Enterprise JavaBeans (EJB) is one of the more important ones.

Read this - it explains the difference between Java EE and Spring

Thanks...

Solution 3 - Java

  • Source -- Java 2 Platform, Enterprise Edition (J2EE) defines the standard for developing component-based multitier enterprise applications. J2EE simplifies building enterprise applications that are portable, scalable, and that integrate easily with legacy applications and data .

  • Source -- Enterprise JavaBeans (EJB) technology is the server-side component architecture for Java Platform, Enterprise Edition (Java EE). EJB technology enables rapid and simplified development of distributed, transactional, secure and portable applications based on Java technology.

  • >Is Java EE just a specification? What I mean is: Is EJB Java EE?

    • Java EE is a specification.

    • EJB is server side component architecture for Java EE

  • >Are EJB/Spring different implementations of Java EE?

    • Both EJB and Spring are different frameworks following Java EE.

Solution 4 - Java

Everything you need to know about Java EE may be found by starting @ Oracle official website, among other. You may also find interesting to read the specification APIs for release 8. It is worth taking the time to go through the Java EE 8 tutorial. You may want to start with it actually, because it provides a very good overview of the whole platform.

Solution 5 - Java

J2EE/JEE/Jakarta EE

  • Java Enterprise Edition (JEE) is used to develop distributed application & web services.
  • It’s a component based approach to develop web app.
  • JEE web apps are considered as 3 tiered apps, since it is divided on 3
    different machines/tiers
    • Client (Presentation)
    • J2EE sever (Application/Business)
    • Database (Data Access)

Solution 6 - Java

To put simply - JavaEE is a platform.

It is made up of many specifications which are just APIs. The specific concrete implementations of these APIs are the so called 'Reference Implementation'

  1. EJB is just one specification within the JavaEE platform
  2. No, Spring is a application framework that can allow you/has support for you to develop JavaEE applications

EJB is Enterprise Java Beans

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFrank ZimmerView Question on Stackoverflow
Solution 1 - JavaBalusCView Answer on Stackoverflow
Solution 2 - JavaPrabath SiriwardenaView Answer on Stackoverflow
Solution 3 - JavaSrikanth VenkateshView Answer on Stackoverflow
Solution 4 - JavaSpyrosView Answer on Stackoverflow
Solution 5 - JavaRavi R. OzaView Answer on Stackoverflow
Solution 6 - JavaSoftwareDeveloperView Answer on Stackoverflow