After Work GWT Mardi 25 Novembre 2008 Anthony Dahanne

Slides:



Advertisements
Présentations similaires
TER Gestionnaires de contenu en ligne
Advertisements

Gestionnaires de contenu en ligne TER BN1 Mario Di Miceli, Maxime Lamure, Damien Mandrioli, Romain Raugi.
Exposé de Système - Informatique et Réseau
Google Web Toolkit Introduction Didier Girard – 04 juillet 2007.
Google Web Toolkit Introduction Michel Buffa daprès le ppt original de Didier Girard – 04 juillet 2007.
GWT, présentation générale
TP 3-4 BD21.
Systèmes d’exploitation
Développement dun simulateur dinterface graphique à distance Présenté par Michaël Delhaye Promoteur : Jean Vanderdonckt.
Soutenance de stage · Par : Guillaume Prévost · Entreprise : Cynetic
PROJET HANDICAPS Certificat de Qualification Professionnelle
Cours du soir GWT Mardi 3 Juin 2008 Anthony Dahanne
Nouveau blog. WordPress connexion Nommez votre blog.
XML-Family Web Services Description Language W.S.D.L.
Android est une plateforme mobile open source et entièrement paramétrable. Elle a été créée afin de mettre à disposition des développeurs toutes les fonctionnalités.
After Work GWT Mercredi 17 Décembre 2008
Développement Rapide dApplications Web avec.NET « Mon premier site »
GWT UML Un modeleur UML en GWT
GWT, présentation générale Rédigée à partir des présentations de Didier Girard Et de Anthony Dahanne Mise.
28 novembre 2012 Grégory Petit
Développement d’un réseau social professionnel
Développement de clients riches : Plateforme Flex Mickaël BARON ou Introduction.
ISICIL SWEETDEKI Intégration du logiciel Mindtouch Core dans la plate-forme ISICIL Guillaume HUSSON.
22 Intéropérabilité Silverlight & PHP Le 8 février 2010 GIACOPINO Cyril Directeur pôle technologie TEQUILARAPIDO.
Clients riches RIA (Rich Internet Application) / RDA
PROJET DE GENIE LOGICIEL 2005
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Projet de Master première année 2007 / 2008
Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013.
LES CLIENTS WEB RICHES Tuteur : Olivier CARON LEFEBVRE Benoit
Jquery.
Créez des applications Silverlight 3 David Rousset Relations Techniques avec les développeurs Microsoft France
« Le plaisir du chercheur : retrousser les jupes de la nature » Jean Rostand Proposer une « Interface Homme Machine » en utilisant une technologie Client.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Introduction à Visual Studio C++ (VC++)
Concevoir un site web de A a Z Cours 3. Aujourd’hui Découper sa page en tranche pour une intégration graphique optimale avec Photoshop L’intégration des.
S'initier au HTML et aux feuilles de style CSS Cours 5.
Code Contracts Gilles TOURREAU - MVP C# Architecte .NET / Formateur
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Créez des applications Silverlight 3 David Rousset Relations Techniques avec les développeurs Microsoft France
Visualisation d’un entrepôt de données Pré soutenance technique
Struts.
S'initier au HTML et aux feuilles de style CSS Cours 5.
 Formulaires HTML : traiter les entrées utilisateur
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
Initiation au JavaScript
Sites Web interactifs 2010 / 2011 / S1 Bernhard Rieder.
Présentation ESTRABOX
EPREUVE E6 : PARCOURS DE PROFESSIONNALISATION
Séance /10/2005 CSS et Dreamweaver. CSS : principes Cascading Style Sheet = feuille de style en cascade Norme du W3C :
1 Complément JAVA 1 - Eclipse. 2 Plan Notion d'environnement de développement Interface d'Eclipse Utiliser Eclipse Éditeur de code Fonctionnalité supplémentaire.
Introduction à SVG Scalable Vector Graphic. Informations ● Plus d'informations ici (draft, tutoriaux, outils... ): –
Apports des clients riches dans le monde du WEB 2.0
Soutenance de Projet – BTS IG
Présentation de Qt Iris 1
Tuteur : Jean-Philippe Prost Soutenance de Projet Licence Professionnelle Assistant de Projet Informatique Développement d’Applications E-Business Année.
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
Dreamweaver Séance 1.
1 Présentation de DREAMWEAVER (1) Gaël TREMEAU GI05 Printemps 2006.
Présentation de Dreamveawer
Dreamweaver le retour Avec Les Formulaires Les Calques
Dreamweaver (2) ● les calques (layers) ● les comportements
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
Les formulaires Les calques Les comportements Les scénarios Les modèles Les feuilles de styles (CSS) La mise en ligne Les formulaires permettent à l’utilisateur.
SI28 – Ecriture interactive et multimédia Sylvain Slaton – Pierre Laporte.
DREAMWEAVER MX2 - Séance 2 Les calques Les comportements Les scénarios Les formulaires Les feuilles de style Les modèles Les cadres Mise en ligne Jérôme.
GWT Google Web Toolkit Yves Bekkers 1GWT - Yves Bekkers.
PROJET DE SESSION DANS LE CADRE DU COURS: SCG Réalisation d’applications en SIG PRÉSENTÉ PAR: Marie-Andrée Levesque 18 AVRIL 2006.
DWR Jean-Jacques LE COZ. Introduction Projet DWR Framework AJAX Projet Open Source commencé en 2004 Licence GPL (Apache Software License v2) Sponsorisé.
Transcription de la présentation:

After Work GWT Mardi 25 Novembre 2008 Anthony Dahanne

Sommaire du cours Présentation de GWT Mise en place de l’environnement de dév. (It0) Création d'une interface graphique (It1) Appels distants via RPC (It2‏) Conclusion

Présentation (1/5) : Pourquoi GWT ? Problème : Difficulté d’écriture du code JavaScript Outillage (IDE) encore immature, débug compliqué (alert !)‏ interprétation différente selon le navigateur manque de compétence JS Solution : Générer du code JavaScript à partir de code Java IDE (ex:Eclipse) nombreux et riches, débug pas à pas possible 1 code source pour tous les navigateurs ! Optimisation (code JS “compacté”, génération de ce qui est utile uniquement)‏ Compétences nombreuses (!)‏

Projet racheté à 1 start up Créé par Bruce Johnson Proposé en Open source fin 2006 Dès le début, une forte communauté, nombreuses bibliothèques dont EXT GWT, EXT, etc... Présentation (2/5) : Historique

Optimisation (temps de chargement réduits) au coeur de GWT : Fichiers échangés compressés avec gzip Allégement de la taille des fichiers grâce aux noms raccourcis de variables et fonctions JS Chargement des scripts dans une iframe cachée en tâche de fond Utilisation de la mise en cache des navigateurs Le navigateur ne charge que les fonctions dont il a besoin Lors de la compilation, le code JS pour chacun des navigateurs est généré : le navigateur gardera en cache le code approprié Présentation (3/5) : Performances

Microsoft Volta (C#, VB.NET) très en retard (moins performant)‏ Morfik ( approche orientée BDD et XML (!)‏ GWT est aujourd’hui le framework de génération d’application web riches le plus avancé. Présentation (4/5) : Des concurrents…

Présentation (5/5) GWT ? GWT est : Un outil, une librairie Java Un traducteur de code Java vers Javascript Un outil permettant de générer une application cliente riche (RIA) GWT n'est pas : Une librairie Javascript (comme Scriptaculous ou YUI ou Jquery) Un framework de développement Web (comme Struts ou JSF ou Rails) Un outil pour générer un site web avec du contenu (wiki, blog, CMS, etc...)

Environnement de développement Nous utiliserons : Eclipse 3.3 Une jdk Sun moderne (>=5.0)‏ Windows ou Linux ou Mac OS GWT (sorti le 17/10/2008)‏ Tomcat (embarqué dans le projet GWT)‏ Navigateur Web (Firefox et ses plugins comme Firebug sera bienvenue !)‏

Notre premier projet GWT : le Projet RH Nous avons été sélectionné pour une refonte du module de recherche d'emplois Le client a entendu beaucoup de bien de GWT et a choisi cette technologie pour cette refonte Nous disposons de 3 itérations : Itération 0 : prise de connaissance avec l'outil Itération 1 : création de la partie cliente Itération 2 : lien avec la partie serveur

ProjetRh : Iteration0 ProjetRh : Une application permettant aux visiteurs de consulter les offres d'emploi selon des critères Sprint Backlog de la première Itération : Création du projet avec les outils GWT Intégration du projet dans Eclipse Tour du propriétaire

Itération 0 : création du projet Un projet GWT avec (ou sans) Eclipse en quelques commandes Création d’un répertoire contenant le projet : >mkdir MonProjetRh puis >cd MonProjetRh Création du projet Eclipse : >GWT_HOME\projectCreator.cmd -eclipse MonProjetRh Création de l’application : >GWT_HOME\applicationCreator.cmd -eclipse MonProjetRh fr.valtech.client.AppliRh Il n’y a plus qu’à lancer Eclipse et importer le projet créée !

Structure du projet : Pour lancer le projet, il suffit d’utiliser le MonProjetRh.launch et de le lancer en cliquant droit dessus “Run as Java Application” La console GWT ainsi que le navigateur GWT se lancent ! Itération 0 : Tour du propriétaire

Itération 0 : tour du propriétaire 2 modes de lancement : Hosted (ou géré) : application exécutée en tant que bytecode Java : permet de faciliter le code-compile-test-debug (console de debug, permet d’exploiter les points d’arrêt dans Eclipse, etc…)‏ Web : Le navigateur lit simplement le code généré par le compilateur GWT et l’interprète naturellement

Itération 0 : tour du propriétaire Le module principal est représenté par un fichier XML ApplicationRh.gwt.xml, il est composé de : Un ou plusieurs modules hérités Un point d’entrée (le “main”)‏ Un chemin des sources, un autre des ressources Scripts JS et CSS Config vers les servlets RPC Etc…

Iteration 1 : Création du GUI Dans cette itération, nous allons : Utiliser des widgets pour créer l'interface graphique Utiliser un ImageBundle pour rassembler les images Créer un tableau pour accueillir les résultats Remplir dans un premier temps ce tableau (pour préparer le service GWT RPC)

Iteration 1 : Présentation des Widgets Pleins de Widget : boutons, labels, cases à cocher, listes, arbres, etc… UIObject est la super classe, qui gère coordonnées, titre, visibilité et taille de tout objet graphique Les widgets héritent de la super classe Widget qui proposent en plus des opérations hiérarchiques attachement au parent, etc…)‏ Les widgets proposent des événements basés sur des listeners Java FocusListener, MouseListener, KeyBoardListener, etc…

