SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
GWT
 Google Web Toolkit

  Referent:        Torben Brodt
  Veranstaltung:   Fachseminar Webframeworks
  Datum:           20.12.2007
Hello World!

    
        Das klassische Codebeispiel




                                 
Java, Java, Java!

    
        Programmieren in Java
    
        Ausführen in Java
    
        Testen in Java
    
        Debuggen in Java
    
        Verteilen in JavaScript !




                                     
Inhaltsverzeichnis

     1. Der GWT Weg
     2. Tools
       ●
           Compiler, Hosted Browser, Framework
     3. Vorteile des Paradigmas
     4. Features + Demo + Coding
     5. Fragen


                                   
Der GWT Weg

    
        System­Sprache statt Auszeichnungssprache
    
        GWT­ statt Swing­Klassen, aber Handling gleich
    
        Der Code bleibt für Browser und Menschen lesbar
    
        Programmiert wird in Systemsprache, wegen...
        
            der riesigen Toolunterstützung
        
            der Java Spracheigenschaften
        
            Übersichtlichkeit trotz komplexer Systeme

                                   
Der GWT Weg

    
        Ergebnis = kein Java, kein Applet, keine VM
            
                einzige Voraussetzung: Browser
            
                anderer Weg für selbes Ergebnis
    
        JavaScript und Java sind zwar syntaktisch ähnlich, 
        aber bei dem Konzept hätte Google jede andere 
        Sprache wählen können (siehe Projekt: pyjamas)
    
        Ähnlich Swing, aber kein SWING
            
                Anwendung muss neu erstellt werden
                                    
Der Compiler

    
        Code Compiler
        
            erstellt eine statische HTML Datei als Container
        
            pro Browser/Sprachkombination ein JavaScript



                                       compilieren




        
            nur verwendete Frameworkteile werden mitgeliefert
                                    
Der Compiler

    
        Bild Compiler – die Problemstellung
        
            herkömmlich führt jedes Bild zu einer HTTP 
            Abfrage


                                                GET dateiname.png




                                      200 OK
Der Compiler

    
        Bild Compiler – die Lösung
        
            mehrere Bilder werden zu einem ImageBundle
        
            gleiche Dateigröße und dabei weniger HTTP 
            Requests
                                              GET dateiname.png




                                  
Der Compiler

    
        ImageBundles werden als Interfaces geschrieben
    
        Will man Bilder nicht zentral verwalten, fasst man sie 
        durch ”ableiten” zusammen




    
        Einbinden per HTML oder ImageProto


                                   
Der Compiler

    
        ImageBundles werden als Interfaces geschrieben
    
        Will man Bilder nicht zentral verwalten, fasst man sie 
        durch ”ableiten” zusammen




    
        Einbinden per HTML oder ImageProto


                                   
Hosted Mode

    
        Refresh synchronisiert mit Java­Code
    
        Emuliert einen Browser
    
        Oberfläche zum Exportieren in ”Web Mode”




                              
Framework

    
        java.lang und java.util sind nachimplementiert
    
        Bedienelemente (Widgets) sind vorhanden
    
        Vorteil durch Abstraktion
        
            Das Web ist ein schnell mutierendes Umfeld
        
            Viele Problemlösungen will man in 3 Monaten ganz 
            anders machen
        
            Da man weit weg vom JavaScript Code ist, reicht 
            eine aktualisierte GWT.jar
                                     
Vorteile des Paradigmas

    
        GWT ändert das Paradigma. Erstmals Typisierung 
        und Möglichkeiten zum Debuggen + Refactoren




                                
Vorteile des Paradigmas

    
        Beliebige Java IDE, da Einbindung per .jar
    
        GWT ist zwar allein zur Frontendprogrammierung..  
        bringt aber dennoch einen Tomcat Server zur 
        Abrundung mit
        
            Start per Button
        
            Aktualisieren durch Browser Refresh
        
            Vollständiges Debuggen möglich
    
        Teamaufteilung ist besser möglich
                                   
