Le futur de gwt

  • View
    347

  • Download
    3

Embed Size (px)

DESCRIPTION

Un rsum de toutes les nouveauts venir dans GWT 3.0 Java 8 Lambdas, JsInterop ... Avec un petit appart sur les WebComponents

Transcript

  • 1. Le futur de GWT Ce que nous proposera la version 3.0 (c) LTE Consulting - Tous droits de reproduction interdits 1 GDG Saint-Quentin, 20 Mars 2014

2. GWT aujourdhui 100.000 dveloppeurs utilisent GWT dans le monde En interne chez Google : 1000 dveloppeurs Ecosystme dynamique (c) LTE Consulting - Tous droits de reproduction interdits 2 3. Les nouveauts prvues pour GWT 3 Compatibilit avec Java 8 Les lambdas sont trs attendues ! Amlioration du code JavaScript gnr Plus adapt aux navigateurs modernes. Prise en charge de CSS3 (GSSResource) Prise en charge du modle FlexBox JsInterop Le vieux DevMode est mort (c) LTE Consulting - Tous droits de reproduction interdits 3 4. Les Lambdas (c) LTE Consulting - Tous droits de reproduction interdits 4 ok.addClickHandler( new ClickHandler() { @Override public void onClick( ClickEvent event ) { sendChange(); } } ); 5. Les Lambdas (c) LTE Consulting - Tous droits de reproduction interdits 5 ok.addClickHandler( new ClickHandler() { @Override public void onClick( ClickEvent event ) { sendChange(); } } ); 6. Les Lambdas (c) LTE Consulting - Tous droits de reproduction interdits 6 ok.addClickHandler( (event) -> sendChange() ); Et en javascript ok.addClickHandler( function (event) { sendChange(); } ); 7. Retour aux raisons de GWT (c) LTE Consulting - Tous droits de reproduction interdits 7 8. Quelques raisons En 2006, lcosystme des navigateurs est un enfer Problmes de compatibilit (trop de disparits => JQuery) Non respect des standards Fuites mmoire entre le DOM et le JavaScript Il est difficile en sappuyant sur le DOM de construire une hirarchie de Widgets. Pourtant les VM JavaScripts montent dj en puissance et permettent de crer de vraies applications (ex : gmail) (c) LTE Consulting - Tous droits de reproduction interdits 8 9. Et aujourdhui ? Les standards du Web voluent trs vite, Les navigateurs sont beaucoup plus homognes, Plus puissants, Avec mises jour automatiques. Le standard des Web Components va permettre de crer de la structure bas niveau (DOM). (c) LTE Consulting - Tous droits de reproduction interdits 9 10. Les Web Components Qui sont-ils ? (c) LTE Consulting - Tous droits de reproduction interdits 10 11. Ils arrivent, qui sont-ils ? En fait un ensemble cohrent de plusieurs standards : Shadow DOM : Encapsulation de nuds DOM Etanchit CSS HTML Templates Des modles DOM, non parss avant utilisation Custom Elements Possibilit de crer de vrais nouveaux lments HTML Possibilit dajouter des fonctionnalits des lments existants HTML Imports Importation dunits HTML + CSS + JavaScript Object Observer, etc (c) LTE Consulting - Tous droits de reproduction interdits 11 12. Future tendance du dveloppement Web Il est maintenant possible dencapsuler ses Widgets directement en HTML, Ils sont intgrables dans un document, sans pour autant polluer celui-ci. On peut donc faire des Widgets directement en HTML De nouveaux outils de dveloppement vont merger. Ceux-ci combleront le vide laiss par les diteurs Flex entre autres GWT doit donc sadapter et sintgrer compltement dans cette mouvance. (c) LTE Consulting - Tous droits de reproduction interdits 12 13. Nextgen JSInterop La nouvelle couche dinteroprabilit GWT / JavaScript (c) LTE Consulting - Tous droits de reproduction interdits 13 14. Pourquoi une nouvelle couche ? Le code JSNI est trop fastidieux crire Le standard Web va offrir nativement un grand nombre de fonctionnalits haut-niveau proposes par des outils comme JQuery, AngularJS, etc. Il sera donc beaucoup plus frquent dintgrer des bibliothques natives JavaScript (bibliothques de Web Components par exemple). GWT pourra jouer le rle de glue applicative. Pour conserver une bonne productivit, GWT se doit donc doffrir une intgration avec JavaScript encore plus transparente ! (c) LTE Consulting - Tous droits de reproduction interdits 14 15. Une petite piqre de rappel au sujet de JSNI (c) LTE Consulting - Tous droits de reproduction interdits 15 public class DOMImpl { public native EventTarget getCurrentTarget() /*-{ return this.currentTarget; }-*/; public final native int getKeyCode() /*-{ return this.keyCode; }-*/; public native boolean getMetaKey() /*-{ return evt.metaKey; }-*/; } 16. Et au sujet des JavaScriptObject (reprsentation Java dobjets Javascript natifs) (c) LTE Consulting - Tous droits de reproduction interdits 16 public class Element extends Node { protected Element() { } public final native double getScrollTop() /*-{ return this.scrollTop; }-*/; public final native double getScrollWidth() /*-{ return this.scrollWidth; }-*/; } 17. Inconvnients principaux des JSO On ne peut les construire depuis Java (pas de new), Toutes leurs mthodes doivent tre finales (pas de polymorphisme), Une interface Java ne peut tre implmente que par UNE seule classe JSO, On ne peut tendre des objets JavaScript. Lorsque lon wrappe une bibliothque JavaScript, la plupart du code crit est de la glue syntaxique (c) LTE Consulting - Tous droits de reproduction interdits 17 18. Quelques lments du futur JSNI (c) LTE Consulting - Tous droits de reproduction interdits 18 19. @JsInterface Dfinit le contrat dun objet Javascript (c) LTE Consulting - Tous droits de reproduction interdits 19 @JsInterface interface JQueryDialog { void setProperty( String parameter, Object value ); void show(); } 20. @JsInterface( prototype = ) Spcifier le prototype Javascript (c) LTE Consulting - Tous droits de reproduction interdits 20 @JsInterface(prototype = "HTMLElement") public interface HTMLElement { void setAttribute(String name, String value); void appendChild( T element ); @JsProperty void setInnerText( String html ); } class MyCustomElement extends HTMLElement.Prototype { } 21. @JsProperty Accs aux champs dun objet Javascript (c) LTE Consulting - Tous droits de reproduction interdits 21 @JsInterface public interface HTMLElement { void setAttribute(String atr, String value); void appendChild( T element ); @JsProperty void setInnerText( String html ); @JsProperty String getInnerText(); } 22. Et dautres encore Les mthodes par dfaut dinterface de Java 8 GWT.jsni( ) pour faciliter lmission de code JavaScript @JsExport pour exporter des prototypes dans le scope JavaScript @JsConvert pour les conversions de type @JsAware, @JsWrapper, JsObject, JsArray, etc. (c) LTE Consulting - Tous droits de reproduction interdits 22 23. Et le mode Dev ? Un candidat remplaant ? (c) LTE Consulting - Tous droits de reproduction interdits 23 24. Disparition du mode dev NPAPI, lapi dfunte. Super Dev Mode : Compilation brouillon trs rapide. Dbogage dans le navigateur grce Source Maps. Perte de productivit norme. Rflexions autour dune alternative Mode Dev en JavaScript, SourceMap debugger pour Eclipse (c) LTE Consulting - Tous droits de reproduction interdits 24 25. Architecture du SuperDevMode (c) LTE Consulting - Tous droits de reproduction interdits 25 IDE Compilation Navigateur Code JavaScript Info Debug Code Java Outil de dbogage du navigateur 26. Probable architecture du prochain mode de dveloppement (c) LTE Consulting - Tous droits de reproduction interdits 26 IDE Compilation Navigateur Code JavaScript Info Debug Code Java Debugger Plugin de Dbogage API de Dbogage du navigateur 27. Merci ! (c) LTE Consulting - Tous droits de reproduction interdits 27 Twitter : @ltearno