Buchtipp

Practical Domain-Driven Design in Enterprise Java

Tam Hanna

Domain-driven Design hilft bei der Suche von Domains. Dieser lustige und falsche Kalauer soll als kleiner Einstieg in eine Rezension zu einem Lehrbuch dienen, das den Designklassiker vorstellt und dabei auch auf neue Einsatzsituationen wie den Entwurf von Microservices eingeht.

AUTOR(EN)

Vijay Nair

TITEL

Practical Domain-Driven Design in Enterprise Java

UNTERTITEL

Using Jakarta EE, Eclipse MicroProfile, Spring Boot, and the Axon Framework

SEITEN

396

PREIS

29,11 Euro

VERLAG

Apress

JAHR

2019

ISBN

978-1-4842-4542-2

Nair unterteilt sein Lehrbuch dabei in zwei Abschnitte. Der erste erklärt die Grundlagen des Domain-driven Designs, während der zweite die Realisierung in Jakarta und in Jakarta mit Hilfs-Frameworks demonstriert.

Das erste Kapitel ist der allgemeinen Besprechung der Terminologie gewidmet. Kapitel zwei stellt eine als Cargo Tracker bezeichnete Applikation auf theoretischer Ebene vor: ein Programm, bei dem gilt: „Nomen est Omen“, und das bei der Veranschaulichung von Domain-driven Prozessen gern zum Einsatz kommt. Am Ende des zweiten Kapitels liegt die Cargo-Verwaltung in Form einer Gruppe von DDD-Artefakten vor, die man nun auf mehr oder weniger beliebige Art und Weise programmieren darf.

Jakarta – manche sagen dazu nach wie vor Java EE – kommt im dritten Kapitel als Erstes zum Einsatz. Für die eigentliche Realisierung entscheidet sich der Autor hier für das Konzept des modularen Monolithen; Ausführungen zu den theoretischen Hintergründen von J2EE kommen dabei allerdings nicht zu kurz.

Die Eclipse Foundation reagierte auf das Aufkommen des Microservices-Designkonzepts mit dem Eclipse MicroProfile: Es dient im vierten Kapitel als Ausführungsumgebung für einen weiteren Cargo Tracker. Auch hier findet sich im ersten Schritt eine Vorstellung der verwendeten Technologien, die im nächsten Schritt gegen die DDD-Artefakte gemappt werden.

Spring war einst als Alternative zu Java EE vorgesehen – es handelt sich dabei um ein Portfolio von Projekten, die gemeinsam die Realisierung von Geschäftsanwendungen ermöglichen. Aus der Logik folgt, dass Nair das in den vorigen Kapiteln realisierte didaktische Pattern auch hier umsetzt. Es entsteht eine weitere Version des Cargo Trackers, der nun aber eine neuartige Ausführungsumgebung nutzt.

Zu guter Letzt stellt der Autor das Axon Framework vor, ein auf den Prinzipien des Event Sourcings und der Aufteilung von Verantwortlichkeiten (englische Abkürzung: CQRS) basierendes Framework. Die letzten rund 100 Seiten des Buchs demonstrieren neben der Programmierung auch die theoretischen Grundlagen – wer sich mit diesem Designparadigma bisher nicht auseinandergesetzt hat, findet eine durchaus ausreichende Einführung. Dieses Wissen lässt sich dann auch abseits des Domain-driven Designs anwenden.

Schon ob des kompakten Formats – die Besprechung all dieser Frameworks erfolgt auf insgesamt nur 388 Seiten – ist offensichtlich, dass das Werk keine Totalbesprechung der Technologien leisten kann. Das ist allerdings auch nicht Ziel des Autors – es handelt sich vielmehr um ein (reich bebildertes) Werk, das zum Mitmachen animiert. Wer die Beispiele befolgt, erhält eine grundlegende Einführung in die Thematik, anhand derer man dann selbsttätig weiter experimentieren kann.

Wer sich bisher nicht mit DDD auseinandergesetzt hat, findet hier eine – vergleichsweise kurze, aber ausreichende – Einführung in die Thematik. Wirklich interessant ist das Lehrbuch derweil für all jene, die einen Schnelldurchgang durch die diversen Technologien wünschen – eine Aufgabe, die Nair dank des Praxisbezugs geradezu meisterlich bewerkstelligt.

Geschrieben von
Tam Hanna
Tam Hanna
Tam Hanna befasst sich seit der Zeit des Palm IIIc mit der Programmierung und Anwendung von Handcomputern. Er entwickelt Programme für diverse Plattformen, betreibt Onlinenewsdienste zum Thema und steht unter tamhan@tamoggemon.com für Fragen, Trainings und Vorträge gern zur Verfügung.
Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: