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

Art of Java Web Deve­lop­ment. Struts, Tapestry, Com­mons, Velo­ci­ty, JUnit, Axis, Cocoon, Inter­net­Be­ans, Web­Work
Neal Ford. Man­ning. ISBN 1932394060. 2004.630 Sei­ten
Ford teilt sein Buch in drei Tei­le ein: Archi­tek­tur von Web-Anwen­dun­gen, kon­kre­ten Frame­works und Best-Prac­tices. Im ers­ten Teil „Sta­te-of-the-art web design“ ist von One-Page-Appli­ka­tio­nen kei­ne Rede und auch der Begriff „Ajax“ fällt auf den 630 kein ein­zi­ges Mal; Web-Appli­ka­tio­nen haben sich inner­halb von 5 Jah­ren kom­plett gewan­delt. Die Web-Frame­works die Ford dann im zwei­ten Teil vor­stellt sind alle­samt ver­al­tet, sodass man das Buch getrost bei­sei­te legen kann. Und Inter­net­Be­ans Express von JBuil­der? Noch exo­ti­scher als Web­Work! Wer noch ein Alt­pro­jekt hat, nimmt sich bes­ser ein Spe­zi­al­buch zu dem jeweils rele­van­ten Frame­work. Bei die­sem alles-in-einem-Ansatz bleibt sonst zu viel auf der Stre­cke. Die Bei­spie­le selbst sind gut und der Quell­code­stil ordent­lich, aber das Buch ist eben auf dem Stand, was 2004 gera­de „Sta­te of the Art“ war. Das ist lang her, damals was noch nichts mit Ajax und Sin­gle Sign On. Das Buch hat eine Web­sei­te bei Man­ning und Kapi­tel 5 (Struts, nütz­lich zum Ein­stieg) und 13 (Flow Hand­ling) gibt es zum kom­plet­ten Lesen frei sowie die Quell­codes. Dezem­ber 2010

GWT in Action. Easy Ajax with the Goog­le Web Tool­kit
Robert Han­son, Adam Tacy. Man­ning. ISBN 1−933988−23−1. Juni 2007. 632 Sei­ten
Die Auto­ren ken­nen sich mit GWT gut aus und sind selbst an eini­gen GWT-Kom­po­nen­ten betei­ligt (die aller­dings nicht son­der­lich spek­ta­ku­lär sind). So hat auch Robert Han­son einen Blog und aktua­li­siert in hin und wie­der mit Neue­run­gen des GWT. Die­ses Detail­wis­sen in GWT scheint dem Autor aber an eini­gen Stel­len im Wege zu sein, wenn etwa das CSS-Sty­ling der Kom­po­nen­ten oder der Auf­bau eige­ner Wid­gets sowie der nati­ve Zugriff auf Java­Script (das soge­nann­te JSNI) noch vor dem GWT-RPC vor­ge­stellt wird, was dann unter Advan­ced zählt – da gehört für mich eher JSNI hin­ein, aber viel weni­ger GWT-RPC. Da das Buch zu einem der ers­ten GWT-Büchern gehört, gibt es noch eini­ge Bezü­ge zu GWT 1.3, die stö­ren aber nicht. Offen­sicht­li­che Feh­ler oder Unge­nau­ig­kei­ten sind mir bis auf eine feh­len­de Imple­men­tie­rung bei

public static ServerService getInstance();

und einer ver­rück­ten StringBuffer-„Optimierung“ nicht auf­ge­fal­len.

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 ver­wir­ren­den Kapi­tel­rei­hen­fol­gen nichts zu bemän­geln.

Kapi­tel 2 und 10 sind online als PDF ver­füg­bar. Wol­len wir hof­fen, dass das Buch bald auf GWT 2 gebracht wird. Ich wür­de wir auch wün­schen, dass es ein Kapi­tel mit einer Vor­stel­lung von Zusatz­kom­po­nen­ten gib, denn die ein­ge­bau­ten GWT-Kom­po­nen­ten sind genau­so gam­me­lig wie die AWT-Kom­po­nen­ten. Smart GWT, bzw. Ext GWT soll­ten auf jeden Fall genannt und beschrie­ben wer­den. In der Sum­me ein gutes Buch, wenn man sich schon mit ein­fa­chen Bei­spie­len aus dem Netz mit dem GWT warm­ge­macht hat und noch mehr Inter­na ler­nen möch­te. Mit­te 2009

Goog­le Web Tool­kit: GWT Java AJAX Pro­gramming. A prac­tical gui­de to Goog­le Web Tool­kit for crea­ting AJAX app­li­ca­ti­ons with Java
Prabha­kar Chagan­ti. Packt Publi­shing. ISBN 1847191002. 15. Febru­ar 2007. 248 Sei­ten
Didak­tisch ist das Buch deut­lich bes­ser auf­ge­baut als GWT in Action, aller­dings geht es deut­lich weni­ger in die Tie­fe. Wäh­rend die Auto­ren ein ein­fa­ches Bei­spiel zur Inter­na­tio­na­li­sie­rung ange­ben und dann schrei­ben „The I18N sup­port in GWT is qui­te exten­si­ve and can be used to sup­port eit­her simp­le or com­pli­ca­ted inter­na­tio­na­li­za­ti­on sce­n­a­ri­os.“ geht hier das Han­son-Tacy-Gespann deut­li­cher in die Tie­fe. Sehr gut gefal­len haben mir den prak­ti­schen Bei­spie­le, die Ajax so bekannt gemacht hat­ten, etwa die Lis­ten mit Kan­di­da­ten bei ein­ge­ge­be­nen Such­be­grif­fen oder wei­te­res. Aller­dings gibt es auch ein paar Schwach­punk­te. Zunächst betrifft es die GWT-Ver­si­on: das Buch basiert auf GWT RC1 von Ende 2006. So kom­men Neu­ig­kei­ten aus GWT 1.4 (aktu­ell ist GWT 2) nicht zur Spra­che. Zudem ist die For­ma­tie­rung oft unge­nü­gend. Es beginnt schon früh mit dem Satz:

When we wish to draw your atten­ti­on to a par­ti­cu­lar part of a code block, the rele­vant lines or items will be made bold:

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

Und dann steht das noch nicht mal in der Ein­lei­tung in bold.

Ein­rü­ckung und For­ma­tie­rung sind im gan­zen Buch sehr merk­wür­dig. Die Lis­tings besit­zen oft am Anfang eine sehr hohe Ein­rü­ckung, um dann die ver­blei­ben­den Zei­len an den unmög­lichs­ten Stel­len umbre­chen zu müs­sen. Eini­ge Feh­ler sind sicher­lich nur Unacht­sam­kei­ten. Wie die fol­gen­de:

Pri­mi­ti­ve types—character, byte, short, inte­ger, long, Boole­an, float, and dou­ble
Pri­mi­ti­ve type wrap­per clas­ses—charac­ter, byte, short, inte­ger, long, Boole­an, float, and double

Oder dann zeigt ein Screen­shot bei den Prim­zah­len­bei­spie­len eine Zahl in Anfüh­rungs­zei­chen, doch im Quell­code steht:

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

Es fehlt hier, genau­so wie bei der Fall­un­ter­schei­dung beim No, das ein­lei­ten­de Hoch­kom­ma. Bei Kon­struk­to­ren ist ein ein­fa­ches super(); sicher­lich nicht als expli­zi­te Anwei­sung nötig. Eini­ge Kri­tik­punk­te betref­fen die Namens­ge­bung. Da heißt dann eine Metho­de groß­ge­schrie­ben ShowText() oderonEventpreview(). Sti­lis­tisch lässt sich viel­leicht noch for (; rs.next();) mit einem ein­fa­chen while( rs.next() ) schrei­ben. Und war­um sehe ich das bei so vie­len Auto­ren Feld­de­kla­ra­tio­nen der Art

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

