62
Google Web Toolkit Facile, Efficace et Beau Didier Girard – Directeur Technique SFEIR 31 mai 2007

Gdd07 Gwt Dig

Embed Size (px)

DESCRIPTION

Google Developer Day Paris : Presentation of Google Web Toolkit

Citation preview

Page 1: Gdd07 Gwt Dig

Google Web ToolkitFacile, Efficace et BeauDidier Girard – Directeur Technique SFEIR31 mai 2007

Page 2: Gdd07 Gwt Dig

Sommaire

• Démonstrations

• Pourquoi GWT ?

• Comment GWT fonctionne ?

• Les fonctionnalités

Page 3: Gdd07 Gwt Dig

DÉMONSTRATION

Page 4: Gdd07 Gwt Dig

Démonstrations

Page 5: Gdd07 Gwt Dig

Démonstrations

• http://www.gwt-keyboard-warrior.com/

• http://code.google.com/webtoolkit/documentation/examples/desktopclone/demo.html

• http://www.gwtwindowmanager.org/demo/GwmDemo.html

• http://www.contactoffice.com/

• http://www.ongwt.com/?q=demo

Page 6: Gdd07 Gwt Dig

POURQUOI GWT ?

Page 7: Gdd07 Gwt Dig

Les limites du webLes limites du web

Page 8: Gdd07 Gwt Dig

Pas MDIPas MDI

Page 9: Gdd07 Gwt Dig

... ne simplifie pas le ... ne simplifie pas le développementdéveloppement

Page 10: Gdd07 Gwt Dig

... ne réduit pas les coûts... ne réduit pas les coûts

Page 11: Gdd07 Gwt Dig

... ne s'intègre pas à la bureautique... ne s'intègre pas à la bureautique

Page 12: Gdd07 Gwt Dig

... ne fonctionne pas en absence de réseau... ne fonctionne pas en absence de réseau

Page 13: Gdd07 Gwt Dig

... ne sait pas communiquer... ne sait pas communiquer

Page 14: Gdd07 Gwt Dig

... ne propose pas une bonne ergonomie... ne propose pas une bonne ergonomie

Page 15: Gdd07 Gwt Dig

n’est pas très efficacen’est pas très efficace

Page 16: Gdd07 Gwt Dig
Page 17: Gdd07 Gwt Dig

17

La solution ?La solution ?

Page 18: Gdd07 Gwt Dig

18

AjaxAjax

Page 19: Gdd07 Gwt Dig

Mise à jour partiel de l’écran

• Plus de clignotement « Page blanche »

Page 20: Gdd07 Gwt Dig

Mise à jour des données asynchrones

• Pas besoin de rafraichir pour avoir des données fraiches.

Page 21: Gdd07 Gwt Dig

Composants graphiques plus évolués

• Des composants tous plus beaux les uns que les autres

Page 22: Gdd07 Gwt Dig

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 23: Gdd07 Gwt Dig

Au début, Ajax c’est cool

• C’est beau

• Efficace

• Les clients en redemandent

Page 24: Gdd07 Gwt Dig

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 25: Gdd07 Gwt Dig

La solution

• Développer le prototype de l’application

– Vous vous faites plaisir

– Tout le monde vous admire

Page 26: Gdd07 Gwt Dig

La solution

• Lorsque le client signe, changer de projet :-)

Page 27: Gdd07 Gwt Dig

Ou…Ou…

Page 28: Gdd07 Gwt Dig

Passer à

GWT

Page 29: Gdd07 Gwt Dig

COMMENT GWT FONCTIONNE ?

Page 30: Gdd07 Gwt Dig

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,…

• Avec une philosophie : « L’utilisateur en premier, le développeur en deuxième » - Bruce Johnson

Page 31: Gdd07 Gwt Dig

L’approche

• Développer en Java

• Compiler le Java en Javascript/CSS

Page 32: Gdd07 Gwt Dig

Hello World

• Démonstration

Page 33: Gdd07 Gwt Dig

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 34: Gdd07 Gwt Dig

