J2EE (Java 2 enterprise edition)

Mit dem J2EE-Komponentenmodell (Java 2 Enterprise Edition) wurde bereits im Jahre 2000 von Sun Microsystems eine Plattform zur Entwicklung unternehmensweiter Anwendungen (Enterprise Application) vorgestellt. Diese Anwendungen können im weitesten Sinne auch verteilte Anwendungen sein. Neben der Plattform für die plattformunabhängige Ausführung von Programmen, die in der Programmiersprache Java geschrieben wurden, integriert J2EE eine Ansammlung von sogenannten Komponentenmodellen. Eines der bekanntesten Komponentenmodelle ist dabei wohl das Modell der Enterprise JavaBeans (EJB). Die Komponentenmodelle orientieren sich an der 4-Tier-Architektur der J2EE-Architektur.


Die von SUN Microsystems erstellte Spezifikation umfasst Softwarekomponenten, Dienste sowie Schnittstellen, so dass bei Beachtung der Spezifikation die Produkte verschiedener Hersteller interoperabel sind. Dazu stellt Sun eine Reihe von Referenzimplementierungen zur Verfügung, mit denen der Kompatibilitätsgrad eigener Anwendungen hinsichtlich des J2EE-Standards abgeprüft werden kann. Das J2EE-Komponentenmodell steht unter dem u.g. Link als Download zur Verfügung. Zusätzlich zur Java Virtual Machine (JVM) wird ein spezieller J2EE-Applikationsserver wie BEA WebLogic u.a. benötigt. J2EE ist Basis für die Entwicklung vieler Unternehmensapplikationen und steht dabei im Wettbewerb zu Microsofts .NET-Plattform.

Die J2EE-Plattform unterstützt die Realisierung sogenannter verteilter Applikationen - dabei werden die Anwendungen auf mehrere Komponenten verteilt, die dann weitgehend voneinander unabhängig sind. J2EE definiert also gewissermaßen einen Rahmen zur Erstellung solcher verteilter Anwendungen, die wiederum auf einem Komponentenmodell basieren. J2EE wird in diesem Zusammenhang auch als 4-Tier-Architektur - auch Vier-Schichten-Modell - bezeichnet.

J2EE-Architekturmodell

J2EE-Architekturmodell

Die nebenstehende Abbildung zeigt einen Überblick über die verschiedenen Komponenten dieser Architektur, die jeweils abgekoppelt voneinander die eigentliche Geschäftslogik, die Benutzerschnittstelle und ein umfangreiches Set sogenannter Dienste definieren. Die J2EE-Spezifikation definiert die folgenden Dienste:

In diesem Zusammenhang spricht man auch davon, dass die J2EE einen Java-basierten Applikationsserver definiert. Dabei stellt dieser Applikationsserver eine durchgängige Infrastruktur zur Komponenten-basierten Entwicklung von Anwendungssystemen bereit, die alle Schichten vom Client bis hin zum Datenbankmanagementsystem (DBMS) inkludiert. Durch die J2EE werden die Schnittstellen sowie die Funktionalität der Laufzeitumgebung zur Verfügung gestellt, um diese verteilten Anwendung unabhängig vom Hersteller des Applikationsservers in einem einheitlichen Programmiermodell zu realisieren. Das Ziel ist somit die Standardisierung der unterschiedlichen Laufzeitumgebungen für mehrstufige Anwendungssysteme, um dadurch eine Vereinfachung der Anwendungsentwicklung zu erreichen. Die Firma Sun stellt dazu auch eine Reihe von Referenzimplementierungen zur Verfügung, anhand derer der jeweilige Hersteller die Kompatibilität seines Applikationsservers gegen die J2EE-Spezifikation abprüfen kann. Applikationsserver werden auch als Middleware-Systeme bezeichnet, da sie immer auch eine Software-Schicht die sogenannte Middleware implementieren. Das lässt sich darauf zurückführen, dass in verteilten Systemen die logische Interaktion zwischen Partnern Middleware genannt wird - diese unterstützt sowohl asynchrone als auch synchrone Kommunikationsformen. In Beziehung mit Applikationsservern taucht häufig der Begriff der Objekt-Transaktions-Monitore (OTM) auf - damit sind verteilte Transaktionen über verteilten Objekten gemeint.

Kurze Übersicht über die Technologien der J2EE

Komponenten-Technologien. Stellen die Business-Logik einer Anwendung bereit. Dazu stehen die Komponenten JSP, Servlets sowie die Enterprise JavaBeans (EJB) bereit. EJBs unterscheiden sich in Session Beans, Entity Beans und Message Driven Beans.

Service-Technologien. Stellen den Komponenten zusätzliche Dienste zum Beispiel JDBC, JTA, JNDI u.a. zur Verfügung.

