{"id":465,"date":"2010-03-05T13:45:00","date_gmt":"2010-03-05T13:45:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=465"},"modified":"2010-04-12T23:09:41","modified_gmt":"2010-04-12T21:09:41","slug":"buchkritik-%e2%80%9cgoogle-web-toolkit-gwt-java-ajax-programming-a-practical-guide-to-google-web-toolkit-for-creating-ajax-applications-with-java%e2%80%9d","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2010\/03\/buchkritik-%e2%80%9cgoogle-web-toolkit-gwt-java-ajax-programming-a-practical-guide-to-google-web-toolkit-for-creating-ajax-applications-with-java%e2%80%9d\/","title":{"rendered":"Buchkritik \u201cGoogle Web Toolkit . GWT Java AJAX Programming. A practical guide to Google Web Toolkit for creating AJAX applications with Java\u201d"},"content":{"rendered":"<p><i>Prabhakar Chaganti. Packt Publishing. ISBN 1847191002. 15. Februar 2007. 248 Seiten<\/i>  <\/p>\n<p>Didaktisch ist das Buch deutlich besser aufgebaut als GWT in Action, allerdings geht es deutlich weniger in die Tiefe. W\u00e4hrend die Autoren ein einfaches Beispiel zur Internationalisierung angeben und dann schreiben \u201eThe I18N support in GWT is quite extensive and can be used to support either simple or complicated internationalization scenarios.\u201c 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\u00e4chst 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\u00fcgend. Es beginnt schon fr\u00fch mit dem Satz:  <\/p>\n<blockquote>\n<p>When we wish to draw your attention to a particular part of a code block, the relevant lines or items will be made bold:  <\/p>\n<p>calendarPanel.add(calendarGrid); <br \/>calendarPanel.add(todayButton);<\/p>\n<\/blockquote>\n<p>Und dann steht das noch nicht mal in der Einleitung in bold.  <\/p>\n<p>Einr\u00fcckung und Formatierung sind im ganzen Buch sehr merkw\u00fcrdig. Die Listings besitzen oft am Anfang eine sehr hohe Einr\u00fcckung, um dann die verbleibenden Zeilen an den unm\u00f6glichsten Stellen umbrechen zu m\u00fcssen. Einige Fehler sind sicherlich nur Unachtsamkeiten. Wie die folgende:  <\/p>\n<blockquote>\n<p>Primitive types\u2014character, byte, short, integer, long, <b>B<\/b>oolean, float, and double <br \/>Primitive type wrapper classes\u2014<b>c<\/b>haracter, <b>b<\/b>yte, <b>s<\/b>hort, <b>i<\/b>nteger, <b>l<\/b>ong, Boolean, <b>f<\/b>loat, and <b>d<\/b>ouble<\/p>\n<\/blockquote>\n<p>Oder dann zeigt ein Screenshot bei den Primzahlenbeispielen eine Zahl in Anf\u00fchrungszeichen, doch im Quellocode steht:<\/p>\n<pre>Window.alert(\"Yes, \"+ primeNumber.getText() ...<\/pre>\n<p><\/p>\n<p>Es fehlt hier, genauso wie bei der Fallunterscheidung beim No, das einleitende Hochkomma. Bei Konstruktoren ist ein einfaches <code>super();<\/code> sicherlich nicht als explizite Anweisung n\u00f6tig. Einige Kritikpunkte betreffen die Namensgebung. Da hei\u00dft dann eine Methode gro\u00dfgeschrieben <code>ShowText()<\/code> oder <code>onEventpreview()<\/code>. Stilistisch l\u00e4sst sich vielleicht noch <code>for (; rs.next();)<\/code> mit einem einfachen <code>while( rs.next() )<\/code> schreiben. Und warum sehe ich das bei so vielen Autoren Felddeklarationen der Art<\/p>\n<pre>private String[] items = new String[]{\"apple\", \"peach\", \"orange\", \"banana\", \"plum\", \"avocado\", ...<\/pre>\n<p><\/p>\n<p>Wenn es auch einfach nur<\/p>\n<pre>private String[] items = {\"apple\", \"peach\", \"orange\", \"banana\", \"plum\", \"avocado\", ...<\/pre>\n<p><\/p>\n<p>hei\u00dfen k\u00f6nnte? Viele Beispiele tragen im Quellcode f\u00fcr die GWT-Komponenten CSS-Zuweisungen wie<br \/>searchText.setStyleName(&#8222;liveSearch-TextBox&#8220;);<br \/>Doch die CSS-Datei ist nicht angegeben! F\u00fcr die Listings h\u00e4tte das eigentlich auch wegfallen k\u00f6nnen\u2014hier muss man die Beispiele von CD oder aus dem Internet nehmen. Mit den Styling ist auch eine andere Sache krumm. Statt &lt;img border=&#8217;0&#8242; src=&#8217;images\/blank.gif&#8217;\/&gt; f\u00fcr eine Tabelle zu schreiben, w\u00e4re hier wohl CSS besser, also etwa <code>&lt;img class=\"border:0\" src='images\/blank.gif'\/&gt;<\/code>. Bei den Schaltfl\u00e4chen m\u00fcssen HTML-Zeichen nicht ausmaskiert werden: <code>new Button(\"&amp;lt;\", this); new Button(\"&amp;gt;\", this);<\/code> ist schlicht falsch. In der Abbildung auf Seite 41 taucht pl\u00f6tzlich eine Schnittstelle <code>RemoteServiceAsync<\/code> auf. Die angeblich selbst geschriebene Schnittstelle gibt es nicht, das sollte <code>PrimesServiceAsync<\/code> hei\u00dfen. Beim Beispiel mit Auto Form Fill \u00fcbertr\u00e4gt der GWT-RPC-Service eine <code>HashMap<\/code> mit den Daten. Eine interessante Alternative w\u00e4re, 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\u00e4hlt hat, in dem erst der Quellcode als Tue-Dies-Anweisungen aufgef\u00fchrt wird und sp\u00e4ter die zentralen Stellen beim Was-haben-wir-eigentlich-gemacht-Teil wiederholt. Das kostet nat\u00fcrlich Platz beim Druck und h\u00e4tte kompakter ausfallen k\u00f6nnen. Einige Beispiele geben Beispiele f\u00fcr eine Ajax-Bibliotehk an, die sonst aber nicht so weit verbreitet ist. Eine Sache gibt es sogar, die im Action-Buch nicht steht \u2013 und die ich auch dort vermisste habe: wie man Dokumente l\u00e4dt. Hier ist es: <code>HTTPRequest.asyncGet(\"customers.csv\", new ResponseTextHandler() )<\/code>. Eine Auflistung der unterst\u00fctzten APIs fehlt jedoch auch hier. In der Summe bleibt ein nettes gut lesbares Buch, welches schnell gelesen ist und auch nicht schwer ist. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u00e4hrend die Autoren ein einfaches Beispiel zur Internationalisierung angeben und dann schreiben \u201eThe I18N support in GWT is quite extensive and can be used to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[6],"tags":[],"class_list":["post-465","post","type-post","status-publish","format-standard","hentry","category-rezension"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=465"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/465\/revisions"}],"predecessor-version":[{"id":543,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/465\/revisions\/543"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}