Bücher zur Web-Entwicklung, JavaServer Pages, Servlets, JSF, Web-Frameworks Hits und Flops

Art of Java Web Development. Struts, Tapestry, Commons, Velocity, JUnit, Axis, Cocoon, InternetBeans, WebWork
Neal Ford. Manning. ISBN 1932394060. 2004.630 Seiten
Ford teilt sein Buch in drei Teile ein: Architektur von Web-Anwendungen, konkreten Frameworks und Best-Practices. Im ersten Teil „State-of-the-art web design“ ist von One-Page-Applikationen keine Rede und auch der Begriff „Ajax“ fällt auf den 630 kein einziges Mal; Web-Applikationen haben sich innerhalb von 5 Jahren komplett gewandelt. Die Web-Frameworks die Ford dann im zweiten Teil vorstellt sind allesamt veraltet, sodass man das Buch getrost beiseite legen kann. Und InternetBeans Express von JBuilder? Noch exotischer als WebWork! Wer noch ein Altprojekt hat, nimmt sich besser ein Spezialbuch zu dem jeweils relevanten Framework. Bei diesem alles-in-einem-Ansatz bleibt sonst zu viel auf der Strecke. Die Beispiele selbst sind gut und der Quellcodestil ordentlich, aber das Buch ist eben auf dem Stand, was 2004 gerade „State of the Art“ war. Das ist lang her, damals was noch nichts mit Ajax und Single Sign On. Das Buch hat eine Webseite bei Manning und Kapitel 5 (Struts, nützlich zum Einstieg) und 13 (Flow Handling) gibt es zum kompletten Lesen frei sowie die Quellcodes. Dezember 2010

GWT in Action. Easy Ajax with the Google Web Toolkit
Robert Hanson, Adam Tacy. Manning. ISBN 1-933988-23-1. Juni 2007. 632 Seiten
Die Autoren kennen sich mit GWT gut aus und sind selbst an einigen GWT-Komponenten beteiligt (die allerdings nicht sonderlich spektakulär sind). So hat auch Robert Hanson einen Blog und aktualisiert in hin und wieder mit Neuerungen des GWT. Dieses Detailwissen in GWT scheint dem Autor aber an einigen Stellen im Wege zu sein, wenn etwa das CSS-Styling der Komponenten oder der Aufbau eigener Widgets sowie der native Zugriff auf JavaScript (das sogenannte JSNI) noch vor dem GWT-RPC vorgestellt wird, was dann unter Advanced zählt – da gehört für mich eher JSNI hinein, aber viel weniger GWT-RPC. Da das Buch zu einem der ersten GWT-Büchern gehört, gibt es noch einige Bezüge zu GWT 1.3, die stören aber nicht. Offensichtliche Fehler oder Ungenauigkeiten sind mir bis auf eine fehlende Implementierung bei

public static ServerService getInstance();

und einer verrückten StringBuffer-„Optimierung“ nicht aufgefallen.

StringBuffer query = new StringBuffer();
query.append("param1=" + URL.encodeComponent(value1));
query.append("&");
query.append("param2=" + URL.encodeComponent(value2));
query.append("&");
query.append("param3=" + URL.encodeComponent(value3));
String url = "/search?" + query.toString();

Und so gibt es bis auf die etwas verwirrenden Kapitelreihenfolgen nichts zu bemängeln.

Kapitel 2 und 10 sind online als PDF verfügbar. Wollen wir hoffen, dass das Buch bald auf GWT 2 gebracht wird. Ich würde wir auch wünschen, dass es ein Kapitel mit einer Vorstellung von Zusatzkomponenten gib, denn die eingebauten GWT-Komponenten sind genauso gammelig wie die AWT-Komponenten. Smart GWT, bzw. Ext GWT sollten auf jeden Fall genannt und beschrieben werden. In der Summe ein gutes Buch, wenn man sich schon mit einfachen Beispielen aus dem Netz mit dem GWT warmgemacht hat und noch mehr Interna lernen möchte. Mitte 2009

Google Web Toolkit: GWT Java AJAX Programming. A practical guide to Google Web Toolkit for creating AJAX applications with Java
Prabhakar Chaganti. Packt Publishing. ISBN 1847191002. 15. Februar 2007. 248 Seiten
Didaktisch ist das Buch deutlich besser aufgebaut als GWT in Action, allerdings geht es deutlich weniger in die Tiefe. Während die Autoren ein einfaches Beispiel zur Internationalisierung angeben und dann schreiben „The I18N support in GWT is quite extensive and can be used to support either simple or complicated internationalization scenarios.“ geht hier das Hanson-Tacy-Gespann deutlicher in die Tiefe. Sehr gut gefallen haben mir den praktischen Beispiele, die Ajax so bekannt gemacht hatten, etwa die Listen mit Kandidaten bei eingegebenen Suchbegriffen oder weiteres. Allerdings gibt es auch ein paar Schwachpunkte. Zunächst betrifft es die GWT-Version: das Buch basiert auf GWT RC1 von Ende 2006. So kommen Neuigkeiten aus GWT 1.4 (aktuell ist GWT 2) nicht zur Sprache. Zudem ist die Formatierung oft ungenügend. Es beginnt schon früh mit dem Satz:

