Dynamische Internet-Anwendungen: GWT aus Entwicklerperspektive

//SEIBERT/MEDIA entwickelt interaktive Anwendungen mit dem Google Web Toolkit (GWT), dem stabilen, ausgereiften Open-Source-Framework, das seine Eignung für den Projekteinsatz in Form eindrucksvoller Referenzen wie beispielsweise contactoffice.com, yournextread.com und natürlich Google längst unter Beweis gestellt hat. Nachdem wir im ersten Artikel zum Thema auf den Einsatz von GWT im Projekt eingegangen sind, sehen wir uns das Framework nun aus Entwicklerperspektive an.

GWT: Geschwindigkeit und erweiterte AJAX-Funktionalität für gute Nutzererlebnisse

GWT ist kein Backend-, sondern ein Client-Framework. Grundsätzlich bietet GWT eine komfortable Möglichkeit, komplette oder Teile von Websites zu erzeugen und dynamische Oberflächen zu entwickeln, ohne besondere Anforderungen an das Backend zu stellen.

Ein überzeugendes Argument für den Einsatz von GWT ist die Browser-Kompatibilität: GWT unterstützt alle gängigen Browser, wodurch nicht zuletzt weniger Debugging-Aufwand betrieben werden muss. Zudem wird bei GWT-Anwendungen die Oberfläche im Browser erzeugt, wodurch der Server  entlastet wird. Und nicht zuletzt erlaubt GWT AJAX-Funktionen mit Deep-Links und Browser-Back, was sonst in AJAX-Anwendungen nicht so einfach möglich ist. Aus Nutzersicht stehen GWT-Applikationen somit für gute Nutzererlebnisse durch eine hohe Geschwindigkeit, erweiterte AJAX-Funktionalität und die Lauffähigkeit ohne zusätzliche Plugins auf User-Seite.

Technische Besonderheiten von GWT

Durch die Entwicklung der Oberfläche komplett in Java und die dadurch hervorragende IDE-Unterstützung (Entwicklungsumgebung) ergeben sich entscheidende Vorteile im Vergleich zur Oberflächenentwicklung mit JavaScript und HTML:

  • Autovervollständigung
  • Syntaxprüfung
  • Suggestions bei Fehlern
  • feste Datentypen
  • Speichermanagement
  • strikte Objektorientierung
  • ausgefeiltes Exception-Handling

GWT-Anwendungen werden mittels Widgets programmiert. Hier ähnelt das Vorgehen weniger der Arbeit mit HTML, sondern eher der mit AWT (einer Programmierschnittstelle zur Erstellung und Darstellung einer plattformunabhängigen GUI) oder Swing (einer API und Grafikbibliothek zur Erzeugung von GUIs). Doch es besteht auch die Möglichkeit, HTML mithilfe von UiBind einzubinden. Der UiBinder ist ein deklaratives UI-Framework zur schnellen Realisierung von Benutzeroberflächen mithilfe einer XML-Syntax, wobei sich Präsentation und Anwendungslogik strikt voneinander trennen lassen.

Für die einfache Integration bestehender JavaScript-Bibliotheken steht das JNSI-Feature zur Verfügung, die Kompilierung von Java zu JavaScript erfolgt mit einem eingebauten Compiler.

Aus technologischer Sicht nicht uninteressant ist das flexible Backend: Das Anwendungs-Backend kann in allen Programmiersprachen erstellt werden, Java eignet sich hier aber erfahrungsgemäß am besten.

Wichtige Funktionalitäten sind darüber hinaus die gute Integrierbarkeit in Eclipse via Plugin, die Direktunterstützung für die Internationalisierung und eine Debug-Umgebung, die das schnelle Finden und Beheben von Fehlern unterstützt. Im Entwicklungsmodus, der mithilfe eines Plugins das Debugging in verschiedenen Browsern ermöglicht, kommt GWT ohne Neu-Kompilieren aus. Vor allem hierdurch kommt es zu einer doch signifikanten Zeitersparnis im Projekt.

Im Grunde gleicht die Entwicklung der in „normalem“ Java: Für die Frontend-Entwicklung werden Java-Klassen aus dem java.util-Package oder mittels Erweiterung auch eigene Klassen verwendet.

Die vielen ausgereiften, teils kostenlosen, teils kommerziellen Erweiterungen machen GWT zu einem mächtigen Werkzeug, das längst reif für den Einsatz im Unternehmensumfeld ist. Im Smart GWT Showcase können Sie sich einen umfassenden Überblick verschaffen, was sich mit GWT dank der sehr vielen Extensions auf die Beine stellen lässt. Beeindruckend.

//SEIBERT/MEDIA entwickelt mit GWT

Derzeit realisiert //SEIBERT/MEDIA zwei große Projekte mit GWT und hat hier umfassende Erfahrungen gesammelt. Unser aktuelles Projekt TwentyFeet, das Auswertungs-Tool für professionelle Social-Media-Aktivitäten, gibt Ihnen einen kompakten Überblick über die Möglichkeiten des Frameworks.

