I am reading books on middleware, Spring, Hibernate, etc., and am wondering myself why the developer invented a new name, i.e. "enterprise edition" for Java "web" or "internet" libraries? As I have a quite individual mindset, "enterprise" edition sounds almost like "socialist" edition... what do I need to know to differentiate better?
From Merriam-Webster:
Main Entry: en·ter·prise
Pronunciation:\ˈen-tə(r)-ˌprīz\
3 a: a unit of economic organization or activity ; especially : a business organization
"Enterprise" just refers to the parts of Java deemed key to building business (or enterprise) applications (servlets, web, persistence, database interfaces, application frameworks, etc.)
The name distinguishes it from the core libraries. No lurking socialism here! If anything this is the capitalist's Java.
The way I usually think about it is J2SE is for regular java apps (applets, swing, console, etc.) and J2EE is "stuff that runs in a container" - JSP, Servlets, EJBs, etc.
A bit simplified, but that's the general difference between the two.
"Enterprise" edition sounds almost like "socialist" edition.
This comes out of left field for me. I don't know how one could jump from "enterprise" to "socialist." Anyway, J2EE (Enterprise Edition) has added features that are most important to large enterprises with large databases, many clients, additional security constraints, and so on. J2SE (Standard Edition) is the standard "desktop application" version of Java that most people are familiar with.
Most Java programmers will never use J2EE, except for using Tomcat or another JSP and Servlet container. Few Java programmers, by percentage, will use enterprise beans of any sort, or any of the scalability features added to J2EE.
You can think on the "intranet" of an Enterprise.
In a enterprise your systems may be exposed using web technologies without having to go to internet for that.
In the standard edition, you don't get any of those "enteprise" features ( no jsp, no application servers ) just the core of the libraries.
The micro edition is for mobiles and a like.
And those tools suit better on a "enterprise" environment, but they are no limited to it.
You may use spring for a desktop application, or Hibernate for a local database, but most of the times, Hibernate is used to access the enterprise database.
All these ( Spring, Hibernate and lot other tools ) are not part of core of the Java Platform, they are 3rd party solutions.
This is right from Sun's website:
Java Platform, Standard Edition (Java SE) lets you develop and deploy Java applications on desktops and servers, as well as today's demanding Embedded and Real-Time environments.
Java Platform, Enterprise Edition (Java EE) builds on the solid foundation of Java Platform, Standard Edition (Java SE) and is the industry standard for implementing enterprise-class service-oriented architecture (SOA) and next-generation web applications.