Wenn es auch ein­fach nur

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

hei­ßen könn­te? Vie­le Bei­spie­le tra­gen im Quell­code für die GWT-Kom­po­nen­ten CSS-Zuwei­sun­gen wie searchText.setStyleName("liveSearch-TextBox");, doch die CSS-Datei ist nicht ange­ge­ben! Für die Lis­tings hät­te das eigent­lich auch weg­fal­len kön­nen — hier muss man die Bei­spie­le von CD oder aus dem Inter­net neh­men. Mit den Sty­ling ist auch eine ande­re Sache krumm. Statt <img border=‚0‘ src=‚images/blank.gif‘/> für eine Tabel­le zu schrei­ben, wäre hier wohl CSS bes­ser, also etwa <img src='images/blank.gif'/>. Bei den Schalt­flä­chen müs­sen HTML-Zei­chen nicht aus­mas­kiert wer­den: new Button("&lt;", this); new Button("&gt;", this); ist schlicht falsch. In der Abbil­dung auf Sei­te 41 taucht plötz­lich eine Schnitt­stel­leRemoteServiceAsync auf. Die angeb­lich selbst geschrie­be­ne Schnitt­stel­le gibt es nicht, das soll­te PrimesServiceAsync hei­ßen. Beim Bei­spiel mit Auto Form Fill über­trägt der GWT-RPC-Ser­vice eine HashMap mit den Daten. Eine inter­es­san­te Alter­na­ti­ve wäre, eine seria­li­sier­ba­re Bean zu dekla­rie­ren und die­se zu ver­sen­den. Da kommt in den Bei­spie­len nir­gend­wo vor. Platz neh­men recht viel Code­du­pli­ka­te ein, da der Autor bei den Beschrei­bun­gen einen Auf­bau gewählt hat, in dem erst der Quell­code als Tue-Dies-Anwei­sun­gen auf­ge­führt wird und spä­ter die zen­tra­len Stel­len beim Was-haben-wir-eigent­lich-gemacht-Teil wie­der­holt. Das kos­tet natür­lich Platz beim Druck und hät­te kom­pak­ter aus­fal­len kön­nen. Eini­ge Bei­spie­le geben Bei­spie­le für eine Ajax-Biblio­thek an, die sonst aber nicht so weit ver­brei­tet ist. Eine Sache gibt es sogar, die im Action-Buch nicht steht – und die ich auch dort ver­miss­te habe: wie man Doku­men­te lädt. Hier ist es: HTTPRequest.asyncGet("customers.csv", new ResponseTextHandler()). Eine Auf­lis­tung der unter­stütz­ten APIs fehlt jedoch auch hier. In der Sum­me bleibt ein net­tes gut les­ba­res Buch, wel­ches schnell gele­sen ist und auch nicht schwer ist. Mit­te 2009

Core Java­Ser­ver Faces
David Geary, Cay Horst­mann. Pren­ti­ce Hall. ISBN 0−13−146305−5. 2004. 658 Sei­ten
[Heart]Ein aus­ge­zeich­ne­tes JSF-Buch, was zusam­men mit der JSF Tag Libra­ry Docu­men­ta­ti­on und JSF Stan­dard HTML Ren­der­Kit Docu­men­ta­ti­on ein opti­ma­les Paar ist. Ent­hal­ten sind Tipps und Tricks, eige­ne Kom­po­nen­ten, Daten­bank­an­bin­dung, Authen­ti­fi­zie­rung über Daten­ban­ken und LDAP, Cli­ent-Vali­die­rung über Java­Script mit Struts bzw. dem Vali­da­ti­on-Frame­work. Pri­ma Sache. Die zwei­te Auf­la­ge fer­tig und geht auf die neu­en Ver­sio­nen ein. Die Auto­ren haben eine Web­sei­te, unter der sich eini­ge Kapi­tel als PDF (mit schö­nen far­bi­gen Screen­shots) und der gesam­te Quell­code der 2. Auf­la­ge her­un­ter­la­den lässt. April 2007