Features

    1.Bessere HTTP­Performance durch Verwendung von 
      ImageBundles und smarter Dateien
    2.Programmiersprache für zeitgerechtes Programmieren
    3.Gestaltungs­ und Bedienelemente
    4.Realisierbare Usability
    5.AJAX durch Remote Procedure Calls
    6.Internationalisierung

 
    7.Testing und Benchmarking
                              
Gestaltungs­ und Bedienelemente

    
        Panel für Widgets oder weitere Panels
        
            ähnlich AWT/Swing Konzept in Java




        TabPanel                        Horizontal­
                                        SplitPanel
                                  
Gestaltungs­ und Bedienelemente

    
        Widgets für Benutzerinteraktionen
    
        Normale Formular­Elemente
        
            Button, RadioButton, CheckBox, TextBox, 
            PasswordTextBox, TextArea, ListBox
    
        Formularfreie Interaktionselemente
        
            Hyperlink, HTML
    
        Weitere Elemente aus Desktopwelt

                                  
Gestaltungs­ und Bedienelemente

    
        Mail­Beispielclient.... erweitert :­)




                                      
Realisierbare Usability

    
        Einfache Implementierung von Browserhistory 
           ... und Bookmarkfunktionalität




                                 
Realisierbare Usability

    
        Implementierung durch zentralen Controller, der URL 
        Parameter durchreicht
    
        Implementierung von HistoryListener




                                  
Remote Procedure Calls

    
        MailService (Interface) 




    
        Beschreibt das tatsächliche Aussehen
    
        Wird vom Backend implementiert


                                 
Remote Procedure Calls

    
        MailServiceAsync (Interface) 




    
        AJAX Implementierung (typisch void)
    
        Wird vom Frontend implementiert


                                 
Remote Procedure Calls

    
        emailService Proxy




                              
Remote Procedure Calls

    
        Backend
        
            implementiert die Methoden von MailService
        
            komplexe Datentypen erlaubt




                                  
                                     Frontend   Backend
Internationalisierung

    
        Statische VS dynamische Internationalisierung
    
        Statische bevorzugt, da neben Sprache auch 
        Eigenschaften (Zeit­ und Zahlenformate) 
        einfacher umgestellt werden können
    
        Auswahl entweder automatisch, über URL oder 
        per Methodenaufruf


                              
Internationalisierung

    
        Mail.gwt.xml um Sprachmodul erweitern



    
        Klasse implementieren (und instanziieren)




    
        Property­Dateien anlegen
        
            Mailboxes$Language.properties bzw ..._de.properties
                                   
Internationalisierung

    
        Beispiel einer Property Datei
        compose = Neu
        sync = Verschicken/Abrufen!
        reply = Antworten

    
        Sprachvariablen austauschen




                                       
Wiederverwendung

    
        alter JavaScript Code kann wiederverwendet werden
        
            durch das Schlüsselwort native
        
            Zugriff zurück auf Java durch spezielle Syntax
    
        Arbeit mit window und document über $wnd und $doc




                                    
Testing & Benchmarking

    
        JUNIT Integration in GWT über eigene Klasse
    
        asynchrones Testen von Front­ bis Backend 
        durch Simulation von Verzögerung
    
        Realisierung über versteckten GWT Browser
    
        GUI­Erweiterung für Benchmarking



                              
Fragen

    
        Fragen?




                   

Más contenido relacionado

La actualidad más candente

Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit AngularJens Binfet
 
Windows 8 für Entwickler
Windows 8 für EntwicklerWindows 8 für Entwickler
Windows 8 für EntwicklerJan Hentschel
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesGregor Biswanger
 

La actualidad más candente (6)

Windows 8.1 UI für Entwickler
Windows 8.1 UI für EntwicklerWindows 8.1 UI für Entwickler
Windows 8.1 UI für Entwickler
 
JavaMagazin - AngularJS
JavaMagazin - AngularJSJavaMagazin - AngularJS
JavaMagazin - AngularJS
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit Angular
 
