39
Google Web Toolkit Introduction Michel Buffa d’après le ppt original de Didier Girard – [email protected] 04 juillet 2007

Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – [email protected] 04 juillet 2007

Embed Size (px)

Citation preview

Page 1: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Google Web ToolkitIntroductionMichel Buffa d’après le ppt original de Didier Girard – [email protected] juillet 2007

Page 2: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Sommaire

• Comment GWT fonctionne ?

• Les fonctionnalités

Page 3: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Composants graphiques plus évolués

• Des composants tous plus beaux les uns que les autres

Page 4: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Serveur sans état

• Client avec état

• Meilleure scalability

ApplicationApplication

IHM+MétierIHM+Métier

+ Session+ Session

Base de donnéesBase de donnéesDonnéesDonnées

Page 5: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Au début, Ajax c’est cool

• C’est beau

• Efficace

• Les clients en redemandent

Page 6: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Les difficultés

• Cross-navigateur

• Fuite mémoire

• Lourdeur du chargement

• Peu de « Docteur es Javascript »

• Pas de bons IDE

• Bug (javascript est un langage interprété)

• Pas de debug

• Sécurité

• …

Page 7: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

COMMENT GWT FONCTIONNE ?

Page 8: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

L’objectif

• Permettre de développer simplement, des applications

– Cross navigateurs

– Efficaces

– Stables

• Dans un environnement amical pour les développeurs

– Support des IDE, Debugging, refactoring, typage fort,…

Page 9: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

L’approche

• Développer en Java

• Compiler le Java en Javascript/CSS

Page 10: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Hello World

• Démonstration

Page 11: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

BrowserIE, Firefox, Safari, Opera

BrowserIE, Firefox, Safari, Opera

RWA in JavaRWA in Java

Java Runtime LibraryJava Runtime Library

Architecture

java.langjava.lang

java.utiljava.util

Java.ioJava.io

Code de l’application

GWT GUI LibraryGWT GUI Library

Panels

PopupStack

AbsoluteVertical

WidgetsButton MenuBar

Radio TreeCheck Table

TextArea ….

Javascript Application

GWT Runtime100Ko

GWTCompiler

GWTCompiler

Page 12: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

TOUR D’HORIZON

Page 13: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Des widgets « 100% java »

• Démonstration (Kitchen Sink)

Page 14: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Support de l’historique

• « Single Page Interface », mais gestion de l’historique !

• Démonstration (Kitchen Sink)

• Le code

History.addHistoryListener(myCommand);

Page 15: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Support de RPC (JSON/XML-RPC)

• AJAX est d’abord une histoire de requêtes asynchrones

– Avec GWT, c’est simple !

Page 16: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Absolute Panel

• Permet de développer efficacement

– Un vrai bonheur !

• Il y a bien d’autres Panel : Grid, Row, Flex, Vertical, Tab,…

Page 17: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Support multi-navigateuret multi-plateforme

• Et ça marche…

Page 18: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Support des CSS

• Tous les composants GWT supportent nativement les CSS

Page 19: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Support du debug

Page 20: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Support de javascript

• JSNI, une API astucieuse

• Beaucoup de bibliothèques de javascript populaires sont déjà « wrappées » : scriptaculous, yui, timeline,…

• Démonstration

public static native void alert(String msg) /*-{ $wnd.alert(msg); }-*/;

Page 21: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Optimisation du code

• Le javascript est optimisé durant la compilation

• Seul le javascript nécessaire est téléchargé par le navigateur

– Javascript pour la plateforme cible

– Seule l’API effectivement utilisée est téléchargée

Page 22: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Très bonne scalabilité

• Avec GWT les serveurs sont stateless

• Il est donc très facile d’augmenter la puissance CPU des serveurs

– Plus de « session affinity »

Page 23: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Des outils

• GWT est supporté par tous les grands IDE Java : Eclipse, NetBeans, IntelliJ IDEA, Jdeveloper,…

• Publicité : GWT Designer pour Eclipse (payant)

