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

Slides:



Advertisements
Ähnliche Präsentationen
Forschungszentrum Informatik
Advertisements

GWT - google Web Toolkit
Dynamische WEB-Applikationen
Softwareentwicklung für Android
Zusammenfassung des Kapitels 8
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
Ein Beispiel in Java.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Dynamische Webseiten Java servlets.
Objektorientierte Programmierung JDK-Klassenbibliothek
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Seminar Web-Engineering Nina Aschenbrenner / Ruben Jubeh 1 FG Software Engineering Software Engineering Seminar Web Engineering Seminar des Fachgebiet.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
.NET – Quo Vadis? Dariusz Parys Developer Group Microsoft GmbH.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Divide and Conquer Eclipse RCP und Spring in verteilten Anwendungen Stefan Reichert | Lufthansa Systems Benjamin Pasero | IBM Rational.
USE2ANT Die Umstellung von Use Makefiles zu Ant & Junit Von Isaac, Maleen und Marc.
Formatvorlage des Untertitelmasters durch Klicken bearbeiten Platin-Partner: Gold-Partner: Veranstaltungs-Partner: Medien-Partner: Web Content Management.
AWT und JFC Abstract Windowing Toolkit
Smart Business Web Clients mit Silverlight 4 & WCF RIA Services Markus Unterauer Software Architect Cubido Business Solutions Max.
Microsoft Office Forms Server
Applets Java für’s Web.
Entwickeln einer Windows 8 Modern UI Businessapplikation auf der Basis von Dynamics CRM/xRM Christian Haller Marc Sallin isolutions AG isolutions.
Servlet III Java Webanwendung Webcontainer Web.xml
Medien zwischen Technologie und Gesellschaft Dozent: Herr Prof. Dr. Manfred Thaller SS 13 Referent: Christian Braun.
Google App Engine Microsoft Windows Azure
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht.
Test Driven Development - Romano Adler-
Automated Software Testing
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
3 Technologien im Wettstreit um Ihre nächste Webanwendung Rainer Worbis Markus Unterauer Entwickler, cubido business solutions gmbh.
Softwareentwicklung für WebOS
Java und Eclipse.
Projekt Alcatraz Java RMI / Spread - Gruppe A4.
Traildevils Mobile Web-App X-Platform Stefan Oderbolz Jürg Hunziker 16. Dezember 2011.
Mahmoud Zoabi Khaled Isa
© All rights reserved. Zend Technologies, Inc. Jan Burkl System Engineer, Zend Technologies Zend Server im Cluster.
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
RATEME Suchen und Bewerten von Ausgangsorten. Inhalt RateMe - Pirmin Schürmann, Thomas Junghans - Hochschule für Technik Zürich 2 Unser Ziel.
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Jan Hentschel Microsoft Expert Student Partner Windows Azure Windows Azure Windows Azure Mobile Services.
| Basel Developing apps for SharePoint 2013 using Visual Studio 2013 René Modery, Office 365 MVP, 1stQuad Solutions.
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
MVVM in Windows 8 und Windows Phone 8
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Kap 4-1OHO Kap. 4.2 Das Orbix CORBA-System Kurzer überblick zu der CORBA-Implementierung Orbix •Unser Fahrplan: •IDL Verwendungsbeispiel •Zoom-In: CORBA.
Praxis der Internet-Programmierung
JSP Einführung Skripte Direktiven Tomcat 3.2 Version 1.1
XML IV: Cocoon 2.
RATEME Suchen und Bewerten von Ausgangsorten. Inhalt RateMe - Pirmin Schürmann, Thomas Junghans - Hochschule für Technik Zürich 2 Unser Ziel.
SharePoint FIS HandsOn – out of the Box.
Projekt Systemintegration Datler, Kroiß, Sachs Systemintegration ILV, FL / MIC- 2 (SS2014)
Semesterarbeit SOA CRYSTL-PIM Product Information System
© All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer.
Ein JEE 5 Webframework Jörg Wüthrich Infopoint, 4. Februar 2009
Infopoint - Java EE 5 - Jörg Wüthrich1 / 24 Java EE 5 Infopoint, Jörg Wüthrich.
Google Android.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
RATEME Suchen und Bewerten von Ausgangsorten. Inhalt RateMe - Pirmin Schürmann, Thomas Junghans - Hochschule für Technik Zürich 2 Unser Ziel.
RATEME Suchen und Bewerten von Ausgangsorten. Inhalt RateMe - Pirmin Schürmann, Thomas Junghans - Hochschule für Technik Zürich 2 Unser Ziel.
Agile ALM for Plex/2E CM MatchPoint ALM. Themen Agenda CM MatchPoint ALM Übersicht CM MatchPoint 5.2 Web und Mobile Entwicklung Agile ALM / DevOps CM.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Jakarta Struts Quasi-Standard für JSP-basierte Entwicklung: Jakarta Struts Key Features von Struts: Implementierung des Action-Command-Pattern („Model.
 Präsentation transkript:

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

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

GWT 2.0, Infopoint, Jörg Wüthrich3 Historie GWT 1.0 GWT 1.3 GWT 1.7 GWT 2.0 GWT GWT Mai Januar Juni Dezember Juli 2010 tbd

GWT 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

GWT 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

GWT 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)

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

GWT 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)

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

GWT 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

GWT 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

GWT 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 URL tippen IDE / SDK Java-Client Code JRE-Emulation Library Host-Page Browser-Typ / Sprache auslesen HTTP- Request 2 Server-Code Host-Page

GWT 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); }

GWT 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...

GWT 2.0, Infopoint, Jörg Wüthrich15 UiBinder: deklarativ public class EditContactView extends Composite implements EditContactPresenter.Display { interface MyUiBinder extends UiBinder {} private static MyUiBinder uiBinder = TextBox Button saveButton;... public EditContactView() { initWidget(uiBinder.createAndBindUi(this)); }

GWT 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

GWT 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

GWT 2.0, Infopoint, Jörg Wüthrich18 Referenzen - die GWT-eigene Seitehttp://code.google.com/webtoolkit/ - separates GWT-Tutorialhttp:// chitecture-BestPracticesForArchitectingYourGWTApp.pdf - ausführliche Beschreibung von best practiceshttp://dl.google.com/io/2009/pres/Th_0200_GoogleWebToolkitAr chitecture-BestPracticesForArchitectingYourGWTApp.pdf ds-PerformanceTipsforGoogleWebToolkit.pdf - Highspeed GWT Applikationenhttp://dl.google.com/io/2009/pres/W_1230_MeasureinMillisecon ds-PerformanceTipsforGoogleWebToolkit.pdf - Präsentation über GWThttp://

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

GWT 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

GWT 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

GWT 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 Address; Model View Presenter

GWT 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 get Address(); Widget asWidget(); } …

GWT 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 TextBox Button saveButton; public HasValue getFirstName() { return firstName; } public HasClickHandlers getSaveButton() { return saveButton; }

GWT 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()); } }); }

GWT 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.get Address().setValue(contact.get Address()); }

GWT 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.set Address(display.get Address().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"); } }); }