Java EE – was ist das?
Java EE ist eine auf Java SE aufbauende Plattform, die eine API und Laufzeitumgebung für die Entwicklung und Ausführung umfangreicher, mehrschichtiger, skalierbarer, zuverlässiger und sicherer Netzwerkanwendungen bereitstellt. Solche Anwendungen werden Unternehmensanwendungen genannt, weil sie Probleme lösen, mit denen große Unternehmen konfrontiert sind. Allerdings können nicht nur große Unternehmen und Regierungsbehörden von solchen Anwendungen und den Vorteilen von Java EE profitieren. Die Lösungen, die die Java EE-Plattform bietet, sind für einzelne Entwickler und kleine Organisationen nützlich und manchmal einfach notwendig.Java EE-Entwicklung
Java EE wird durch den 1998 gegründeten Java Community Process (JCP) entwickelt. Es ermöglicht interessierten Parteien, sich an der Gestaltung zukünftiger Versionen der Spezifikationen der Java-Sprachplattform zu beteiligen. Grundlage dieses Prozesses ist der JSR (Java Specification Request), formelle Dokumente, die die Spezifikationen und Technologien beschreiben, die zur Java-Plattform hinzugefügt werden sollen. Solche Anfragen werden von Community-Mitgliedern gestellt – normalen Entwicklern und Unternehmen. Zu letzteren zählen Oracle, Red Hat, IBM, Apache und viele andere. Diese. Die Jungs schlagen neue Funktionen und Extras zur Prüfung vor, die sie gerne in Java integrieren würden. Und dann führen sie eine Abstimmung durch, auf deren Grundlage entschieden wird, was in die nächste Version aufgenommen werden soll. Der Java EE-Versionsverlauf sieht folgendermaßen aus:- J2EE 1.2 (Dezember 1999)
- J2EE 1.3 (September 2001)
- J2EE 1.4 (November 2003)
- Java EE 5 (Mai 2006)
- Java EE 6 (Dezember 2009)
- Java EE 7 (Mai)
- Java EE 8 (August 2017)
- Jakarta EE 8 (September 2019)
Java EE-Anwendungsarchitektur
Eine kurze Einführung. Um das Verständnis zu erleichtern, sprechen wir über die Struktur von Java EE-Anwendungen und einige der Begriffe, die wir später verwenden werden. Java EE-Anwendungen haben eine Struktur mit zwei Haupteigenschaften:- Erstens mehrstufig. Java EE-Anwendungen sind mehrschichtig, und wir werden ausführlicher darauf eingehen.
- zweitens, Verschachtelung. Es gibt einen Java EE-Server (oder Anwendungsserver), in dem sich Komponentencontainer befinden. Diese Behälter enthalten (Bingo!) Komponenten.
Anwendungsebenen
Unter Multi-Tier-Anwendungen versteht man Anwendungen, die nach Funktionsprinzipien in isolierte Module (Ebenen, Schichten) unterteilt sind. Typischerweise (auch im Kontext der Java EE-Entwicklung) werden Unternehmensanwendungen in drei Ebenen unterteilt:- Klient;
- Durchschnittsniveau;
- Datenzugriffsebene.
-
Die Clientschicht ist eine Anwendung, die Daten vom Java EE-Server (mittlere Schicht) anfordert. Der Server wiederum verarbeitet die Anfrage des Clients und gibt eine Antwort darauf zurück. Die Clientanwendung kann ein Browser, eine eigenständige Anwendung (mobil oder Desktop) oder eine andere Serveranwendung ohne grafische Oberfläche sein.
-
Die mittlere Ebene gliedert sich wiederum in die Web-Ebene und die Geschäftslogik-Ebene.
-
Die Webschicht besteht aus einigen Komponenten, die die Interaktion zwischen Clients und der Geschäftslogikschicht ermöglichen.
Auf Webebene kommen folgende Java-EE-Technologien zum Einsatz:
- JavaServer Faces-Technologie (JSF);
- Java Server Pages (JSP);
- Ausdruckssprache (EL);
- Servlets;
- Kontexte und Abhängigkeitsinjektion für Java EE (CDI).
-
Die Geschäftslogikschicht besteht aus Komponenten, die die gesamte Geschäftslogik der Anwendung implementieren. Geschäftslogik ist Code, der Funktionen bereitstellt, die die Anforderungen eines bestimmten Geschäftsbereichs (Finanzindustrie, Bankwesen, E-Commerce) abdecken. Diese Ebene kann als Kern des gesamten Systems betrachtet werden.
Technologien, die auf dieser Ebene beteiligt sind:
- Enterprise JavaBeans (EJB);
- JAX-RS RESTful-Webdienste;
- Java Persistence API-Entitäten;
- Java-Nachrichtendienst.
-
-
Datenzugriffsebene. Diese Ebene wird manchmal als Ebene der Unternehmensinformationssysteme (EIS) bezeichnet. EIS besteht aus verschiedenen Datenbankservern, ERP-Systemen (Enterprise Resource Planning) und anderen Datenquellen. Die Geschäftslogikschicht greift für Daten auf diese Schicht zu.
Auf dieser Ebene finden Sie Technologien wie:
- Java Database Connectivity API (JDBC);
- Java-Persistenz-API;
- Java-EE-Connector-Architektur;
- Java Transaction API (JTA).
Anwendungsserver, Container, Komponenten
Werfen wir einen Blick auf die Definition von Java EE aus Wikipedia. Java EE ist eine Reihe von Spezifikationen und zugehöriger Dokumentation für die Java-Sprache, die die Architektur der Serverplattform für die Aufgaben mittlerer und großer Unternehmen beschreiben. Um besser zu verstehen, was ein „Satz von Spezifikationen“ in diesem Zusammenhang bedeutet, ziehen wir eine Analogie zu einer Java-Schnittstelle. Die Java-Schnittstelle selbst ist ohne Funktionalität. Es definiert lediglich einen Vertrag, gemäß dem einige Funktionen implementiert werden. Aber auch andere Klassen implementieren die Schnittstelle. Darüber hinaus kann eine Schnittstelle mehrere Implementierungen haben, die sich in einigen Details voneinander unterscheiden können. Mit der Spezifikation ist alles genau gleich. Bei Naked Java EE handelt es sich lediglich um eine Reihe von Spezifikationen. Diese Spezifikationen werden von verschiedenen Java EE-Servern implementiert. Ein Java-EE-Server ist eine Serveranwendung, die die Java-EE-Plattform-APIs implementiert und Standard-Java-EE-Dienste bereitstellt. Java EE-Server werden manchmal als Anwendungsserver bezeichnet. Serverdaten können Anwendungskomponenten enthalten, die jeweils einer eigenen Ebene in einer mehrstufigen Hierarchie entsprechen. Der Java EE-Server stellt diesen Komponenten verschiedene Dienste in Form eines Containers zur Verfügung. Container sind die Schnittstelle zwischen den von ihnen gehosteten Komponenten und der plattformunabhängigen Low-Level-Funktionalität, die die Komponente unterstützt. Container stellen den von ihnen gehosteten Komponenten spezifische Dienste zur Verfügung. Zum Beispiel Entwicklungslebenszyklusmanagement, Abhängigkeitsinjektion, Parallelität usw. Container verbergen technische Komplexität und erhöhen die Portabilität. In Java EE gibt es vier verschiedene Arten von Containern :-
Applet-Container werden von den meisten Browsern implementiert. Bei der Entwicklung von Applets können Sie sich auf die visuelle Seite der Anwendung konzentrieren, während der Container eine sichere Umgebung bietet.
-
Der Application Client Container (ACC) enthält eine Reihe von Java-Klassen, Bibliotheken und anderen Dateien, die zum Implementieren von Funktionen wie Injektion, Sicherheitsverwaltung und Benennungsdiensten in Java SE-Anwendungen erforderlich sind.
-
Der Webcontainer stellt die Kerndienste zum Verwalten und Ausführen von Webkomponenten (Servlets, EJB Lite-Komponenten, JSP-Seiten, Filter, Listener, JSF-Seiten und Webdienste) bereit. Es ist für die Instanziierung, Initialisierung und den Aufruf von Servlets sowie für die Unterstützung der HTTP- und HTTPS-Protokolle verantwortlich. Dieser Container wird verwendet, um Webseiten an Client-Browser bereitzustellen.
-
Der EJB-Container (Enterprise Java Bean) ist für die Verwaltung und Ausführung der EJB-Modellkomponenten verantwortlich, die die Geschäftslogikschicht der Anwendung enthalten. Es erstellt neue EJB-Bean-Entitäten, verwaltet ihren Lebenszyklus und stellt Dienste wie Transaktionen, Sicherheit, Parallelität, Verteilung, Benennung oder asynchrone Aufruffunktionen bereit.
-
Applets sind grafische Benutzeroberflächenanwendungen (GUI), die in einem Browser ausgeführt werden. Sie nutzen die umfangreiche Swing-API, um leistungsstarke Benutzeroberflächen zu erstellen.
-
Anwendungen sind Programme, die auf der Clientseite ausgeführt werden. Typischerweise handelt es sich dabei um grafische Benutzeroberflächen (GUI), die für die Stapelverarbeitung verwendet werden.
-
Webanwendungen (bestehend aus Servlets und ihren Filtern, Web-Event-Listenern, JSP- und JSF-Seiten) – werden in einem Webcontainer ausgeführt und reagieren auf HTTP-Anfragen von Webclients. Servlets unterstützen auch SOAP- und RESTful-Webservice-Endpunkte.
-
Unternehmensanwendungen (erstellt mit Enterprise Java Beans, Java Message Service, Java Transaction API, Asynchronous Calls, Time Services) werden in einem EJB-Container ausgeführt. Containerverwaltete EJBs verarbeiten transaktionale Geschäftslogik. Der Zugriff kann entweder lokal oder remote über RMI (oder HTTP für SOAP- und RESTful-Webdienste) erfolgen.
Technologien
Also haben wir die Architektur geklärt. Die Gesamtstruktur sollte klar sein. Bei der Beschreibung der Architekturkomponenten haben wir einige Java EE-Technologien wie EJB, JSP usw. angesprochen. Schauen wir sie uns genauer an. Die folgende Tabelle zeigt die Technologien, die hauptsächlich auf Client-Ebene eingesetzt werden:Technologie | Zweck |
---|---|
Servlets | Java-Klassen, die Client-Anfragen dynamisch verarbeiten und Antworten (normalerweise HTML-Seiten) generieren. |
Java Server Faces (JSF) | Ein Framework zum Erstellen von Webanwendungen mit einer Benutzeroberfläche. Ermöglicht Ihnen, Benutzeroberflächenkomponenten (z. B. Felder und Schaltflächen) auf einer Seite einzubinden, diese Komponenten zu transformieren und zu validieren und diese Daten im serverseitigen Speicher zu speichern. |
Java Server Facelets-Technologie | Es handelt sich um einen Untertyp der JSF-Anwendung, der XHTML-Seiten anstelle von JSP-Seiten verwendet |
Java-Serverseiten (JSP) | Textdokumente, die in Servlets zusammengestellt werden. Ermöglicht das Hinzufügen dynamischer Inhalte zu statischen Seiten (z. B. HTML-Seiten) |
Java Server Pages Standard Tag Library (JSTL) | Eine Tag-Bibliothek, die Kernfunktionen im Kontext von JSP-Seiten kapselt. |
Ausdruckssprache | Eine Reihe von Standard-Tags, die in JSP- und Facelets-Seiten verwendet werden, um auf Java EE-Komponenten zuzugreifen. |
Kontexte und Abhängigkeitsinjektion für Java EE (CDI) | Stellt eine Reihe von Diensten dar, die von Java EE-Containern bereitgestellt werden, um den Lebenszyklus von Komponenten zu verwalten und Komponenten auf sichere Weise in Clientobjekte einzufügen. |
Java Beans-Komponenten | Objekte, die als temporärer Datenspeicher für Anwendungsseiten dienen. |
Technologie | Zweck |
---|---|
Komponenten von Enterprise Java Beans (Enterprise Bean). | EJBs sind verwaltete Beans, die die Kernfunktionalität einer Anwendung enthalten. |
JAX-RS RESTful-Webdienste | Es handelt sich um eine API zum Entwickeln von Webdiensten, die dem REST-Architekturstil entsprechen. |
JAX-WS-Webdienst-Endpunkte | API zum Erstellen und Nutzen von SOAP-Webdiensten. |
Java Persistence API (JPA)-Entitäten | Eine API für den Zugriff auf Daten in Datenspeichern und die Konvertierung dieser Daten in Java-Programmiersprachenobjekte und umgekehrt. |
Von Java EE verwaltete Beans | Verwaltete Beans, die die Geschäftslogik der Anwendung bereitstellen, aber nicht die Transaktions- oder Sicherheitsfunktionen des EJB erfordern. |
Java-Nachrichtendienst | Die Java Message Service (JMS) API ist ein Messaging-Standard, der es Java EE-Anwendungskomponenten ermöglicht, Nachrichten zu erstellen, zu senden, zu empfangen und zu lesen. Dadurch wird eine verteilte, zuverlässige und asynchrone Kommunikation zwischen den Komponenten gewährleistet. |
Technologie | Zweck |
---|---|
Die Java Database Connectivity API (JDBC) | Low-Level-API für den Zugriff auf und den Abruf von Daten aus Datenspeichern. Eine typische Verwendung von JDBC ist das Schreiben von SQL-Abfragen für eine bestimmte Datenbank. |
Die Java Persistence API | Eine API für den Zugriff auf Daten in Datenspeichern und die Konvertierung dieser Daten in Java-Programmiersprachenobjekte und umgekehrt. API auf wesentlich höherem Niveau im Vergleich zu JDBC. Verbirgt die gesamte Komplexität von JDBC vor dem Entwickler unter der Haube. |
Die Java EE Connector-Architektur | API zur Anbindung anderer Unternehmensressourcen, wie zum Beispiel:
|
Die Java Transaction API (JTA) | Eine API zum Definieren und Verwalten von Transaktionen, einschließlich verteilter Transaktionen und Transaktionen über mehrere Datenspeicher hinweg. |
GO TO FULL VERSION