Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich1 GWT 2.0 Framework zur Erstellung von browserbasierten Applikationen.

Ähnliche Präsentationen


Präsentation zum Thema: "11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich1 GWT 2.0 Framework zur Erstellung von browserbasierten Applikationen."—  Präsentation transkript:

1 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich1 GWT 2.0 Framework zur Erstellung von browserbasierten Applikationen

2 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich2 Themen Einführung Features Entwicklungs-Zyklus UiBinder Vorteile / Nachteile MVP-Architektur (falls Zeit)

3 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich3 Historie GWT 1.0 GWT 1.3 GWT 1.7 GWT 2.0 GWT 2.0.4 GWT 2.1 25. Mai 2006 18. Januar 2007 13. Juni 2009 8. Dezember 2009 2. Juli 2010 tbd

4 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich4 Was ist GWT? GWT = Google Web Toolkit Framework für AJAX Applikationen, welche in Java geschrieben und debugged, aber als hochoptimiertes Javascript in verschiedenen Browsern laufen –kein Javascript Knowhow notwendig Architektur: Client – Server –Client ist Javascript Applikation im Browser

5 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich5 Features 1/2 Am Ende ist es einfach Javascript XmlHttpRequest? Da war doch was… Sprache der Backend Implementierung frei (Kommunikation über XML / JSON / GWT-RPC) Einbinden von Javascript (Bibliotheken) möglich Unterstützung des Back-Buttons im Browser Entwicklung / Optimierungen mit Standard Java- Tools möglich (z.B. Ecplise, IntelliJ, Netbeans, JProfiler) Unterstützung von Mehrsprachigkeit

6 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich6 Features 2/2 In Browser-Development ( hosted mode) Code Splitting – Optimierung des Downloads UiBinder – Deklarative User-Interfaces ClientBundle – optimierte Ressourcen- Verwaltung Unittesting mit JUnit (GWTTestCase)

7 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich7 Entwicklungs-Vorgehen Applikation schreiben im Developmentmode debuggen / testen optimieren Compilieren und Deployment auf einen Webserver (production mode)

8 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich8 Development Mode Entwickeln im Development Mode –Java Code wird in Bytecode kompiliert und läuft in einer lokalen JVM –Debugging / Break points in der IDE –Anzeige in einem Browser mit dem GWT developer plugin (IE, Firefox, Google Chrome), welches über TCP/IP mit der JVM kommuniziert –Browser Plugins nutzbar für Analysen im Browser (z.B. Firebug)

9 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich9 Architektur Development Mode

10 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich10 Optimieren GWT liefert zwei Werkzeuge für Optimierungen mit –Java to Javascript compiler Method Inlining + devirtualization Entfernung von ungebrauchtem Code String-Optimierungen –Speedtracer Performance-Probleme im Browser finden Browser Layout-Operationen und CSS

11 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich11 Production Mode Produktives Deployment im Production Mode –Java Code wird nach Javascript compiliert –pro Browser wird in jeder Sprache eine optimierte Variante erstellt –Hilfs-Skript, welches auswählt, welche Variante angezogen werden soll -> nur die passende Variante wird geladen –Applikationen laufen in allen bekannteren Browsern sowie mobilen Browsern für Android und das iPhone

12 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich12 Architektur production mode Produktion Webserver generiertes Javascript Browser HTTP- Request Servlet o.ä. XmlHttpRequest (XML, JSON, GWT-RPC) Rendering Service-Calls 1 4 3 URL tippen IDE / SDK Java-Client Code JRE-Emulation Library Host-Page Browser-Typ / Sprache auslesen HTTP- Request 2 Server-Code Host-Page

13 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich13 Ohne UiBinder: Swing-Stil private final TextBox firstName; private final FlexTable detailsTable; … public EditContactView() { VerticalPanel contentDetailsPanel = new VerticalPanel(); contentDetailsPanel.setWidth("100%"); detailsTable = new FlexTable(); detailsTable.setCellSpacing(0); detailsTable.setWidth("100%"); firstName = new TextBox(); … detailsTable.setWidget(0, 0, new Label("Firstname")); detailsTable.setWidget(0, 1, firstName); … contentDetailsPanel.add(detailsTable); }

14 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich14 UiBinder: deklarativ <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat' ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default"> Firstname... Save...

