SlideShare une entreprise Scribd logo
JUGL – présentation GWT
Http://www.jugl.ch
5 février 2009
Licence
Creative Commons
Contrat Paternité
Pas d'Utilisation Commerciale
Partage des Conditions Initiales à l'Identique
2.0 France

http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

2
Information
Cette présentation et les exemple sont disponibles à cette adresse
https://forge.octo.com/svn/jugl/2009-01 Gwt
Pour récupérer l'ensemble des sources et la présentation en local il
suffit de taper la ligne de commande dans le repertoire de destination

> svn co "https://forge.octo.com/svn/jugl/2009-01 Gwt" .

Pour les démonstrations GWT pur (sans maven) il faut avoir GWT
(1.5.3+) dans son PATH, pour les autres il faut avoir
Installé maven
Un jdk 1.5 dans son path (en tapant java –version)

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

3
GWT un framework d'application web
Approche GWT
Développer dans le langage Java
Compiler le code Java en JavaScript et Html (au lieu de byte code avec un jdk)

Gwt c'est :
Des outils: compilateur, IDE (Java), scripts
Une partie du Jdk
Un framework de composant: les composants graphiques de base
Une architecture orientée service:
• One page application
• Des services de données sur le serveur

Gwt se propose de simplifier les points suivants
Crossbrowser
Fuite mémoire (DOM / Javascript)
La complexité de développement JavaScript
L'outillage de développement (débugger, designer, roundtrip)

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

4
Positionnement GWT
GWT a été mis en opensource (décembre 2006, licence
Apache 2.0)
C'est une communauté fermée (Google) qui avance vite
C'est une nouvelle position (éditeur et opensource) pour
Google
on ne connait pas l'implication de google dans la durée
Vu l'engouement pour GWT, il sera de plus en plus difficile pour
Google de ne plus supporter GWT

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

5
Architecture GWT
En terme d'architecture, la technologie de rapproche de
Flex
SilverLight

One page application
Avec support de l'historique (et des bookmark ?)

code Java
Compatible Java 5 (depuis mai 2008)
Version Java 6 en cours d'élaboration

compilateur Html/JavaScript: compilation tardive et conditionnelle
Particularité: GWT n'utilise jamais les *.class, ce sont des reliquats des IDE ou des
outils (ANT, Maven)
Démo
HelloWord compilé avec Gwt
Dissection du code compilé
Navigateur embarqué et débugage

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

6
Support de Java 5
Types (boolean, byte, char, short, int, long, float, and double), Object, String, arrays,
user-defined classes, etc.
Par contre tout les types arithmétiques sont mappés sur un double, limitation JavaScript
Le type long est mappé sur 2 entier de 32 bits par un mécanisme GWT (pour >1.5)
•
•

Le type long ne peut pas être utilisé dans des appels natifs
Cela a un impact sur les performances

Exception: support de try/catch/finally
Certaine exception ne peuvent pas survenir (OutOfMemory, etc.)
JavaScriptException est ajoutée

Assertions: elles sont supportées mais doivent activées explicitement
Multithreading and Synchronization: le verbe synchronize est supporté mais est ignoré
(le JavaScript est monothread)
Les méthodes Object.wait(), Object.notify(), et Object.notifyAll() provoque une erreur de
compilation

Réflexion: il n'y a pas de support de la réflexion
Seul existe Object.getClass().getName()

Finalisation: pas de support
Liste des classes supportées
http://code.google.com/intl/fr/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkitdoc-1-5&t=RefJreEmulation

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

7
Structure d'un projet GWT
Code Java de la partie cliente, compilé par GWT
Code Java de la partie serveur, compilée par le JDK
Ressources statiques de la WebApp
Descripteur du module GWT

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

8
Les avantages de GWT pour la partie IHM
Fonctionnalités AJAX
Productivité des développements
Efficience du runtime
Minimisation du trafic
Minimisation des ressources
• Mode obsucate

Elimination du code mort lors de la compilation

Possibilité de se brancher sur du code JavaScript existant
public static native void message(String pMsg) /* { $wdn.alert(pMsg); } */;

Il est très simple de se créer des composants réutilisables
C'est des POJO

Utilisation de CSS
il faut gérer l'affectation d'un ID à la main si on veut l'utiliser dans la CSS

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

