Jakarta EE
Java 2 Platform, Enterprise Edition, abgekürzt J2EE, ist die Spezifikation eines Standards für eine ganze Palette an Softwarekomponenten, die primär in der Programmiersprache Java erstellt werden. Die Spezifikation dient dazu, einen allgemein akzeptierten Rahmen zur Verfügung zu haben, um mit modularen Komponenten verteilte, mehrschichtige Anwendungen zu entwickeln. 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.
Eine andere Definition könnte wie folgt lauten: "J2EE" ist eine Sammlung an Standardschnittstellen zu sogenannten "Enterprise Services". Solche "unternehmensweite Dienste" sind z. B. die unter "J2EE Infrastruktur" aufgezählten. Theoretisch kann aber darüber hinaus jedes informationstechnisch ansprechbare Gerät (Drucker, IO-Karten, Produktionsmaschinen, Gebäudetechnik, Fahrzeuge usw.) einen solchen Dienst darstellen. Dies bedeutet, J2EE standardisiert die komplette IT eines Unternehmenes mittels einer einheitlichen, plattformunabhängigen Schnittstellensammlung. Dies ermöglicht das Schreiben komponentenbasierter, plattformunabhängiger Standardsoftware, die auf diese bereits vorhandenen Dienste zugreift. Eine Implementierung der Schnittstellensammlung J2EE kann insofern auf zweierlei Art und Weise erfolgen: a) Komplette in Java implementierte Erfüllung aller Schnittstellen, b) Wrappen ("Umhüllen") bestehender Dienste durch dünne Java Layer. Während die Spezifikation ursprünglich auf Methode b) abzielte, bieten die meisten Hersteller heute komplette sogenannte "J2EE Server" in Form der Methode a) an. (Karg 2004)
J2EE Infrastruktur
J2EE Komponenten erfordern als Laufzeitumgebung eine spezielle Infrastruktur, einen sogenannten J2EE Application Server. Dieser Server stellt technische Funktionalitäten wie
- Security
- Transaktionsmanagement
- Namens- und Verzeichnisdienste
- Kommunikation zwischen J2EE-Komponenten
- Management der Komponenten über den gesamten Lebenszyklus (inklusive Instanzierung)
- 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.
Wesentliche Bestandteile eines J2EE Servers sind
- ein EJB-Container als Laufzeitumgebung für Enterprise Java Beans
- ein Web-Container als Laufzeitumgebung für Servlets und Java Server Pages (JSP)
J2EE-Server unterstützen die nachfolgend genannten J2EE Programmierschnittstellen ("APIs"). Sie sind meist selbst in der Programmiersprache Java entwickelt.
Es sind zahlreiche Implementierungen für J2EE-Server verfügbar, teils kommerziell, 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 - viele Server bieten nur Teilaspekte des Standards.
Als weitere Infrastrukturkompenente kommt für die persistente Speicherung von Daten ein Datenbank Managementsystem (DBMS) zum Einsatz.
Der client-seitige Zugriff auf eine J2EE-Anwendung schliesslich erfolgt meist über einen Browser, daneben sind aber auch Applikations-Clients (Java-Applikationen, CORBA-Komponenten) möglich.
Wichtige APIs
Die J2EE APIs beinhalten verschiedene Technologien, die die Funktionalität des Basis-J2SE-APIs erweitern. Alle APIs der aktuellen Version sind im folgenden aufgelistet.
Java Naming and Directory Interface (JNDI)
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..
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:
- Session-Beans, sowohl statusbehaftet als auch ohne internen Status, welche die Geschäftslogik implementieren und meistens vom Client zugreifbar sind
- Message-Driven-Beans für die Verarbeitung von JMS Nachrichten
- Entity-Beans für die Abbildung von persistenten Datenobjekten
Java Servlet API (Servlet)
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.
Java Server Pages (JSP)
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.
Java Message Service (JMS)
ist eine API für die asynchrone Nachrichtenverarbeitung.
Java Database Connectivity (JDBC)
lässt die Anwendung auf eine relationale Datenbank mittels SQL zugreifen.
Java Transaction API (JTA)
erlaubt der Anwendung die Steuerung der Transaktionsverwaltung. JTA ist die Java-Schnittstelle zum CORBA Object Transaction Service (OTS).
Java Authentication and Authorization Service (JAAS)
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.
JavaMail
erlaubt den Zugriff auf Mail Services, wie z.B. SMTP oder POP3.
Java API for XML Processing (JAXP)
hilft dem Entwickler bei der Bearbeitung von XML Dokumenten.
Java Connector Architecture (JCA)
dient dazu andere Systeme transparent zu integrieren.
Java Beans Activation Framework
bietet die Möglichkeit verschiedene Daten anhand des MIME-Headers zu erkennen.
Wichtige Implementierungen
- JBoss
- Open Source J2EE Container
- JOnAS
- BEA WebLogic
- IBM WebSphere
- Jakarta Tomcat
- Jetty
- Sun Application Server 1.4
- Oracle Application Server 10g