Click here to load reader

GWT V 1.0 / 2008 - May. Plan Informations – Slides 3 - 7 Widgets GWT – Slides 8 – 11 RPC / JNSI - Slides 12 - 16 Plugins – Slides 17 - 19 Bibliothèques

  • View
    107

  • Download
    0

Embed Size (px)

Text of GWT V 1.0 / 2008 - May. Plan Informations – Slides 3 - 7 Widgets GWT – Slides 8 – 11 RPC /...

  • Page 1
  • GWT V 1.0 / 2008 - May
  • Page 2
  • Plan Informations Slides 3 - 7 Widgets GWT Slides 8 11 RPC / JNSI - Slides 12 - 16 Plugins Slides 17 - 19 Bibliothques de Widgets Slides 20 - 23 Informations complmentaires Slides 24 - 31
  • Page 3
  • 3 Pourquoi GWT ? GWT a t cr pour permettre des dveloppeurs java de crer des clients lgers en AJAX sans toucher javascript. Historique : 2006 : Premire version de GWT (1,0). 2007 : La version 1.4 perd le tag beta et est considre comme stable. 2008 : Version 1.5 RC1 GWT est un projet open source sous licence Apache 2.0 Il est multi-plateforme.
  • Page 4
  • 4 Informations La dernire version stable est la 1.4.62 GWT compatibilit java : Cot client le code java est transform en JavaScript et doit tre en Java 1.4 au plus Ct serveur le code java peut tre en 1.6 tant que les rponses au client utilisent des Objets 1.4 compilable en JS : listeliste Le port par dfaut du tomcat embarqu est le 8888 Tlcharger GWT : http://code.google.com/webtoolkit/download.html
  • Page 5
  • 5 GWT : Support de java Les types de base de Java sont supports, nanmoins Google prcise qu'il est prfrable d'employer des int plutt que des long. La gestion des Exception est supporte, mis part Throwable.getStackTrace() qui ne l'est pas en web mode. Le compilateur parse les assertions, mais ne gnre pas de code JavaScript pour celles-ci. Le multithreading et la synchronisation ne sont pas disponibles. Les interprteurs Javascript sont Monothread. Et si le compilateur de GWT laisse passer l'instruction synchronized, les mthodes de synchronisation ne sont pas disponibles. La rflexion n'est pas disponible dans son ensemble, pour des questions d'optimisation du JS gnr. Il est nanmoins possible de rcupr un objet par sa classe en utilisant GWT.getTypeName(Object). La finalisation n'est pas support. L'instruction strictfp n'est pas support. Description complte des classes supportes
  • Page 6
  • GWT : Gwt gre la plupart des incompatibilits de navigateurs. Gwt Supporte linternationalisation Infos Gwt supporte ant Maven et des tests unitaires On peut aisment ajouter des fonctions dveloppes sous GWT des sites web existants.
  • Page 7
  • GWT : Principe de fonctionnement Code Java (1.4) Code JavaScript Compilateur GWT Client Serveur Code Java (1.6) Services existants RPC
  • Page 8
  • GWT : Principe de fonctionnement.java Java 1.4 max package x.client.java Implmentations des Services Java 1.4, 1.5, 1.6 package x.server Interfaces des services. 1.4 max package x.client Aspect Dveloppement RequteRponse Compilateur GWT.js Aspect Production Client Serveur Interfaces HTTP Requte Rponse Implmentation Services externes
  • Page 9
  • Widgets GWT TextArea - javadocjavadocPasswordTextBox - javadoc javadoc ListBox javadoc HyperLink javadoc TextBox - javadocjavadocCheckBox - javadocjavadoc ToggleButton javadoc PushButton javadoc RadioButton - javadocjavadocButton - javadocjavadoc
  • Page 10
  • Widgets GWT PopupPanel javadoc DialogBox javadoc TabBar javadoc Table javadoc Tree javadoc MenuBar javadoc
  • Page 11
  • Widgets GWT HorizontalSplitPanel javadoc VerticalSplitPanel javadoc FlowPanel javadoc VerticalPanel javadoc HorizontalPanel javadoc StackPanel javadoc
  • Page 12
  • Widgets GWT SuggestBox javadoc DisclosurePanel javadoc RichTextArea javadoc TabPanel javadoc DockPanel javadoc
  • Page 13
  • GWT : Remote Procedure Calls Utiliser le RPC de google revient faire un appel asynchrone en AJAX. Mais puisque nous travaillons en java, GWT passe par deux interfaces et une classe dimplmentation pour faire son appel. Les types de retour doivent tre compilable en JS Lien : Description complte des classes supportesDescription complte des classes supportes Concrtement les diffrents plugins GWT, permettent de simplifier lutilisation du RPC Gnration automatique des Classes Gnrations automatiques des mthodes Ajout dune classe Util linterface MyService pour simplifier lappel (GWT Designer)
  • Page 14
  • GWT : RPC
  • Page 15
  • GWT : RPC Cration du service MyService (Interface) public interface MyService extends RemoteService { public String myMethod(String s); } MyServiceAsycn (Interface) interface MyServiceAsync { public void myMethod(String s, AsyncCallback callback); } MyServiceImpl (Classe) public class MyServiceImpl extends RemoteServiceServlet implements MyService { public String myMethod(String s) { // Do something interesting with 's' here on the server. return s; }
  • Page 16
  • GWT : RPC Appel du service // (1) Create the client proxy. MyServiceAsync myService = (MyServiceAsync) GWT.create(MyService.class); // (2) Specify the URL at which our service implementation is running. ServiceDefTarget endpoint = (ServiceDefTarget) myService; String moduleRelativeURL = GWT.getModuleBaseURL() + "email"; endpoint.setServiceEntryPoint(moduleRelativeURL); // (3) Create an asynchronous callback to handle the result. AsyncCallback callback = new AsyncCallback() { public void onSuccess(Object result) { // do some UI stuff to show success } public void onFailure(Throwable caught) { // do some UI stuff to show failure } }; // (4) Make the call. myService.myMethod(s, callback); }
  • Page 17
  • 17 GWT : JSNI (JavaScript Native Interface) Le compilateur de GWT transforme le code java en javascript. Mais il est parfois ncessaire d'insrer du code javascript dans le java. C'est pourquoi GWT propose JNSI, bas sur JNI on dclare les mthodes o sont insres les portions de code js comme native puis on commente le code javascript. $wnd et $doc reprsentent les objets JavaScript window et document Exemple : public static native void alert(String msg) /*-{ $wnd.alert(msg); }-*/; Source
  • Page 18
  • Informations diverses Les servlets, Service GWT, Fichiers js, EntryPoint, fichiers css, et autres sont mapps dans le fichier src/package/nomModule.gwt.xml Pour utiliser la fonction refresh avec GWT-Ext Dans le fichier public/nomModule.html dplacer la ligne Sous la balise fermante Pour insrer du GWT un endroit spcifique de la page crez une div par exemple Puis dans les sources GWT RootPanel.get( ici ).add(votreGwtAInserer);
  • Page 19
  • 19 Plugins Eclipse Cypal Studio GWT Designer (Instantiation) Netbeans GWT4NB : Tuto : https://gwt4nb.dev.java.net/manual/tutorials/AnagramDemo/gwt 4nbDemo.htm
  • Page 20
  • Plugins - Cypal Studio for GWT Cypal Studio for GWT : http://www.cypal.in/studio http://www.cypal.in/studio Est un plugin eclipse open-source. Ses fonctionnalits sont limites et le GWT designer propose un panel similaire. Crer un module Crer un remote service Maintenir le fichier Async Lancer lapplication en hosted mode Compiler lapplication en JavaScript Dployer sur un serveur extrieur Exporter comme WAR
  • Page 21
  • Plugins GWT Designer GWT Designer (Instantiations) : http://www.instantiations.com/gwtdesigner/. Cest un plugin eclipse payant (40 $ /Poste), il est actuellement le meilleur plugin pour GWT. Il dispose des mmes fonctionnalits que le plugin Cypal auxquelles sajoutent les suivantes : http://www.instantiations.com/gwtdesigner/ Editeur WYSIWYG (drag & drop) Gnration bidirectionnelle du code Support du CSS Wizards gnrant certaines classes rcurrentes Lancement de tests JUnit Refactoring Internationalisation Cration, Edition et Transformation de web project en projets GWT. Documentation trs toffe.
  • Page 22
  • 22 Bibliothques de widgets GWT-Ext (LGPL) Utilise Ext-js 2.0.2 pour son design Ext-GWT, anciennement MyGwt (Licence commerciale et GPL) Il existe de nombreuses autres librairies qui lheure actuelle nont pas encore pris assez dimportance pour figurer dans ces slides.
  • Page 23
  • GWT-Ext Il sagit dune librairie remodelant totalement les widgets basiques de GWT et leur fonctionnement. Concrtement mis part deux ou trois widgets natifs de GWT qui conserveront leur utilit GWT-Ext doit tre utilise 100% dans lapplication. GWT-Ext fourni 4 showcase proposant un large panel de possibilits et le code associ : Demo : http://www.gwt-ext.com/demo/http://www.gwt-ext.com/demo/ Demo-Charts : http://www.gwt-ext.com/demo-charts/http://www.gwt-ext.com/demo-charts/ Demo-Maps : http://www.gwt-ext.com/demo-maps/http://www.gwt-ext.com/demo-maps/ Demo apports utilisateurs : http://www.gwt-ext.com/demo-ux/http://www.gwt-ext.com/demo-ux/ Ainsi quune javadoc dtaille : Javadoc : http://gwt-ext.com/docs/2.0.3/http://gwt-ext.com/docs/2.0.3/ Les slides suivant prsente un petit chantillon des possibilits de GWT-Ext.
  • Page 24
  • Widgets GWT-Ext Resizable/Dragable Panel ToolTip Loading Bar Editable Tree Menu Demo
  • Page 25
  • Widgets GWT-Ext Forms Example Editable Grid Demo
  • Page 26
  • GWT et Telosys - Fonctionnement GWT et Telosys fonctionnent parfaitement ensemble moyennant un build Ant appropri. En effet le fonctionnement par dfaut de GWT ignore le web.xml contenu dans le projet. L'ajout d'une tche Ant approprie rsout le problme, en ajoutant au.war le contenu du WebContent :
  • Page 27
  • Pour appeler un service Telosys depuis le client GWT on commence par construire une requte. Elle prend comme paramtre la mthode et l'url. Puis on execute la requte tout en dfinissant la conduite tenir en cas de succs ou d'chec GWT et Telosys - Communication RequestBuilder builder = new RequestBuilder( RequestBuilder.GET, GWT.getModuleBaseURL()+"/telo.svc?p1="+aTF.getText() +"&p2="+bTF.getText()); //On execute la requte Request response = builder.sendRequest(null, new RequestCallback() { //Si la requete choue public void onError(Request request, Throwable exception) {} //Si le requte russie public void onResponseReceived(Request request, Response response) {} });
  • Page 28
  • 28 Comparaison : GWT, Flex, OpenLaszlo CA- Performance ct client B+BAWidgets/Features/ Puissance du toolkit B-CBFacilite de dveloppement BAB+Performance ct serveur A+B+B-Portabilite B-B+C+ (B+ avec plugin Eclipse payant (400 $) Processus de dveloppement B- BSyntaxe du language OpenLaszloGWTFlex Lauteur de ce comparatif Kevin Whinnery, est un ingnieur systme spcialis dans le dveloppement dinterfaces Web. Il semble avoir une prfrence marque pour Flex, ce qui devrait relativiser la note de facilite de dveloppement de GWT.
  • Page 29
  • 29 A venir Google dveloppe son propre designer Version 1.5 de GWT (Google): Prise en charge de java 5 GWT Designer (Instantiations): Support des widgets de GWT-Ext en cours de dveloppement, et peut-tre Ext-GWT
  • Page 30
  • 30 Lexique JNI : est un framework qui permet du code Java s'excutant l'intrieur de la JVM d'appeler et d'tre appel par des applications natives ou avec des bibliothques logicielles bases sur d'autres langages. Module : Un module reprsente une application GWT, lors du dploiement chaque module est un.war EntryPoint : LEntryPoint est une classe qui hrite dEntryPoint cest par elle que lon place les diffrentes fonctions de lapplication dans le.html du module. On peut crer plusieurs EntryPoint dans un module pour clarifier le code. Mais elles doivent insrer dans le mme.html pour ne pas gnrer derreurs.
  • Page 31
  • Tutoriels Pour dmarrer Installation : http://code.google.com/webtoolkit/gettingstarted.html http://code.google.com/webtoolkit/gettingstarted.html Premiers pas : http://moritan.developpez.com/tutoriels/java/gwt/premier/projet/ http://moritan.developpez.com/tutoriels/java/gwt/premier/projet/ Autres : http://www.drivenbycuriosity.com/mywp/
  • Page 32
  • Exemples GWT-Ext Demo : http://www.gwt-ext.com/demohttp://www.gwt-ext.com/demo Pibb : https://pibb.com/pibbhttps://pibb.com/pibb MapEcos : http://mapecos.org/maphttp://mapecos.org/map Infos : http://googlewebtoolkit.blogspot.com/2008/02/spreading-word- about-pollution-in-us.html http://googlewebtoolkit.blogspot.com/2008/02/spreading-word- about-pollution-in-us.html Project Gutenberg : Live Search (Beta)Live Search Wibokr : http://www.wibokr.com/page/page.do#http://www.wibokr.com/page/page.do# OpenKM : http://www.openkm.com/http://www.openkm.com/ ContactOffice : http://beta.contactoffice.com/ (Beta)http://beta.contactoffice.com/ Google : Checkout / BaseCheckout Base Fabset : http://www.fabset.com/http://www.fabset.com/
  • Page 33
  • Documentations Prsentations Dveloppez.com : http://moritan.developpez.com/tutoriels/java/gwt/presentation/ http://moritan.developpez.com/tutoriels/java/gwt/presentation/ Api Javadoc : http://google-web- toolkit.googlecode.com/svn/javadoc/1.4/index.htmlhttp://google-web- toolkit.googlecode.com/svn/javadoc/1.4/index.html
  • Page 34
  • 34 Sources GWT JNSI : http://code.google.com/webtoolkit/documentation/com.google.gwt.d oc.DeveloperGuide.JavaScriptNativeInterface.html http://code.google.com/webtoolkit/documentation/com.google.gwt.d oc.DeveloperGuide.JavaScriptNativeInterface.html News : http://www.ongwt.com/http://www.ongwt.com/ Comparatif : http://www.sys-con.com/read/489336_1.htm http://www.sys-con.com/read/489336_1.htm