9
Composants disponibles
GWT = librairie de composants bas niveau (style SWING)
http://code.google.com/intl/fr/docreader/#p=google-web-toolkitdoc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideWidgetGallery

Il existe un grand nombre de librairies complémentaires
GWT Ext
MyGWT
GWT Rialto
GWTWidgets
…

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

10
Outils disponibles – A la main
GWT 'à la main'

> cd code1-simpleHelloWord
> createHelloWordApplication.cmd
> cd generated
> HelloWord-compile.cmd
Ou
> HelloWord-shell.cmd

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

11
Outils disponibles – ANT
Tache ANT
http://braindump.dk/tech/gwt-task-for-ant/
Project creator http://code.google.com/intl/fr/docreader/#p=googleweb-toolkit-doc-1-5&s=google-web-toolkit-doc-15&t=DevGuideProjectCreator
> cd code1-simpleHelloWord
> createEclipseAndAntProject.cmd
> cd generated
> ant -f HelloWord.ant.xml

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

12
Outils disponibles – Maven
Plugins Maven
http://code.google.com/p/gwt-maven/
http://mojo.codehaus.org/gwt-maven-plugin/

> cd codecode2-maven
> mvn clean install
ou
> mvn gwt:gwt
ou
> mvn gwt:debug

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

13
Outils disponibles
GWT Designer (payant)
Télécharger le plugin Eclipse
• http://download.instantiations.com/WBPro/continuous/latest/update/E-3.3/
ou
• http://download.instantiations.com/WBPro/continuous/latest/update/E-3.4/

Autres Outils disponibles
http://code.google.com/intl/fr/webtoolkit/tools.html

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

14
Internationalisation

> cd codecode3-maven-withI18n
> mvn gwt:gwt

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

15
Optimisation des images
http://code.google.com/intl/fr/docreader/#p=google-web-toolkit-doc-15&s=google-web-toolkit-doc-1-5&t=DevGuideImageBundles

Les images sont de
plus localizables

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

16
Optimisation des images et internationalisation

> cd codecode3-maven-withI18n
> mvn gwt:gwt
Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

17
Architecture client serveur

> cd codecode4-server
> mvn gwt:gwt

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

18
Deffered Binding - Directives de compilation
Gestion de
Crossbrowser
L'internationalisation
Des logs

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

19
Création de framework
Il suffit de faire un jar contenant
Les sources Java
Le fichier de configuration du module
De déclarer dans le module les ressources statiques (images, css)
que les clients devront embarquer

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

20
GWT et les tests
GwtTestCase
Demo
> cd codecode3-maven-withI18n
> mvn gwt:test
Ou
> mvn clean install

Test selenium
En utilisant selenium RC pour les échanges asynchrones
Cela reste compliqué

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

21
Intérêts de faire du Java pour la partie cliente
Simplification du développement
Plus simple
Moins de technologies à maitriser
Roundtrip rapide

Il est facile de faire un 'petit' framework pour
faire des composant réutilisable

Intégration dans le build (intégration continue)
On utilise les outils classique coté serveur
Maven / Ant
Checkstyle & Co

Génération de code et/ou utilisation d'annotation

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

22
Pour aller plus loin
Avec GWT plus besoin de connaitre JavaScript et Html, est-ce du
développement 100% Java ?
Pas forcément on peut le voir comme un remplaçant de JS et Html sur le
client et avoir un serveur PHP, Grails, etc.

Faut-il mélanger le code serveur et le code client dans le même projet
?
C'est le fonctionnement par défaut de GWT, ce n'est pas forcément
adapté en entreprise
On peut le séparer en plusieurs module/projet

Quelle alternative à GWT RPC ?
On peut prendre la main sur le protocole pour le remplacer (par exemple
JSON) par contre il faudra gérer plus de chose 'à la main'

Intégration avec Google Gears pour le support du mode déconnecté

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

23
Quelques incompréhensions
"Il faut utiliser Java sur le serveur"
Non, on peut utiliser n'importe quel technologie pour mettre à disposition les
données sur le serveur (PHP, etc.)

"Il n'est pas possible de débuguer le code JavaScript généré, il est illisible"
Il n'est pas lisible en mode obfucated, mais on peut le générer en mode
DETAILLED.
La bonne approche est de débuguer le code Java depuis Eclipse

