JavaRush /Java-Blog /Random-DE /Kaffeepause Nr. 119. Einführung in Java Enterprise Editio...

Kaffeepause Nr. 119. Einführung in Java Enterprise Edition (Java EE)

Veröffentlicht in der Gruppe Random-DE
Quelle: Dev.to Java Enterprise Edition (Java EE) ist eine Reihe von Spezifikationen und Dokumentationen für die Java-Sprache, die eine Serverplattformarchitektur zur Lösung der Probleme mittlerer und großer Unternehmen beschreiben. Kaffeepause Nr. 118.  Einführung in Java Enterprise Edition (Java EE) – 1Beim Erlernen von Java EE werden Sie auf folgende Begriffe stoßen:
  • Ein Anwendungsserver ist eine konkrete Implementierung der abstrakten Java EE-Spezifikationen. Beispiele: Payara Server (Glassfish), IBM OpenLiberty und JBoss Wildfly.

  • Eine Java Specification Request (JSR) ist eine formelle Anfrage an die Java-Community, Technologien hinzuzufügen und zu verbessern. Dabei handelt es sich um ein Gremium, das APIs auf der Java-Technologieplattform standardisiert und zum Gruppieren von APIs in Blöcken wie JAX-RS (Java API for RESTful Web Services) verwendet wird. Für jeden JSR gibt es immer eine Standardreferenzimplementierung.

  • Eine Referenzimplementierung ist eine konkrete Implementierung/Implementierung eines abstrakten JSR. Die Referenzimplementierung für JAX-RS heißt beispielsweise Jersey. Java EE selbst ist ein JSR. Somit ist der Anwendungsserver eine Sammlung verschiedener Java EE JSR-Referenzimplementierungen. Java EE ist JSR 366 und eine seiner Referenzimplementierungen ist Glassfish 5.

  • Jakarta EE ist ab 2018 der neue Name für Java EE. Derzeit hat Oracle die Java-Plattform unter der Leitung der Eclipse Foundation übertragen .

JavaEE-Grundlagen

Es gibt drei wichtige APIs in Java EE:
  1. Java Persistence API (JPA). Es ist für das Speichern und Abrufen von Informationen aus relationalen Datenbanken verantwortlich, die für die Arbeit mit NoSQL-Datenbanken erweitert werden können. Dies ist die Datenschicht in der Anwendung.

  2. Kontext- und Abhängigkeitsinjektion (CDI API). Es handelt sich um eine standardisierte Methode zur Reduzierung der Kopplung in Anwendungen. Es verwaltet verschiedene Komponenteninteraktionen, um eine freie Entkopplung sicherzustellen.

  3. Java-API für RESTful-Webdienste (JAX-RS). Es stellt Ressourcen über HTTP als Webdienste bereit.

Kontext- und Abhängigkeitsinjektions-API

Die Abhängigkeitsinjektion ist eine spezielle Form der Inversionskontrolle (eine Softwarestrategie, bei der einzelne Komponenten ihre Abhängigkeiten erhalten). Dadurch wird die Abhängigkeit in der Anwendung externalisiert, um Komponenten mit geringer Kopplung zu erstellen.

Merkmale von CDI

  • Mit der Abhängigkeitsinjektion (Typesafe) können Sie Abhängigkeiten von Typen deklarieren, sodass der Compiler Fehler zur Laufzeit abfängt.

  • Lebenszykluskontexte sind die Fähigkeit, Lebenszyklus- und zustandsbehaftete Komponenteninteraktionen mit klar definierten, aber erweiterbaren Lebenszykluskomponenten zu verknüpfen.

  • Mit Interceptoren können Sie Anfragen zum Zugriff auf eine bestimmte Methode abfangen.

  • Ereignisse sind eine Möglichkeit, stark entkoppelte Anwendungen zu entwickeln. Ereignisse können ausgelöst werden, während die Observers-Methode die ausgelösten Ereignisse abhört.

  • Bei Service Provider Interface (SPI) handelt es sich um eine Reihe von Techniken, APIs und Schnittstellen, die als Erweiterungen verwendet werden können, beispielsweise in der Apache-Bibliothek.

