GWT (Google web toolkit)

Das Google Web Toolkit (GWT) ist ein Web-Framework, um Web-Applikationen in Java zu programmieren. Programmieren, Testen und kompilieren der spezifischen Applikation sind wie bei der Erstellung herkömmlicher Java-Programme innerhalb der Entwicklungsumgebung von GWT möglich. GWT ist dabei nicht vergleichbar mit einem Applet, sondern der ganze Programmcode wird in HTML, Cascading Style Sheet (CSS) und JavaScript transformiert. Dadurch ist für die Ausführung keine Java Virtual Machine (JVM) mehr notwendig. GWT wurde 2006 von Google veröffentlicht und steht als Open Source zur Verfügung.


Google Web Toolkit unterscheidet den Hosted Mode und den Web Mode. Der Hosted Mode unterstützt das Debugging von Java Applikationen. Diese werden als Bytecode durch die integrierte Java Virtual Machine (JVM) ausgeführt. Zudem ist in GWT ein Applicationserver (Tomcat) enthalten. Die Applikation wird im Hosted Mode programmiert, damit die Vorteile der Funktionen zum Java-Debugging verwendet werden können. Im Web Mode wird die Applikation durch den integrierten GWT-Compiler in JavaScript, HTML und CSS compiliert, so dass der Anwender schließlich nur die Web Mode Version zur Verfügung gestellt bekommt.

Google Web Toolkit (GWT)

Google Web Toolkit (GWT)

Die GWT-Architektur integriert verschiedene Komponenten:

GWT Java-to-JavaScript Compiler. Diese Komponente übersetzt den Java-Programmcode in JavaScript und wird benötigt um letztendlich die Applikation im Web Mode ausführen zu können. Dabei wird eine statische HTML-Datei als Container erstellt, jedoch nur die verwendeten Teile des Frameworks mitgeliefert. Der Compiler erstellt ein Verzeichnis für jedes compilierte Software-Modul.

GWT Hosted Web Browser. Das ist ein spezieller Web-Browser, der die Darstellung von GWT-Applikationen im Hosted Mode ermöglicht.

JRE Emulation Library. Diese Komponente enthält die häufig genutzten Java Standard Klassenbibliotheken inklusive der java.lang und java.util Pakete.

GWT Web UI Class Library. Hier sind benutzerdefinierte Interfaces und Klassen integriert, mit welchen Web Browser Widgets wie z.B: Buttons, Text Boxes, Bilder und Text erstellt werden können. Die Gestaltung der grafischen Benutzeroberfläche (GUI) kann dabei ähnlich wie mit dem Framework Swing erfolgen.

Für eine Client-Server-Kommunikation werden Java-Objekte mit Hilfe der Server-Kommunikations-Methode Remote Procedure Call (RPC) über HTTP vom Client zum Server und umgekehrt geschickt.

Die direkte Verwendung von JavaScript innerhalb des originären Java-Programmcodes ist möglich über das JavaScript Native Interface. Damit können beispielsweise Script-spezifische Erweiterungen, die nicht durch die Verwendung der Java-Bibliothek möglich sind, direkt in JavaScript erstellt werden.

Die GWT-Entwicklungsumgebung besteht aus Eclipse, GWT-Designer ( Plugin für Eclipse), NetBeans und IntelliJ IDEA.

GWT-Betrachtungen

Als vorteilhaft ist die Verwendung von GWT hinsichtlich folgender Sichtweisen:

  • die Web-Applikation ist kein Java Programmcode oder Applet und benötigt daher auch keine Java Virtual Machine (JVM),
  • die einzige Voraussetzung zur Laufzeit ist ein Browser,
  • die Programmierung ist ähnlich des Frameworks Swing,
  • eine reichhaltige Entwicklungsbibliothek ist vorhanden (UI, AJAX, etc.)
  • es ist ein leichter Zugang für Java Desktop Entwickler gegeben,
  • es ist Open Source,
  • Google Know-How bezüglich Caching und Code-Optimierungen ist gegeben,
  • eine klare Trennung von statischen Web-Inhalten, dynamischer Oberfläche und Server-seitigem Code ist möglich und
  • es gibt eine große Community sowie eine gute und übersichtliche Dokumentation.
Dagegen können als nachteilig betrachtet werden:

  • die Integration in bestehende Infrastrukturen ist eher schwierig und
  • die Integration von eigenen Komponenten ist aufwendig.
http://www.instantiations.com/flash/gwtd_demo/gwtd_overview.html

Informationen zum Artikel
Deutsch: Google Web Toolkit
Englisch: Google web toolkit - GWT
Veröffentlicht: 28.10.2013
Wörter: 541
Tags: #Web-Software
Links: AJAX (asynchronous JavaScript and XML), Applet, Bild, Bytecode, Caching