When we wish to draw your attention to a particular part of a code block, the relevant lines or items will be made bold:

calendarPanel.add(calendarGrid);
calendarPanel.add(todayButton);

Und dann steht das noch nicht mal in der Einleitung in bold.

Einrückung und Formatierung sind im ganzen Buch sehr merkwürdig. Die Listings besitzen oft am Anfang eine sehr hohe Einrückung, um dann die verbleibenden Zeilen an den unmöglichsten Stellen umbrechen zu müssen. Einige Fehler sind sicherlich nur Unachtsamkeiten. Wie die folgende:

Primitive types—character, byte, short, integer, long, Boolean, float, and double
Primitive type wrapper classes—character, byte, short, integer, long, Boolean, float, and double

Oder dann zeigt ein Screenshot bei den Primzahlenbeispielen eine Zahl in Anführungszeichen, doch im Quellcode steht:

Window.alert("Yes, "+ primeNumber.getText() ...

Es fehlt hier, genauso wie bei der Fallunterscheidung beim No, das einleitende Hochkomma. Bei Konstruktoren ist ein einfaches super(); sicherlich nicht als explizite Anweisung nötig. Einige Kritikpunkte betreffen die Namensgebung. Da heißt dann eine Methode großgeschrieben ShowText() oderonEventpreview(). Stilistisch lässt sich vielleicht noch for (; rs.next();) mit einem einfachen while( rs.next() ) schreiben. Und warum sehe ich das bei so vielen Autoren Felddeklarationen der Art

private String[] items = new String[]{"apple", "peach", "orange", "banana", ...

Wenn es auch einfach nur

private String[] items = {"apple", "peach", "orange", "banana", ...

heißen könnte? Viele Beispiele tragen im Quellcode für die GWT-Komponenten CSS-Zuweisungen wie searchText.setStyleName("liveSearch-TextBox");, doch die CSS-Datei ist nicht angegeben! Für die Listings hätte das eigentlich auch wegfallen können — hier muss man die Beispiele von CD oder aus dem Internet nehmen. Mit den Styling ist auch eine andere Sache krumm. Statt <img border=’0′ src=’images/blank.gif’/> für eine Tabelle zu schreiben, wäre hier wohl CSS besser, also etwa <img src='images/blank.gif'/>. Bei den Schaltflächen müssen HTML-Zeichen nicht ausmaskiert werden: new Button("&lt;", this); new Button("&gt;", this); ist schlicht falsch. In der Abbildung auf Seite 41 taucht plötzlich eine SchnittstelleRemoteServiceAsync auf. Die angeblich selbst geschriebene Schnittstelle gibt es nicht, das sollte PrimesServiceAsync heißen. Beim Beispiel mit Auto Form Fill überträgt der GWT-RPC-Service eine HashMap mit den Daten. Eine interessante Alternative wäre, eine serialisierbare Bean zu deklarieren und diese zu versenden. Da kommt in den Beispielen nirgendwo vor. Platz nehmen recht viel Codeduplikate ein, da der Autor bei den Beschreibungen einen Aufbau gewählt hat, in dem erst der Quellcode als Tue-Dies-Anweisungen aufgeführt wird und später die zentralen Stellen beim Was-haben-wir-eigentlich-gemacht-Teil wiederholt. Das kostet natürlich Platz beim Druck und hätte kompakter ausfallen können. Einige Beispiele geben Beispiele für eine Ajax-Bibliothek an, die sonst aber nicht so weit verbreitet ist. Eine Sache gibt es sogar, die im Action-Buch nicht steht – und die ich auch dort vermisste habe: wie man Dokumente lädt. Hier ist es: HTTPRequest.asyncGet("customers.csv", new ResponseTextHandler()). Eine Auflistung der unterstützten APIs fehlt jedoch auch hier. In der Summe bleibt ein nettes gut lesbares Buch, welches schnell gelesen ist und auch nicht schwer ist. Mitte 2009

Core JavaServer Faces
David Geary, Cay Horstmann. Prentice Hall. ISBN 0-13-146305-5. 2004. 658 Seiten
[Heart]Ein ausgezeichnetes JSF-Buch, was zusammen mit der JSF Tag Library Documentation und JSF Standard HTML RenderKit Documentation ein optimales Paar ist. Enthalten sind Tipps und Tricks, eigene Komponenten, Datenbankanbindung, Authentifizierung über Datenbanken und LDAP, Client-Validierung über JavaScript mit Struts bzw. dem Validation-Framework. Prima Sache. Die zweite Auflage fertig und geht auf die neuen Versionen ein. Die Autoren haben eine Webseite, unter der sich einige Kapitel als PDF (mit schönen farbigen Screenshots) und der gesamte Quellcode der 2. Auflage herunterladen lässt. April 2007

Struts. JSP-Applikationen mit Jakarta, JBoss und Apache Axis
James Turner, Kevin Bedell. Addison-Wesley. ISBN 3-8273-2221-9. 2004. 478 Seiten
Dieses Buch stammt aus der Reihe ›Open Source Library‹. Da ich es in meinem letzten Struts-Kurs verschenkt habe, aber jetzt noch die CD finde, wird es Zeit, das letzte Relikt wegzuschmeißen. Da fällt mir auf: Der Name von Kevin Bedell ist falsch geschrieben! Kevin Bedall. Auch bei Pearson.ch steht fälschlicherweise ›Kevin Bedall ist ein erfahrener Software-Profi …‹ (Auf der Webseite von bol.de stehen drei Autoren: von James Turner, Kevin Bedall, Kevin Bedell 🙂 Das ist aber peinlich. Und da bin ich gleich bei meinem Kritikpunkt: Die Übersetzung ist kaum gelungen, so sich bei einigen Sätzen immer dachte: ›Was wollen die Autoren mir sagen?‹. Somit habe ich das Buch einmal für einen Überblick durch und bin zu Alternativen gegangen. Sonst geht das Buch thematisch auch nicht so tief auf Struts-Eigenschaften ein. Grundsätzlich ist der Aufbau eines Beispieles mit ›Attila dem Hunnen‹ gelungen und auch das Design der Anwendung ist ordentlich. Mit gefällt es, wenn Autoren betonen, dass man die Form-Beans von den Business-Beans trennen muss, und es auch so realisieren. Eine Leseproble gibt es bei Google BooksAugust 2006

Dynamic Web Programming Using Java, JavaScript and Informix
Graham Harrison. Informix Press/Prentice Hall. ISBN 0130861847. 1999. 995 Seiten
Keine Ahnung, warum ich mir das Buch gekauft habe. Es steht schon seit Jahren im Regel. Vermutlich wars‘ ein Schnäppchen bei eBay. Na ja, jetzt kommt es in die Tonne, denn wenn man das Buch verschenkt, muss es einem peinlich sein. Selbst das JDBC- und RMI-Kapitel ist noch zu mager. Eigentlich geht es nur um’s Produkt AppPage. (Die Informix-Software muss wahnsinnig wichtig sein, wenn Google da satte 80 Seiten rausspuckt.) Juni 2006

Java Server und Servlets. Portierbare Web-Applikationen effizient entwickeln
Peter Roßbach, Hendrik Schreiber. Addison-Wesley. ISBN 3827316944. 2000. 438 Seiten
Beschäftigt sich eigentlich nur von Seite 29 bis 77, also auf etwa 50 Seiten, mit Servlets. Da fehlt mir einiges, etwa eine ausführliche Beschreibung der Sicherheitsaspekte, die unsere Autoren nicht großartig beleuchten. Das Kapitel eigene ›WebApp-Framework‹ ist ziemlich unnötig, da hätten die Autoren existierende Toolkits beschreiben können, die es auch im Jahr 2000 schon gab. Wie Logging implementiert werden kann oder OR-Mapper (mit 60 Seiten größer als das Servlet-Kapitel!) ist besser in anderen Büchern aufgehoben. Auch statt ihrer langweiligen Servlet-Engine jo! hätte ich gerne etwas zu Tomcat oder anderen Web-Containern erfahren. Nach der zweiten Auflage folgte keine weitere und das Buch ist gebraucht über Amazon für etwa 5 Euro zu bekommen. Juni 2006

Mastering JSP Custom Tags and Tag Libraries
James Goodwill. ISBN 0471213039. 2002
Ausreichende Einführung in die TagLib. Zudem Vorstellung der JSTL und der Apache TagLibs. So lernt man sie mal alle kennen. Befremdend war die laufende Nutzung von new String("Literal"). Kleine Fehler in den Grafiken. Juli 2004

Java Servlet Programming
Jason Hunter, William Crawford, O’Reilly, ISBN 389721282X, 2. Auflage, Ende 2001, 780 Seiten
Das Buch gefällt mir ganz gut, könnte aber mal wieder aktualisiert werden, da die zweite Auflage nun auch schon älter ist und nur die Servlet 2.3 Spezifikation angeht. (Jason ist aber mit Artikeln sehr aktiv. So finden sich von ihm viele Sachen in Online-Magazinen, etwa in JavaWorld über die Servlet 2.5 Spezifikation.) Das Buch ist sehr gut didaktisch aufgebaut mit interessanten Kapiteln wie Bild-Generierung und Internationalisierung. Die zweite Auflage beschreibt im Gegensatz zur ersten Auflage Frameworks (etwa Tea), die mir sehr unnötig vorkommen. Alles in Allem aber ein Buch was man als ernsthafter Servlet-Programmierer gut gebrauchen kann. Ich persönlich fände einige Beispiele zum Tomcat praktisch, aber hier geht es ja um Servlets und um die Anwendung und nicht um einen speziellen Container. Online gibt es die eine DTD-Beschreibung der web.xml-Datei. September 2003

Inside Servlets: Server-Side Programming for the Java Platform
Dustin R. Callaway, Addison Wesley, ISBN: 0201709066, 2. Auflage.
Kurze und ordentliche Einführung in die Servlets. Besser sollte man jedoch zu Jasons Buch greifen.

Go To Java Server Pages
Stefan Wille, Addison-Wesley, ISBN 3827318920, September 2001, 600 Seiten, 79,90 DM
Sehr schön und flüssig zu lesen. Kann man sicherlich gut für Seminare einsetzen, da der Lernstoff hübsch didaktisch dargeboten wird. Zur Kursvorbereitung würde ich es auf jeden Fall kaufen. Etwas mager fallen die Frameworks aus. Da hört man nämlich gar nichts zu. XML fehlt ebenfalls. Kleine Fehler bei Attributen und Beans. Dezember 2001

Servlets und JavaServer Pages. Praktischer Leitfaden zur Entwicklung dynamischer Web-Applikationen
Marty Hall, Markt+Technik, ISBN 3827259452, 2. Auflage, November 200, 552 Seiten, DM 99,01
Zuerst viel mir der komische Preis aus. Da kann man überlegen und denken, ›Na ja, Euroumrechung‹. Doch in Euro macht das Buch 50,62. Zum Inhalt: Das Buch führt sehr anschaulich und mir vielen Beispiel in Servlets und dann in JSP ein. Ein Beispiel ist wieder etwas für Akademiker: Primzahlenberechung. Sonst ist mir das Buch eher etwas zu ausführlich, was aber für Einsteiger nichts schlechtes bedeuten muss. Leider auch nix zu XML und Frameworks. Immerhin entwickelt der Autor ein ConnectionPool; aber haben wie das nicht schon irgendwo als Standard gesehen. (Besser wäre doch hier eine DataSource und sinnvoll die Erklärung, wie man das im Tomcat konfiguriert.) Zudem bekommt man eine Einführung in die Implementierung von eigenen Tags. Obwohl leider nichts zu Tomcat-Apache-Zusammenarbeit drinsteht, genauso wenig wie Optimierung von Tomcat wird doch immer wieder gezeigt, wo welche Datei stehen muss. Dennoch nichts über War-Archive. Wenn man eine gute Einführung in beiden Themen braucht, man sich aber nicht für einen konkreten Server interessiert (was selten vorkommen dürfte) kann ich das Buch empfehlen. Man sollte auch einen Blick auf die Webseite werfen, wo viele Unterlagen lauern, etwas Folien als PDF-Download. Dezember 2001

Java XML Programmierung professionell mit Servlets und JSP
Alexander Nakhimovsky, Tom Myers.
Es ist schon erstaunlich, wie Informatiker 700 Seiten so dermaßen unnütz voll schreiben können. Listing an Listing, Codesegment für Codesegment robbt sich das Auge über die vollen Seiten. Obwohl der XML-Datei durchaus lesenswert ist, beginnt das Buch erst mal mit etwas ganz anderem. Erst nach 200 Seiten hören wir was von XML, vorher dürfen wir noch einmal etwas von JDBC und formalen Sprachen hören; die Herren erkennt man deutlich ihre Herkunft an. Der XML-Teil ist dabei wieder so unübersichtlich, obwohl alle Nase lang steht, dass es nur ein Auszug ist. Stimmt, das zeigen auch die vielen Zitate. Da muss man es auch nicht selber schreiben. Dann hinten noch rasch etwas von Java-Mail-API, wieso eigentlich nichts von Beans? Die kommen im Ganzen etwas schwach weg. Auch JSP sind etwas mager. Bei den dynamischen Seiten setzen die Autoren auch dann lieber auf eine Eigenlösung, wofür sie erst einmal einen Parser bauen. Dann folgen immer als formale Grammatik Auszüge aus den DTDs. Dieser Inhalt hätte besser in ein XML-Buch gepasst. Dann stören meiner bescheidenen Ansicht nach die selbstgefälligen Aussagen: ›Wir sind so toll, hier ist ja das erste Buch, wo so etwas erklärt wird.‹ Super. Es wird nicht das letzte bleiben. Januar 2001