15 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich15 UiBinder: deklarativ public class EditContactView extends Composite implements EditContactPresenter.Display { // @UiTemplate("EditContactView.ui.xml") interface MyUiBinder extends UiBinder {} private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); @UiField TextBox firstName; @UiField Button saveButton;... public EditContactView() { initWidget(uiBinder.createAndBindUi(this)); }

16 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich16 Vorteile Sehr gut dokumentiert Browser-Abhängigkeiten weitgehend eliminiert durch generiertes Javascript Browser Back Button kann unterstützt werden Es können trotz Webapplikation sehr performante GUIs entwickelt werden Einfach anzuwenden für Java-Entwickler Klare Trennung von GUI- und Server-Code Open Source

17 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich17 Nachteile reine GWT-Applikationen sind nicht sichtbar für Such-Maschinen (kein Html, nur Javascript) -> Mischform notwendig Im schlimmsten Fall muss generiertes Javascript debuggt werden, um browserspezifische Probleme eliminieren zu können

18 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich18 Referenzen http://code.google.com/webtoolkit/ - die GWT-eigene Seitehttp://code.google.com/webtoolkit/ http://www.vogella.de/articles/GWT/article.html - separates GWT-Tutorialhttp://www.vogella.de/articles/GWT/article.html http://dl.google.com/io/2009/pres/Th_0200_GoogleWebToolkitAr chitecture-BestPracticesForArchitectingYourGWTApp.pdf - ausführliche Beschreibung von best practiceshttp://dl.google.com/io/2009/pres/Th_0200_GoogleWebToolkitAr chitecture-BestPracticesForArchitectingYourGWTApp.pdf http://dl.google.com/io/2009/pres/W_1230_MeasureinMillisecon ds-PerformanceTipsforGoogleWebToolkit.pdf - Highspeed GWT Applikationenhttp://dl.google.com/io/2009/pres/W_1230_MeasureinMillisecon ds-PerformanceTipsforGoogleWebToolkit.pdf http://www.fh-htwchur.ch/uploads/media/Vortrag_02.pdf - Präsentation über GWThttp://www.fh-htwchur.ch/uploads/media/Vortrag_02.pdf

19 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich19 Anhang

20 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich20 M odel V iew P resenter M odel V iew C ontroller Grösster Nachteil: immer noch viele Abhängigkeiten zwischen den Komponenten ModelView Controller

21 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich21 M odel V iew P resenter Model View Presenter versucht, die Abhängigkeiten zu minimieren Model View Presenter

22 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich22 M odel V iew P resenter public class EditContactPresenter implements Presenter{ public interface Display { HasClickHandlers getSaveButton(); public class Contact implements Serializable { public String id; public String firstName; public String lastName; public String emailAddress; Model View Presenter

23 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich23 M odel V iew P resenter Presenter beinhaltet Interface, welches von der View implementiert werden muss public class EditContactPresenter implements Presenter{ public interface Display { HasClickHandlers getSaveButton(); HasClickHandlers getCancelButton(); HasValue getFirstName(); HasValue getLastName(); HasValue getEmailAddress(); Widget asWidget(); } …

24 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich24 M odel V iew P resenter View-Klasse implementiert das Interface Kaum Funktionalität -> einfach zu mocken public class EditContactView extends Composite implements EditContactPresenter.Display { @UiField TextBox firstName; @UiField Button saveButton; public HasValue getFirstName() { return firstName; } public HasClickHandlers getSaveButton() { return saveButton; }

25 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich25 M odel V iew P resenter Presenter registriert sich für Events der View private void bind() { this.display.getSaveButton().addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { doSave(); } }); this.display.getCancelButton().addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { eventBus.fireEvent(new EditContactCancelledEvent()); } }); }

26 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich26 M odel V iew P resenter Aufruf der EditContactView -> Vorbereiten der zu editierenden Daten public void prepareEdit(Contact editContact) { contact = editContact; display.getFirstName().setValue(contact.getFirstName()); display.getLastName().setValue(contact.getLastName()); display.getEmailAddress().setValue(contact.getEmailAddress()); }

27 11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich27 M odel V iew P resenter Abspeichern der Änderungen (Update Model) private void doSave() { contact.setFirstName(display.getFirstName().getValue()); contact.setLastName(display.getLastName().getValue()); contact.setEmailAddress(display.getEmailAddress().getValue()); rpcService.updateContact(contact, new AsyncCallback () { public void onSuccess(Contact result) { eventBus.fireEvent(new ContactUpdatedEvent(result)); } public void onFailure(Throwable caught) { Window.alert("Error updating contact"); } }); }


Herunterladen ppt "11.08.2010GWT 2.0, Infopoint, Jörg Wüthrich1 GWT 2.0 Framework zur Erstellung von browserbasierten Applikationen."

Ähnliche Präsentationen


Google-Anzeigen