SOFTWAREENTWICKLUNG IN BERLIN
beratung, konzeption und umsetzung

GWT

10. Juli 2012 by Philip Sommer


GWT: Google Web Toolkit

Webapplikationen sind nicht nur hoch im Kurs und sehr im Trend, sondern sind in ihrer Komplexität extrem gewachsen. Während sich Desktopanwendungen im Wesentlichen auf die drei „großen“ Betriebssysteme (Windows, MacOs, Linux) fragmentieren, ist der Browsermarkt im Webbereich mindestens ebenso umkämpft. Jeder der Browser hat seine Eigenheiten in der Verarbeitung von Markup (HTML), JavaScript und CSS. Insbesondere der Internet Explorer ist berüchtigt, nicht gerade intuitive eigene Wege zu gehen. Dies stellt den geneigten Webentwickler vor nicht unerhebliche Probleme, die kaum durch bereinigende JavaScript-Bibliotheken wie jQuery gelöst werden können. Letztlich muss der Entwickler den entstandenen Code nach Fertigstellung seines Produktes bzw. Prototypen auf allen Browsern testen und mittels Browserweichen und Trickserei seinen Code bereinigen um ihn für alle Varianten der Browser lauffähig zu machen.

Hier geht GWT einen eigenen Weg. GWT nutzt die klassische Java-Toolchain und ermöglicht damit komfortables entwickeln. Das Google Web Toolkit besitzt einen Java zu JavaScript-Compiler und übersetzt klassisches Java in hochgradig optimiertes JavaScript. Hierbei nutzt GWT das sogenannte preferred binding und liefert jedem anfragenden Browser auf Basis seines User-Agents eine speziell für ihn kompilierte und optimierte Permutation des Codes aus.
Die Vorteile für den Softwareentwickler liegen auf der Hand: Die klassischen Entwicklungswerkzeuge, welche man aus dem Java-Universum kennt, können für die GWT-Entwicklung nahezu uneingeschränkt angewendet werden. Als Entwicklungsumgebung wird Eclipse oder IntelliJ genutzt, zum Testen des Codes üblicherweise JUNIT mit Mockito (oder einem anderen Mocking-Framework). Gin als für GWT optimierte Variante von Googles Guice wird zur Dependency Injection verwendet. Darüber hinaus empfielt sich die Verwendung von Maven als Build Manager.

Das komplette Webprojekt kann also in Eclipse auf Java-Basis entwickelt werden. Wie beschrieben, erzeugt der GWT-Compiler aus dem Java JavaScript. DOM-Elemente lassen sich programmatisch aus dem GWT-Code erzeugen oder auch in XML-Dateien definieren. Letztlich äußert sich die Praxis so, dass in einzelnen XML-Teilen das browserunabhängige HTML vordefiniert ist, was in den JavaScript-Code mit einkompiliert wird.
GWT besitzt eine kleine Menge an Standardwidgets, die einfach erweiterbar sind und elementare GUI-Elemente abbilden.
Sowohl Client als auch Server (Tomcat, Jetty) können vom Softwareentwickler in Java erstellt werden und per RPC kommunizieren. Darüber hinaus ist auch ein problemloser Betrieb in einer serviceorientierten Architektur über das REST-Interface o.ä. möglich. Für den Testbetrieb besitzt GWT einen Hosted Mode, in dem der Entwickler seine Anwendung lokal laufen lassen kann.
GWT besitzt zur Kommunikation mit anderen Diensten und/oder einem Backend die Möglichkeit, asynchron zu kommunizieren, insofern ist es nicht mehr nötig zusätzliche AJAX-Blibliotheken zu verwenden.

Die wichtigsten Argumente für GWT:

  • Durch Verwendung von Java als Programmiersprache sind komplexe Anwendungen überschaubar
  • Softwareentwickler im Java-Umfeld sind gut zu finden
  • GWT erzeugt stark browseroptimiertes JavaScript ( minimiert und optimiert )
  • Unterstützung von CodeSplitting ( nur benötigte Code-Bereiche werden vom Client geladen, dynamisches Nachladen bei Bedarf )
  • Viele etablierte Bibliotheken und umfangreiche Toolchain
  • Qualitätssicherung durch hohe Testabdeckung (JUNIT, Mockito)
  • schmaler Boilerplate-Code durch Dependency Injection