"Les applications GWT sont grosses et longue à télécharger"
Non le code est optimisé et compressé

"On ne peut pas faire de Html / JavaScript dans une application GWT"
Il est possible de mixer les 2, même si ce n'est pas le mode recommandé

"Quel rapport avec les Applets ?"
Aucun, à part le langage Java

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

24
Trucs et astuces
Avoir des profils différents pour le dev et la production
Pour diminuer les options de compilation et le temps de
développement

Eviter à tout prix l'intégration de code JavaScript via
l'utilisation de native
Cela court-circuite le mécanisme de libération de la mémoire
JavaScript et créer des fuites mémoire

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

25
Ressources
Cette présentation
https://forge.octo.com/svn/jugl/2009-01 Gwt

GWT
http://code.google.com/intl/fr/webtoolkit/

Forum
http://groups.google.com/group/Google-Web-Toolkit

Blog
http://googlewebtoolkit.blogspot.com/

On GWT
http://www.ongwt.com/

Université du SI sur la mise en œuvre de GWT pour une charte d'ergonomie
http://www.universite-du-si.com/Webcast.aspx , Session A5 Ergonomie 2.0 (inscription
obligatoire et gratuite)

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

26

Contenu connexe

Tendances

Les nouveautés d'Android 7.1 (Nougat)
Les nouveautés d'Android 7.1 (Nougat)Les nouveautés d'Android 7.1 (Nougat)
Les nouveautés d'Android 7.1 (Nougat)
Edouard Marquez
 
GWT Approfondissement - GTI780 & MTI780 - ETS - A09
GWT Approfondissement  - GTI780 & MTI780 - ETS - A09GWT Approfondissement  - GTI780 & MTI780 - ETS - A09
GWT Approfondissement - GTI780 & MTI780 - ETS - A09
Claude Coulombe
 
Cours cordova & REST
Cours cordova & RESTCours cordova & REST
Cours cordova & REST
Christophe Zome
 
In01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introductionIn01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introduction
Yann Caron
 
Introduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesIntroduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesSOAT
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation MavenSOAT
 
Stratégie OpenJDK
Stratégie OpenJDKStratégie OpenJDK
Stratégie OpenJDK
Michel-Marie Maudet
 
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...Frederic Merizen
 

Tendances (8)

Les nouveautés d'Android 7.1 (Nougat)
Les nouveautés d'Android 7.1 (Nougat)Les nouveautés d'Android 7.1 (Nougat)
Les nouveautés d'Android 7.1 (Nougat)
 
GWT Approfondissement - GTI780 & MTI780 - ETS - A09
GWT Approfondissement  - GTI780 & MTI780 - ETS - A09GWT Approfondissement  - GTI780 & MTI780 - ETS - A09
GWT Approfondissement - GTI780 & MTI780 - ETS - A09
 
Cours cordova & REST
Cours cordova & RESTCours cordova & REST
Cours cordova & REST
 
In01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introductionIn01 - Programmation Android - 01 - introduction
In01 - Programmation Android - 01 - introduction
 
Introduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesIntroduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuées
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
 
Stratégie OpenJDK
Stratégie OpenJDKStratégie OpenJDK
Stratégie OpenJDK
 
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...
 

En vedette

Shin banquedefrance 11-2014
Shin banquedefrance 11-2014Shin banquedefrance 11-2014
Shin banquedefrance 11-2014
Macropru Reader
 
Innovation sociale : développer l'esprit d'entreprendre un nouvel enjeu pour ...
Innovation sociale : développer l'esprit d'entreprendre un nouvel enjeu pour ...Innovation sociale : développer l'esprit d'entreprendre un nouvel enjeu pour ...
Innovation sociale : développer l'esprit d'entreprendre un nouvel enjeu pour ...
Yann Alexandre Soubaï
 
Coleman WWII pamplet
Coleman WWII pampletColeman WWII pamplet
Coleman WWII pamplet
Bublanski
 
Proyecto institucional media_tecnica_nomina_y_prestaciones_sociales
Proyecto institucional media_tecnica_nomina_y_prestaciones_socialesProyecto institucional media_tecnica_nomina_y_prestaciones_sociales
Proyecto institucional media_tecnica_nomina_y_prestaciones_sociales
nuryyy
 
Computraining
ComputrainingComputraining
Computraining
dannygggg
 
Cigarette electronique - Cigego.fr
Cigarette electronique - Cigego.frCigarette electronique - Cigego.fr
Cigarette electronique - Cigego.fr
Cigego
 
Nti, ntic, ti, tic
Nti, ntic, ti, ticNti, ntic, ti, tic
Nti, ntic, ti, tic
IraisOcampo
 
L'univers digaméSi: Du premier rendez-vous au jour J...
L'univers digaméSi: Du premier rendez-vous au jour J...L'univers digaméSi: Du premier rendez-vous au jour J...
L'univers digaméSi: Du premier rendez-vous au jour J...
digaméSi
 
Presentacionubuntu
PresentacionubuntuPresentacionubuntu
Presentacionubuntu
javier181920
 
Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012
JUG Lausanne
 
Identification de compatibilites sémantiques entre descripteurs de lieux
Identification de compatibilites sémantiques entre descripteurs de lieuxIdentification de compatibilites sémantiques entre descripteurs de lieux
Identification de compatibilites sémantiques entre descripteurs de lieux
Estelle Delpech
 
Presentation de D-Lices 131107
Presentation de D-Lices 131107Presentation de D-Lices 131107
Presentation de D-Lices 131107
GCAILLEAU
 
Futurama
FuturamaFuturama
Futurama
Camilo Cardenas
 
Actividad nº4 aiza aponte
Actividad nº4 aiza aponteActividad nº4 aiza aponte
Actividad nº4 aiza aponte
Aiza Hernández
 
Diapositivas sustentacion
Diapositivas sustentacionDiapositivas sustentacion
Diapositivas sustentacion
valegsalazar1
 
Produccion y sectores economicos
Produccion y sectores economicosProduccion y sectores economicos
Produccion y sectores economicos
Italo Orozco
 
Trabajo final expresion oral y escrita grupo 3_uq_2011
Trabajo final expresion oral y escrita  grupo 3_uq_2011Trabajo final expresion oral y escrita  grupo 3_uq_2011
Trabajo final expresion oral y escrita grupo 3_uq_2011
jonnathanromero1010
 
Presentacionubuntu
PresentacionubuntuPresentacionubuntu
Presentacionubuntu
javier181920
 

En vedette (20)

Shin banquedefrance 11-2014
Shin banquedefrance 11-2014Shin banquedefrance 11-2014
Shin banquedefrance 11-2014
 
Innovation sociale : développer l'esprit d'entreprendre un nouvel enjeu pour ...
Innovation sociale : développer l'esprit d'entreprendre un nouvel enjeu pour ...Innovation sociale : développer l'esprit d'entreprendre un nouvel enjeu pour ...
Innovation sociale : développer l'esprit d'entreprendre un nouvel enjeu pour ...
 
Santé et modes de vie
Santé et modes de vieSanté et modes de vie
Santé et modes de vie
 
Coleman WWII pamplet
Coleman WWII pampletColeman WWII pamplet
Coleman WWII pamplet
 
Proyecto institucional media_tecnica_nomina_y_prestaciones_sociales
Proyecto institucional media_tecnica_nomina_y_prestaciones_socialesProyecto institucional media_tecnica_nomina_y_prestaciones_sociales
Proyecto institucional media_tecnica_nomina_y_prestaciones_sociales
 
Computraining
ComputrainingComputraining
Computraining
 
Cigarette electronique - Cigego.fr
Cigarette electronique - Cigego.frCigarette electronique - Cigego.fr
Cigarette electronique - Cigego.fr
 
Nti, ntic, ti, tic
Nti, ntic, ti, ticNti, ntic, ti, tic
Nti, ntic, ti, tic
 
L'univers digaméSi: Du premier rendez-vous au jour J...
L'univers digaméSi: Du premier rendez-vous au jour J...L'univers digaméSi: Du premier rendez-vous au jour J...
L'univers digaméSi: Du premier rendez-vous au jour J...
 