Struts. JSP-Appli­ka­tio­nen mit Jakar­ta, JBoss und Apa­che Axis
James Tur­ner, Kevin Bedell. Addi­son-Wes­ley. ISBN 3−8273−2221−9. 2004. 478 Sei­ten
Die­ses Buch stammt aus der Rei­he ›Open Source Libra­ry‹. Da ich es in mei­nem letz­ten Struts-Kurs ver­schenkt habe, aber jetzt noch die CD fin­de, wird es Zeit, das letz­te Relikt weg­zu­schmei­ßen. Da fällt mir auf: Der Name von Kevin Bedell ist falsch geschrie­ben! Kevin Bedall. Auch bei Pearson.ch steht fälsch­li­cher­wei­se ›Kevin Bedall ist ein erfah­re­ner Soft­ware-Pro­fi …‹ (Auf der Web­sei­te von bol.de ste­hen drei Auto­ren: von James Tur­ner, Kevin Bedall, Kevin Bedell 🙂 Das ist aber pein­lich. Und da bin ich gleich bei mei­nem Kri­tik­punkt: Die Über­set­zung ist kaum gelun­gen, so sich bei eini­gen Sät­zen immer dach­te: ›Was wol­len die Auto­ren mir sagen?‹. Somit habe ich das Buch ein­mal für einen Über­blick durch und bin zu Alter­na­ti­ven gegan­gen. Sonst geht das Buch the­ma­tisch auch nicht so tief auf Struts-Eigen­schaf­ten ein. Grund­sätz­lich ist der Auf­bau eines Bei­spie­les mit ›Atti­la dem Hun­nen‹ gelun­gen und auch das Design der Anwen­dung ist ordent­lich. Mit gefällt es, wenn Auto­ren beto­nen, dass man die Form-Beans von den Busi­ness-Beans tren­nen muss, und es auch so rea­li­sie­ren. Eine Lese­pro­ble gibt es bei Goog­le BooksAugust 2006

Dyna­mic Web Pro­gramming Using Java, Java­Script and Infor­mix
Gra­ham Har­r­i­son. Infor­mix Press/Prentice Hall. ISBN 0130861847. 1999. 995 Sei­ten
Kei­ne Ahnung, war­um ich mir das Buch gekauft habe. Es steht schon seit Jah­ren im Regel. Ver­mut­lich wars‘ ein Schnäpp­chen bei eBay. Na ja, jetzt kommt es in die Ton­ne, denn wenn man das Buch ver­schenkt, muss es einem pein­lich sein. Selbst das JDBC- und RMI-Kapi­tel ist noch zu mager. Eigent­lich geht es nur um’s Pro­dukt App­Pa­ge. (Die Infor­mix-Soft­ware muss wahn­sin­nig wich­tig sein, wenn Goog­le da sat­te 80 Sei­ten raus­spuckt.) Juni 2006

Java Ser­ver und Ser­v­lets. Por­tier­ba­re Web-Appli­ka­tio­nen effi­zi­ent ent­wi­ckeln
Peter Roß­bach, Hen­drik Schrei­ber. Addi­son-Wes­ley. ISBN 3827316944. 2000. 438 Sei­ten
Beschäf­tigt sich eigent­lich nur von Sei­te 29 bis 77, also auf etwa 50 Sei­ten, mit Ser­v­lets. Da fehlt mir eini­ges, etwa eine aus­führ­li­che Beschrei­bung der Sicher­heits­as­pek­te, die unse­re Auto­ren nicht groß­ar­tig beleuch­ten. Das Kapi­tel eige­ne ›Web­App-Frame­work‹ ist ziem­lich unnö­tig, da hät­ten die Auto­ren exis­tie­ren­de Tool­kits beschrei­ben kön­nen, die es auch im Jahr 2000 schon gab. Wie Log­ging imple­men­tiert wer­den kann oder OR-Map­per (mit 60 Sei­ten grö­ßer als das Ser­v­let-Kapi­tel!) ist bes­ser in ande­ren Büchern auf­ge­ho­ben. Auch statt ihrer lang­wei­li­gen Ser­v­let-Engi­ne jo! hät­te ich ger­ne etwas zu Tom­cat oder ande­ren Web-Con­tai­nern erfah­ren. Nach der zwei­ten Auf­la­ge folg­te kei­ne wei­te­re und das Buch ist gebraucht über Ama­zon für etwa 5 Euro zu bekom­men. Juni 2006

Mas­te­ring JSP Custom Tags and Tag Libra­ries
James Good­will. ISBN 0471213039. 2002
Aus­rei­chen­de Ein­füh­rung in die Tag­Lib. Zudem Vor­stel­lung der JSTL und der Apa­che Tag­Libs. So lernt man sie mal alle ken­nen. Befrem­dend war die lau­fen­de Nut­zung von new String("Literal"). Klei­ne Feh­ler in den Gra­fi­ken. Juli 2004

Java Ser­v­let Pro­gramming
Jason Hun­ter, Wil­liam Cra­w­ford, O’Reilly, ISBN 389721282X, 2. Auf­la­ge, Ende 2001, 780 Sei­ten
Das Buch gefällt mir ganz gut, könn­te aber mal wie­der aktua­li­siert wer­den, da die zwei­te Auf­la­ge nun auch schon älter ist und nur die Ser­v­let 2.3 Spe­zi­fi­ka­ti­on angeht. (Jason ist aber mit Arti­keln sehr aktiv. So fin­den sich von ihm vie­le Sachen in Online-Maga­zi­nen, etwa in Java­World über die Ser­v­let 2.5 Spe­zi­fi­ka­ti­on.) Das Buch ist sehr gut didak­tisch auf­ge­baut mit inter­es­san­ten Kapi­teln wie Bild-Gene­rie­rung und Inter­na­tio­na­li­sie­rung. Die zwei­te Auf­la­ge beschreibt im Gegen­satz zur ers­ten Auf­la­ge Frame­works (etwa Tea), die mir sehr unnö­tig vor­kom­men. Alles in Allem aber ein Buch was man als ernst­haf­ter Ser­v­let-Pro­gram­mie­rer gut gebrau­chen kann. Ich per­sön­lich fän­de eini­ge Bei­spie­le zum Tom­cat prak­tisch, aber hier geht es ja um Ser­v­lets und um die Anwen­dung und nicht um einen spe­zi­el­len Con­tai­ner. Online gibt es die eine DTD-Beschrei­bung der web.xml-Datei. Sep­tem­ber 2003

Insi­de Ser­v­lets: Ser­ver-Side Pro­gramming for the Java Plat­form
Dus­tin R. Cal­la­way, Addi­son Wes­ley, ISBN: 0201709066, 2. Auf­la­ge.
Kur­ze und ordent­li­che Ein­füh­rung in die Ser­v­lets. Bes­ser soll­te man jedoch zu Jasons Buch grei­fen.

Go To Java Ser­ver Pages
Ste­fan Wil­le, Addi­son-Wes­ley, ISBN 3827318920, Sep­tem­ber 2001, 600 Sei­ten, 79,90 DM
Sehr schön und flüs­sig zu lesen. Kann man sicher­lich gut für Semi­na­re ein­set­zen, da der Lern­stoff hübsch didak­tisch dar­ge­bo­ten wird. Zur Kurs­vor­be­rei­tung wür­de ich es auf jeden Fall kau­fen. Etwas mager fal­len die Frame­works aus. Da hört man näm­lich gar nichts zu. XML fehlt eben­falls. Klei­ne Feh­ler bei Attri­bu­ten und Beans. Dezem­ber 2001

Ser­v­lets und Java­Ser­ver Pages. Prak­ti­scher Leit­fa­den zur Ent­wick­lung dyna­mi­scher Web-Appli­ka­tio­nen
Mar­ty Hall, Markt+Technik, ISBN 3827259452, 2. Auf­la­ge, Novem­ber 200, 552 Sei­ten, DM 99,01
Zuerst viel mir der komi­sche Preis aus. Da kann man über­le­gen und den­ken, ›Na ja, Euro­um­re­chung‹. Doch in Euro macht das Buch 50,62. Zum Inhalt: Das Buch führt sehr anschau­lich und mir vie­len Bei­spiel in Ser­v­lets und dann in JSP ein. Ein Bei­spiel ist wie­der etwas für Aka­de­mi­ker: Prim­zah­len­be­re­chung. Sonst ist mir das Buch eher etwas zu aus­führ­lich, was aber für Ein­stei­ger nichts schlech­tes bedeu­ten muss. Lei­der auch nix zu XML und Frame­works. Immer­hin ent­wi­ckelt der Autor ein Con­nec­tion­Pool; aber haben wie das nicht schon irgend­wo als Stan­dard gese­hen. (Bes­ser wäre doch hier eine Data­Sour­ce und sinn­voll die Erklä­rung, wie man das im Tom­cat kon­fi­gu­riert.) Zudem bekommt man eine Ein­füh­rung in die Imple­men­tie­rung von eige­nen Tags. Obwohl lei­der nichts zu Tom­cat-Apa­che-Zusam­men­ar­beit drin­steht, genau­so wenig wie Opti­mie­rung von Tom­cat wird doch immer wie­der gezeigt, wo wel­che Datei ste­hen muss. Den­noch nichts über War-Archi­ve. Wenn man eine gute Ein­füh­rung in bei­den The­men braucht, man sich aber nicht für einen kon­kre­ten Ser­ver inter­es­siert (was sel­ten vor­kom­men dürf­te) kann ich das Buch emp­feh­len. Man soll­te auch einen Blick auf die Web­sei­te wer­fen, wo vie­le Unter­la­gen lau­ern, etwas Foli­en als PDF-Down­load. Dezem­ber 2001

Java XML Pro­gram­mie­rung pro­fes­sio­nell mit Ser­v­lets und JSP
Alex­an­der Nak­hi­movs­ky, Tom Myers.
Es ist schon erstaun­lich, wie Infor­ma­ti­ker 700 Sei­ten so der­ma­ßen unnütz voll schrei­ben kön­nen. Lis­ting an Lis­ting, Code­seg­ment für Code­seg­ment robbt sich das Auge über die vol­len Sei­ten. Obwohl der XML-Datei durch­aus lesens­wert ist, beginnt das Buch erst mal mit etwas ganz ande­rem. Erst nach 200 Sei­ten hören wir was von XML, vor­her dür­fen wir noch ein­mal etwas von JDBC und for­ma­len Spra­chen hören; die Her­ren erkennt man deut­lich ihre Her­kunft an. Der XML-Teil ist dabei wie­der so unüber­sicht­lich, obwohl alle Nase lang steht, dass es nur ein Aus­zug ist. Stimmt, das zei­gen auch die vie­len Zita­te. Da muss man es auch nicht sel­ber schrei­ben. Dann hin­ten noch rasch etwas von Java-Mail-API, wie­so eigent­lich nichts von Beans? Die kom­men im Gan­zen etwas schwach weg. Auch JSP sind etwas mager. Bei den dyna­mi­schen Sei­ten set­zen die Auto­ren auch dann lie­ber auf eine Eigen­lö­sung, wofür sie erst ein­mal einen Par­ser bau­en. Dann fol­gen immer als for­ma­le Gram­ma­tik Aus­zü­ge aus den DTDs. Die­ser Inhalt hät­te bes­ser in ein XML-Buch gepasst. Dann stö­ren mei­ner beschei­de­nen Ansicht nach die selbst­ge­fäl­li­gen Aus­sa­gen: ›Wir sind so toll, hier ist ja das ers­te Buch, wo so etwas erklärt wird.‹ Super. Es wird nicht das letz­te blei­ben. Janu­ar 2001