30.03.2010
Das nächste Webframework – GWT gegen Spring MVC
Obwohl Sun mit der Entwicklung von JSF versucht hat die Vielfalt der Webframeworks (Struts, Webwork, Spring MVC um nur ein paar zu nennen) etwas einzudämmen und einen allgemeinverbindlichen Standard zu setzen, scheint die Konsolidierung in diesem Markt auszubleiben. Vor kurzem hatte Google nun das Google Web Toolkit (GWT) in der Version 2.0 herausgebracht, für mich mal ein Grund mir das ganze auf seine Praxistauglichkeit hin anzusehen.
Auf den Ersten Blick muss ich ganz einfach sagen, gab es den “WOW” Effekt:
- Die Installation ist kinderleicht, es wird nur ein JAR benötigt sowie ein Browser Plugin was dieser aber selbständig nachläd. Für Eclipse (nach wie vor meine primary IDE) gibt es auch gleich ein Plugin und ich hatte in 15 Minuten mein “Hello World” am laufen.
- Das Konzept ist wirklich innovativ, man schreib Java Code aber mit Hilfe eines Java -> JavaScript Compiler wird sämtlicher Client Code in JavaScript realisiert. Man muss sich um die konkrete Erzeugung des JavaScript Codes aber überhaupt nicht kümmern, macht alles der Compiler.
- Dadurch dass fast sämtliche Logik Client seitig läuft kommt ein “Rich Client Gefühl” auf, der Benutzer bekommt sofort Reaktionen zu sehen, die Oberfläche fühlt sich wie eine native Anwendung an.
- Es gibt hervorraagende Ergänzungsbibliotheken man kann sehr einfach Widgets erzeugen, fühlt sich fast an wie das Programmieren einer Swing Anwendung.
- Auch Roundtrips zum Server kann man machen, dazu muss man dann RPC Calls implementieren auch dafür liefert Google gleich die Anleitung mit, es ist aber nicht ganz trivial.
Dann habe ich versucht, ein konkretes Projekt zu übertragen, da kam dann allerdings doch die Ernüchterung:
- Das Projekt hat ein “Accordion” Layout bei dem es aber auch möglich sein muss mehrere Bereiche gleichzeitg zu öffnen. Der Standard Container vom GWT unterstützt das nicht. Da das ganze ne “Closed Box” ist erst mal Feierabend.
- Nächster Versuch war das ganze mit der Erweiterung “Smart GWT” zu realisieren. Dort gibt es sehr viele erstklassige Widgets, Problem hier: Ich benötige in den einzelnen Bereichen Radio Buttons. Die aus dem Standard GWT laufen immer auf einem Fehler, die aus dem “Smart GWT” kann man nicht disabeln.
- Ich werde bei Zeiten noch mal “EXT GWT” prüfen
Mein erstes Zwischenfazit steht aber schon fest:
Wenn man Webanwendungen realisieren möchte die sich wie “Rich Clients” anfühlen ist GWT eine gute Wahl. Die Anfangsladezeit ist zwar höher, dafür ist aber danach alles rasend fix. Man muss sich aber darüber im klaren sein, dass man den Komfort mit einer Reduzierung der Flexibilität erkauft. Man muss die Benutzeroberfläche (mehr oder weniger) mit Hilfe der vorhandenen Widgets realisieren. Ähnliche wie bei JSF gibt man die konkrete Kontrolle über die Webseite (das HTML) aus der Hand. Gerade für “normale” Webseiten ist das denke ich nicht akzeptabel, für Web “Anwendungen” aber sehr wohl.
GWT kann also das Portfolio für Webanwendungen durchaus bereichern, als alleinige Technologie reicht es dagegen nicht aus.
Im smartGWT gibt es RadioButoons, die aber RadioGroupItem heisen.
Das stimmt, allerdings sind diese leider etwas spärlich dokumentiert. Zumindest habe ich keine Möglichkeit gefunden einzelne Optionen zu deaktivieren.