uio--WebPageMain-Module
JAVA-D1
Maven Überblick Architektur & Begriffe >Lebenszyklen & Phasen >Core-Plugins & Projektstruktur >POM im Detail >Dependencies Archetypes Plugins maven‑shade‑plugin für Fat JAR Multi-Module Projekte Modulabhängigkeiten Build-Reihenfolge CI/CD (Praxis & Ausblick) mvnmulti-e01 maven-multi-project common/client/server mvnmulti-e02 maven-multi-springboot-project mvnmulti-e03 Spring Boot Service Java Persistance API

Overview

JAVA-D1 | Module Module Projects

In diesem Bereich geben wir einen kurzen Überblick über ausgewählte Tools im Zusammenhang mit dem Betrieb von in Java entwickelten Client-Server-Anwendungen.

Auch wenn man vom Prinzip her die zugehörige Server- und Client-Seite einer Anwendung auch komplett in Java schreiben kann, so steht der eine oder die andere beim dem Versuch, den Services auch tatsächlich mit Verbindungen aus dem Internet betreiben zu können, vor ein paar Problemstellungen.

Abbildung: Java Tiers D

(ContentInstance ContentInstance-Java-Tiers-D)

Overview

JAVA-D1 | Maven

In diesem Bereich geben wir einen kurzen Überblick über ausgewählte Tools im Zusammenhang mit dem Betrieb von in Java entwickelten Client-Server-Anwendungen.

Auch wenn man vom Prinzip her die zugehörige Server- und Client-Seite einer Anwendung auch komplett in Java schreiben kann, so steht der eine oder die andere beim dem Versuch, den Services auch tatsächlich mit Verbindungen aus dem Internet betreiben zu können, vor ein paar Problemstellungen.

mvnmulti.e01

JAVA-D1 | Maven-Multi-Project E01

CalcServer: In diesem Themenblock konfigurieren ein Maven Multi Module Project mit einem Server, einem Console Client, einem Web-Client, mit zugehörigen Abhängigkeiten, Unit-Tests, Integrationstest, Code-Doku und abschließender Erzeugung von JARs für ein Deployment.

Ein Grundverständnis der Funktionsweise, der Konfiguration, Konventionen und Optionen für eigene Erweiterungen bilden die Voraussetzung für die Automatisierung von Builds, Testing und Deployment.

mvnmulti.e02

JAVA-D1 | Maven-Multi-Project E02

Quiz-Server: In diesem Themenblock konfigurieren ein Maven-Multi-Module-projekt in Verbindung mit Spring Boot für ein Quiz mit einer JSON-basierten API, bei welcher Nutzer ein Quiz mit mehreren Teilen ausführen, Fragen beantworten, den Zustand der Beantwortung zwischenspeichern und herunterladen, den Prozess später fortsetzen und sich abschließend einen Zertifikat-Token herunterladen kann.

Dieses Beispiel ist etwas komplexer und dient dazu, eine Kurzeinführung in REST-basierte Adressierung von Webservices mit einem Verpacken von Informationen in JSON zu demonstrieren, wobei auch serverseitig verschlüsselte Token zum Einsatz kommen. Der Server braucht also die Nutzerdaten nicht selbst speichern sondern bietet dem Client an, dass dieser seinen Stand als Savefile selbst speichern kann.

mvnmulti.e03 (JPA)

JAVA-D1 | Maven-Multi-Project E03

In diesem Beispiel zur Java Persistance API zeigen wir im Kontext von Java, Apache Maven, Spring Boot mit exemplarischen Unit- und Integrationstests, wie man die semantische Datenstruktur von WebPage-, WebPageElement, ImageObject, Tag und TeaserBlock-Elementen in Java abbildet und in sowohl SQL-Tables als auch JSON und XML Mappen kann.

Die Java Persistance API (JPA) ist ein Standard und führt damit zu den selben Annotations im Code. Der Unterschied zwischen Spring Boot und Jakarta EE besteht primär im Bootstrapping und damit der Konfiguration in Maven. Das Primärziel des Beispiels besteht darin, aufzuzeigen, wie eine Server-Anwendung von einer vormals monolithischen Struktur in Module zerlegt werden kann und auf HTTP Requests über REST im JSON Format reagieren kann.

Details

JAVA-D1 | Details

In den vorangegangenen komplexeren Beispielen wurden mitunter Apache Maven, JUnit5, Mockito, Spring Boot, JPA, GSON, Jackson und mehr eingesetzt.

In den nachfolgenden Themenblöcken möchten wir auf einige Aspekte dieser Packages, Module, Tools, Libraries näher eingehen.

JUnit

JAVA-D1 | JUnit

In diesem Bereich geben wir einen kurzen Überblick über ausgewählte Tools im Zusammenhang mit dem Betrieb von in Java entwickelten Client-Server-Anwendungen.

