What you’re asking is “can I get all the EE components” as a single download without GlassFish, NetBeans, etc.
Well it’s helpful to know exactly what Java EE really is. It’s a set of specifications of sometimes related / sometimes unrelated “Enterprise” level components (whatever Enterprise means :)). For example, the servlet-api spec (as indicated by a previous answer) is part of the Java EE spec. So is the JTA (transaction API), JPA, Java Mail, and so on.
There are two types of EE component. 1. Those which are shipped as interfaces only and the application-server or a third party implements them. Examples are JTA, JPA, Servlet-API. 2. Those which are shipped as full reference implementations. Examples are Java-Mail. I can’t think of others off top of my head but there will be some.
Now a full application server, such as glassfish, ships with the set of implementations so lots of times people see them inside Glassfish, Websphere etc and think that they need that to use them. A container such as Tomcat is not an application server, it is a servlet-container and thus only implements a subset of the full Java EE stack (the parts that are required for servlets only).
In order to get the full set of Java EE interfaces/implementations you would need to add the separate interfaces or implementations to your build. In that case you just “have to know” where to find them, and that comes by experience. People tend to know that JPA is added as part of the Hibernate dependencies for example.
Java 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 Java EE API, such as Tomcat, Jetty, etc.
We, Java EE developers, should write code utilizing the specification (i.e. import only
javax.*classes in our code instead of implementation specific classes such as
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. In simplest terms, what is a factory?
The Java EE SDK download from Oracle.com contains basically the GlassFish server along a bunch of documentation and examples and optionally also the NetBeans IDE. You don’t need it if you want a different server and/or IDE.
EJB is part of the Java EE specification. Look, it’s in the Java EE API. Full-fledged Java EE application servers support it out the box, but simple JSP/Servlet containers don’t.
Java EE is a specification with sub-specifications that, as a whole, define a set of services that implementations (such as GlassFish or IBM’s WebSphere) should provide in order to be in compliance with the spec. These ‘implementations’ are the so-called Java EE Containers. When you hear people saying that ‘GlassFish is a Java EE 1.6 implementation’ they mean that GlassFish (a Java program written using the Java Standard Edition classes) provides all the features that the Java EE 6 family of specifications define.
What, Why, When and How about detail Java EE:
What is an Application Server?
Firstly what is an Application Server? An application server can often be described as a software framework that resides in the middle tier of a server centric architecture.
The application server can often be viewed as part of a three-tier application, which are a graphical user interface (GUI) server, an application (business logic) server, and a database and transaction server and provide services for security and state maintenance, along with data access and persistence.
For Web applications, an application server will be running in the same environment as its web server(s), and application servers are there to support the construction of dynamic pages and implement services like clustering, fail-over, and load-balancing, so developers can focus on implementing the business logic.
At IDRsolutions we like to describe it to non-technical users as a magic door. It allows you to write code to run on a server and code on a client and allow them to talk to each other. It all just works and handles all the complexity transparently for you.
So now we have established what an Application server is, we will now take a look at the available Java Application Servers.
- JDK (Java Development Kit) provides environment to develop and run java applications.
- JRE (Java Runtime Environment) provides environment only to run java applications. For example, you installed java application in client machine, then the client is responsible for run java application, not responsible for develop java application. So here JRE is required.
- JVM (Java Virtual Machine) is responsible to run our java application line by line. So here JVM is interpreter. More about JVM refer this
- JSE (Java Standard Edition) or Java SE or J2SE
- Java Platform, Standard Edition or Java SE is a widely used platform for programming in the Java language.
- It is installable software as jdk software
- Latest version is Java SE 8
- This module is given to develop the stand alone applications, desktop application, two-tier applications etc
- The application that is specific to one computer that contains main() is called standard or stand alone applications.
- The stand alone application that contains GUI is called as desktop application. E.g: AWT frame window application, swing frame window application etc.
- The application that contains two layers communicating with each other is called as two-tier application. Here layer represents logical partition in the application having logic’s. The layers of two tier application can be there in a single computer or can be there in two different computers.
- JSE concepts are
- The alternate technologies for JSE module are VB, , D2K. But these technologies based applications are platform dependent and architectural specific whereas the JSE module applications are architectural neutral and platform independent.
- In practical terms, Java SE consists of a virtual machine, which must be used to run Java programs, together with a set of libraries (or “packages”) needed to allow the use of file systems, networks, graphical interfaces, and so on, from within those programs.
- The other two environments (JME and JEE) are based on JSE.
5. JEE (Java Enterprise Edition) or Java EE or J2EE
- JEE is not installable software, it is given as specification.
- JEE specification contains rules and guidelines to develop web server and application server software like web logic, tomcat etc.
- Working with JEE is nothing but working with one or other web server or app server software to develop the app.
- These web server, application server software’s are installable software’s.
- For JEE module JSE module is base module
- Using JEE module the following applications can be developed
- Web applications
- Distributed applications
- Enterprise applications
- n-tier applications
- The applications which can provide 24*7 access to their resources using internet environment are called websites.
- The client server applications which provide location transparency are called as distributed applications. If client application is able to recognise the server application location change dynamically are called as location transparency.
- A web application/ website can be developed as distributed or non distributed application
- All credit card, debit card processing applications will be developed generally as distributed applications.
- A large scale application that deals with complex and heavy weight business logic by having middle ware service support is called as enterprise application. E.g: Banking application
- The additional services that are configurable on the applications to make applications running in all the situations are called as middle ware services.
E.g: Security service, Transaction management service, Pooling service etc
What is Java EE
Java EE consists of a set of over 28 specifications and a runtime environment. It is a superset of the Java SE platform.This means that Java EE components can take full advantages of all Java SE APIs.
This set of APIs build standard component-based multi-tier applications and that deploy in different containers offering a variety of services. Not only is it be used to developer monolithic application structures but also microservices structured applications too. Learn more about Java EE and microservices: Java EE and Microservices in 2016?. Are you interested in cutting edge development in the microservices space in relation to Java EE? Then visit the Eclipse Microprofile project website.
The Java EE programming model relies on annotations to specify configurations rather than XML description files and uses convention over configuration to help you get up and running with as little ceremony as possible.
It has its own contextually aware dependency injection framework at the heart of it programming model.