Presentacionubuntu
PresentacionubuntuPresentacionubuntu
Presentacionubuntu
 
Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012Play! chez Zaptravel - Nicolas Martignole - December 2012
Play! chez Zaptravel - Nicolas Martignole - December 2012
 
Identification de compatibilites sémantiques entre descripteurs de lieux
Identification de compatibilites sémantiques entre descripteurs de lieuxIdentification de compatibilites sémantiques entre descripteurs de lieux
Identification de compatibilites sémantiques entre descripteurs de lieux
 
Presentation de D-Lices 131107
Presentation de D-Lices 131107Presentation de D-Lices 131107
Presentation de D-Lices 131107
 
L'ecole
L'ecoleL'ecole
L'ecole
 
Futurama
FuturamaFuturama
Futurama
 
Actividad nº4 aiza aponte
Actividad nº4 aiza aponteActividad nº4 aiza aponte
Actividad nº4 aiza aponte
 
Diapositivas sustentacion
Diapositivas sustentacionDiapositivas sustentacion
Diapositivas sustentacion
 
Produccion y sectores economicos
Produccion y sectores economicosProduccion y sectores economicos
Produccion y sectores economicos
 
Trabajo final expresion oral y escrita grupo 3_uq_2011
Trabajo final expresion oral y escrita  grupo 3_uq_2011Trabajo final expresion oral y escrita  grupo 3_uq_2011
Trabajo final expresion oral y escrita grupo 3_uq_2011
 
Presentacionubuntu
PresentacionubuntuPresentacionubuntu
Presentacionubuntu
 

Similaire à Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009

Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009
JUG Lausanne
 
Introduction à web assembly
Introduction à web assemblyIntroduction à web assembly
Introduction à web assembly
Jérémy Buget
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogySacha Leprêtre
 
Gdd07 Gwt Dig
Gdd07 Gwt DigGdd07 Gwt Dig
Gdd07 Gwt Dig
Didier Girard
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
pprem
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! framework
Benoît Simard
 
Retour d'expérience du métier d'architecte logiciel
Retour d'expérience du métier d'architecte logicielRetour d'expérience du métier d'architecte logiciel
Retour d'expérience du métier d'architecte logiciel
Mik_Arber
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
Arnaud Héritier
 
Wicket - JUG Lausanne
Wicket - JUG LausanneWicket - JUG Lausanne
Wicket - JUG Lausanne
Christian Blavier
 
La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!
OCTO Technology
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
Arnaud Héritier
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Java
tcouery
 
Le futur de gwt
Le futur de gwtLe futur de gwt
Le futur de gwt
Arnaud Tournier
 
Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09
Claude Coulombe
 
Formation gwt
Formation gwtFormation gwt
Formation gwt
Francois ANDRE
 
Cours du soir_gwt
Cours du soir_gwtCours du soir_gwt
Cours du soir_gwtSaid Talibi
 
Rebuild 2018 - Bonnes pratiques de développement Mixed Reality
Rebuild 2018 - Bonnes pratiques de développement Mixed RealityRebuild 2018 - Bonnes pratiques de développement Mixed Reality
Rebuild 2018 - Bonnes pratiques de développement Mixed Reality
Vincent Guigui
 
Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08
Claude Coulombe
 
Comment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open Source
Christian Charreyre
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
DNG Consulting
 

Similaire à Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009 (20)

Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009Maven2 - Philippe Kernevez - March 2009
Maven2 - Philippe Kernevez - March 2009
 
Introduction à web assembly
Introduction à web assemblyIntroduction à web assembly
Introduction à web assembly
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogy
 
Gdd07 Gwt Dig
Gdd07 Gwt DigGdd07 Gwt Dig
Gdd07 Gwt Dig
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! framework
 
Retour d'expérience du métier d'architecte logiciel
Retour d'expérience du métier d'architecte logicielRetour d'expérience du métier d'architecte logiciel
Retour d'expérience du métier d'architecte logiciel
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Wicket - JUG Lausanne
Wicket - JUG LausanneWicket - JUG Lausanne
Wicket - JUG Lausanne
 
La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Java
 
Le futur de gwt
Le futur de gwtLe futur de gwt
Le futur de gwt
 
Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09
 
Formation gwt
Formation gwtFormation gwt
Formation gwt
 
Cours du soir_gwt
Cours du soir_gwtCours du soir_gwt
Cours du soir_gwt
 
