Java Platform, Enterprise Edition

from Wikipedia, the free encyclopedia

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

Schematic structure of the architecture as it is described in the J2EE specification 1.4

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

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:

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:
  • Session beans, both stateful and stateless, implement the business logic and are mostly accessible by the client
  • Message-driven beans, or MDB for short, for processing JMS messages were newly introduced in version 2.1
  • Entity beans for mapping persistent data objects (obsolete from version 3.0, as EJBs can also be used outside the container through detachment )
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

Commercial servers

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

Individual evidence

  1. Christopher Guindon: Eclipse GlassFish 5.1 is Released | The Eclipse Foundation. Accessed April 5, 2019 .
  2. Heise online: Application server GlassFish 5.1 prepares the switch to Jakarta EE. Retrieved April 5, 2019 .
  3. ^ Wayne Beaton: Eclipse Jakarta EE TCK. May 22, 2018, accessed April 5, 2019 .
  4. ^ Wayne Beaton: Eclipse GlassFish. May 10, 2018, accessed April 5, 2019 .
  5. ^ Will Lyons: Background on Oracle's contribution to Jakarta EE. April 24, 2018, accessed April 5, 2019 .
  6. Wayne Beaton: EE4J FAQ | The Eclipse Foundation. Accessed April 5, 2019 .
  7. Wayne Beaton: Eclipse EE4J. October 24, 2017, accessed April 5, 2019 .
  8. heise online: Jakarta EE: Eclipse Foundation takes responsibility for Enterprise Java. Retrieved April 5, 2019 .
  9. ^ Wayne Beaton: Eclipse Jakarta EE Platform. June 27, 2018, accessed April 5, 2019 .
  10. ^ Mike Milinkovich: Update on Jakarta EE Rights to Java Trademarks. In: Life at Eclipse. May 3, 2019, accessed on May 14, 2019 .
  11. Lars Röwekamp: Jakarta EE: The beginning of the end or the chance for a new beginning? In: heise developer. Retrieved May 14, 2019 .
  12. Markus Karg: Comment: Java EE is at the end. In: heise online. Retrieved May 14, 2019 .
  13. Alexander Neumann: Comment: A chance for Jakarta EE. In: heise online. Retrieved May 14, 2019 .
  14. Dominik Mohilo: javax - The good and bad news for Enterprise Java. In: JAXenter. May 8, 2019, accessed on May 14, 2019 (German).
  15. Wayne Beaton: EE4J FAQ | The Eclipse Foundation. Accessed April 5, 2019 .
  16. Java EE 8 has officially been released
  17. a b c d e f g h i Java EE Compatibility. Retrieved April 4, 2019 .
  18. a b c d e Jakarta EE Compatible Products. Retrieved October 11, 2019 .
  19. List of API specifications (JSRs) at Oracle
  20. Renaming Java EE Specifications for Jakarta EE. April 4, 2019, accessed April 5, 2019 .
  21. ^ John R. Rymer: The Forrester Wave ™: Application Server Platforms, Q3 2007 . Ed .: Forrester Research . July 11, 2007.