Buchkritik: Pro Java EE Spring Patterns


In regelmäßigen Abständen gibts vom Manager meiner Abteilung eine Email, ob denn irgendjemand Bücher bestellen will. Ich habe mich diesmal für ein neues Werk aus dem Apress Verlag mit dem imposanten Namen „Pro Java EE Spring Patterns“ entschieden. Rechtzeitig vor dem Urlaub auf Rhodos, fand das gut 300 Seiten dicke Buch den Weg auf meinen Schreibtisch.

Um es gleich vorweg zu nehmen, das Buch ist für Java Entwickler und Architekten mit Spring Erfahrung eher eine Enttäuschung. In den ersten beiden Kapiteln wird kurz auf die Entstehung der n-Tier Applikationen und des Spring Frameworks eingegangen. Wer keine Lust auf die x-te Einführung in Dependency Injection, Spring AOP und Spring MVC hat, kann gleich zu Kapitel 3 vorblättern. Die restlichen Kapitel 3 bis 6 beschreiben verschiedene Patterns aus dem Java EE und Spring Bereich. Jedes Kapitel geht dabei auf Entwicklungsmuster aus den Schichten Presentation,- Business und Integrations,- und Cross Cutting Concern Tier ein. Das finale Kapitel soll an einem fiktiven Applikationsbeispiel die Anwendung der verschiedenen Patterns demonstrieren. Dazu später mehr.

Die erste Enttäuschung ist Kapitel 3, welches Patterns aus der Präsentationsschicht beschreibt. Namentlich sind das Front Controller, Application Controller, Page Controller, Context Object, Intercepting Filter, View Helper, Composite View, Dispatcher View und Service to Worker. Der Aufbau und die Vorstellung jedes Patterns ist so aufgebaut, dass zunächst die Problemstellung anhand einer Java Anwendung aus dem Versicherungsbereich vorgestellt wird. An dieser Anwendung hat der Autor von „ Pro Java EE Spring Patterns“ wohl selbst mit entwickelt. Die Applikation scheint leider etwas an den Haaren herbei gezogen. Eine Handvoll JSP Dateien mit else-if Blöcken als Ersatz für verschiedene Controller Actions traue ich selbst der schlechtesten Web-Anwendung nicht zu. Wie dem auch sei, die e-Insurance Webapplication muss immer als schlechtes Beispiel herhalten, bevor mit Hilfe eines Patterns gezeigt wird, wie es besser mit J2EE und Spring geht.

Leider stellen die meisten der genannten Pattern der Präsentationsschucht dabei keine neuen Erkenntnisse dar, sondern lediglich die von Spring propagierte Vorgehensweise für die Implementierung. Das Page Controller und das View Helper Pattern ist also nichts weiter, als eine ganz normale Implementierung mit Spring MVC. Intercepting Filter stellt nicht invasive Möglichkeiten vor, mit einem Servlet Filter oder einem Spring MVC Interceptor Cross Cutting Concerns wie Tracing zu implementieren. Das Context Object Pattern propagiert die nicht direkte Verwendung von Klassen aus der Servlet API zur besseren Wiederverwendbarkeit der Controller Klassen. Auch keine neue Information. Für mich interessant sind lediglich Erwähnung und kurze Integrationsbeispiele mit zwei Opensymphony Produkten (Sitemesh und Clickstream) sowie Apache Tiles.

Weiter geht es mit der Business-Schicht in Kapitel 4. Hier werden die Pattern Service Locator, Business Delegate, Session Facade, Application Service und Business Interface vorgestellt. Leider auch wenig neue Informationen für Entwickler mit mehrjähriger Erfahrung im Java Bereich. Service Locator für enkapsulierte JNDI Zugriffe - ein alter Hut. Business Delegate als Proxy für Zugriffe einer Schicht in die jeweils andere, entspricht der Standard Implementierung mit Spring. Business Interface stellt eine Methode vor, um in EJB Remote Interface und Bean Implementierung synchron zu halten

Weitere Anwendungsfälle werden in Kapitel 5 für die Integrationsschicht vorgestellt. Dieses Kapitel ist völlig überflüssig. Es werden drei Pattern vorgestellt, die meiner Meinung nach seit Spring 1.x bekannt sind. Data Access Object (DAO), Procedure Access Object (das gleiche wie DAO nur mit Stored Procedures) sowie Web Service Broker (Implementierung eines Webservices auf Basis von Spring jeweils mit Apache Axis 2 und Burlap). Bereits hier sollte spätestens klar werden was „Pro Java EE Spring Patterns“ eigentlich ist. Man nehme die Spring Dokumentation, suche sich die besten Kapitel heraus und ordne jedem Kapitel ein Pattern aus der Java Welt zu. Das Ergebnis wird unter „Pro Java EE Spring Patterns“ in neuer Aufmachung verkauft. Spring Einsteiger sollten besser „Spring 2.0 im Einsatz“ von entwickler.press sowie „Expert Spring MVC und Web Flow“ von Apress lesen. Alte Hasen werden in „Pro Java EE Spring Patterns“ nicht wirklich viel neues entdecken.

Bleiben noch die letzten beiden Kapitel von „Pro Java EE Spring Patterns“ zu erwähnen. Kapitel 6 „Exploring Cross Cuting Design Patterns“ ist nichts weiter als ein Abriss über Acegi Security, AOP und die Implementierung von Transaction Handling mit Spring AOP. Kapitel 7 beschreibt eine fiktive Order Management Anwendung unter Verwendung einiger weniger der vorgestellten Anwendungsmuster. Das letzte Kapitel ist relativ kurz und beschäftigt sich hauptsächlich mit der agilen Planung der Projekt-Iterationen und der Einrichtung des Maven Projekts unter einer Eclipse basierten IDE.

Fazit: das Buch ist definitiv nicht für Entwickler mit Erfahrung im Bereich Spring. Die vorgestellten Patterns entsprechen zu großen Teilen der Art, wie man Spring Anwendungen standardmäßig implementiert. Anfänger lesen besser andere Einführungsbücher für das Spring Framework. „ Pro Java EE Spring Patterns“ ist für das Kennenlernen von Spring zu oberflächlich. Ein Buch das glücklicherweise mein Arbeitgeber bezahlt hat.