Einige CDI-API-Konzepte:

  • CDI Bean Discovery ist ein Mechanismus, mit dem das Abhängigkeitsinjektions-Framework Beans analysiert und erkennt, um zu steuern, wie Beans standardmäßig erkannt werden, d. h. Beans mit Annotationen wie @Annotated. Es gibt drei Arten von Bean-Erkennungsmodi: ALL (einschließlich nicht annotierter Beans), ANNOTATED und NONE.

  • Ein CDI-Container ist eine Factory-Methode, in der Java-Klassen mit ihren Funktionen und Fähigkeiten ein- und ausgehen. Dies ist die Anwendung, die die Beans verwaltet.

  • Bean- und Kontextinstanzen. Eine Bean ist eine Vorlage, die ein Entwickler erstellt. Eine kontextbezogene Instanz ist eine Instanz einer Bean, die von einem CDI-Container erstellt und verwaltet wird.

Java-Persistenz-API

JPA wird verwendet, um Objekte relationalen Datenbanktabellen zuzuordnen. Die Java Persistence API folgt den Prinzipien des ORM-Manifests. ORM-Manifest (Object Relational Mapping Manifest):
  • Objekte, keine Tabellen: Entwickler schreiben Objekte, keine Tabellen.

  • Bequemlichkeit, nicht Unwissenheit: Ein ORM sollte bequem sein. Entwickler sollten über ein Mindestmaß an Kenntnissen über relationale Datenbanken verfügen. ORM ist keine Möglichkeit, Unwissenheit zu verbergen, sondern eine Annehmlichkeit.

  • Unauffällig und transparent: Ein ORM sollte dafür sorgen, dass Entwickler kontrollieren können, was sich in der Datenbank befindet, und die volle Kontrolle darüber haben, was gespeichert wird. Legacy-Daten, neue Objekte: Mit ORM können Sie neue Objekte aus Legacy-Daten erstellen, d. h. die Legacy-Datenbank in Java-Objekte rekonstruieren.

  • Genug, aber nicht zu viel: ORM stellt alle Werkzeuge bereit, um häufige Probleme aufgrund von Impedanzfehlanpassungen zu lösen (ein Begriff, der sich auf Probleme bezieht, die aufgrund von Unterschieden zwischen dem Datenbankmodell und der Programmiersprache entstehen). Ein ORM sollte nicht übermäßig schwer sein.

  • Lokalität und Mobilität: Daten sind lokal, aber es muss möglich sein, dass der persistente Zustand der Anwendung in andere Teile der Anwendung verschoben wird.

  • Standard-API, steckbare Implementierung: Verlassen Sie sich auf die Standard-API, können die Implementierungen jedoch nach Bedarf ändern.

Einige wichtige JPA-Konzepte: JPA-Entität
  • Die modularste Komponente von JPA-Objekten ist das Plain Old Java Object (POJO). Jedes Objekt muss eine eindeutige Kennung haben.

  • JPA-Entitäten verwenden normalerweise Annotationen wie @MappedSuperClass, was die Verwendung von Superklassen ermöglicht, die gemeinsame Entitätsfelder enthalten. Die Annotation @AttributeOverride wird zum Überschreiben von Superklassenentitäten verwendet. @Column wird zum Konfigurieren von Datenbankzuordnungen verwendet. Die Annotation @Transient kann für Felder in einer Entitätsklasse verwendet werden, die keiner Datenbank zugeordnet werden sollen.

  • Der Zugriffstyp ist der Prozess, durch den der Persistenzanbieter auf Zustände in einer Entität zugreift. Der Feldzugriff erfolgt, wenn der Anbieter direkt über Reflektion auf die Felder einer Klasse zugreift. Der Zugriff auf Eigenschaften erfolgt, wenn Java Bean-Eigenschaftsmethoden für den Zugriff auf Zustände verwendet werden, d. h. Getter und Setter. Um den Eigenschaftszugriff nutzen zu können, muss der Getter mit @Id annotiert werden. Beim gemischten Zugriffstyp wird mithilfe der @Access-Annotation auf Felder und Eigenschaften in derselben Entitätsklasse zugegriffen.