Windows 8 für Entwickler
Windows 8 für EntwicklerWindows 8 für Entwickler
Windows 8 für Entwickler
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 

Destacado

GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & TechniquesRachid NID SAID
 
YAXIM - Yet Another XMPP Instant Messenger
YAXIM - Yet Another XMPP Instant MessengerYAXIM - Yet Another XMPP Instant Messenger
YAXIM - Yet Another XMPP Instant Messengerpfleidi
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great InfographicsSlideShare
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShareKapost
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareEmpowered Presentations
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation OptimizationOneupweb
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingContent Marketing Institute
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 

Destacado (12)

Gwt ppt
Gwt pptGwt ppt
Gwt ppt
 
GWT- Google Web Toolkit
GWT- Google Web ToolkitGWT- Google Web Toolkit
GWT- Google Web Toolkit
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & Techniques
 
Gwt Presentation
Gwt PresentationGwt Presentation
Gwt Presentation
 
YAXIM - Yet Another XMPP Instant Messenger
YAXIM - Yet Another XMPP Instant MessengerYAXIM - Yet Another XMPP Instant Messenger
YAXIM - Yet Another XMPP Instant Messenger
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great Infographics
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 

Similar a Google Web Toolkit

Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8gedoplan
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007smancke
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Wiest Simon
 
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Wiest Simon
 
Web-GUIs mit Vaadin
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadingedoplan
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascriptdzuvic
 
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )grosser
 
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )guest9606ac
 
Mobile Development mit ASP.NET MVC 4
Mobile Development mit ASP.NET MVC 4Mobile Development mit ASP.NET MVC 4
Mobile Development mit ASP.NET MVC 4Digicomp Academy AG
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und ReflectionStefan Marr
 
Java für eingebettete Systeme
Java für eingebettete SystemeJava für eingebettete Systeme
Java für eingebettete Systemerdmeyer
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittdominion
 
2. Technologie-Tag - Frontend Architektur
2. Technologie-Tag - Frontend Architektur2. Technologie-Tag - Frontend Architektur
2. Technologie-Tag - Frontend ArchitekturNico Steiner
 
GWT Introduction
GWT IntroductionGWT Introduction
GWT Introductionpfleidi
 

Similar a Google Web Toolkit (20)

GWT
GWTGWT
GWT
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
 
Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
 
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
 
Web-GUIs mit Vaadin
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadin
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )
Webtechnologien fuer das Frontend und Flash( Flex ) Vs Js( Ajax )
 
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )
Webtechnologien für das Frontend & Javascribt( AJAX ) vs Flash( Flex )
 
Mobile Development mit ASP.NET MVC 4
Mobile Development mit ASP.NET MVC 4Mobile Development mit ASP.NET MVC 4
Mobile Development mit ASP.NET MVC 4
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und Reflection
 
Java für eingebettete Systeme
Java für eingebettete SystemeJava für eingebettete Systeme
Java für eingebettete Systeme
 
Workshop Vue js
Workshop Vue jsWorkshop Vue js
Workshop Vue js
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schritt
 
2. Technologie-Tag - Frontend Architektur
2. Technologie-Tag - Frontend Architektur2. Technologie-Tag - Frontend Architektur
2. Technologie-Tag - Frontend Architektur
 
3. Night of the pack
3. Night of the pack3. Night of the pack
3. Night of the pack
 
GWT Introduction
GWT IntroductionGWT Introduction
GWT Introduction
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 

Más de Torben Brodt

Living Labs Challenge Workshop
Living Labs Challenge WorkshopLiving Labs Challenge Workshop
Living Labs Challenge WorkshopTorben Brodt
 
Recommender Trends 2014
Recommender Trends 2014Recommender Trends 2014
Recommender Trends 2014Torben Brodt
 
Paper the plista dataset
Paper  the plista datasetPaper  the plista dataset
Paper the plista datasetTorben Brodt
 
Open recommendation platform
Open recommendation platformOpen recommendation platform
Open recommendation platformTorben Brodt
 
#TOA13 - Tech Opoen Air Recommender Hackathon
#TOA13 - Tech Opoen Air Recommender Hackathon#TOA13 - Tech Opoen Air Recommender Hackathon
#TOA13 - Tech Opoen Air Recommender HackathonTorben Brodt
 
Algorithmus, Good School, Camp Digital
Algorithmus, Good School, Camp DigitalAlgorithmus, Good School, Camp Digital
Algorithmus, Good School, Camp DigitalTorben Brodt
 
Realtime Recommender with Redis: Hands on
Realtime Recommender with Redis: Hands onRealtime Recommender with Redis: Hands on
Realtime Recommender with Redis: Hands onTorben Brodt
 
Recommender Hackathon @plista 2013/04
Recommender Hackathon @plista 2013/04Recommender Hackathon @plista 2013/04
Recommender Hackathon @plista 2013/04Torben Brodt
 
SIGIR 2013 BARS Keynote - the search for the best live recommender system
SIGIR 2013 BARS Keynote - the search for the best live recommender systemSIGIR 2013 BARS Keynote - the search for the best live recommender system
SIGIR 2013 BARS Keynote - the search for the best live recommender systemTorben Brodt
 
Content recommendations
Content recommendationsContent recommendations
Content recommendationsTorben Brodt
 
RecSys2012 inside the plista contest
RecSys2012   inside the plista contestRecSys2012   inside the plista contest
RecSys2012 inside the plista contestTorben Brodt
 
Webhacks am Beispiel PHP + MySQL
Webhacks am Beispiel PHP + MySQLWebhacks am Beispiel PHP + MySQL
Webhacks am Beispiel PHP + MySQLTorben Brodt
 
Collaborative Filtering.. für automatische Empfehlungen
Collaborative Filtering.. für automatische EmpfehlungenCollaborative Filtering.. für automatische Empfehlungen
Collaborative Filtering.. für automatische EmpfehlungenTorben Brodt
 
Geld Verdienen Mit Adsense
Geld Verdienen Mit AdsenseGeld Verdienen Mit Adsense
Geld Verdienen Mit AdsenseTorben Brodt
 
Web 2.0 - "Fluch oder Segen"
Web 2.0 - "Fluch oder Segen"Web 2.0 - "Fluch oder Segen"
Web 2.0 - "Fluch oder Segen"Torben Brodt
 

Más de Torben Brodt (18)

Living Labs Challenge Workshop
Living Labs Challenge WorkshopLiving Labs Challenge Workshop
Living Labs Challenge Workshop
 
Recommender Trends 2014
Recommender Trends 2014Recommender Trends 2014
Recommender Trends 2014
 
Paper the plista dataset
Paper  the plista datasetPaper  the plista dataset
Paper the plista dataset
 
Nrs2013 recap
Nrs2013 recapNrs2013 recap
Nrs2013 recap
 
Open recommendation platform
Open recommendation platformOpen recommendation platform
Open recommendation platform
 
#TOA13 - Tech Opoen Air Recommender Hackathon
#TOA13 - Tech Opoen Air Recommender Hackathon#TOA13 - Tech Opoen Air Recommender Hackathon
#TOA13 - Tech Opoen Air Recommender Hackathon
 
Algorithmus, Good School, Camp Digital
Algorithmus, Good School, Camp DigitalAlgorithmus, Good School, Camp Digital
Algorithmus, Good School, Camp Digital
 
Realtime Recommender with Redis: Hands on
Realtime Recommender with Redis: Hands onRealtime Recommender with Redis: Hands on
Realtime Recommender with Redis: Hands on
 
Recommender Hackathon @plista 2013/04
Recommender Hackathon @plista 2013/04Recommender Hackathon @plista 2013/04
Recommender Hackathon @plista 2013/04
 
