231

I realize that literally it translates to Java Enterprise Edition. But what I'm asking is what does this really mean? When a company requires Java EE experience, what are they really asking for? Experience with EJBs? Experience with Java web apps?

I suspect that this means something different to different people and the definition is subjective.

halfer
  • 19,824
  • 17
  • 99
  • 186
shsteimer
  • 28,436
  • 30
  • 79
  • 95
  • 4
    Sun changed the term. It is now JEE -- Java Enterprise Edition versus JSE -- Java Standard Edition. Most people still use J2EE. – David G Sep 20 '08 at 18:47
  • 110
    "There are no stupid questions, just stupid people that don't ask" :) – Gustavo Rubio Dec 19 '08 at 17:57
  • 48
    SO is google but better. Most google queries end up here. I see no problem with asking seemingly simple questions. – Alex Baranosky Sep 28 '09 at 18:44
  • 1
    The OP was asking about "J2EE" vs "JEE." The name changed many years ago from "J2EE" to JEE. The last "2" was J2EE 1.5, and it's presently at JEE6. http://www.oracle.com/technetwork/java/javaee/tech/index.html And it's NOT a collection of APIs, it's a specification (to which there are multiple implementations). – Charlie Collins Oct 25 '10 at 20:31
  • Also read: http://stackoverflow.com/questions/7295096/what-exactly-is-java-ee?rq=1 – claws Dec 12 '12 at 20:18
  • 1
    @GustavoRubio, tell those who down-vote without even mentioning why ! – Muhammad Gelbana Jul 23 '13 at 18:18
  • @GustavoRubio, I googled, it brought me here. – Josh Petitt Aug 27 '13 at 03:31
  • 2
    @DavidG Nitpicking: according to the Java EE Platform specification developers [the correct short name is "Java EE"](https://java.net/projects/javaee-spec/pages/JEE), not JEE. – informatik01 Dec 05 '13 at 00:45
  • Jakarta EE is the new name for Java EE. – Viraj Mar 07 '18 at 16:59
  • Related Question: [*Java EE Web Profile vs Java EE Full Platform*](https://stackoverflow.com/q/24239978/642706) – Basil Bourque Mar 31 '18 at 03:42
  • 1
    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! – H.R. May 14 '19 at 15:05

9 Answers9

247

Java EE is a collection of specifications for developing and deploying enterprise applications.

In general, enterprise applications refer to software hosted on servers that provide the applications that support the enterprise.

The specifications (defined by Sun) describe services, application programming interfaces (APIs), and protocols.

The 13 core technologies that make up Java EE are:

  1. JDBC
  2. JNDI
  3. EJBs
  4. RMI
  5. JSP
  6. Java servlets
  7. XML
  8. JMS
  9. Java IDL
  10. JTS
  11. JTA
  12. JavaMail
  13. JAF

The Java EE product provider is typically an application-server, web-server, or database-system vendor who provides classes that implement the interfaces defined in the specifications. These vendors compete on implementations of the Java EE specifications.

When a company requires Java EE experience what are they really asking for is experience using the technologies that make up Java EE. Frequently, a company will only be using a subset of the Java EE technologies.

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
user19685
  • 2,559
  • 1
  • 14
  • 7
  • 39
    +1 Nice list. BTW, I believe JPA (Java Persistence API) should also be in the list. – sleske May 17 '11 at 19:48
  • 3
    The last point added much strength to you r answer thanks +1 – Faisal Naseer Jun 23 '15 at 08:50
  • 2
    According to Oracle's website, `JNDI is included in the Java SE Platform.` (https://docs.oracle.com/javase/tutorial/jndi/software/index.html#JDK). – ROMANIA_engineer Nov 19 '15 at 11:38
  • 1
    JDBC is part of Java SE actually. – Tiny Dec 27 '15 at 15:05
  • 2
    According to this picture ( https://docs.oracle.com/javase/8/docs/index.html ): **JDBC**, **JNDI** and **RMI** are in **Java SE**. – ROMANIA_engineer Jan 06 '16 at 19:42
  • Isn't JSF missing? See http://www.oracle.com/technetwork/java/javaee/tech/index.html – powder366 Jan 20 '16 at 12:13
  • 1
    very descriptive names. maybe instead of using 3 letters to describe some huge library, let's just reduce it to 1 letter. out of all the things i learned in java, "java ee" is by far the most complicated, unintuitive, and irritating. mainly because almost nobody knows what theyre talking about and cant properly explain a thing. – user2914191 Aug 02 '17 at 10:28
  • 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! – H.R. May 14 '19 at 15:06
  • 2
    @H.R. it's equivalent to everyone calling themselves Software Engineers without Software Engineering degrees. They are buzzwords and they do work. Oh well. – superPhreshHackerKid Oct 05 '19 at 08:59
146

Java EE is actually a collection of technologies and APIs for the Java platform designed to support "Enterprise" Applications which can generally be classed as large-scale, distributed, transactional and highly-available applications designed to support mission-critical business requirements.

In terms of what an employee is looking for in specific techs, it is quite hard to say, because the playing field has kept changing over the last five years. It really is about the class of problems that are being solved more than anything else. Transactions and distribution are key.

Gab
  • 7,869
  • 4
  • 37
  • 68
Toby Hede
  • 36,755
  • 28
  • 133
  • 162
  • What exactly goes into this collection and in what version of Java EE is nicely presented on this [Java EE Version History](https://en.wikipedia.org/wiki/Java_EE_version_history#Java_EE_7_.28June_12.2C_2013.29) page. – Johnny Baloney Apr 19 '16 at 03:44
  • 2
    Jakarta EE is the new name for Java EE. – Viraj Mar 07 '18 at 17:00
  • 1
    The term "mission-critical" reeks of defense contractor – Kellen Stuart Apr 23 '18 at 15:01
  • 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! – H.R. May 14 '19 at 15:07
  • you did not answer the question – ReyAnthonyRenacia Oct 16 '20 at 07:23
  • @noogui This question and answer is 12 years old. Which part of my answer is not correct in 2008? "Java EE is a collection of technologies and APIs for the Java platform designed to support large-scale, distributed, transactional and highly-available applications designed to support mission-critical business requirements." – Toby Hede Oct 18 '20 at 23:09
36

J(2)EE, strictly speaking, is a set of APIs (as the current top answer has it) which enable a programmer to build distributed, transactional systems. The idea was to abstract away the complicated distributed, transactional bits (which would be implemented by a Container such as WebSphere or Weblogic), leaving the programmer to develop business logic free from worries about storage mechanisms and synchronization.

In reality, it was a cobbled-together, design-by-committee mish-mash, which was pushed pretty much for the benefit of vendors like IBM, Oracle and BEA so they could sell ridicously over-complicated, over-engineered, over-useless products. Which didn't have the most basic features (such as scheduling)!

J2EE was a marketing construct.

oxbow_lakes
  • 133,303
  • 56
  • 317
  • 449
  • I don't know any development tool / software / platform / framework more over-complicated than that. If you need something simple but very easy then use PHP. If you need something powefull and complex but still easy then use .Net. – Eduardo Sep 05 '14 at 02:42
  • This is a good post. No doubt IBM WebSphere Commerce / Oracle ATG – TheBlackBenzKid Dec 15 '14 at 15:44
  • 2
    I know this is an old answer, but as people are still reading it: it's a looooong time ago that Java EE's main selling point was distributed transactional systems. Even in '08, but surely today it's about REST APIs (JAX-RS), Validation (Bean Validation) easy persistence (JPA) MVC web frameworks (JSF, MVC) and a coherent extendible bean model (CDI). – dexter meyers Jan 11 '16 at 13:44
21

There are 2 version of the Java Environments, J2EE and Se. SE is the standard edition, which includes all the basic classes that you would need to write single user applications. While the Enterprise Edition is set up for multi-tiered enterprise applications, or possible distributed applications. If you'd be using app servers, like tomcat or websphere, you'd want to use the J2EE, with the extra classes for n-tier support.

stephenbayer
  • 12,373
  • 15
  • 63
  • 98
12

It's meaning changes all the time. It used to mean Servlets and JSP and EJBs. Now-a-days it probably means Spring and Hibernate etc.

Really what they are looking for is experience and understanding of the Java ecosystem, Servlet containers, JMS, JMX, Hibernate etc. and how they all fit together.

Testing and source control would be an important skills too.

macarthy
  • 3,074
  • 2
  • 23
  • 24
7

Yes, experience with EJB, Web Apps ( servlest and JSP ), transactions, webservices, management, and application servers.

It also means, experience with "enteprise" level application, as opposed to desktop applications.

In many situations the enterprise applications needs to connect to with a number of legacy systems, they are not only "web pages", and with the features availalble on the "edition" of java that kind of connectivity can be solved.

OscarRyz
  • 196,001
  • 113
  • 385
  • 569
4

J2EE traditionally referred to products and standards released by Sun. For example if you were developing a standard J2EE web application, you would be using EJBs, Java Server Faces, and running in an application server that supports the J2EE standard. However since there is such a huge open source plethora of libraries and products that do the same jobs as well as (and many will argue better) then these Sun offerings, the day to day meaning of J2EE has migrated into referring to these as well (For instance a Spring/Tomcat/Hibernate solution) in many minds.

This is a great book in my opinion that discusses the 'open source' approach to J2EE http://www.theserverside.com/tt/articles/article.tss?l=J2EEWithoutEJB_BookReview

Peter
  • 29,498
  • 21
  • 89
  • 122
3

I would say that J2EE experience = in-depth experience with a few J2EE technologies, general knowledge about most J2EE technologies, and general experience with enterprise software in general.

James A. N. Stauffer
  • 2,649
  • 3
  • 22
  • 32
-1

Seems like Oracle is now trying to do away with JSPs (replace with Faces) and emulate Spring's REST (JAX-RS) and DI.

ref: https://docs.oracle.com/javaee/7/firstcup/java-ee001.htm

Table 2-1 Web-Tier Java EE Technologies


JavaServer Faces technology

A user-interface component framework for web applications that allows you to include UI components (such as fields and buttons) on a XHTML page, called a Facelets page; convert and validate UI component data; save UI component data to server-side data stores; and maintain component state

Expression Language

A set of standard tags used in Facelets pages to refer to Java EE components

Servlets

Java programming language classes that dynamically process requests and construct responses, usually for HTML pages

Contexts and Dependency Injection for Java EE

A set of contextual services that make it easy for developers to use enterprise beans along with JavaServer Faces technology in web applications

killjoy
  • 940
  • 1
  • 11
  • 16