Java-API für RESTful-Webdienste

Einschränkungen der REST-Architektur:
  1. Client und Server sind voneinander unabhängig.

  2. Zustandslos: Jede einzelne Anfrage, die beim Server eintrifft, ist autonom und einzigartig. Der Server trifft keine Annahmen aus der vorherigen Anfrage.

  3. Cachefähigkeit: Das System muss Caching auf verschiedenen Ebenen unterstützen, um Leistung und Skalierbarkeit zu verbessern.

  4. Eine einheitliche Schnittstelle bedeutet, dass der Client über eine gemeinsame einheitliche Schnittstelle verfügen muss, um auf Ressourcen auf dem Server zuzugreifen und mit Ressourcen auf dem Server zu interagieren. Mehrschichtiges System: Der Server kann in verschiedenen Schichten implementiert werden, sodass sich der Client nicht um ein mehrschichtiges System kümmern muss, beispielsweise um einen Server, der Lastverteilung unterstützt.

Einige allgemeine Konzepte im Zusammenhang mit JAX-RS:
  • HTTP-GET-Methode: Anforderung einer oder mehrerer Ressourcen. Die GET-Anforderungsmethode ist idempotent, was bedeutet, dass sich durch wiederholtes Senden derselben Anforderung an die Methode der Status der Ressource oder der Daten auf dem Server nicht ändern sollte.

  • HTTP-POST-Methode: Die POST-Anfrage wird verwendet, um neue Ressourcen auf dem Server zu erstellen. Dadurch ändert sich der Datensatz auf dem Server. POST hat normalerweise einen Hauptteil, in dem die Nutzlast oder was auch immer wir auf dem Server erstellen möchten, veröffentlicht oder angehängt wird.

  • HTTP-PUT-Methode: Wird semantisch verwendet, um Ressourcen auf dem Server zu aktualisieren.

  • HTTP-DELETE-Methode: Wird zum Löschen von Ressourcen auf dem Server verwendet.

  • Inhaltstypen. Es gibt verschiedene Arten von Inhalten, die von Abfragemethoden genutzt und erstellt werden können: XML, CSV, EXCEL, TEXT und JSON.

  • JAX-RS basiert auf dem Konzept, einen Nachrichtentext zu schreiben. Hierbei handelt es sich um API-Konstrukte, mit denen Java-Typen in den vom Client erwarteten Typ konvertiert werden. Mit der Annotation @Produces kann der Typ angegeben werden, in den die Antwort eines Java-Objekts konvertiert wird.

  • Die Annotation @Consumes teilt der JAX-RS-Laufzeit den Inhaltstyp mit, den eine bestimmte Ressourcenmethode verbraucht. Die JAX-RS-Laufzeit konvertiert dann den als Nutzlast übergebenen JSON-Inhalt in ein Java-Objekt, dessen Typ mit dem Methodenparameter übereinstimmt.

  • JAX-RS Exception Mapper: Ein API-Konstrukt, das zum Zuordnen von Ausnahmen zu HTTP-Antworten verwendet wird. Die @Provider-Annotation wird verwendet, um einen Ausnahmelöser programmgesteuert bei der JAX-RS-Laufzeit zu registrieren.

Dies ist eine sehr einfache Einführung in Java EE. Um Webanwendungen mit Java EE zu erstellen, müssen Sie tiefer in die einzelnen wichtigen APIs eintauchen.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION