27
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

Le futur de gwt

  • Upload
    ltearno

  • View
    358

  • Download
    3

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 1

Le futur de GWTCe que nous proposera la version 3.0…

GDG Saint-Quentin, 20 Mars 2014

Page 2: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 2

GWT aujourd’hui

100.000 développeurs utilisent GWT dans le monde

En interne chez Google : 1000 développeurs

Ecosystème dynamique

Page 3: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 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…

Page 4: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 4

Les Lambdas

ok.addClickHandler( new ClickHandler() {@Overridepublic void onClick( ClickEvent event ) {

sendChange();}

} );

Page 5: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 5

Les Lambdas

ok.addClickHandler( new ClickHandler() {@Overridepublic void onClick( ClickEvent event ) {

sendChange();}

} );

Page 6: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 6

Les Lambdas

ok.addClickHandler( (event) -> sendChange() );

Et en javascript…

ok.addClickHandler( function (event) { sendChange(); } );

Page 7: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 7

Retour aux raisons de GWT

Page 8: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 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)

Page 9: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 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).

Page 10: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 10

Les Web ComponentsQui sont-ils ?

Page 11: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 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…

Page 12: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 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.

Page 13: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 13

Nextgen JSInteropLa nouvelle couche d’interopérabilité GWT / JavaScript

Page 14: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 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 !

Page 15: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 15

Une petite piqûre de rappel au sujet de JSNI…

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;

}-*/;}

Page 16: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 16

Et au sujet des JavaScriptObject (représentation Java d’objets Javascript natifs)

public class Element extends Node {protected Element() {}

public final native double getScrollTop() /*-{return this.scrollTop;

}-*/;

public final native double getScrollWidth() /*-{return this.scrollWidth;

}-*/;}

Page 17: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 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…

Page 18: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 18

Quelques éléments du futur JSNI

Page 19: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 19

@JsInterfaceDéfinit le contrat d’un objet Javascript

@JsInterfaceinterface JQueryDialog{

void setProperty( String parameter, Object value );void show();

}

Page 20: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 20

@JsInterface( prototype = « … » )Spécifier le prototype Javascript

@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{

…}

Page 21: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 21

@JsPropertyAccès aux champs d’un objet Javascript

@JsInterfacepublic interface HTMLElement {

void setAttribute(String atr, String value);<T extends HTMLElement> void appendChild( T element );

@JsProperty void setInnerText( String html );@JsProperty String getInnerText();

}

Page 22: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 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.

Page 23: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 23

Et le mode Dev ?Un candidat remplaçant ?

Page 24: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 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

Page 25: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 25

Architecture du SuperDevMode

IDE Compilation Navigateur

Code JavaScript

Info Debug

Code Java

Outil de débogage du navigateur

Page 26: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 26

Probable architecture du prochain mode de développement

IDE Compilation Navigateur

Code JavaScript

Info Debug

Code Java

Debugger

Plugin de Débogage

API de Débogage du

navigateur

Page 27: Le futur de gwt

(c) LTE Consulting - Tous droits de reproduction interdits 27

Merci !

Twitter : @ltearno