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.
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
UIO3 Es ist einfacher als Du denkst.
Stelle noch heute Deine Anfrage.

