JAX 2007: GWT – Creating ajaxified web applications with ease (Jens Nixdorf, Christian Bien, prodyna)

Session war auf Deutsch, trotz des Titels.

 

Teaser: Showcase

Office demo: Mail, Bildverwaltung. Drag'n Drop-Beispiel.

 

GWT-Konzepte

Motivation – ajaxified -"nicht nur Anwendungen, die AJAX verwenden, sondern RC, desktop-ähnlich".

Neuer Ansatz: Java-only code. Kompiliert zu HTML, JS, CSS. GWT principles.

Components: UI library, Java2JS compiler; Language support < Java 5.

Hosted mode shell. JSNI. XML, JSON support. GWT designer.

Beispiel: Hello World

Project creator script. %GWT_HOME%projectCreator -eclipse GwtHelloWorld

NN 

applicationCreator

Client-Klasse benötigt Client-suffix.

Hosted mode shell.

GwtHello.gwt.xml - Modulbeschreibungsdatei. /public-Verzeichnis enthält statische Elemente. <meta>-Tag in HTML und einbinden der JS-Datei.

 

Genauerer Überblick

Module

module descriptor, client subpackage (Java client code), public subpackage.

Widgets + Panels

Widgets: Eigentliche GUI-Componenten, listener (Swing-ähnlich?). Panels: Für Anordnung der Widgets. Composites aus mehreren Widgets. Selbsterstellung rein über Java.

RootPanel: Stellt Schnittstelle zu statischen HTML dar. CellPanels, an Swing Layout-Manager angelehnt. TabPanel und StackPanel. PopupPanel, DialogBox. Hyperlink-Panel: Stellt Punkt/Status der App dar (History Funktionsverlinkung nötig).

i18n

Eingebaut – drei Möglichkeiten, lokalized. Klasse pro Sprache. i18nCreator – Script mit Property-Dateien. Interface mit Methode; JavaScript-dynamischer.

RPC-CallsAJAX-calls gewrappt mit RCP-Idiom. Protokoll proprietär, Transport via JSON.

RemoteServiceServlet Implementierung. Servlet-Mapping, URL-Mapping enthält zusätzlich Pfadangabe.

ClientCall-Beispiel. onSuccess/onFailure.

Was kann man transportieren? Primitive, String, Date, alle Arrays der serialisierbaren Typen. LinkedList nicht unterstützt.

Userdefined Types. IsSerializable direkte Implementierung.

 

In-depth view

Customization

Drei Ansätze:

Ableitungen von UIObjects, Widgets.

Composite von mehreren Widgets.

JSNI – keword native – dann keine Java-Kompilierung. JS-Code darin auskommentiert.

Clientquellcode + Binärkode in jar. Jar im Classpath des GWT-Kompilers. Ggf. Launch-Konfiguration in Eclipse anpassen.

 

Wichtige Erweiterung: GWT-Widget-Library (Robert Hanson).

Viele interessante Widgets. Ferner: GWTSpringController. Bugfixes.

 

Evaluierung – Warum und wann an die Nutzung vom GWT denken?

JS und HTML selbst organisieren. Viele Nachteile.

JS Framworks verwenden. Dojo; Scriptaculous/Prototype. Langsam, schwierig, schlecht zu plflegen.

Echo2;

General Interface (Tibco) (+/DirectWebRemoting).

AdobeFlex2 / OpenLaslo/ XUL: Browserunterstützung sehr problematisch.

GWT

contra: Konventionen müssen erst erlernt werden; CSS zur Beschreibung de Widgets. fehlende Unterstützung von 1.5; kein MVC;

pro: In Java verbleiben, also Debugging, Unit-Tests etc. etc.

g4jsf-Integration der Komponenten in JSF.

Attlassian GWTDesigner. "Ohne JS läuft nichts".

  1. Keine Kommentare