Auch wenn man vom Prinzip her die zugehörige Server- und Client-Seite einer Anwendung auch komplett in Java schreiben kann, so steht der eine oder die andere beim dem Versuch, den Services auch tatsächlich mit Verbindungen aus dem Internet betreiben zu können, vor ein paar Problemstellungen.

Manuelles Testen von Anwendungen ist zeitaufwendig und lässt sich durch die Programmierung von Tests mitunter mit Hilfe von JUnit automatisieren. In diesem Themenbereich geben wir einen Einblick, wie man JUnit installiert und einsetzen kann.

JUnit ist kein zentraler Bestandteil des JDK und muss deshalb separat beispielsweise mit Hilfe von Maven nachinstalliert werden.


Die Inhalte dieses Themenblocks sind noch nicht digitalisiert worden.

Mocking

JAVA-D1 | Mocking

In diesem Themenblock erläutern wir, was Mocking ist, woher man zugehörige Mocks bekommt. Wir gehen hierbei auf den Quasistandard Mockito und das Zusammenspiel aus Java, Apache, Maven, JUnit, Spring Boot und Mockito ein.

Für eine Isolation von Klassen in Unittests besteht das Problem, dass externe Faktoren den Test beeinflussen könnten. Um diesen Einfluss auf einen isolitierten Test verhindern zu können, werden Attrappen-Objekte benötigt: Ein Mock verhält sich anschließend so, wie man es im Test vorgibt.

Overview

JAVA-CX | Apache & PHP

Wer einmal schnell prüfen möchte, wie eine Java Anwendung Daten mit einer in PHP Anwendung programmierten Webseite austauschen kann, kann sich für diese Zwecke vergleichsweise schnell und einfach den zugehörigen Apache HttpServer und PHP installieren und/oder nutzt einfach ein klassisches PHP-basiertes Webhosting.

Bei den meisten Webhostern in Deutschland ist PHP heutzutage in jedem Webhosting verfügbar. Sie müssen im Grunde genommen nur serverseitig einen index.php mit dem Skript <?php echo 'Hello World!'; ?> über eine Domain und/oder einen zugehörigen URI für ein Unterverzeichnis auf dem Server verfügbar machen. Wird Ihnen nach Zugriff auf http://example.com/verzeichnis/index.php anschließend im Browser «Hallo Welt!» angezeigt, läuft PHP.

Apache und PHP lassen sich aber auch sehr einfach mit einem Installer-Paket von Beispielsweise ApacheFriends.org installieren, wenn Sie nicht Apache und PHP von Hand installieren möchten.

Overview

JAVA-CX | Nginx

Für alle diejenigen, welchen sich einen eigenen virtuellen oder dedizierten Server angemietet haben und nun eine solide Lösung suchen, wie man HTTP/S Requests auf Domains mit/ohne Ports dann serverseitig empfangen und an die jeweiligen lokalen Webservices über einen Proxy routen kann, wird Nginx lieben.

Nginx, https://nginx.org, ist ein Reverse-Proxy-Server. Insbesondere dann, wenn Sie mehrere Webservices auf einem Server betreiben wollen, die intern zwar auf Port 8080, 8081, 8082 und dergleichen laufen, letztendlich aber für den Zugriff über https://example.com/java, https://example.com/php, https://example.com/nodejs die Anfragen über Port 443 (SSL/HTTPS) bekommen werden, so benötigen Sie zwingend ein Verfahren, wie Sie die einen Anfragen auf den Apache für PHP, die nächsten auf einen Webservices mit NodeJS und alles andere dann zu Ihren Java-basierten Services routen können.

Mehr erfahren: https://nginx.org

Grizzly HttpServer

JAVA-CX | Grizzly HttpServer

Auch wenn man sich in purem Java vom Prinzip her einen kompletten HttpServer selbst programmieren könnte, welcher auf HttpRequests mit einer HttpResponse antworten kann und auch jede Java Installation bereits eine HttpServer Klasse mitliefert, so besteht zuweilesn der Bedarf an einem Java EE/Jakarta EE Container für Services, Servlets und die zugehörigen Standards.

Der Grizzly HttpServer ist ein Beispiel dafür, wie man sich einen Jakarta EE konformen Webserver in die eigene Anwendung kompilieren kann. Das zugehörige JAR manuell oder automatisch via Maven beschaffen, Instanz des Grizzly Servers in der eigenen Anwendung erzeugen, starten und die Funktionalität für die Services über eigene Klassen mit dem jeweiligen Handler schreiben.

Mehr erfahren: https://javaee.github.io/grizzly/httpserverframework.html

https://javaee.github.io/grizzly/

Mehr erfahren: https://mvnrepository.com/artifact/org.glassfish.grizzly/grizzly-http-server

Mehr erfahren: https://github.com/eclipse-ee4j/glassfish-grizzly

Links

FootNotes


    Java/Maven/Maven-Multi-Module-Project, Mockito

    UI ORGANIZED.

    UIO3 Es ist einfacher als Du denkst.

    Stelle noch heute Deine Anfrage.

    uio--WebPageFooter-Module