Kommunikations-Technologien. Regeln die Kommunikation zwischen Komponenten und Diensten. Hier sind zu nennen die Internet-Protokolle wie HTTP oder TCP/IP, SSL-Protokoll; Remote Object Protocols wie RMI- RMI-IIOP, JavaIDL; Java Messaging Service (JMS) und Java Mail. Ein zentrales Element der J2EE-Plattform sind die Container, eine Äquivalenz der J2EE-Umgebung zur Java Virtual Machine (JVM) der Java Standard Edition (J2SE. Durch Container werden standardisierte Laufzeitumgebungen in Form von eigenen logischen Systemen bereitgestellt. Diese wiederum stellen den Komponenten dann spezifische Dienste wie beispielsweise die JDBC Extension oder die Verwaltung des Lebenszyklus einer Komponente zur Verfügung. Die J2EE-Spezifikation unterscheidet die folgenden Typen von Containern:

  • EJB-Container, die Laufzeitumgebung für Enterprise Java Beans (EJB),
  • Webcontainer, die Laufzeitumgebung für Java Server Pages (JSP) sowie für Servlets
  • JCA-Container zur Integration von heterogenen Anwendungen in das J2EE-Umfeld.
Durch die Verwendung von Containern ist es auch möglich, das Verhalten einer Applikation erst zu deren Laufzeit zu bestimmen. Dies ist Aufgabe des so-genannten Deployment-Prozesses innerhalb der J2EE, die dafür spezielle Deployment-Deskriptoren anbietet. Dabei handelt es sich um einfache Textdateien auf Basis der Beschreibungssprache Extensible Markup Language (XML). So kann die Konfiguration der Komponenten, deren Beziehungen untereinander sowie ggf. externe Abhängigkeiten in Form einer separaten XML-Datei beschrieben werden.

Das Komponentenmodell der J2EE setzt vielerlei Vorteile gleichermaßen aus Sicht von Herstellern, Entwicklern wie auch Anwendern um:

Plattformunabhängigkeit. J2EE nutzt die Java-Plattform und ist damit unabhängig von den verschiedenen System-Plattformen.

Vereinfachte Architektur und Entwicklung. Ein Komponenten-basiertes Modell einer Applikation lässt sich einfacher auf beliebige Funktionalitäten einer Anwendung abbilden. Dadurch ist auch ein paralleles Arbeiten von Entwicklern auf Basis eines einheitlichen Standards möglich.

Standardisierung und Herstellerunabhängigkeit. Anwendungen können durch Einhaltung der J2EE-Spezifikation unabhängig von einem Hersteller entwickelt werden. Dabei ist jede Anwendung mit einem minimalen Aufwand an Customizing auf jeden J2EE-kompatiblen Applikationsserver portierbar. Damit ist auch die Grundlage für die Entwicklung stabiler und skalierbarer Anwendungen gegeben, die zudem noch gepflegt oder auch wiederverwendet werden können.

Enterprise Application Integration. J2EE definiert den Standard für die Zusammenarbeit von allen wichtigen Informationssystem in einem Unternehmen - auch als Enterprise Information Systems (EIS) bezeichnet. Hier seien die Standard Dienste genannt: JDBC, Java Naming and Directory Interface (JNDI), Java Mail, Java Transaction API (JTA) und Java IDL.

Skalierbarkeit, Lastverteilung und Fehlertoleranz. Anwendungen können auf mehreren Servern parallel betrieben werden - dies setzt Cluster-fähige Applikationsserver voraus. Durch die Verteilung der Last auf mehrere Server können die Systeme in weiten Grenzen skaliert werden sowie besser auf Schwankungen bezüglich der Anforderungen von Lasten reagieren.

Die Ausführung von J2EE-Komponenten erfordert immer den Einsatz des bereits angesprochenen Applikationsservers. Dazu stehen eine ganze Reihe von Servern und Anbietern - teilweise kommerziell oder auch als Open Source - zur Verfügung. Damit sind dann ein weiter Bereich von Client-Server bis hin zu E-Commerce Anwendungen abzudecken. Jedoch erfüllen nicht alle Applikationsserver die Vorgaben der J2EE-Spezifkation in vollem Umfang. Deshalb gibt es von Sun Microsystems eine Liste der zertifizierten Server. Hier eine kurze Auflistung von zertifizierten J2EE-Applikationsservern:

  • Kommerzielle Server: BeaWebLogic, SAP NetWeaver Application Server, IBM Web-Sphere Application Server, Oracle Application Server.
  • Open Source Server: Glashfish, JBoss, Apache Geronimo.
Auch auf Seiten der Implementierung von J2EE-Applikationen stellt man im Zusammenhang mit der Portierung auf verschiedene Server in der Praxis häufig fest, dass dieses Vorhaben mit Problemen verbunden ist. Diese lassen sich meist darauf zurückführen, dass die Implementierung Hersteller-spezifische Schnittstellen nutzt.

http://www.java.sun.com/j2ee

http://java.sun.com/developer/technicalArticles/J2EE/patterns

http://java.sun.com/reference/blueprints

http://www.patterndepot.com/put/8/JavaPatterns.htm

Informationen zum Artikel
Deutsch: J2EE Komponentenmodell
Englisch: Java 2 enterprise edition - J2EE
Veröffentlicht: 16.07.2012
Wörter: 1167
Tags: #Java
Links: .NET, Äquivalenz, Anwendungsserver, Apache, API (application programming interface)