TOUR D’HORIZON

Page 35: Gdd07 Gwt Dig

Des widgets « 100% java »

• Démonstration (Kitchen Sink)

Page 36: Gdd07 Gwt Dig

Support de l’historique

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

• Démonstration (Kitchen Sink)

• Le code

History.addHistoryListener(myCommand);

Page 37: Gdd07 Gwt Dig

Support de RPC (JSON/XML-RPC)

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

– Avec GWT, c’est simple !

Page 38: Gdd07 Gwt Dig

Support de I18N/L10N

• Puissant et original

Page 39: Gdd07 Gwt Dig

Absolute Panel

• Permet de développer efficacement

– Un vrai bonheur !

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

Page 40: Gdd07 Gwt Dig

Support multi-navigateuret multi-plateforme

• Et ça marche…

Page 41: Gdd07 Gwt Dig

Support des CSS

• Tous les composants GWT supportent nativement les CSS

Page 42: Gdd07 Gwt Dig

Support du debug

• Démonstration

Page 43: Gdd07 Gwt Dig

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 44: Gdd07 Gwt Dig

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 45: Gdd07 Gwt Dig

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 46: Gdd07 Gwt Dig

Des outils

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

• Publicité : Mon outil préféré est GWT Designer

Page 47: Gdd07 Gwt Dig

La communauté GWT

• Plus de 1000000 téléchargements

• Plus de 9000 inscrits sur le forum

• Des ouvrages

• De nombreux articles/tutoriaux

• Des formations

• Des blogs

Page 48: Gdd07 Gwt Dig

GWT 1.4

• GWT 1.4 arrive avec son lot de nouveautés

– 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);

http://roberthanson.blogspot.com/2007/02/gwt-clippedimage-optimizing-image.html

Page 49: Gdd07 Gwt Dig

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/

• Demo

49 Google Confidential

Page 50: Gdd07 Gwt Dig

GWT est efficace

• Il est couramment admis que développer avec GWT permet d’être 5 fois plus efficace

– Refactoring

– Debugging

– Serveur Stateless

– Cross-navigateurs

– I18N

– Hosted mode

– JSNI

Page 51: Gdd07 Gwt Dig

LES IDEES REÇUES

Page 52: Gdd07 Gwt Dig

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 53: Gdd07 Gwt Dig

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 54: Gdd07 Gwt Dig

Les applications GWT sont lourdes

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

– KitchenSink pèse autour de 60Ko !

Page 55: Gdd07 Gwt Dig

GWT ne supporte pas l’existant

• Faux

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

Page 56: Gdd07 Gwt Dig

GWT c’est des applets

• Des applets, non merci :-)

– Le code java est compilé en javascript durant la phase de développement !

Page 57: Gdd07 Gwt Dig

GWT est propriétaire

• Mais non

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

Page 58: Gdd07 Gwt Dig

MISC

• Version de JDK ?

• Intégration avec Spring ?

• Intégration avec Hibernate ?

Page 59: Gdd07 Gwt Dig

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/

GWT 1.4:http://code.google.com/p/google-web-toolkit/wiki/DevPlan_1_4

Page 60: Gdd07 Gwt Dig

ConclusionGWT, c’est facile, efficace et beau !Merci Bruce, Merci Google !

Page 61: Gdd07 Gwt Dig

Didier Girard

• Directeur Technique de SFEIR (200 développeurs)

• Membre de l’OSSGTP (OpenSourceur Parisien)

• Activités diverses

– Code en java depuis 1995 et en java coté serveur depuis 1997

– Créateur de http://abu.cnam.fr (1994) : bibliothèque numérique collaborative

– Créateur de www.application-servers.com (2000) : site d’actualités sur Java/J2EE

– Créateur de Struts-Layout (2001) : projet opensource java

– Créateur de blog.application-servers.com (2003) : plateforme de blogs

– Créateur de Rialto (2005) : projets opensource Ajax

– Créateur de www.onGWT.com (2007) : blog sur GWT

61 Google Confidential

Page 62: Gdd07 Gwt Dig