SIGIR 2013 BARS Keynote - the search for the best live recommender system
SIGIR 2013 BARS Keynote - the search for the best live recommender systemSIGIR 2013 BARS Keynote - the search for the best live recommender system
SIGIR 2013 BARS Keynote - the search for the best live recommender system
 
Content recommendations
Content recommendationsContent recommendations
Content recommendations
 
RecSys2012 inside the plista contest
RecSys2012   inside the plista contestRecSys2012   inside the plista contest
RecSys2012 inside the plista contest
 
Webhacks am Beispiel PHP + MySQL
Webhacks am Beispiel PHP + MySQLWebhacks am Beispiel PHP + MySQL
Webhacks am Beispiel PHP + MySQL
 
GIT / SVN
GIT / SVNGIT / SVN
GIT / SVN
 
Collaborative Filtering.. für automatische Empfehlungen
Collaborative Filtering.. für automatische EmpfehlungenCollaborative Filtering.. für automatische Empfehlungen
Collaborative Filtering.. für automatische Empfehlungen
 
Geld Verdienen Mit Adsense
Geld Verdienen Mit AdsenseGeld Verdienen Mit Adsense
Geld Verdienen Mit Adsense
 
AJAX
AJAXAJAX
AJAX
 
Web 2.0 - "Fluch oder Segen"
Web 2.0 - "Fluch oder Segen"Web 2.0 - "Fluch oder Segen"
Web 2.0 - "Fluch oder Segen"
 