Page 24: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

La communauté GWT

• Plusieurs millions de téléchargements

• Plusieurs dizaines de millier d’abonnés sur les mailing listes de développeurs

• Des ouvrages

• De nombreux articles/tutoriaux

• Des formations

• Des blogs

Page 25: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

GWT 1.7.1 aujourd’hui ! (IE8, FF 3.5, SF 4)

• GWT 1.4

– Par exemple : ImageBundle (téléchargement optimisé d’images), une espèce de base d’images

– Passage de 12 requêtes HTTP à une seule…

ClippedImage timeIcon = new ClippedImage("icons.png", 22, 0, 22, 22);

• GWT 1.5 apporte le support des annotations de code et de la généricité

– Du coup, on peut par exemple passer des classes entity du serveur (java) vers le client (java compilé en javascript)

– Nécessite les sources des annotations

– GWT 1.6 : + de widgets, plugin eclipse officiel

Page 26: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

GWT Gears

• Gears permet d’accéder à une base local depuis javascript.

• Il existe une API pour GWT :

– http://code.google.com/p/gwt-google-apis/

26 Google Confidential

Page 27: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

GWT est efficace

• Il est couramment admis que développer avec GWT permet d’être plus efficace pour le développement de gros projets de web applications

– Refactoring

– Debugging

– Serveur Stateless

– Cross-navigateurs

– I18N

– Hosted mode

– JSNI

Page 28: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

QUELQUES TRUCS

Page 29: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Attention, un langage peut en cacher un autre

• Le code qui s’exécute côté client n’est pas du java, mais du javascript.

• Par exemple « long » n’existe pas en javascript !

29 Google Confidential

Page 30: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

LES IDEES REÇUES

Page 31: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Java est nécessaire sur le serveur

• Non, GWT n’impose pas de technologie sur le serveur

• GWT est simplement plus pratique à utiliser avec Java sur le serveur

Page 32: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Le code Javascript généré est difficile à débugger

• Il est possible, via les options du compilateur, d’avoir un code javascript lisible.

Page 33: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Les widgets GWT ? Bof….

• Les widgets GWT sont des widgets de bases.

• Il existe beaucoup de projet qui proposent des widgets évolués

– GWT Ext

– GWT Rialto

– Tatami

– GWT Widget

– GWTaculous

– …

33 Google Confidential

Page 34: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Les applications GWT sont lourdes

• Le code généré est optimisé et gzippable

– La démo Google Showcase pèse 60K !

Page 35: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

GWT ne supporte pas l’existant

• Faux

– Il est tout à fait possible d’intégrer des composants GWT dans une page HTML classique.

Page 36: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

GWT est propriétaire

• Mais non

– GWT est sous licence opensource Apache depuis la version 1.3 (12/2006)

Page 37: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

MISC

• Version de JDK ?

– Codez le code serveur et client en jdk 5/6 mais attention, côté client toutes les classes du SDK ne sont pas re-implémentées (mais la plupart le sont)

• Intégration avec Spring ?

– Facilité depuis GWT 1.4

• Intégration avec Hibernate ?

– Facilité avec GWT 1.5 avec les annotations de code (attention néanmoins : il faut les sources !)

• Intégration avec les EJBs

– Naturel avec les entity beans

– Nécessite un wrapper pour les session beans

– Normalement full support avec GWT 1.5

Page 38: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Misc

• GWT pour mobiles : http://code.google.com/p/gwt-mobile-webkit/

• GWT on the Wave : http://code.google.com/p/cobogwave/

• GWT-gdata : accèder aux APIs Google depuis GWT (youtube, google map, search, calendar, etc.) : http://code.google.com/p/gwt-gdata/

38 Google Confidential

Page 39: Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – girard.d@sfeir.com 04 juillet 2007

Ressources

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

Forum pour les développeurs :http://groups.google.com/group/Google-Web-Toolkit

Blog officiel : http://googlewebtoolkit.blogspot.com/

onGWT, Tracking news on GWT : http://www.ongwt.com/