Upload
dennis-simon
View
894
Download
4
Embed Size (px)
DESCRIPTION
Citation preview
Google Webtool Kit
Übersicht
Was ist GWT?
GWT ist ein Framework für AJAX-Anwendungen, welches den Entwickler in die Lage versetzt, Rich Internet Applications in Java zu entwickeln.
Der GWT-Compiler generiert aus dem Java Code den spezifischen HTML- und JavaScript Code für die jeweiligen Browser.
Warum AJAX?
Warum AJAX?
Finde den Fehler
Fehler gefunden
JavaScript = Schmerz
...cross-browser
...memory leak
...loading latency
...bugs (dynamic language)
...security
Von Java zu JavaScript
Von Java zu JavaScript
Java Code:
GWT compiler (-style PRETTY)
GWT compiler (-style OBFUSCATED)
Features
User Interfaces
History Management
Lokalisierung
Client/Server-Kommunikation
JavaScript Native Interface
Unit Testing
Optimization
User Interfaces
GWTGWT Incubator
_________________________________
SmartGWTGWT-ExtExt-GWT
und viele mehr...
Aufbau UI mit Code
Aufbau UI mit UIBinder
Styling mit CSS
Styling mit CSS
History Management
AJAX-Anwendungen verwenden meistens keineBrowser History (==> Frust).
Demo
Lokalisierung
Constants helloWorld = Hallo, Welt
Messages goodBye = Adios, {0}
Plural @DefaultText(...) @PluralText(...)
UIBinder Support <ui:msg description="helloWorld">Hello, world.</ui:msg></div>
Demo
Client/Server Kommunikation
HTTP-Requests
z.B.: PHP als Backend und XML, JSON oder ein eigenes Format.
GWT-RPCWarum nicht eine Sprache sprechen?
JavaScript Native Interface
Java Methode direkt in JavaScript implementieren.
Auf Java Members/Methoden zugreifen.
Parameter zwischen Java und JavaScript übergeben.
--> Einbindung von (bestehenden) JavaScript Libs
Unit Testing
GWTTestCase für die Views
JUnit für Presenter und Model
Selenium
Optimierung
Delayed Logic
Code Splitting
ClientBundle
Tools
Eclipse Plugin
GWT Designer
Speed Tracer
GWT Designer
Warum mit Java entwickeln?
Vorteile
Client und Server können eine Sprache verwenden(GWTRPC).
Java Entwickler Tools (Eclipse, PMD, JUnit etc).
Debugging Umgebung
Cross-Browser-Support
Nachteile
Google behält sich vor die Lizenzbestimmungen des GWT-Compilers zu ändern.
Widgets teilweise sehr groß(bis zu 55k pro Widget).
Es wird nur ein Teil der Java APIemuliert.
Größe der Komponenten
Fragen ?
Google App EngineWeb Application Hosting Service
Google Infrastrukturautomatische und beliebige Skalierung von WebApps
Development Tools
• Java SDKo Servlet Container
• Python SDKo CGI Runtime Environment
• Google Eclipse Plugino One-Click-Deploymento Simulation aller Services in lokaler Sandboxo Leistungsfähiger Debugger
Google Datastore
• Bigtable (Object Database)• Google Earth, Google Finance, Google Search
Keine relationale Datenbank
Umdenken notwendig
Queries
• OOP / Sql-like Syntax
• Schnelle Zugriffe bei Selects auf den KEY• Automatische Index-Erzeugung
o XML basierte Konfigurationo Google weiß im Voraus welche Queries angefragt werden
könneno Beim Schreiben werden Indexe automatisch aktualisiert
Bulk-Loader• Python-Script• Upload / Downloading Data• Backups
Einschränkungen• Indexerzeugung beim deployen kostet Zeit • Kein bulk-delete oder Massen-lesen / -schreiben
Standards: JDO / JPA / Annotations
Standards: JDO / JPA / Annotations
Kosten
• automatische Skalierung • Konzentration auf Gamelogik• kürzere Entwicklungszeiten• kein administrativer Overhead• keine Betriebskosten solange App kein Erfolg• IDE (Build, Deploy, Sandbox integriert)• perfektes Zusammenspiel mit GWT
• Keine long running background processes• Kein Streaming• Kein FTP, Sockets ...• Datastore: Keine Volltext-Suche• max. 30 sec/req• max 10 MB/req• max. 3.000 Dateien (Workaroudns ZIP, JAR)• hohe Abhänigkeit von Google-Services
Fragen ?
Deferred Binding