Google Web Toolkit (GWT)
Kursziele
Mit dem ›Google Web Toolkit‹ (GWT) kam 2006 ein entwicklerfreundliches und freies Framework zur Programmierung von Web 2.0 Ajax-Applikationen auf den Markt. Eine Besonderheit ist der Java-zu-JavaScript-Compiler, der Java-Entwicklern das Arbeiten in ihrer gewohnten Entwicklungsumgebung ermöglicht. Der GWT-Compiler übersetzt den Java-Code in eine HTML-Seite mit CSS und JavaScript-Funktionen. Die Seminarteilnehmer lernen praxisnah, Web 2.0 Ajax-Applikationen mit dem Google Web Toolkit zu erstellen, welche Entwicklungs-Tools geboten und wie effektive mehrschichtige GWT-Anwendungen entworfen werden. Das Seminar führt ebenfalls den Debug-Prozess und zusätzliche freie und kommerzielle Komponenten vor.
Zielgruppe
Software-EntwicklerEmpfohlene Dauer
4 Tage, insgesamt 24 ZeitstundenInhalte
![[LOGO]](../../images/seminare/logos/gwt.png)
- Einführung in das GWT
- Ajax und Web 2.0-Anwendungen, ›Rich Internet Anwendungen‹ (RIA)
- Dashboard Demo-Applikation
- Download und Installation von GWT, GWT-Lizenz
- Browser-Unterstütztung
- Entwicklungsumgebung, GWT-Projekte unter Eclipse, NetBeans IDE, IntelliJ IDEA
- GWT Designer, Gui-Builder als WYSIWYG-Tool
- Projektstruktur einer GWT-Anwendung
- Client- und Servercode Unterscheidung
- Erste kleine Anwendung, Entwicklungszyklus
-RootPanel,EntryPoint,onModuleLoad()
- GWT-Compiler: Wie GWT Java in JavaScript compiliert
- Hosted-Modus (GWT-Emulator) und Web-Modus
- JRE-Emulation und GWT-Bibliothek
- GWT im Vergleich zu Swing, JSF, Ruby on Rails, Echo2 - GWT-Widgets und Ereignisse
- Standard-Widgets des GWT:Label,Button,TextBox,HyperLink,Tree, ...
- Bestehende HTML-Elemente wie<input type="text" />in GWT-Widgets umwandeln
- Ereignisbehandlung: Listener und Handler
-onBrowserEvent(), Browser-Standardereignisse,KeyboardListenerAdapter
- Bilder:Image-Widget, Prefetching
-RichTextAreaundImageBundle
-DatePicker,DateBox
- Themes standard, chrome and dark
-VerticalPanel,HorizontalPanel,FlowPanel,AbsolutPanel
-ScrollPanel,DockPanel,CellPanel,TabPanel,LazyPanel
- Tabellen,FlexTable
- Drag-and-Drop
- Zusammengesetze Widgets,Composite-Klasse
- Neue Widgets erstellen
- Widgets im DOM-Baum erstellen und modifizieren
- Styling von Widgets über CSS, DIV-IDs, Einbinden der CSS-Dateien - Remote Procedure Call (RPC) mit GWT
- GWT in der Mehrschichten-Architektur
- RPC-Konzepte zur (a)synchronen Kommunikation
- Schnittstellen und Klassen des GWT-RPC
-RemoteService,onSuccess(),onFailure(),AsyncCallback
- Schnittstelle deklarieren und Service implementieren
- Fassaden zur Vereinfachung des GWT-RPC-Aufrufs
- GWT-serialisierbare Objekte, Collections
-IsSerializable,Serializable, eigene Serialisierer
- RPC-Servlet konfigurieren
- Alternativen zu GWT-RPC: JSON RPC für GWT - Ajax, HTML-Formulare und JSON
- Abfragen und HTTP-Aufrufe mit demRequestBuilder
- HTTP-Methoden
- XML-Dateien laden
-FormPanel, PayPal-Anbindung als Beispiel
- Formularelemente
- JSON-Dateiformat
- JSON Mashups, Daten von fremden Webseiten laden
-JSONParser,JSONValue,JSONObject, Arrays - Java Script Native Interface (JSNI) in GWT
- JavaScript und GWT Kommminikation
- JSNI-Syntax,/*-{/}-*/
- Aus JavaScript Java-Eigenschaften nutzen
- GWT JavaScriptObject (JSO)
- Ausnahmen,JavaScriptException
- JavaScript-Bibliotheken einbinden und kapseln
- JavaScript HTML-Editor FCKeditor als Beispiel einbetten
- Dojo-Integration in GWT - Anwendungen modularisieren
- Modulkonzept von GWT
- Modul-XML, Aufbau der Standard-Projektstruktur
- Module laden, neue Module einbinden, Module umbenennen
- Pfade definieren
- Eigene Module bauen
- Java-Paket-Struktur - Ergänzende GWT-Widgets und Widget-Sammlungen
- GWT-Ext (LGPL v3) und Ext GWT (kommerziell und GPL v3)
- Autovervollständigung, editierbare Tabellen und Bäume, Menüs, Grids, Dialoge
- GWT-Ext 2.0 Charts
- Google Maps GWT API
- SmartGWT (GWT API's for SmartClient)
- GWT Widget Library
- GWT Component Library - Weitere GWT-Eigenschaften
- Browserverlauf, Umgang mit Browser-Zurück, lesezeichenfreundliche Seiten
- URL-Parameter:page.html&company=tutego
- Sitzugsverwaltung, Cookies
- Schutz vor Cross-Site Scripting (XSS), XSRF-Schutz
- GWT und Java-Applets und Flash, Kommunikation zwischen GWT und Java Applets
- Browserunterschiede berücksichtigen
- Caching/Versionierung von Jar-Dateien
- Deferred Binding
- Statische und dynamische Internationalisierung/Lokalisierung von GWT-Anwendungen
- Data Binding
- Benutzerdefinierte Eigenschaften
- Testen und debuggen, GWT-Logging und log4j
- Deployment auf Webserver und Dateisystem, WAR-Archive bauen
- Datei-Upload zum Server
- Testen von GWT-Anwendungen mit JUnit
- Deployment und Build-Management mit Ant und Maven
- GWT-Generatoren, automatische Codegenerierung für Dashboard
- Browserunterschiede berücksichtigen
- Lademechanismus von GWT, Bootstrapping
- Performance-Optimierung: Caching, Image-Bundles, Lazy-loading, Prefetching
- GWT-Applikationen suchmaschinenoptimiert gestalten, GWT-SEO
- GWT und Google Gears
- GWT und Spring im Backend, GWT-Spring-Integration
- GWT und Hibernate, DTO-Layer entwerfen
Voraussetzungen
Der Kurs ›Java für Fortgeschrittene‹ oder ›Java für Umsteiger‹.
Software
Als Laufzeitumgebung wird standardmäßig Java SE 6 von Sun zusammen mit der Entwicklungsumgebung Eclipse und dem ›Google Plugin for Eclipse‹ zusammen mit dem Google Web Toolkit Version 1.6 eingesetzt. Seit GWT 1.5 bietet das Toolkit sowohl Widget-Animationen und Accessibility-Unterstützung als auch Java 5-Features mit Generics, Annotationen, Aufzählungen sowie den Datentyp long. Des Weiteren unterstützt die JRE-Emulation den StringBuilder und weitere seit Java 5 eingezogenen Datenstrukturen. Mit GWT 1.6 können auch realisierte Schnittstellenmethoden mit @Override annotiert werden, eine Möglichkeit, die Java 6 erlaubt, Java 5 aber verbietet.
Schlagwörter
Unternehmen
- Google Inc.
![Zu einem Bookmark-Anbieter hinzufügen [Addthis]](../../images/bookmarks/addthis.gif)
![Zu Google Bookmarks hinzufügen [Google Bookmarks]](../../images/bookmarks/google.png)
![Zu Yahoo! Bookmarks hinzufügen [Yahoo! Bookmarks]](../../images/bookmarks/yahoo.png)
![Zu Delicius hinzufügen [Delicius]](../../images/bookmarks/delicious.png)
![Zu Mister Wong hinzufügen [Mister Wong]](../../images/bookmarks/misterwong.png)