GWT Google Web Toolkit © by PRODYNA AG 2007 – www.prodyna.de Die Referenten Michael Schmut • Senior IT Consultant • Java EE Architekturen • Project Management Papick Taboada • Software Architekt • Java EE Architekturen • Open-Source-Technologien © by PRODYNA AG 2007 – www.prodyna.de 2 Agenda Konzept Roundtrip Anbindung Spring Beurteilung © by PRODYNA AG 2007 – www.prodyna.de 3 Konzept Motivation Ansatz Prinzipien Komponenten Release Überblick Ein „Hello World“ © by PRODYNA AG 2007 – www.prodyna.de 4 Konzept / Motivation „Developing ajaxified Web Applications with Ease“ © by PRODYNA AG 2007 – www.prodyna.de 5 Konzept / Ansatz Entwicklung hauptsächlich in Java Kompilierung von Java DHTML (HTML, CSS und JavaScript) © by PRODYNA AG 2007 – www.prodyna.de 6 Konzept / Prinzipien Everything just works Keep the base simple Use as much as you like Java for Java developers Stay close to the IDE Open Source (Apache 2 Lizenz) © by PRODYNA AG 2007 – www.prodyna.de 7 Konzept / Komponenten UI - Bibliothek Java AJAX Support Java-to-JavaScript Compiler JRE Emulation 1.4.2 (java.lang, java.util) Language Support < Java 5 Hosted Mode Shell © by PRODYNA AG 2007 – www.prodyna.de 8 Konzept / Komponenten JSNI (JavaScript Native Interface) XML Support / JSON Support JUnit Integration I18n Support Browser History Navigation Rich Text Format Unterstützung © by PRODYNA AG 2007 – www.prodyna.de 9 Konzept / Release Übersicht Version 1.0 am 17. Mai 2006 Version 1.4 aktuell seit Mai 2007 Version 1.5 (Java 5 Support, drag & drop) © by PRODYNA AG 2007 – www.prodyna.de 10 Konzept / Ein „Hello World“ Live Coding… © by PRODYNA AG 2007 – www.prodyna.de 11 Roundtrip Modul System Widgets & Panels Internationalisierung AJAX im GWT JSNI © by PRODYNA AG 2007 – www.prodyna.de 12 Roundtrip / Modul System GWT Applikation bestehen aus „Modulen“ 1 minimales Modul enthält 1 Modul-Deskriptor 1 „Client“ Sub-Package mit Client Code 1 „Public“ Sub-Package mit statischen Web Content Module können von Module erben © by PRODYNA AG 2007 – www.prodyna.de 13 Roundtrip / Widgets & Panels Java-Klassenbibliothek zur Abbildung von User Interfaces Oberflächenelemente mit eine Java-Klasse als Widget abgebildet Widgets nutzen das Listener-Pattern um über Events informiert zu werden Widgets werden zur Strukturierung in Panels abgelegt Styling erfolgt über CSS © by PRODYNA AG 2007 – www.prodyna.de 14 Roundtrip / Widgets & Panels Rootpanel: Absolute Positionierung, Grundpanel Cellpanel: Abstrakte Basisklasse für: DockPanel © by PRODYNA AG 2007 – www.prodyna.de HorizontalPanel VerticalPanel 15 Roundtrip / Widgets & Panels FlowPanel © by PRODYNA AG 2007 – www.prodyna.de TabPanel StackPanel 16 Roundtrip / Widgets & Panels PopupPanel DialogBox Other HTMLPanel AbsolutePanel SimplePanel ScrollPanel ... © by PRODYNA AG 2007 – www.prodyna.de 17 Roundtrip / Widgets & Panels Hyperlink RichTextArea © by PRODYNA AG 2007 – www.prodyna.de ListBox Table SuggestBox 18 Roundtrip / Widgets & Panels MenuBar © by PRODYNA AG 2007 – www.prodyna.de TabBar Tree 19 Roundtrip / Internationalisierung Eingebauter i18n Support Statisch: Localizable, Konstanten, Messages Dediziertes Skript Dynamisch: Dictionary über JavaScript Objekt © by PRODYNA AG 2007 – www.prodyna.de 20 Roundtrip / AJAX im GWT © by PRODYNA AG 2007 – www.prodyna.de 21 Roundtrip / AJAX im GWT AJAX wird über ein RPC-Idiom abgebildet Asynchrone Kommunikation Client Æ Server Client benutzt CallBack-Implementierung zur Reaktion auf Server Calls Server-Seite ist Servlet-basiert Proprietäres Kommunikationsprotokoll und Format © by PRODYNA AG 2007 – www.prodyna.de 22 Roundtrip / AJAX im GWT Schnittstellendefinition: © by PRODYNA AG 2007 – www.prodyna.de 23 Roundtrip / AJAX im GWT Implementierung auf der Server-Seite © by PRODYNA AG 2007 – www.prodyna.de 24 Roundtrip / AJAX im GWT Registrierung im Deployment-Deskriptor © by PRODYNA AG 2007 – www.prodyna.de 25 Roundtrip / AJAX im GWT Ableitung eines asynchronen Client-Interface © by PRODYNA AG 2007 – www.prodyna.de 26 Roundtrip / AJAX im GWT Beschaffung eines Server-Proxys über GWT-Factory © by PRODYNA AG 2007 – www.prodyna.de 27 Roundtrip / AJAX im GWT Making the Call © by PRODYNA AG 2007 – www.prodyna.de 28 Roundtrip / AJAX im GWT Was kann serialisiert werden??? Primitive Typen und deren Wrapper java.lang.String und java.util.Date Arrays von serialisierbaren Typen Viele Typen der Collection API (annotiert über JavaDoc) User-definierte Typen © by PRODYNA AG 2007 – www.prodyna.de 29 Roundtrip / AJAX im GWT Was ist ein User-definierter Typ? Implementiert oder erbt von eine Ableitung von IsSerializable oder Serializable Alle nicht transienten Member sind im Sinne des GWT serialisierbar © by PRODYNA AG 2007 – www.prodyna.de 30 Roundtrip / JSNI © by PRODYNA AG 2007 – www.prodyna.de 31 Anbindung Spring © by PRODYNA AG 2007 – www.prodyna.de 32 Anbindung Spring Anbindung über GWT Spring Controller aus GWT Widget Library (3rd Party Library) Spring Dispatcher Servlet © by PRODYNA AG 2007 – www.prodyna.de 33 Anbindung Spring Client-Seite: © by PRODYNA AG 2007 – www.prodyna.de 34 Anbindung Spring Server-Seite: (Bekanntmachung der Spring Bean in Spring Config) © by PRODYNA AG 2007 – www.prodyna.de 35 Anbindung Spring Server-Seite: (Setzen des Endpoints im Client) (Bekanntmachung des Spring Dispatcher Servlet in web.xml) © by PRODYNA AG 2007 – www.prodyna.de 36 Anbindung Spring Server-Seite: (Setzen des Endpoints im Client) (Zuordnung Path Info zu Spring Bean in handler-servlet.xml) © by PRODYNA AG 2007 – www.prodyna.de 37 Beurteilung Nachteile Vorteile Alternativen Empfehlung © by PRODYNA AG 2007 – www.prodyna.de 38 Beurteilung / Nachteile „Everything just works?“ Google doen‘t eat its own Dog Food Noch kein Support für Java 5 No Build-In Support für MVC Aufwendige Integration von eigenen Komponenten © by PRODYNA AG 2007 – www.prodyna.de 39 Beurteilung / Vorteile Entwicklung in der Domäne „Java“ Out-of-the-box: industrielle Software Entwicklung Debugging Unit Testing Versionskontrolle Code Refactoring Compile-Zeit vs. Laufzeit Fehlerfindung … © by PRODYNA AG 2007 – www.prodyna.de 40 Beurteilung / Vorteile Reichhaltige Entwicklungsbibliothek (UI, AJAX, …) Leichter Zugang für Java Desktop Entwickler Klare Trennung: statischer Web Inhalte / dynamische Oberfläche / Server-seitiger Code Open Source Google Know How (Caching, Code Optimierungen) Große Community Gute Dokumentation © by PRODYNA AG 2007 – www.prodyna.de 41 Beurteilung / Alternativen Klassische Presentation Layer Frameworks Actionbasiert: Apache Struts² , Spring MVC Komponentenbasiert: JavaServer Faces: (Sun Ref. Impl, Tomahawk, Tobago, Trinidad, ICEfaces, RCFaces, Netadvantage, WebGalileoFaces, QuipuKit, BluePrints, Woodstock, JBossRichFaces, Bindows, Ajax4jsf, …) JavaServer Faces & Struts², Apache Wicket, Apache Tapestry, Apache Cocoon, Velocity, Turbine, JetSpeed … RIA Frameworks Java: RAP, Echo2, Adobe Flex/Open Laszlo, General Interface, Zk (XUL-basiert) .NET: Volta Ruby: Rails … … © by PRODYNA AG 2007 – www.prodyna.de 42 Beurteilung / Empfehlung für den Einsatz Klassische (formular-basierte) Web Applikationen: JavaServer Faces Desktop-like Web Applikation Google Web Toolkit © by PRODYNA AG 2007 – www.prodyna.de 43 Vielen Dank! © by PRODYNA AG 2007 – www.prodyna.de 44