Java Platform, Enterprise Edition
Java Platform, Enterprise Edition , abbreviated to Java EE , is the specification of a software architecture for the transaction-based execution of applications programmed in Java, especially web applications . It is one of the major platforms competing for the middleware market. Biggest competitor is the .NET - platform from Microsoft .
The specification defines software components and services that are mainly created in the Java programming language. The purpose of the specification is to provide a generally accepted framework in order to be able to develop distributed , multi-layer applications from modular components on this basis . Clearly defined interfaces between the components and containers should ensure that software components from different manufacturers are interoperable if they adhere to the specification, and that the distributed application is easily scalable .
Components of the "Java Platform, Enterprise Edition" specification were developed by various companies within the Java Community Process and finally made available to the public in the form of a document and a reference implementation. Future specifications will be made available as the Eclipse Jakarta EE Platform as part of the Eclipse Foundation project EE4J , including reference implementation, Technology Compatibility Kit (TCK) and tutorial.
Previous versions
Eclipse Jakarta EE Platform - Eclipse EE4J versions
The "Java Platform, Enterprise Edition, v 8", including the Technology Compatibility Kit (TCK) and the GlassFish reference implementation , was handed over to the Eclipse Foundation by Oracle, where the EE4J project was founded. This develops, coordinates and publishes the Eclipse Jakarta EE Platform .
The Eclipse Foundation and Oracle have not made any agreement on the naming rights to Java and the associated technical namespace. The resulting consequences were controversially commented on in the reporting.
Java Platform, Enterprise Edition - Java Community Process versions under the direction of Oracle
Up to and including version 8, the Java EE platform was developed, coordinated and published with the Java Community Process under the specification management of Oracle . Further versions will not appear with this process and under this guidance.
The current version of the Java EE specification is version 8.0.
The new name for the specification is Java Platform, Enterprise Edition , Java EE for short [ ˈdʒɑːvə ˌiːˈiː ]. This replaces the previous abbreviation J2EE [ ˌdʒeɪˈtuː ˌiːˈiː ] ( Java 2 Platform, Enterprise Edition ).
version | Full name | Publication date of the final release |
---|---|---|
1.0 | Java 2 Platform Enterprise Edition, v 1.0 | December 1999 |
1.2 | Java 2 Platform Enterprise Edition, v 1.2 | 2000 |
1.2.1 | Java 2 Platform Enterprise Edition, v 1.2.1 | May 23, 2000 |
1.3 | Java 2 Platform Enterprise Edition, v 1.3 | September 24, 2001 |
1.4 | Java 2 Platform Enterprise Edition, v 1.4 | November 24, 2003 |
5 | Java Platform, Enterprise Edition, v 5 | May 11, 2006 |
6th | Java Platform, Enterprise Edition, v 6 | December 10, 2009 |
7th | Java Platform, Enterprise Edition, v 7 | May 12, 2013 |
8th | Java Platform, Enterprise Edition, v 8 | 18th September 2017 |
Infrastructure
Java EE components require a special infrastructure, a so-called Java EE application server , as a runtime environment . This server provides technical infrastructure such as
- Security,
- Transaction management ,
- Name and directory services ,
- Communication between Java EE components ,
- Persistence services for long-term storage of Java objects,
- Management of the components over the entire life cycle (including instantiation ),
- Installation support ( deployment )
to disposal. Furthermore, the server encapsulates access to the resources of the underlying operating system (file system, network, ...).
A Java EE server is divided into various logical systems. These are called containers . The current specification requires the following containers:
- an EJB container as a runtime environment for Enterprise JavaBeans
- a web container as a runtime environment for servlets and JavaServer Pages (JSP)
- a JCA container as a runtime environment for JCA connectors. Although this is not explicitly defined, every application server manufacturer must actually implement it. This is because restrictions are defined in the Enterprise JavaBeans (EJB) and in the web container that do not apply to the JCA runtime environment. This involves, for example, starting threads or reading and writing to files, etc.
- a JMS provider as a management system for message queues.
There are numerous implementations for Java EE servers available, some proprietary , some in the form of freely available open source solutions (e.g. WildFly ). A reference implementation is provided by the Eclipse Foundation . It should be noted that not all servers fully cover the Java EE specification. However, Oracle and Eclipse publish a list of currently certified servers for each version.
A database management system (DBMS) is used as a further infrastructure component for the persistent storage of data . This can be a relational system , or a comparable system such as an OODBMS . The database management systems are usually connected via a JDBC driver.
Client-side access to a Java EE application often takes place via a browser , but application clients (Java applications, CORBA components, web service clients) are also common.
Important APIs
The Java EE APIs contain various technologies that extend or replace the functionality of the basic Java SE API . In future these will no longer begin with "Java", but will be renamed or supplemented with "Jakarta".
Name and abbreviation | description | J2EE 1.4 | Java EE 5 | Java EE 6 | Java EE 7 | Java EE 8 |
---|---|---|---|---|---|---|
Enterprise JavaBeans (EJB) | contain the business logic of an enterprise application or allow access to persistent data. The beans run in an EJB container . There are three different types of EJBs:
|
yes (2.1) | yes (3.0) | yes (3.1) | yes (3.2) | yes (3.2) |
Java servlet | generally allows the extension of servers whose protocol is based on requests and responses. Servlets are primarily used in connection with the Hypertext Transfer Protocol (HTTP), where they live in a web container and answer requests from web browsers . | yes (2.4) | yes (2.5) | yes (3.0) | yes (3.1) | yes (4.0) |
JavaServer Pages (JSP) | are text documents that consist on the one hand of static text and on the other hand of dynamic text elements - the JSP elements. The JSP pages are transparently converted into a servlet by the web container. | yes (2.0) | yes (2.1) | yes (2.2) | yes (2.3) | yes (2.3) |
Web services (WS) | define interfaces to EJBs that can be clearly identified with a Uniform Resource Identifier (URI) and whose interfaces can be defined, described and found as XML artifacts. | yes (1.0) | yes (1.2) | yes (1.3) | yes (1.4) | yes (1.4) |
Java Naming and Directory Interface (JNDI) | is a common interface that all Java classes use to access name and directory services. Access to Java EE components in particular is ensured via JNDI. | yes (1.2) | yes (1.2) | yes (1.2 SE) | yes (1.2 SE) | yes (1.2 SE) |
Java Message Service (JMS) | is an API for asynchronous message processing. | yes (1.1) | yes (1.1) | yes (1.1) | yes (2.0) | yes (2.0) |
Java Transaction API (JTA) | allows the application to control transaction management. JTA is the Java interface to transaction monitors . By default, this interface is implemented by the Java Transaction Service (JTS), which provides an interface to the CORBA Object Transaction Service (OTS). | yes (1.0.1B) | yes (1.1) | yes (1.1) | yes (1.2) | yes (1.2) |
Java Authentication and Authorization Service (JAAS) | is a Java API that enables authentication and access rights services to be provided in Java programs. JAAS implements a standard Pluggable Authentication Module (PAM) and through this module supports simple authentication and user-based authorization . | yes (1.0) | yes (1.0) | yes (1.0) | yes (1.0) | yes (1.0) |
JavaMail | allows access to mail services such as B. SMTP , POP3 or IMAP . | yes (1.2) | yes (1.4) | yes (1.4) | yes (1.5) | yes (1.6) |
Java Architecture for XML Binding (JAXB) | enables an XML schema to be linked directly to Java classes. Was officially required only since Java EE version 1.5, but may already be supported before. | No | yes (2.0) | yes (2.2) | yes (2.2) | yes (2.2) |
Java API for XML Processing (JAXP) | helps the developer to edit XML documents. | yes (1.2) | yes (1.3) | yes (1.4 (SE)) | yes (1.4 (SE)) | yes (1.4 (SE)) |
Java API for XML-based RPC (JAX-RPC) | enables remote access to RPC services. | yes (1.0) | yes (1.1) | yes (1.1) | yes (1.1) | yes (1.1) |
Java API for RESTful Web Services (JAX-RS) | No | No | yes (1.1) | yes (2.0) | yes (2.1) | |
Java API for XML Registries (JAXR) | serves to ensure transparent access to so-called business registries such as ebXML or a UDDI -based directory. | yes (1.0) | yes (1.0) | yes (1.0) | yes (1.0) | yes (1.0) |
Java Authorization Contract for Containers (JACC) | defines various security guidelines for the various Java EE containers. | yes (1.0) | yes (1.1) | yes (1.4) | yes (1.5) | yes (1.5) |
J2EE Connector Architecture (JCA) | serves to transparently integrate other systems (keyword: EAI ). | yes (1.5) | yes (1.5) | yes (1.6) | yes (1.7) | yes (1.7) |
JavaBeans Activation Framework (JAF) | offers the possibility to recognize different data by means of the MIME header. | yes (1.0) | yes (1.1) | yes (1.1) | yes (1.1) | yes (1.1) |
Java API for XML Web Services (JAX-WS) | helps to create web services and associated clients that communicate via XML , e.g. B. via SOAP . | No | yes (2.0) | yes (2.2) | yes (2.2) | yes (2.2) |
Web service metadata | describes web services with Java annotations | No | yes (2.0) | yes (2.1) | yes (2.1) | yes (2.1) |
Java Persistence API (JPA) | provides a uniform and database-independent interface for object-relational mapping and working with entities . | No | yes (1.0) | yes (2.0) | yes (2.1) | yes (2.2) |
Streaming API for XML (StAX) | is a cursor-based XML processing in addition to the DOM and SAX parsers | No | yes (1.0) | yes (1.0) | yes (1.0) | yes (1.0) |
JavaServer Faces (JSF) | is used to integrate components for user interfaces in websites and to define navigation. | No | yes (1.2) | yes (2.0) | yes (2.2) | yes (2.3) |
Expression Language (EL) | No | No | yes (2.2) | yes (3.0) | yes (3.0) | |
JavaServer Pages Standard Tag Library (JSTL) | is a collection of JSP tags for structuring, XML, SQL , internationalization and so on | No | yes (1.2) | yes (1.2) | yes (1.2) | yes (1.2) |
Contexts and Dependency Injection (CDI) | is a technique to set fields according to the inversion-of-control principle. It allows the developer to combine different business contexts. It also connects JSF to EJB. | No | No | yes (1.0) | yes (1.2) | yes (2.0) |
Java API for WebSocket (WebSocket) | Uses WebSockets to send messages to JavaScript browser applications from Java processes running on the server side. | No | No | No | yes (1.0) | yes (1.1) |
Java API for JSON Processing (JSON-P) | No | No | No | yes (1.0) | yes (1.1) | |
Batch Applications for the Java Platforms (Batch) | No | No | No | yes (1.0) | yes (1.0) | |
Bean validation | No | No | yes (1.0) | yes (1.1) | yes (2.0) | |
Managed beans | No | No | yes (1.0) | yes (1.0) | yes (1.0) | |
Concurrency Utilities for Java EE | No | No | No | yes (1.0) | yes (1.0) | |
Interceptors | No | No | yes (1.1) | yes (1.2) | yes (1.2) | |
Common Annotations for the Java Platform | No | No | yes (1.1) | yes (1.2) | yes (1.3) | |
Authentication Service Provider Interface for Containers (JASPIC) | No | No | yes (1.0) | yes (1.1) | yes (1.1) | |
Enterprise Edition Management API | No | No | yes (1.1) | yes (1.1) | yes (1.1) | |
Enterprise Edition Deployment API | No | No | yes (1.2) | yes (1.2) | yes (1.2) | |
Java EE Security API | No | No | No | No | yes (1.0) |
Implementations
An implementation of the Java EE standard can also be certified by Oracle for the respective version. This confirms the basic compatibility of the applications between the servers. However, in practice it often turns out that porting an application from one Java EE server to another is associated with problems. Manufacturer-dependent libraries are sometimes used unconsciously.
Complete Java EE server
The current status of the certification (according to the Oracle TCK) is shown in brackets.
Open source server
- Apache Geronimo (uses either Apache Tomcat or Jetty ) (Java EE 6 Full Profile and Web Profile)
- WildFly (formerly JBoss) ( Apache Tomcat or Undertow) (Java EE 8 Full Profile and Web Profile, Jakarta EE 8 Full Profile)
- JOnAS (uses Apache Tomcat or Jetty ) (Java EE 6 Web Profile)
- GlassFish (Java EE 8 Full Profile and Web Profile, Jakarta EE 8 Full Profile and Web Profile)
- Payara Server (Jakarta EE 8 Full Profile)
- Open Liberty (Jakarta EE 8 Full Profile and Web Profile)
Commercial servers
- ATG Dynamo Application Server (DAS) (Java EE 1.3)
- Oracle WebLogic since the takeover of BEA by Oracle in 2008 (Java EE 7 Full Profile)
- Oracle Application Server (Java EE 5)
- Orion Application Server
- SAP NetWeaver Application Server (Java EE 5)
- SAP Cloud Platform (Java EE 7 Web Profile)
- IBM WebSphere Application Server (WAS) (Java EE 8 Full Profile and Web Profile)
- JBoss EAP (Java EE 8 Full Profile and Web Profile)
Spread of the Java EE server
In 2007, the following number of users of well-known Java EE servers were published. Under Users you can find the number of companies and organizations that have licensed the respective server or, in the case of JBoss, have concluded a maintenance contract. JBoss estimates that there are 10,000 total users of the JBoss Enterprise Application Platform.
Java EE server | Number of users |
---|---|
IBM WebSphere Application Server | 75,000 |
Oracle Application Server | 32,000 |
BEA WebLogic | 15,000 |
SAP NetWeaver Application Server | 12,000 |
SUN Sun Java System Application Server | 3,000 |
JBoss Application Server | 1,000 |
Separate web container (servlet / JSP container)
Separate EJB container
- Apache OpenEJB - Open Source
Other Java platforms
See also
literature
- Alexander Salvanos: Developing professionally with Java EE 8 . Rheinwerk Verlag, 2018, ISBN 978-3-836-24353-7 .
- Alexander Salvanos: Developing professionally with Java EE 7 . Galileo Press, 2014, ISBN 978-3-8362-2004-0 .
- Bill Shannon, Mark Hapner, Vlada Matena: Java 2 Platform, Enterprise Edition . Addison-Wesley, 2000, ISBN 0-201-70456-0 .
- Inderjeet Singh, Beth Stearns, Mark Johnson: Designing Enterprise Applications with the J2EE Platform . 2nd Edition. Addison-Wesley, 2002, ISBN 0-201-78790-3 .
- Inderjeet Singh, Sean Brydon, Greg Murray: Designing Web Services with the J2EE 1.4 Platform . Addison-Wesley, June 17, 2004, ISBN 0-321-20521-9 .
- Jason Hunter, William Crawford: Java Servlet Programming . 2nd edition. O'Reilly, April 1, 2001, ISBN 0-596-00040-5 .
- Bruce W. Perry: Java Servlet & JSP Cookbook . O'Reilly, Jan. 1, 2004, ISBN 0-596-00572-5 .
- Hans Bergsten: JavaServer Pages . 3rd edition. O'Reilly, December 1, 2003, ISBN 0-596-00563-6 .
- Marty Hall, Larry Brown: Core Servlets and JavaServer Pages . Prentice Hall PTR, 2004, ISBN 0-13-089340-4 .
- Richard Monson-Haefel, Bill Burke, Sacha Labourey: Enterprise JavaBeans . 4th edition. O'Reilly, June 30, 2004, ISBN 0-596-00530-X .
- Kevin Boone: Applied Enterprise JavaBeans Technology . Prentice Hall PTR, December 1, 2002, ISBN 0-13-044915-6 .
- Richard Monson-Haefel, David A. Chappell: Java Message Service . O'Reilly, December 1, 2000, ISBN 0-596-00068-5 .
- Rahul Sharma, Beth Stearns, Tony Ng: J2EE Connector Architecture and Enterprise Application Integration . Addison-Wesley, December 1, 2000, ISBN 0-201-77580-8 .
- Jonathan Bruce, Jon Ellis, Maydene Fisher: JDBC API Tutorial and Reference . 3. Edition. Addison-Wesley, 2003, ISBN 0-321-17384-8 .
- Rosanna Lee, Scott Seligman: JNDI API Tutorial and Reference . Addison-Wesley, June 1, 2000, ISBN 0-201-70502-8 .
- Steve J. Perry: Java Management Extensions . O'Reilly, July 2002, ISBN 0-596-00245-9 .
- Genender: Enterprise Java Servlets . Addison-Wesley, ISBN 0-201-70921-X .
Web links
- Current specifications for Java EE Oracle, English
- Official Java EE website from Oracle, English
- Official Eclipse Enterprise for Java (EE4J) website of the Eclipse Foundation, English
- Official Java EE 6 tutorial from Oracle, English
- Eric Jendrock et al. a .: The Java EE 7 Tutorial. Oracle, September 2014, accessed on February 19, 2015 (also available as JEETT [PDF]).
Individual evidence
- ↑ Christopher Guindon: Eclipse GlassFish 5.1 is Released | The Eclipse Foundation. Accessed April 5, 2019 .
- ↑ Heise online: Application server GlassFish 5.1 prepares the switch to Jakarta EE. Retrieved April 5, 2019 .
- ^ Wayne Beaton: Eclipse Jakarta EE TCK. May 22, 2018, accessed April 5, 2019 .
- ^ Wayne Beaton: Eclipse GlassFish. May 10, 2018, accessed April 5, 2019 .
- ^ Will Lyons: Background on Oracle's contribution to Jakarta EE. April 24, 2018, accessed April 5, 2019 .
- ↑ Wayne Beaton: EE4J FAQ | The Eclipse Foundation. Accessed April 5, 2019 .
- ↑ Wayne Beaton: Eclipse EE4J. October 24, 2017, accessed April 5, 2019 .
- ↑ heise online: Jakarta EE: Eclipse Foundation takes responsibility for Enterprise Java. Retrieved April 5, 2019 .
- ^ Wayne Beaton: Eclipse Jakarta EE Platform. June 27, 2018, accessed April 5, 2019 .
- ^ Mike Milinkovich: Update on Jakarta EE Rights to Java Trademarks. In: Life at Eclipse. May 3, 2019, accessed on May 14, 2019 .
- ↑ Lars Röwekamp: Jakarta EE: The beginning of the end or the chance for a new beginning? In: heise developer. Retrieved May 14, 2019 .
- ↑ Markus Karg: Comment: Java EE is at the end. In: heise online. Retrieved May 14, 2019 .
- ↑ Alexander Neumann: Comment: A chance for Jakarta EE. In: heise online. Retrieved May 14, 2019 .
- ↑ Dominik Mohilo: javax - The good and bad news for Enterprise Java. In: JAXenter. May 8, 2019, accessed on May 14, 2019 (German).
- ↑ Wayne Beaton: EE4J FAQ | The Eclipse Foundation. Accessed April 5, 2019 .
- ↑ Java EE 8 has officially been released
- ↑ a b c d e f g h i Java EE Compatibility. Retrieved April 4, 2019 .
- ↑ a b c d e Jakarta EE Compatible Products. Retrieved October 11, 2019 .
- ↑ List of API specifications (JSRs) at Oracle
- ↑ Renaming Java EE Specifications for Jakarta EE. April 4, 2019, accessed April 5, 2019 .
- ^ John R. Rymer: The Forrester Wave ™: Application Server Platforms, Q3 2007 . Ed .: Forrester Research . July 11, 2007.