Iteration 1 : Présentation des Widgets TextBox : zone de saisie Button : bouton HTML Label : créer une zone de texte Hyperlink :lien “interne” ListBox : liste de valeurs HTMLTable, FlexTable, Grid MenuBar : création de menu pop-up Tree : décomposition d’une liste sous un arbre SuggestBox : interroge un oracle pour prédiction

HTML : permet de placer du code HTML Image : insère une portion d’image ou une image entière ImageBundle : permet d’atténuer les latences réseaux en évitant les aller et retour Regroupe plusieurs images en une : en JS + CSS, les images seront chargées sous la forme de portion d’une unique grosse image Nous rappelle le Keep Alive HTTP ! Iteration 1 : Présentation des Widgets

A comparer à Swing ou Windows.form En GWT, on a plutôt fusionné la notion de Layout et de Panel 4 types de Panel : Simple Complexe Table Split

FocusPanel : les éléments fils gèrent le focus FormPanel : simule soumission d’un form. HTML ? PopUpPanel et DialogBox AbsolutePanel Les enfants de CellPanel : DockPanel, HorizontalPanel, VerticalPanel FlowPanel, StackPanel HTMLPanel : intégration de GWT dans sites existants DisclosurePanel : une encoche démasque les fils Iteration 1 : Présentation des Panels

Itération 1 : Création de Widgets Dériver de la classe Widget ou d’une de ses sous classes Bien observer la classe DOM Bien réfléchir aux événements gérés, notamment en utilisant sinkEvent, gestion unifiée des événements entre navigateurs UIObject ferait l’affaire, mais ne gère pas les événements Ou dériver de la classe Composite, pour contenir d’autres Widgets

Utilisation de librairies externes GWT plutôt sobre par rapport à Flex et SilverLight Les extensions rajoutent de l’AJAX (DnD, transitions, etc…)‏ 2 familles d’extensions : Les wrapper, widgets qui encapsulent du code JavaScript Les natives, directement écrites en GWT, n’importent pas de code JavaScript supplémentaire (permettent l’optimisation du code, d’être paramétrées, etc…)‏ Des problèmes de licence apparaissent ! GWT s’appuie sur GWT-WL, basé sur, entre autres, Scriptaculous

GWT-DnD : le célèbre Glisser/Déplacer GWT-Ext, wrapper ExtJS GXT ou ExtGWT, librairie native GWT, en retard par rapport à GWT-Ext GWT Window Manager Présentation d’extension GWT

Itération 3 : appel de services distants GWT apporte d'origine une fonctionnalité d'appels distants de méthode, RPC (Remote Procedure Call) Nous allons utiliser GWT RPC pour lancer nos recherches sur le serveur Tomcat embarqué dans la console GWT

Itération 3 : Appels distants via GWT RPC Appels asynchrones ! Rappelle Corba ! Une interface de service (signature de méthodes distantes)‏ Implémentée côté serveur Une interface plus technique, représente l’interface de service mais en plus technique, faisant apparaître un AsyncCallBack qui contiendra les réponses de l’appel

Diagramme de classes GWT RPC

Appels distants Attention aux types de retour des services ! Ils doivent être sérialisables ! JavaScript n’est pas aussi riche que Java ! Ne pas oublier le fichier des modules XML dans lequel on explicite le service utilisé et son implémentation

GWT ne supporte pas toute l'API Java L’interpréteur JS est mono thread GWT ne supporte pas le chargement dynamique de classes Class c = Class.forName(“”); Object o =c.getInstance(); Une application GWT (ou Ajax) n'est pas référencée par les moteurs de recherche Conclusion : Des limitations…

Conclusion : Mais encore, GWT c’est … I18N Deferred Binding Alimentation de variables à l’exécution (runtime)‏ Imp I = GWT.create(ClassName); Le compilateur a la visibilité du code lors de la compilation, il peut l’optimiser GWT génère le JS pour chaque navigateur, pour chaque d’implémentation de DOM.java

Mais encore, GWT c’est … Des tests unitaires, à travers GWTTestCase que l’on hérite On implémente getModuleName() pour récupérer son module On le teste (assertions)‏

FIN Mais peut être ne s’agit il que du début !

Références Cours GWT par Sami Jaber (Valtech Training)‏ GWT DnD : GXT (ext GWT)‏ Ongwt.com Une appli GWT riche La démo de GWT

Licence du document Ce document est protégé par le contrat : Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France License.