Rebuild 2018 - Bonnes pratiques de développement Mixed Reality
Rebuild 2018 - Bonnes pratiques de développement Mixed RealityRebuild 2018 - Bonnes pratiques de développement Mixed Reality
Rebuild 2018 - Bonnes pratiques de développement Mixed Reality
 
Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08
 
Comment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open Source
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
 

Plus de JUG Lausanne

Introduction aux algorithmes génétiques
Introduction aux algorithmes génétiquesIntroduction aux algorithmes génétiques
Introduction aux algorithmes génétiques
JUG Lausanne
 
Développer un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rienDévelopper un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rien
JUG Lausanne
 
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidReverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
JUG Lausanne
 
Exemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et SparkExemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et Spark
JUG Lausanne
 
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
JUG Lausanne
 
CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011
JUG Lausanne
 
Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011
JUG Lausanne
 
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
JUG Lausanne
 
OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010
JUG Lausanne
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
JUG Lausanne
 
Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010
JUG Lausanne
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
JUG Lausanne
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
JUG Lausanne
 
Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010
JUG Lausanne
 
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
JUG Lausanne
 
Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009
JUG Lausanne
 
XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008
JUG Lausanne
 
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
JUG Lausanne
 
Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007
JUG Lausanne
 
GlassFish Update and Directions - Karim Mazouni - November 2007
GlassFish Update and Directions - Karim Mazouni - November 2007GlassFish Update and Directions - Karim Mazouni - November 2007
GlassFish Update and Directions - Karim Mazouni - November 2007
JUG Lausanne
 

Plus de JUG Lausanne (20)

Introduction aux algorithmes génétiques
Introduction aux algorithmes génétiquesIntroduction aux algorithmes génétiques
Introduction aux algorithmes génétiques
 
Développer un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rienDévelopper un moteur d'exécution symbolique en partant de rien
Développer un moteur d'exécution symbolique en partant de rien
 
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidReverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
 
Exemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et SparkExemple d'IOT et ML avec Android, Cassandra et Spark
Exemple d'IOT et ML avec Android, Cassandra et Spark
 
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
 
CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011CloudBees - Sacha Labourey - May 2011
CloudBees - Sacha Labourey - May 2011
 
Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011
 
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
 
OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 
Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010Infinispan - Galder Zamarreno - October 2010
Infinispan - Galder Zamarreno - October 2010
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
 
Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010Introduction à Scala - Michel Schinz - January 2010
Introduction à Scala - Michel Schinz - January 2010
 
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
 
Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009
 
XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008XML & Java - Raphaël Tagliani - March 2008
XML & Java - Raphaël Tagliani - March 2008
 
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
 
Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007Scripting with Java FX - Cédric Tabin - December 2007
Scripting with Java FX - Cédric Tabin - December 2007
 
GlassFish Update and Directions - Karim Mazouni - November 2007
GlassFish Update and Directions - Karim Mazouni - November 2007GlassFish Update and Directions - Karim Mazouni - November 2007
GlassFish Update and Directions - Karim Mazouni - November 2007
 

Dernier

Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
abderrahimbourimi
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
AlbertSmithTambwe
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
Horgix
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 

