Das Apache-Projekt Jakarta Commons wurde mit seinen vielen Bibliotheken von der Autorenwelt bisher nur recht stiefmütterlich behandelt. Mit "Applied Software Engineering using Jakarta Apache Commons" existiert nun endlich ein Titel, der versucht hier eine klaffende Lücke zu schließen.
Das Buch ist aufgabenorientiert strukturiert und sollte klassisch von vorn nach hinten durchgearbeitet werden. Jedes der elf Kapitel schließt mit einer Zusammenfassung und weiterführenden Fragen. Es soll vermitteln, wie die klassischen Probleme der Softwareentwicklung mit Komponenten des Jakarta Commons-Projektes gelöst werden können. Dieser Ansatz erklärt auch, dass nicht auf alle Commons-Komponenten eingegangen wird. Es handelt sich eben nicht um ein reines Buch über das Apache-Projekt und ist daher zumindest als einfaches Nachschlagewerk nur bedingt zu gebrauchen. Die einzelnen Kapitel sind leicht verständlich geschrieben und bieten mit den vielen kurzen Beispielen und Code-Snippets genau das Verhältnis von Quelltext und Erklärungen, das man von einem guten Fachbuch erwarten kann.
Das Buch lässt sich recht einfach in zwei Teile unterteilen. Der erste Teil bezieht sich ausschließlich auf Komponenten des Jakarta-Projektes mit Fokus auf Commons (Repository und Sandbox), wohingegen der zweite Teil auch Komponenten wie Apache Axis, Apache Ant und JUnit behandelt. Insofern ist der Buchtitel sicherlich ein wenig irreführend.
In den ersten beiden Kapiteln wird der Leser nach einer allgemeinen Einführung über die grundsätzliche Idee von Design Patterns, Scopes und den allgemeinen Überlegungen zur Entwicklung von Klassen und Interfaces zum Thema Objekterzeugung hingeführt. Auf den nächsten Seiten wird erklärt, warum ein einfaches new nicht unbedingt immer der richtige Weg ist, Objekte zu instanziieren, und welche Unterstützung Commons hier anbietet. Folgerichtig legt das vierte Kapitel den Fokus auf Skalierbarkeit und das Poolen von Objekten. Hier verliert sich ein wenig der Faden, aber nach einem Kapitel über Serialization, in dem SQL, Betwixt und Lucene vorgestellt werden, kann man sich auf eine interessante Einführung in die asynchrone Verarbeitung per Messenger freuen. Die nächsten Seiten behandeln das Suchen und Sammeln von Objekten. Hier werden Collections und JXPath vorgestellt. Nachdem mit CLI, Digester und dem weit verbreiteten Commons Logging die Aufgaben Konfiguration und Logging genauer unter die Lupe genommen wurden, schließt der erste Teil des Buches mit einem Überblick über Functor. Der zweiten Teil, der sich den Non-Commens-Komponenten widmet, startet im Kapitel über verteilte Internet-Dienste mit einer kurze Einführung von SOAP und WSDL und demonstriert dann die Implementierung entsprechender Dienste unter Zuhilfenahme von Axis. Nach 342 Seiten voller direkter Hilfestellungen zu Programmieraufgaben schließt das Buch mit dem Thema Projekt-Management und einem Überblick über die dafür am häufigsten zum Einsatz kommenden Tools CVS, Ant und JUnit.
Vielleicht lag es an meiner leichten Farbschwäche, doch zumindest mir fiel es irgendwann schwer, dem roten Pfaden des Buches zu folgen. Jedes Kapitel für sich wartete mit wichtigen Informationen auf, die Verknüpfung der einzelnen Themen hätte jedoch ein wenig schlüssiger sein können. Insbesondere über die Auswahl der Schwerpunkte lässt sich diskutieren. So viele Komponenten und Problemstellungen umfassend zu behandeln ist zugegebenermaßen schwierig. Ich persönlich hatte in diesem Buch aber kein Kapitel über Projekt-Management erwartet und empfand die Erklärung des WinCVS Client ein wenig fehl am Platz. Mit dem Appendix A existiert eigentlich ein zwölftes Kapitel, dessen Verbindung zu Jakarta Commons sich mir bisher auch noch nicht erschlossen hat. Weniger wäre hier vielleicht mehr gewesen.
Trotz einiger weniger Kritikpunkte halte ich das Buch, insbesondere den Mittelteil, für einen gelungen Einstieg und eine gute Heranführung an das Apache-Projekt Jakarta Commons. Ein gewisses Grundverständnis auf dem Gebiet der Softwareentwicklung sollte jedoch bereits vorhanden sein.








