Was hat man wohl von einem Buch zu erwarten, das die Autoren bereits auf der ersten Seite als das beste Rezept-Buch zum Thema und unentbehrliches Arbeitsmittel betiteln? Zugegeben, die Codebook-Reihe besticht den Leser schon mit Äußerlichkeiten: das Buch kommt in einer schicken Box mitsamt einer „interaktiven CD“ daher, der Druck ist zweifarbig, die Kapitel sind zum schnellen Aufklappen perforiert, ein Lesezeichen ist auch dabei. Ich habe „Das J2EE Codebook“ von Karsten Samaschke und Thomas Stark genauer unter die Lupe genommen um festzustellen, ob es dem gerecht werden kann, was Autoren und Aufmachung versprechen.
Wie der Titel suggeriert, handelt es sich bei Büchern der Codebook-Reihe um Rezeptsammlungen. „Das J2EE Codebook“ richtet sich an den fortgeschrittenen Java-Entwickler, der bereits J2EE Erfahrungen gesammelt hat und sich weiterhin mit Auszeichnungssprachen wie HTML und XML auskennt. Auf rund 950 Seiten erhält der Leser 329 „Rezepte“ aus dem J2EE Umfeld, namentlich aus den Bereichen Java Server Pages, Servlets, Tag-Bibliotheken, Struts, Java Server Faces, JDBC, Netzwerk, Streams und Co., JNDI, EJBs, JMS, JDO, XML, XSLT/XPath, und XML Webservices.
Die Einleitung klärt den Leser zunächst über die grundlegendsten Technologien und Terminologien wie z.B. J2EE auf und steckt die Ansprüche und Voraussetzungen ab. Der Rezepte-Teil startet dann mit dynamischen Webseiten per JSPs oder Servlets und den Taglibs, die die tägliche Arbeit mit JSPs vereinfachen sollen. Das Struts Framework, das entwickelt wurde, um den Nachteilen der erstgenannten Technologien zu begegnen, und Java Server Faces werden als nächste Evolutionsstufen präsentiert. Dann folgt ein eigenes Kapitel zur JDBC-Schnittstelle, die bereits im Struts-Kapitel für Datenbankzugriffe konfiguriert wurde. Vom Laden der Treiber über SQL Grundlagen bis zu Transaktionsklammern wird hier alles zum Thema Datenbankzugriff per JDBC besprochen. Wieder gibt es hier einen kleinen Vorgriff zu JNDI, das nach dem „Netzwerk, Streams und Co.“ Kapitel beleuchtet wird. Letztgenanntes Kapitel holt noch einmal weit aus und behandelt u.a. Dateizugriffe und Objektserialisierung in Java, um diese dann z.B. zum Ressourcezugriff per Servlet zu verwenden. Das folgende Kapitel zum Java Naming and Directory Interface (JNDI, was im Buch übrigens als „Java Naming and Directory Service“ bezeichnet wird) behandelt den Zugriff auf Rechner, Dienste und Informationen über eine Java-einheitliche Schnittstelle. Mit EJB fällt im nächsten Kapitel wohl eines der bekanntesten Schlagwörter aus dem J2EE Umfeld, Enterprise Java Beans. Beantypen, Persistenzmanagement und Relationen sind hier klassische Themen, die zu EJB besprochen werden. Als Grundlage der Message Driven Beans dient JMS, der Java Messaging Service, der im nächsten Kapitel behandelt wird. Darauf folgt die Persistenztechnologie, die dem bekannten Hibernate-Framework den Rang ablaufen könnte: JDO, Java Data Objects, wird mit Rezepten vom PersistenceManager bis zur JDO Query Language bedacht. Auch XML, die heute einen festen Platz in der Softwareentwicklung hat, wird zum Abschluß umfangreich behandelt. So existieren u.a. Rezepte zur Verwendung von Entities, zum Erstellen und Lesen von XML Dokumenten per SAX oder DOM, zu DTDs und Schemas, gefolgt von zwei zusätzlichen Kapiteln zu XSLT und XPath sowie XML Webservices mit Rezepten zu SOAP oder JAXM.
Die Begleit-CD ist im eigenen Karton und einer Maxi-Hülle verpackt. Sie enthält Archive mit jeder im Buch besprochenen und zum Aufsetzen einer entsprechenden Entwicklungsumgebung nötigen Software, vom J2EE 1.5 SDK über JBoss bis zu Eclipse, sowie alle Beispiele aus dem Buch. Darüber hinaus gibt es zwei besondere Clous, die dem Leser die Arbeit erleichtern sollen: Unter dem Menüpunkt „Repositories“ findet eine Suchfunktion mit Unterstützung von Und- und Oder-Verknüpfungen. Die Umsetzung ist leider nicht ganz geglückt, denn durchsucht werden lediglich die Kapitelüberschriften, was z.B. bei einer Suche nach „JDBC“ zu keinem Treffer führt, da keines der JDBC-Kapitel den Begriff enthält. Dieses Manko wird jedoch durch das zweite Extra ausgeglichen: das gesamte Buch ist im PDF Format ebenfalls auf der CD enthalten, und dieses lässt sich problemlos auch über die Überschriften hinaus durchsuchen. Wer viel unterwegs ist und auch gerne mal am Bildschirm (nach)liest, kann so auf die fast zwei Kilogramm Buch verzichten.
Zum Zeitpunkt der Fertigstellung dieser Rezension führte die genannte Buchseite http://www.j2ee-codebook.de/ leider zu „ASP.extra“, die sich offenbar Samaschkes Machwerken im Bereich ASP widmet, so dass ich hier keinerlei Aussagen zum Online-Support zum Titel machen kann.
Der erste positive Gesamteindruck zur Aufmachung des Titels hat sich auch während des Lesens fortgesetzt. Die Rezepte der verschiedenen Themenbereiche bauen vielfach aufeinander auf, und dank des zweifarbigen Drucks können Erweiterungen an Servlet-Konfiguration o.ä. leicht hervorgehoben und so für den Leser besser nachvollzogen werden. Angenehm ist auch, dass für den Einsteiger Begrifflichkeiten mit einfachen Analogien beschrieben werden; die drei Gültigkeitsbereiche einer Session vergleichen die Autoren bspw. mit Notizblöcken einer Sekretärin, die zum Schmieren, zum Notieren wichtiger Notizen, oder zum Erfassen von Kundeninformationen unterschiedliche Blöcke verwendet. Ebenso wird bei der Erklärung des Java Messaging Service die gewöhnliche E-Mail zur Verdeutlichung herangezogen. Und der erfahrenere Leser schmunzelt über kleine Seitenhiebe der Autoren zur Komplexität von EJBs, die von Samaschke und Stark durch Kommentare wie „14 (!!!) öffentliche Methoden nur, um den Kontostand abfragen und Buchungen vornehmen zu können“ oder, über JDO Descriptoren, „Wenn diese Syntax nicht wesentlich einfacher ist als ein vergleichbarer EJB Deployment Descriptor!“ auf den Arm genommen wird.
Obwohl oder gerade weil sich das Buch an „ambitionierte, fortgeschrittene Entwickler“ richtet, bin ich über den gelegentlich stark alternierenden Anspruch im Buch gestolpert. Während im ersten Kapitel des Buches, Java Server Faces, auch noch Grundlagen geklärt werden („Wie funktioniert das Internet?“, „Was ist die Hypertext Markup Language (HTML)?“), steigt der Anspruch schnell, um dann wieder urplötzlich zu fallen. Beim Studium stößt man nach knapp 770 Seiten auf das Kapitel zum Thema XML, das dem Leser an dieser späten Stelle etwas deplatziert vorkommen mag, hatte er doch die ganze Zeit bereits mit Deployment-Descriptoren oder Tomcat- und JSF-Konfigurationen in XML zu tun. Trotzdem werden zunächst auf 30 Seiten XML Grundlagen besprochen. Ähnlich verhält es sich im Übrigen im JDBC Kapitel, in dem man direkt eine Schnelleinführung in SQL erhält. Schön ist, dass daneben auch „common pitfalls“ wie SQL Injection besprochen werden.
Grundsätzlich bietet „Das J2EE Codebook“ eine robuste Sammlung an Rezepten zur Lösung alltäglicher J2EE Implementierungsprobleme. Dass aufgrund des umfangreichen Repertoires nicht alle Themen im tiefsten Detail behandelt werden können, ist dabei nachvollziehbar; Platz für etwas mehr Tiefe hätte aber durch Weglassen derjenigen Grundlagen gewonnen werden können, die für die Zielgruppe eigentlich selbstverständlich sein sollten. Die Aufmachung gleicht dieses Manko und einige kleine Fehler im Buch jedoch wieder aus, und so stellt sich „Das J2EE Codebook“ als umfangreicher und aktueller Titel heraus, der die Entwickler von Enterprise Anwendungen in Java unterstützt.
So macht Lesen selbst für Röhrenjunkies Spaß, und jeder Verlag sollte sich ein Beispiel an der Aufmachung der Codebook-Reihe nehmen. Warum nicht immer so?