Le futur de GWT
Ce que nous proposera la version 3.0…
(c) LTE Consulting - Tous droits de reproduction interdits 1
GDG Sai...
GWT aujourd’hui
 100.000 développeurs utilisent GWT dans le monde
 En interne chez Google : 1000 développeurs
 Ecosystè...
Les nouveautés prévues pour GWT 3
 Compatibilité avec Java 8
 Les lambdas sont très attendues !
 Amélioration du code J...
Les Lambdas
(c) LTE Consulting - Tous droits de reproduction interdits 4
ok.addClickHandler( new ClickHandler() {
@Overrid...
Les Lambdas
(c) LTE Consulting - Tous droits de reproduction interdits 5
ok.addClickHandler( new ClickHandler() {
@Overrid...
Les Lambdas
(c) LTE Consulting - Tous droits de reproduction interdits 6
ok.addClickHandler( (event) -> sendChange() );
Et...
Retour aux raisons de
GWT
(c) LTE Consulting - Tous droits de reproduction interdits 7
Quelques raisons…
 En 2006, l’écosystème des navigateurs est un enfer
 Problèmes de compatibilité (trop de disparités =>...
Et aujourd’hui ?
 Les standards du Web évoluent très vite,
 Les navigateurs sont beaucoup plus homogènes,
 Plus puissan...
Les Web Components
Qui sont-ils ?
(c) LTE Consulting - Tous droits de reproduction interdits 10
Ils arrivent, qui sont-ils ?
 En fait un ensemble cohérent de plusieurs standards :
 Shadow DOM :
 Encapsulation de nœu...
Future tendance du développement Web
 Il est maintenant possible d’encapsuler ses Widgets directement en HTML,
 Ils sont...
Nextgen JSInterop
La nouvelle couche d’interopérabilité GWT / JavaScript
(c) LTE Consulting - Tous droits de reproduction ...
Pourquoi une nouvelle couche ?
 Le code JSNI est trop fastidieux à écrire…
 Le standard Web va offrir nativement un gran...
Une petite piqûre de rappel au sujet de
JSNI…
(c) LTE Consulting - Tous droits de reproduction interdits 15
public class D...
Et au sujet des JavaScriptObject
(représentation Java d’objets Javascript natifs)
(c) LTE Consulting - Tous droits de repr...
Inconvénients principaux des JSO
 On ne peut les construire depuis Java (pas de new…),
 Toutes leurs méthodes doivent êt...
Quelques éléments du futur JSNI
(c) LTE Consulting - Tous droits de reproduction interdits 18
@JsInterface
Définit le contrat d’un objet Javascript
(c) LTE Consulting - Tous droits de reproduction interdits 19
@JsInt...
@JsInterface( prototype = « … » )
Spécifier le prototype Javascript
(c) LTE Consulting - Tous droits de reproduction inter...
@JsProperty
Accès aux champs d’un objet Javascript
(c) LTE Consulting - Tous droits de reproduction interdits 21
@JsInterf...
Et d’autres encore…
 Les méthodes par défaut d’interface de Java 8
 GWT.jsni( « … » ) pour faciliter l’émission de code ...
Et le mode Dev ?
Un candidat remplaçant ?
(c) LTE Consulting - Tous droits de reproduction interdits 23
Disparition du mode dev
 NPAPI, l’api défunte.
 Super Dev Mode :
 Compilation brouillon très rapide.
 Débogage dans le...
Architecture du SuperDevMode
(c) LTE Consulting - Tous droits de reproduction interdits 25
IDE Compilation Navigateur
Code...
Probable architecture du prochain mode
de développement
(c) LTE Consulting - Tous droits de reproduction interdits 26
IDE ...
Merci !
(c) LTE Consulting - Tous droits de reproduction interdits 27
Twitter : @ltearno
Prochain SlideShare
Chargement dans…5
×

Le futur de gwt

805 vues

Publié le

Un résumé de toutes les nouveautés à venir dans GWT 3.0
Java 8 Lambdas, JsInterop ... Avec un petit apparté sur les WebComponents

Publié dans : Logiciels
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
805
Sur SlideShare
0
Issues des intégrations
0
Intégrations
15
Actions
Partages
0
Téléchargements
18
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Le futur de gwt

  1. 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. 2. GWT aujourd’hui  100.000 développeurs utilisent GWT dans le monde  En interne chez Google : 1000 développeurs  Ecosystème dynamique (c) LTE Consulting - Tous droits de reproduction interdits 2
  3. 3. Les nouveautés prévues pour GWT 3  Compatibilité avec Java 8  Les lambdas sont très attendues !  Amélioration du code JavaScript généré  Plus adapté aux navigateurs modernes.  Prise en charge de CSS3 (GSSResource)  Prise en charge du modèle FlexBox  JsInterop  Le vieux DevMode est mort… (c) LTE Consulting - Tous droits de reproduction interdits 3
  4. 4. Les Lambdas (c) LTE Consulting - Tous droits de reproduction interdits 4 ok.addClickHandler( new ClickHandler() { @Override public void onClick( ClickEvent event ) { sendChange(); } } );
  5. 5. Les Lambdas (c) LTE Consulting - Tous droits de reproduction interdits 5 ok.addClickHandler( new ClickHandler() { @Override public void onClick( ClickEvent event ) { sendChange(); } } );
  6. 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. 7. Retour aux raisons de GWT (c) LTE Consulting - Tous droits de reproduction interdits 7
  8. 8. Quelques raisons…  En 2006, l’écosystème des navigateurs est un enfer  Problèmes de compatibilité (trop de disparités => JQuery)  Non respect des standards  Fuites mémoire entre le DOM et le JavaScript  Il est difficile en s’appuyant sur le DOM de construire une hiérarchie de Widgets.  Pourtant les VM JavaScripts montent déjà en puissance et permettent de créer de vraies applications (ex : gmail) (c) LTE Consulting - Tous droits de reproduction interdits 8
  9. 9. Et aujourd’hui ?  Les standards du Web évoluent très vite,  Les navigateurs sont beaucoup plus homogènes,  Plus puissants,  Avec mises à jour automatiques.  Le standard des Web Components va permettre de créer de la structure à bas niveau (DOM). (c) LTE Consulting - Tous droits de reproduction interdits 9
  10. 10. Les Web Components Qui sont-ils ? (c) LTE Consulting - Tous droits de reproduction interdits 10
  11. 11. Ils arrivent, qui sont-ils ?  En fait un ensemble cohérent de plusieurs standards :  Shadow DOM :  Encapsulation de nœuds DOM  Etanchéité CSS  HTML Templates  Des modèles DOM, non parsés avant utilisation  Custom Elements  Possibilité de créer de vrais nouveaux éléments HTML  Possibilité d’ajouter des fonctionnalités à des éléments existants  HTML Imports  Importation d’unités HTML + CSS + JavaScript  Object Observer, etc… (c) LTE Consulting - Tous droits de reproduction interdits 11
  12. 12. Future tendance du développement Web  Il est maintenant possible d’encapsuler ses Widgets directement en HTML,  Ils sont intégrables dans un document, sans pour autant polluer celui-ci.  On peut donc faire des « Widgets » directement en HTML  De nouveaux outils de développement vont émerger. Ceux-ci combleront le vide laissé par les éditeurs Flex entre autres…  GWT doit donc s’adapter et s’intégrer complètement dans cette mouvance. (c) LTE Consulting - Tous droits de reproduction interdits 12
  13. 13. Nextgen JSInterop La nouvelle couche d’interopérabilité GWT / JavaScript (c) LTE Consulting - Tous droits de reproduction interdits 13
  14. 14. Pourquoi une nouvelle couche ?  Le code JSNI est trop fastidieux à écrire…  Le standard Web va offrir nativement un grand nombre de fonctionnalités haut-niveau proposées par des outils comme JQuery, AngularJS, etc.  Il sera donc beaucoup plus fréquent d’intégrer des bibliothèques natives JavaScript (bibliothèques de Web Components par exemple).  GWT pourra jouer le rôle de « glue » applicative.  Pour conserver une bonne productivité, GWT se doit donc d’offrir une intégration avec JavaScript encore plus transparente ! (c) LTE Consulting - Tous droits de reproduction interdits 14
  15. 15. Une petite piqûre 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. 16. Et au sujet des JavaScriptObject (représentation Java d’objets 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. 17. Inconvénients principaux des JSO  On ne peut les construire depuis Java (pas de new…),  Toutes leurs méthodes doivent être finales (pas de polymorphisme),  Une interface Java ne peut être implémentée que par UNE seule classe JSO,  On ne peut étendre des objets JavaScript.  Lorsque l’on wrappe une bibliothèque JavaScript, la plupart du code écrit est de la « glue » syntaxique… (c) LTE Consulting - Tous droits de reproduction interdits 17
  18. 18. Quelques éléments du futur JSNI (c) LTE Consulting - Tous droits de reproduction interdits 18
  19. 19. @JsInterface Définit le contrat d’un objet Javascript (c) LTE Consulting - Tous droits de reproduction interdits 19 @JsInterface interface JQueryDialog { void setProperty( String parameter, Object value ); void show(); }
  20. 20. @JsInterface( prototype = « … » ) Spécifier le prototype Javascript (c) LTE Consulting - Tous droits de reproduction interdits 20 @JsInterface(prototype = "HTMLElement") public interface HTMLElement { void setAttribute(String name, String value); <T extends HTMLElement> void appendChild( T element ); @JsProperty void setInnerText( String html ); } class MyCustomElement extends HTMLElement.Prototype { … }
  21. 21. @JsProperty Accès aux champs d’un objet Javascript (c) LTE Consulting - Tous droits de reproduction interdits 21 @JsInterface public interface HTMLElement { void setAttribute(String atr, String value); <T extends HTMLElement> void appendChild( T element ); @JsProperty void setInnerText( String html ); @JsProperty String getInnerText(); }
  22. 22. Et d’autres encore…  Les méthodes par défaut d’interface de Java 8  GWT.jsni( « … » ) pour faciliter l’émission 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. 23. Et le mode Dev ? Un candidat remplaçant ? (c) LTE Consulting - Tous droits de reproduction interdits 23
  24. 24. Disparition du mode dev  NPAPI, l’api défunte.  Super Dev Mode :  Compilation brouillon très rapide.  Débogage dans le navigateur grâce à Source Maps.  Perte de productivité énorme.  Réflexions autour d’une alternative  Mode Dev en JavaScript,  SourceMap debugger pour Eclipse (c) LTE Consulting - Tous droits de reproduction interdits 24
  25. 25. Architecture du SuperDevMode (c) LTE Consulting - Tous droits de reproduction interdits 25 IDE Compilation Navigateur Code JavaScript Info Debug Code Java Outil de débogage du navigateur
  26. 26. Probable architecture du prochain mode de développement (c) LTE Consulting - Tous droits de reproduction interdits 26 IDE Compilation Navigateur Code JavaScript Info Debug Code Java Debugger Plugin de Débogage API de Débogage du navigateur
  27. 27. Merci ! (c) LTE Consulting - Tous droits de reproduction interdits 27 Twitter : @ltearno

×