Jakarta EE
Java 2 Platform, Enterprise Edition, abgekürzt J2EE [
], ist die Spezifikation einer Standardarchitektur für die Ausführung von Anwendungskomponenten.Die aktuelle Version der J2EE-Spezifikation ist die Version 5.0.
Der neue Name für die Spezifikation lautet Java Platform, Enterprise Edition, kurz Java EE [
].In der Spezifikation werden Softwarekomponenten und Dienste definiert, die primär in der Programmiersprache Java erstellt werden. Die Spezifikation dient dazu, einen allgemein akzeptierten Rahmen zur Verfügung zu stellen, um auf dessen Basis aus modularen Komponenten verteilte, mehrschichtige Anwendungen entwickeln zu können. Klar definierte Schnittstellen zwischen den Komponenten und Schichten sollen dafür sorgen, dass Softwarekomponenten unterschiedlicher Hersteller interoperabel sind, wenn sie sich an die Spezifikation halten, und dass die verteilte Anwendung gut skalierbar ist.
Bestandteile der Spezifikation werden innerhalb des Java Community Process von diversen Unternehmen erarbeitet und schließlich der Öffentlichkeit in Form eines Dokuments und einer Referenzimplementierung zur Verfügung gestellt.
Bisherige Versionen
Version | Ausführlicher Name | Veröffentlichungsdatum | Release-Status |
---|---|---|---|
1.2 | Java 2 Platform Enterprise Edition, v 1.2 | 2000 | Final Release |
1.3 | Java 2 Platform Enterprise Edition, v 1.3 | 2002 | Final Release |
1.4 | Java 2 Platform Enterprise Edition, v 1.4 | 24. November 2003 | Final Release |
5 | Java Platform, Enterprise Edition, v 5 | 8. August 2005 | Public Review |
Infrastruktur
J2EE-Komponenten erfordern als Laufzeitumgebung eine spezielle Infrastruktur, einen sogenannten J2EE Application Server. Dieser Server stellt technische Funktionalitäten wie
- Sicherheit (Security)
- Transaktionsmanagement
- Namens- und Verzeichnisdienste
- Kommunikation zwischen J2EE-Komponenten
- Management der Komponenten über den gesamten Lebenszyklus (inklusive Instanziierung)
- Unterstützung für die Installation (Deployment)
zur Verfügung. Des Weiteren kapselt der Server den Zugriff auf die Ressourcen des zugrundeliegenden Betriebssystems (Dateisystem, Netzwerk ...). J2EE-Server werden häufig auch mit dem Begriff Application Server bezeichnet.
Ein J2EE-Server wird in diverse logische Komponenten unterteilt. Diese werden Container genannt. Die aktuelle Spezifikation erfordert die folgenden Container
- einen EJB-Container als Laufzeitumgebung für Enterprise Java Beans
- einen Web-Container als Laufzeitumgebung für Servlets und Java Server Pages (JSP)
- einen JCA-Container als Laufzeitumgebung für JCA Connectoren. Dieser ist zwar nicht explizit definiert, faktisch jedoch muss jeder Application-Server-Hersteller diesen implementieren. Denn im Enterprise Java Beans(EJB) sowie im Web-Container sind Restriktionen definiert, welche für die JCA-Laufzeitumgebung nicht gelten. Dabei handelt es sich beispielsweise um das Starten von Threads oder das Lesen und Schreiben in Files etc.
Es sind zahlreiche Implementierungen für J2EE-Server verfügbar, teils proprietär, teils in Form frei verfügbarer Open-Source-Lösungen. Eine Referenzimplementierung wird von Sun Microsystems zur Verfügung gestellt. Zu beachten ist, dass nicht alle Server die Spezifikation von J2EE vollständig abdecken.
Als weitere Infrastrukturkomponente kommt für die persistente Speicherung von Daten ein Datenbankmanagementsystem (DBMS) zum Einsatz. Hierbei kann es sich um ein relationales System handeln, oder aber auch um ein vergleichbares System wie beispielsweise ein OODBMS.
Der clientseitige Zugriff auf eine J2EE-Anwendung erfolgt meist über einen Browser, daneben sind aber auch Applikations-Clients (Java-Applikationen, CORBA-Komponenten, Web-Service-Clients über XML) möglich.
Wichtige APIs
Die J2EE-APIs beinhalten verschiedene Technologien, die die Funktionalität des Basis-J2SE-APIs erweitern.
Abkürzung | Name | Beschreibung | seit Version 1.4 | seit Version 5 |
---|---|---|---|---|
EJB | Enterprise Java Beans (EJB) | beinhalten die Geschäftslogik einer Enterprise Anwendung oder gestatten Zugriff auf persistente Daten. Die Beans laufen in einem EJB-Container ab. Es gibt drei unterschiedliche Typen von EJBs: | MDBs wurden in dieser Version neu eingeführt | o |
Servlet | Java Servlet API | Im Allgemeinen erlaubt das Java-Servlet-API die Erweiterung von Servern, deren Protokoll auf Anfragen und Antworten basiert. Primär werden Servlets im Zusammenhang mit dem Hypertext Transfer Protocol (HTTP) verwendet wo sie in einem Web-Container leben und Anfragen von Webbrowsern beantworten. | o | o |
JSP | Java Server Pages | sind Textdokumente, die zum einen aus statischem Text und zum anderen aus dynamischen Textelementen - den JSP-Elementen - bestehen. Die JSP-Seiten werden transparent vom Web-Container in ein Servlet umgewandelt. | o | o |
WS | Web Services | - | x | o |
JMX | Management | ermöglicht es die einzelnen J2EE-Komponenten und Anwendungen zu verwalten. So können Komponenten beispielsweise gestartet und gestoppt werden. | x | o |
JNDI | Java Naming and Directory Interface | ist eine gemeinsame Schnittstelle mit der alle Java Klassen auf Namens- und Verzeichnisdienste zugreifen können. Über JNDI wird insbesondere der Zugriff auf J2EE-Komponenten sichergestellt. | o | o |
JMS | Java Message Service | ist eine API für die asynchrone Nachrichtenverarbeitung. | x | o |
JDBC | Java Database Connectivity | lässt die Anwendung auf eine relationale Datenbank mittels SQL zugreifen. | o | o |
JTA | Java Transaction API | erlaubt der Anwendung die Steuerung der Transaktionsverwaltung. JTA ist die Java-Schnittstelle zu Transaktionsmonitoren. Standardmäßig wird diese Schnittstelle implementiert vom Java Transaction Service (JTS), welcher eine Schnittstelle zu CORBA Object Transaction Service (OTS) bietet. | o | o |
JAAS | Java Authentication and Authorization Service | Der "Java Authentication and Authorization Service" (JAAS) ist eine Java-API, die es ermöglicht, Dienste zur Authentifikation und Zugriffrechte in Java-Programmen bereitzustellen. JAAS implementiert ein Standard-"Pluggable Authentication Module" (PAM) und unterstützt durch dieses Modul einfach eine benutzerbasierte Autorisation. | x | o |
JavaMail | JavaMail | erlaubt den Zugriff auf Mail Services, wie z.B. SMTP, POP3, IMAP oder NNTP. | x | o |
JAXP | Java API for XML Processing | hilft dem Entwickler bei der Bearbeitung von XML-Dokumenten. | x | o |
JAX-RPC | Java API for XML-Based Remote Procedure Calls | ermöglicht den entfernten Zugriff auf RPC-Dienste. | x | o |
JAXR | Java API for XML Registries | dient dazu einen transparenten Zugriff auf so genannte Business-Registries wie beispielsweise ebXML oder ein UDDI basiertes Verzeichnis sicherzustellen. | x | o |
JACC | J2EE Authorization Contract for Containers | definiert diverse Sicherheitsrichtlinien für die diversen J2EE-Container. | x | o |
JCA | J2EE Connector Architecture | dient dazu andere Systeme transparent zu integrieren (Stichwort: EAI). | x | o |
JAF | Java Beans Activation Framework | bietet die Möglichkeit verschiedene Daten anhand des MIME-Headers zu erkennen. | x | o |
JAX-WS | Java API for XML Web Services | - | o | x |
- | Web Service Metadata | - | o | x |
- | Java Persistence | - | o | x |
StAX | Streaming APIs for XML Parsers | - | o | x |
JSF | Java Server Faces | - | o | x |
JSTL | JavaServer Pages Standard Tag Library | - | o | x |
Wichtige Implementierungen
Kompletter J2EE-Stack
- JBoss – Open Source
- JOnAS – Open Source
- BEA WebLogic – proprietär
- IBM WebSphere – proprietär
- Sun Java System Application Server – Open Source (Referenz-Implementierung)
- Oracle Application Server – proprietär
- SAP Web Application Server – proprietär
- Apache Geronimo – Open Source
- GlassFish – Open Source (Basis des neuen (J2EE V5) Sun Java System Application Servers)
Servlet-/JSP-Container
- Caucho Technology Resin - proprietär
- Jetty - Open Source
- Apache Tomcat - Open Source
Siehe auch
- Java Platform Standard Edition
- Java Platform Micro Edition
- CORBA Component Model
- .NET
- ColdFusion
- Plone
- Spring (Framework)
Literatur
- Bill Shannon, Mark Hapner, Vlada Matena: Java 2 Platform, Enterprise Edition. Addison Wesley 2000 ISBN 0201704560
- Inderjeet Singh, Beth Stearns, Mark Johnson: Designing Enterprise Applications with the J2EE Platform. 2. Auflage. Addison Wesley 2002 ISBN 0201787903
- Inderjeet Singh, Sean Brydon, Greg Murray: Designing Web Services with the J2EE 1.4 Platform. Addison Wesley 17. Juni 2004 ISBN 0321205219
- Jason Hunter, William Crawford: Java Servlet Programming. 2. Ausgabe. O'Reilly 1. April 2001 ISBN 0596000405
- Bruce W. Perry: Java Servlet & JSP Cookbook. O'REILLY 1. Januar 2004 ISBN 0596005725
- Hans Bergsten: JavaServer Pages. 3. Ausgabe. O'REILLY 1. Dezember 2003 ISBN 0596005636
- Marty Hall, Larry Brown: Core Servlets and JavaServer Pages. Prentice Hall PTR 2004 ISBN 0130893404
- Richard Monson-Haefel, Bill Burke, Sacha Labourey: Enterprise JavaBeans. 4. Ausgabe. O'REILLY 30. Juni 2004 ISBN 059600530X
- Kevin Boone: Applied Enterprise JavaBeans Technology. Prentice Hall PTR 1. Dezember 2002 ISBN 0130449156
- Richard Monson-Haefel, David A. Chappell: Java Message Service. O'REILLY 1. Dezember 2000 ISBN 0596000685
- Rahul Sharma, Beth Stearns, Tony Ng: J2EE Connector Architecture and Enterprise Application Integration. Addison Wesley 1. Dezember 2000 ISBN 0201775808
- Jonathan Bruce, Jon Ellis, Maydene Fisher: JDBC API Tutorial and Reference. 3. Auflage. Addison Wesley 2003 ISBN 0321173848
- Rosanna Lee, Scott Seligman: JNDI API Tutorial and Reference. Addison Wesley 1. Juni 2000 ISBN 0201705028
- Steve J. Perry: Java Management Extensions. O'REILLY Juli 2002 ISBN 0596002459