201

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?

9
  • 2
    Check stackoverflow.com/questions/1286019/starting-java-ee-mvc Commented Sep 3, 2011 at 18:44
  • 2
    You should cut this question in two questions though, one is a duplicate, the other I think is not answered in the link there. Commented Sep 3, 2011 at 18:49
  • 2
    Actually, did you read the [java-ee] tag wiki? Commented Sep 3, 2011 at 20:32
  • also read: stackoverflow.com/questions/106820/what-is-java-ee Commented Dec 12, 2012 at 20:19
  • 2
    well java EE is just like ruby on rails EE or javascript EE chose any language today and just call it EE that it sounds niceer....no other language needs some Marketing buzzwords like enterprise edition just to say hey i can do web and db. "I know java" "wait, you know Java or Java EE" .. WTF its like braging i can do http request in javascript or acces db in rails.. wow magic. but business ppl love the words ENTERPRISE EDITION .... drop the EE Java! Commented May 14, 2019 at 15:04

7 Answers 7

244

(Updated May 2023)

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.*, org.apache.tomcat.*, 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. 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 Faces/REST/MVC, Spring DI/IoC/AOP competes CDI, Spring Security competes JASPIC/Security, Spring Boot competes MicroProfile, 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:

Sign up to request clarification or add additional context in comments.

11 Comments

So Java EE could be said as defining what support should exist for a typical JEE application to run?
@James: Yes. Pretty everything in Java EE API is abstract. Java SE API has also several abstract parts, e.g. JDBC, JAXP, JAXB, etc.
"There's not really a reason to look at again another framework like Spring to make the developers more easy." -> Truly Valuable info.
@BalusC: Hi, Is the official Sun Java EE.... link is broken, if you give a link similar to that, it will be helpful for someone.
To run complete Spring framework, Servlet container would suffice, Servlet container is [web server + web container(implements servlet api)] where as to run Java EE, you need application server like Glassfish. Servlet container would not suffice. Servlet container is a subset of application server. How do I understand this?
|
13

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...

1 Comment

Is Java SE also a specification? I find the term edition less confusing. Why not call it an edition of the Java Language as the name already implies?
4
  • 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.

1 Comment

It's maybe not very useful to quote ancient text (2005) from an ancient version of the specification (J2EE). OP specifically asked for Java EE, which is the modern day incarnation of J2EE.
-1

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.

Comments

-1

Java EE as a Specification:

Java EE is indeed a specification that defines a set of APIs and technologies for developing enterprise applications. It provides a standard for building scalable, secure, and robust applications. Java EE specifies how different components should interact within an enterprise application environment. EJB (Enterprise JavaBeans) in Java EE:

EJB is a component model within Java EE that defines a set of server-side components for building distributed, transactional, and secure enterprise applications. EJBs provide features like transaction management, security, and scalability. EJB is a part of the Java EE specification, specifically targeting business logic components. Spring Framework:

Spring is not a part of the Java EE specification. It is an open-source framework that provides a comprehensive programming and configuration model for building enterprise applications. Spring offers features like dependency injection, aspect-oriented programming, and support for various technologies. While Spring can be used to build enterprise applications, it is not an implementation of Java EE. Different Implementations of Java EE:

Various vendors provide implementations of the Java EE specification. These implementations include application servers like Apache TomEE, WildFly, IBM WebSphere, and Oracle WebLogic. These application servers provide the runtime environment and infrastructure to deploy and run Java EE applications that comply with the specification.

Comments

-3

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)

Comments

-6

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

2 Comments

This answer doesn't add anything to previous answers. Moreover, it is not accurate: only one concrete implementation is Reference, the others are not. Minor one: Spring integrates with JavaEE, but can work without it just fine.
@tair Yes only 1 concrete implementation is regarded as the 'Reference' for e.g. JPA has numerous implementations but only EclipseLink is the RI. When i mentioned RI i was meaning across the different APIs. i think you misunderstood my answer above. Also, yes, Spring integrates with JavaEE which is what i mentioned above.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.