Boekbespreking Java Application Architecture – Mei 2013

Boekbespreking

Java Application Architecture : Modularity Patterns with Examples Using OSGi /

Kirk Knoernschild. – Prentice Hall, Upper Saddle River, NJ, 2012.

Boekbespreking

Java Application Architecture : Modularity Patterns with Examples Using OSGi /

Kirk Knoernschild. – Prentice Hall, Upper Saddle River, NJ, 2012.

 

In de Java-wereld hebben we een stroom aan boeken over hoe je moet

programmeren op de vierkante centimeter: wanneer je interfaces moet gebruiken

in plaats van concrete ‘classes’, hoe groot methods moeten zijn, over Dependency

Injection, Visitors, Observers, Model-View-Controller en honderd andere

patterns. Java-ontwikkelaars weten veel over het verdelen van een applicatie in

logische lagen, of wanneer je een gelaagde applicatie juist beter kunt vermijden

met bijvoorbeeld het CQRS (Command Query Responsibility Segregation) pattern.

Er is ook genoeg geschreven over het definiëren van services en hoe je die

moet groeperen in applicaties. Maar over het niveau daartussenin,

hoe je een grote applicatie verdeelt in fysieke modules, is er gek genoeg

verbazend weinig literatuur.‘Java Application Architecture: Modularity

Patterns with Examples Using OSGi’ van Kirk Knoernschild is zo'n boek. Het

richt zich op fysiek ontwerp zoals hoe een software systeem verpakt wordt in

installeerbare eenheden, welke ‘classes’ in welke module thuishoren en welke

afhankelijkheidrelaties er tussen de modulen bestaan.

 

Het boek is verdeeld in drie delen. Deel I definieert wat een module is (zeg

maar een jar-file), welke aspecten daaraan zitten, de plaats van modules in de

applicatiearchitectuur, de functie van modulariteit bij het beperken van

complexiteit en hoe modulariteit hergebruik van code kan bevorderen. Het eerste deel

sluit af met een uitgewerkt voorbeeld, waarin een eenvoudige maar monolithische applicatie

 in zeven stappen modulair wordt gemaakt. Deel II is een catalogus van achttien patterns,

verdeeld in de categorieën base patterns,

dependency patterns, usability patterns, extensibility patterns en utility

patterns. Deel III tenslotte presenteert OSGi als het de facto enige

beschikbare dynamische modulesysteem voor Java. Het beschrijft hoe je de in het

voorgaande deel gemodulariseerde applicatie in een OSGi-omgeving kunt installeren,

zodat de voordelen van een modulaire applicatie ook bij installatie

en op runtime gerealiseerd kunnen worden.

 

De achttien ‘Patterns Of Modular Architecture’ (POMA) in deel II vormen de kern

van dit boek. Ze zijn beschreven op een manier die onafhankelijk is van Java of

OSGi. Daardoor zijn ze breed toepasbaar in allerlei omgevingen, ook

bijvoorbeeld .NET, al zal een .NET-ontwikkelaar waarschijnlijk afgeschrikt

worden door het woord ‘Java’ in de titel. Hoewel OSGi al veel langer intern

wordt toegepast in applicatieservers, is het pas bij recente versies mogelijk

om daarop ook OSGi-applicatiebundles te installeren. En die versies hebben nog

lang niet overal hun weg gevonden naar de productieomgevingen. Toch is het

nuttig om de patterns ook nu al toe te passen, bijvoorbeeld op de verdeling van

een systeem in maven modules. Wanneer OSGi (of Jigsaw) dan beschikbaar komt, zal

het weinig moeite kosten om de applicatie daarvoor geschikt te maken.

 

Opvallend genoeg maakt de auteur bij het bouwen van de modules in de voorbeelden gebruik

van ant als build tool, terwijl veel Java-ontwikkelaars jaren geleden

al ant verwisseld hebben voor maven. Het waarom daarvan wordt duidelijk, wanneer

Knoernschild laat zien dat je voor het refactoren van de modulestructuur van een

applicatie alleen maar het ant build-script hoeft aan te passen. In maven

is dat veel moeilijker. Daar zijn source files gegroepeerd naar modules.

Bij refactoring van de modulestructuur betekent dit dat je de source files moet verplaatsen,

ook in de versiebeheer repository, wat refactoring veel moeilijker

maakt.

 

Robert C. Martin schrijft in het voorwoord dat dit boek alleen ‘hard core

stuff’ bevat en geen ‘fluff’. Dat is naar mijn mening niet helemaal waar, want

de auteur gebruikt vrij veel woorden om te zeggen wat hij wilt en herhaalt

zichzelf vaak. Dat doet overigens weinig af aan de waarde van het boek. Vooral

de patterns van modulariteit zijn onschatbaar en verdienen het om grondig

bestudeerd en misschien wel uit het hoofd geleerd te worden.