Planen Sie ein Software-Projekt? Möchten Sie Ihre bestehende Applikation mit neuen Funktionen ausstatten oder optimieren? Die Entwickler von //SEIBERT/MEDIA/TECHNOLOGIES sind Experten in der Anwendungsentwicklung mit Java, GWT, Groovy & Grails und Perl und helfen Ihnen gerne weiter. Bitte sprechen Sie uns unverbindlich an!

Weiterführende Informationen

Der quelloffene GWT-Code
Beispiele für GWT-Projekte
Grails: Kurze Entwicklungszeiten und nahtlose Java-Integration (Vodcast)
Plattform zum sicheren Datenaustausch für BodeHewitt entwickelt
Das Google Web Toolkit


Mehr über die Creative-Commons-Lizenz erfahren

ACHTUNG!
Unsere Blogartikel sind echte Zeitdokumente und werden nicht aktualisiert. Es ist daher möglich, dass die Inhalte veraltet sind und nicht mehr dem neuesten Stand entsprechen. Dafür übernehmen wir keinerlei Gewähr.

5 thoughts on “Dynamische Internet-Anwendungen: GWT aus Entwicklerperspektive”

  1. Interessanter Artikel. Ergänzend sollte man aber noch erwähnen, dass das Einbinden von externen JavaScript-Snippets häufig weit aufwändiger ist, als bei der herkömlichen HTML-Entwicklung. Wo man bei der traditionellen Entwicklung einfach nur den JS-Knoten einbindet, muss in GWT das externe JS-Snippet oft aufwändig via JSNI implementiert werden oder umständlich per iFrame ins Seitenlayout integriert werden.

    Bei der Entscheidung für GWT sollte man daher im Hinterkopf behalten, dass externe Snippets des öfteren eine Herausforderung darstellen können.

  2. Ich finde es ehrlich gesagt problematisch, wenn ein ausgereifter Java-Programmierer notwendig ist, um Frontends in HTML und JavaScript zu entwickeln. Schon für einfache Änderungen in der Oberfläche muss ein komplexes System bemüht werden (ich kenne GWT nicht, von daher kann ich über die Komplexität nur spekulieren).

    Gute IDE-Unterstützung gibt es übrigens auch für HTML und Javascript, so dass die oben genannten Vorteile in dieser Richtung nicht wirklich welche sind. Auch die strikte Objektorientierung muss meines Erachtens kein Vorteil sein und schon gar kein Grund, GWT einzusetzen. Hier wird ja eine ganze Abstraktionsschicht eingeschoben, die in meinen Augen nicht immer notwendig ist. Daher sollte der Einsatz von GWT gut überlegt sein, denn man kann sich damit schnell einen Vorschlaghammer ins Haus holen, wenn ein einfacher Hammer aus der Werkzeugkiste genügen würde :). GWT-Anwendungen können nichts, was HTML und Javascript nicht auch können, nichts anderes kommt ja hinten raus. Ob sich die andere Art zu entwickeln wirklich lohnt, sollte man individuell entscheiden und sich wirklich von den Anforderungen und weniger von dem state-of-the-art leiten lassen.

    Dass die Barrierearmut auf der Strecke bleibt, ist übrigens schade. Oder kann man mit GWT auch zugängliche Alternativen zur reinen Javascript-Anwendung erstellen?

    P.S. Der Link auf “contactoffice” funktioniert übrigens nicht: das “beta” aus der URL kann raus.

  3. Karl: Ja, ich stimme Dir zu. GWT ist eine mächtige Kanone und keine Allzweckwaffe, mit der man auf jeden sprichwörtlichen Spatzen schießen sollte. Wenn Du aber was wirklich großes, komplexes vorhast (z.B. GMail, die neue Twitter-Homepage, …) dann ist GWT die richtige Wahl, denke ich.

  4. Hmm. Ich bin da noch skeptisch. Vielleicht sollte man mal wissenschaftlich vorgehen und den Einsatz von GWT mit dem Einsatz herkömmlicher Methoden untersuchen und vergleichen (vielleicht macht das ja mal jemand im Rahmen einer Diplomarbeit :))
    Interessant wäre z.B. eine Gegenüberstellung von Entwicklungszeit, Kosten (Programmierer, Infrastruktur, …), Komplexität und Fehlern. Ich sehe ehrlich gesagt immer noch kaum Vorteile in GWT. Mich erschreckt auch, dass sogar Wikipedia (gut, das ist natürlich nicht das Maß der Dinge) lediglich die IDE-Verwendung hervorhebt, wo ist da der Vorteil?
    GWT hat sicher seine Daseinsberechtigung, ohne Zweifel, aber in meinen Augen ist das eher eine Nische abseits des “normalen” Arbeitsfeldes der Web-Programmierung.

Schreibe einen Kommentar