Dernier (7)

Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 

Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009

  • 1. JUGL – présentation GWT Http://www.jugl.ch 5 février 2009
  • 2. Licence Creative Commons Contrat Paternité Pas d'Utilisation Commerciale Partage des Conditions Initiales à l'Identique 2.0 France http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 2
  • 3. Information Cette présentation et les exemple sont disponibles à cette adresse https://forge.octo.com/svn/jugl/2009-01 Gwt Pour récupérer l'ensemble des sources et la présentation en local il suffit de taper la ligne de commande dans le repertoire de destination > svn co "https://forge.octo.com/svn/jugl/2009-01 Gwt" . Pour les démonstrations GWT pur (sans maven) il faut avoir GWT (1.5.3+) dans son PATH, pour les autres il faut avoir Installé maven Un jdk 1.5 dans son path (en tapant java –version) Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 3
  • 4. GWT un framework d'application web Approche GWT Développer dans le langage Java Compiler le code Java en JavaScript et Html (au lieu de byte code avec un jdk) Gwt c'est : Des outils: compilateur, IDE (Java), scripts Une partie du Jdk Un framework de composant: les composants graphiques de base Une architecture orientée service: • One page application • Des services de données sur le serveur Gwt se propose de simplifier les points suivants Crossbrowser Fuite mémoire (DOM / Javascript) La complexité de développement JavaScript L'outillage de développement (débugger, designer, roundtrip) Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 4
  • 5. Positionnement GWT GWT a été mis en opensource (décembre 2006, licence Apache 2.0) C'est une communauté fermée (Google) qui avance vite C'est une nouvelle position (éditeur et opensource) pour Google on ne connait pas l'implication de google dans la durée Vu l'engouement pour GWT, il sera de plus en plus difficile pour Google de ne plus supporter GWT Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 5
  • 6. Architecture GWT En terme d'architecture, la technologie de rapproche de Flex SilverLight One page application Avec support de l'historique (et des bookmark ?) code Java Compatible Java 5 (depuis mai 2008) Version Java 6 en cours d'élaboration compilateur Html/JavaScript: compilation tardive et conditionnelle Particularité: GWT n'utilise jamais les *.class, ce sont des reliquats des IDE ou des outils (ANT, Maven) Démo HelloWord compilé avec Gwt Dissection du code compilé Navigateur embarqué et débugage Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 6
  • 7. Support de Java 5 Types (boolean, byte, char, short, int, long, float, and double), Object, String, arrays, user-defined classes, etc. Par contre tout les types arithmétiques sont mappés sur un double, limitation JavaScript Le type long est mappé sur 2 entier de 32 bits par un mécanisme GWT (pour >1.5) • • Le type long ne peut pas être utilisé dans des appels natifs Cela a un impact sur les performances Exception: support de try/catch/finally Certaine exception ne peuvent pas survenir (OutOfMemory, etc.) JavaScriptException est ajoutée Assertions: elles sont supportées mais doivent activées explicitement Multithreading and Synchronization: le verbe synchronize est supporté mais est ignoré (le JavaScript est monothread) Les méthodes Object.wait(), Object.notify(), et Object.notifyAll() provoque une erreur de compilation Réflexion: il n'y a pas de support de la réflexion Seul existe Object.getClass().getName() Finalisation: pas de support Liste des classes supportées http://code.google.com/intl/fr/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkitdoc-1-5&t=RefJreEmulation Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 7
  • 8. Structure d'un projet GWT Code Java de la partie cliente, compilé par GWT Code Java de la partie serveur, compilée par le JDK Ressources statiques de la WebApp Descripteur du module GWT Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 8
  • 9. Les avantages de GWT pour la partie IHM Fonctionnalités AJAX Productivité des développements Efficience du runtime Minimisation du trafic Minimisation des ressources • Mode obsucate Elimination du code mort lors de la compilation Possibilité de se brancher sur du code JavaScript existant public static native void message(String pMsg) /* { $wdn.alert(pMsg); } */; Il est très simple de se créer des composants réutilisables C'est des POJO Utilisation de CSS il faut gérer l'affectation d'un ID à la main si on veut l'utiliser dans la CSS Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 9
  • 10. Composants disponibles GWT = librairie de composants bas niveau (style SWING) http://code.google.com/intl/fr/docreader/#p=google-web-toolkitdoc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideWidgetGallery Il existe un grand nombre de librairies complémentaires GWT Ext MyGWT GWT Rialto GWTWidgets … Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 10
  • 11. Outils disponibles – A la main GWT 'à la main' > cd code1-simpleHelloWord > createHelloWordApplication.cmd > cd generated > HelloWord-compile.cmd Ou > HelloWord-shell.cmd Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 11
  • 12. Outils disponibles – ANT Tache ANT http://braindump.dk/tech/gwt-task-for-ant/ Project creator http://code.google.com/intl/fr/docreader/#p=googleweb-toolkit-doc-1-5&s=google-web-toolkit-doc-15&t=DevGuideProjectCreator > cd code1-simpleHelloWord > createEclipseAndAntProject.cmd > cd generated > ant -f HelloWord.ant.xml Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 12
  • 13. Outils disponibles – Maven Plugins Maven http://code.google.com/p/gwt-maven/ http://mojo.codehaus.org/gwt-maven-plugin/ > cd codecode2-maven > mvn clean install ou > mvn gwt:gwt ou > mvn gwt:debug Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 13
  • 14. Outils disponibles GWT Designer (payant) Télécharger le plugin Eclipse • http://download.instantiations.com/WBPro/continuous/latest/update/E-3.3/ ou • http://download.instantiations.com/WBPro/continuous/latest/update/E-3.4/ Autres Outils disponibles http://code.google.com/intl/fr/webtoolkit/tools.html Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 14
  • 15. Internationalisation > cd codecode3-maven-withI18n > mvn gwt:gwt Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 15
  • 16. Optimisation des images http://code.google.com/intl/fr/docreader/#p=google-web-toolkit-doc-15&s=google-web-toolkit-doc-1-5&t=DevGuideImageBundles Les images sont de plus localizables Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 16
  • 17. Optimisation des images et internationalisation > cd codecode3-maven-withI18n > mvn gwt:gwt Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 17
  • 18. Architecture client serveur > cd codecode4-server > mvn gwt:gwt Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 18
  • 19. Deffered Binding - Directives de compilation Gestion de Crossbrowser L'internationalisation Des logs Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 19
  • 20. Création de framework Il suffit de faire un jar contenant Les sources Java Le fichier de configuration du module De déclarer dans le module les ressources statiques (images, css) que les clients devront embarquer Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 20
  • 21. GWT et les tests GwtTestCase Demo > cd codecode3-maven-withI18n > mvn gwt:test Ou > mvn clean install Test selenium En utilisant selenium RC pour les échanges asynchrones Cela reste compliqué Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 21
  • 22. Intérêts de faire du Java pour la partie cliente Simplification du développement Plus simple Moins de technologies à maitriser Roundtrip rapide Il est facile de faire un 'petit' framework pour faire des composant réutilisable Intégration dans le build (intégration continue) On utilise les outils classique coté serveur Maven / Ant Checkstyle & Co Génération de code et/ou utilisation d'annotation Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 22
  • 23. Pour aller plus loin Avec GWT plus besoin de connaitre JavaScript et Html, est-ce du développement 100% Java ? Pas forcément on peut le voir comme un remplaçant de JS et Html sur le client et avoir un serveur PHP, Grails, etc. Faut-il mélanger le code serveur et le code client dans le même projet ? C'est le fonctionnement par défaut de GWT, ce n'est pas forcément adapté en entreprise On peut le séparer en plusieurs module/projet Quelle alternative à GWT RPC ? On peut prendre la main sur le protocole pour le remplacer (par exemple JSON) par contre il faudra gérer plus de chose 'à la main' Intégration avec Google Gears pour le support du mode déconnecté Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 23
  • 24. Quelques incompréhensions "Il faut utiliser Java sur le serveur" Non, on peut utiliser n'importe quel technologie pour mettre à disposition les données sur le serveur (PHP, etc.) "Il n'est pas possible de débuguer le code JavaScript généré, il est illisible" Il n'est pas lisible en mode obfucated, mais on peut le générer en mode DETAILLED. La bonne approche est de débuguer le code Java depuis Eclipse "Les applications GWT sont grosses et longue à télécharger" Non le code est optimisé et compressé "On ne peut pas faire de Html / JavaScript dans une application GWT" Il est possible de mixer les 2, même si ce n'est pas le mode recommandé "Quel rapport avec les Applets ?" Aucun, à part le langage Java Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 24
  • 25. Trucs et astuces Avoir des profils différents pour le dev et la production Pour diminuer les options de compilation et le temps de développement Eviter à tout prix l'intégration de code JavaScript via l'utilisation de native Cela court-circuite le mécanisme de libération de la mémoire JavaScript et créer des fuites mémoire Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 25
  • 26. Ressources Cette présentation https://forge.octo.com/svn/jugl/2009-01 Gwt GWT http://code.google.com/intl/fr/webtoolkit/ Forum http://groups.google.com/group/Google-Web-Toolkit Blog http://googlewebtoolkit.blogspot.com/ On GWT http://www.ongwt.com/ Université du SI sur la mise en œuvre de GWT pour une charte d'ergonomie http://www.universite-du-si.com/Webcast.aspx , Session A5 Ergonomie 2.0 (inscription obligatoire et gratuite) Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 26