Google Web Toolkit

  • 1. GWT Google Web Toolkit   Referent:  Torben Brodt   Veranstaltung: Fachseminar Webframeworks   Datum: 20.12.2007
  • 2. Hello World!  Das klassische Codebeispiel    
  • 3. Java, Java, Java!  Programmieren in Java  Ausführen in Java  Testen in Java  Debuggen in Java  Verteilen in JavaScript !    
  • 4. Inhaltsverzeichnis  1. Der GWT Weg  2. Tools ● Compiler, Hosted Browser, Framework  3. Vorteile des Paradigmas  4. Features + Demo + Coding  5. Fragen    
  • 5. Der GWT Weg  System­Sprache statt Auszeichnungssprache  GWT­ statt Swing­Klassen, aber Handling gleich  Der Code bleibt für Browser und Menschen lesbar  Programmiert wird in Systemsprache, wegen...  der riesigen Toolunterstützung  der Java Spracheigenschaften  Übersichtlichkeit trotz komplexer Systeme    
  • 6. Der GWT Weg  Ergebnis = kein Java, kein Applet, keine VM  einzige Voraussetzung: Browser  anderer Weg für selbes Ergebnis  JavaScript und Java sind zwar syntaktisch ähnlich,  aber bei dem Konzept hätte Google jede andere  Sprache wählen können (siehe Projekt: pyjamas)  Ähnlich Swing, aber kein SWING  Anwendung muss neu erstellt werden    
  • 7. Der Compiler  Code Compiler  erstellt eine statische HTML Datei als Container  pro Browser/Sprachkombination ein JavaScript compilieren  nur verwendete Frameworkteile werden mitgeliefert    
  • 8. Der Compiler  Bild Compiler – die Problemstellung  herkömmlich führt jedes Bild zu einer HTTP  Abfrage GET dateiname.png     200 OK
  • 9. Der Compiler  Bild Compiler – die Lösung  mehrere Bilder werden zu einem ImageBundle  gleiche Dateigröße und dabei weniger HTTP  Requests GET dateiname.png    
  • 10. Der Compiler  ImageBundles werden als Interfaces geschrieben  Will man Bilder nicht zentral verwalten, fasst man sie  durch ”ableiten” zusammen  Einbinden per HTML oder ImageProto    
  • 11. Der Compiler  ImageBundles werden als Interfaces geschrieben  Will man Bilder nicht zentral verwalten, fasst man sie  durch ”ableiten” zusammen  Einbinden per HTML oder ImageProto    
  • 12. Hosted Mode  Refresh synchronisiert mit Java­Code  Emuliert einen Browser  Oberfläche zum Exportieren in ”Web Mode”    
  • 13. Framework  java.lang und java.util sind nachimplementiert  Bedienelemente (Widgets) sind vorhanden  Vorteil durch Abstraktion  Das Web ist ein schnell mutierendes Umfeld  Viele Problemlösungen will man in 3 Monaten ganz  anders machen  Da man weit weg vom JavaScript Code ist, reicht  eine aktualisierte GWT.jar    
  • 14. Vorteile des Paradigmas  GWT ändert das Paradigma. Erstmals Typisierung  und Möglichkeiten zum Debuggen + Refactoren    
  • 15. Vorteile des Paradigmas  Beliebige Java IDE, da Einbindung per .jar  GWT ist zwar allein zur Frontendprogrammierung..   bringt aber dennoch einen Tomcat Server zur  Abrundung mit  Start per Button  Aktualisieren durch Browser Refresh  Vollständiges Debuggen möglich  Teamaufteilung ist besser möglich    
  • 16. Features 1.Bessere HTTP­Performance durch Verwendung von  ImageBundles und smarter Dateien 2.Programmiersprache für zeitgerechtes Programmieren 3.Gestaltungs­ und Bedienelemente 4.Realisierbare Usability 5.AJAX durch Remote Procedure Calls 6.Internationalisierung   7.Testing und Benchmarking  
  • 17. Gestaltungs­ und Bedienelemente  Panel für Widgets oder weitere Panels  ähnlich AWT/Swing Konzept in Java TabPanel Horizontal­ SplitPanel    
  • 18. Gestaltungs­ und Bedienelemente  Widgets für Benutzerinteraktionen  Normale Formular­Elemente  Button, RadioButton, CheckBox, TextBox,  PasswordTextBox, TextArea, ListBox  Formularfreie Interaktionselemente  Hyperlink, HTML  Weitere Elemente aus Desktopwelt    
  • 19. Gestaltungs­ und Bedienelemente  Mail­Beispielclient.... erweitert :­)    
  • 20. Realisierbare Usability  Einfache Implementierung von Browserhistory  ... und Bookmarkfunktionalität    
  • 21. Realisierbare Usability  Implementierung durch zentralen Controller, der URL  Parameter durchreicht  Implementierung von HistoryListener    
  • 22. Remote Procedure Calls  MailService (Interface)   Beschreibt das tatsächliche Aussehen  Wird vom Backend implementiert    
  • 23. Remote Procedure Calls  MailServiceAsync (Interface)   AJAX Implementierung (typisch void)  Wird vom Frontend implementiert    
  • 24. Remote Procedure Calls  emailService Proxy    
  • 25. Remote Procedure Calls  Backend  implementiert die Methoden von MailService  komplexe Datentypen erlaubt     Frontend Backend
  • 26. Internationalisierung  Statische VS dynamische Internationalisierung  Statische bevorzugt, da neben Sprache auch  Eigenschaften (Zeit­ und Zahlenformate)  einfacher umgestellt werden können  Auswahl entweder automatisch, über URL oder  per Methodenaufruf    
  • 27. Internationalisierung  Mail.gwt.xml um Sprachmodul erweitern  Klasse implementieren (und instanziieren)  Property­Dateien anlegen    Mailboxes$Language.properties bzw ..._de.properties  
  • 28. Internationalisierung  Beispiel einer Property Datei compose = Neu sync = Verschicken/Abrufen! reply = Antworten  Sprachvariablen austauschen    
  • 29. Wiederverwendung  alter JavaScript Code kann wiederverwendet werden  durch das Schlüsselwort native  Zugriff zurück auf Java durch spezielle Syntax  Arbeit mit window und document über $wnd und $doc    
  • 30. Testing & Benchmarking  JUNIT Integration in GWT über eigene Klasse  asynchrones Testen von Front­ bis Backend  durch Simulation von Verzögerung  Realisierung über versteckten GWT Browser  GUI­Erweiterung für Benchmarking    
  • 31. Fragen  Fragen?