SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
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
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
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
Les Lambdas
(c) LTE Consulting - Tous droits de reproduction interdits 4
ok.addClickHandler( new ClickHandler() {
@Override
public void onClick( ClickEvent event ) {
sendChange();
}
} );
Les Lambdas
(c) LTE Consulting - Tous droits de reproduction interdits 5
ok.addClickHandler( new ClickHandler() {
@Override
public void onClick( ClickEvent event ) {
sendChange();
}
} );
Les Lambdas
(c) LTE Consulting - Tous droits de reproduction interdits 6
ok.addClickHandler( (event) -> sendChange() );
Et en javascript…
ok.addClickHandler( function (event) { sendChange(); } );
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 => 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
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
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œ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
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
Nextgen JSInterop
La nouvelle couche d’interopérabilité GWT / JavaScript
(c) LTE Consulting - Tous droits de reproduction interdits 13
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
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;
}-*/;
}
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;
}-*/;
}
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
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
@JsInterface
interface JQueryDialog
{
void setProperty( String parameter, Object value );
void show();
}
@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
{
…
}
@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();
}
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
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 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
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
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
Merci !
(c) LTE Consulting - Tous droits de reproduction interdits 27
Twitter : @ltearno

Más contenido relacionado

Similar a Le futur de gwt

OCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Technology
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Tugdual Grall
 
Client riche et nouvelles technologies
Client riche et nouvelles technologiesClient riche et nouvelles technologies
Client riche et nouvelles technologiesSébastien Letélié
 
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009JUG Lausanne
 
GWT Approfondissement - GTI780 & MTI780 - ETS - A09
GWT Approfondissement  - GTI780 & MTI780 - ETS - A09GWT Approfondissement  - GTI780 & MTI780 - ETS - A09
GWT Approfondissement - GTI780 & MTI780 - ETS - A09Claude Coulombe
 
Mise en bouche a html5
Mise en bouche a html5Mise en bouche a html5
Mise en bouche a html5laurentt
 
Mise en bouche a html5
Mise en bouche a html5Mise en bouche a html5
Mise en bouche a html5laurentt
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Javatcouery
 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France François-Guillaume Ribreau
 
Google Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative CommonGoogle Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative CommonStéphane Liétard
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009JUG Lausanne
 
Web 2.0 & Génie Logiciel - GTI780 & MTI780 - ETS - A09
Web 2.0 & Génie Logiciel  - GTI780 & MTI780 - ETS - A09Web 2.0 & Génie Logiciel  - GTI780 & MTI780 - ETS - A09
Web 2.0 & Génie Logiciel - GTI780 & MTI780 - ETS - A09Claude Coulombe
 
Les apports d'HTML5 pour l'interopérabilité des applications géospatiales
Les apports d'HTML5 pour l'interopérabilité des applications géospatialesLes apports d'HTML5 pour l'interopérabilité des applications géospatiales
Les apports d'HTML5 pour l'interopérabilité des applications géospatialesGaëtan LAVENU
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
 
Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09Claude Coulombe
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web componentsFrancois ANDRE
 
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Laurent Guérin
 

Similar a Le futur de gwt (20)

OCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeurs
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)
 
CV_Bilel CHAOUADI
CV_Bilel CHAOUADICV_Bilel CHAOUADI
CV_Bilel CHAOUADI
 
Client riche et nouvelles technologies
Client riche et nouvelles technologiesClient riche et nouvelles technologies
Client riche et nouvelles technologies
 
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
 
GWT Approfondissement - GTI780 & MTI780 - ETS - A09
GWT Approfondissement  - GTI780 & MTI780 - ETS - A09GWT Approfondissement  - GTI780 & MTI780 - ETS - A09
GWT Approfondissement - GTI780 & MTI780 - ETS - A09
 
Mise en bouche a html5
Mise en bouche a html5Mise en bouche a html5
Mise en bouche a html5
 
Mise en bouche a html5
Mise en bouche a html5Mise en bouche a html5
Mise en bouche a html5
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Java
 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France Une plateforme moderne pour le groupe SIPA/Ouest-France 
Une plateforme moderne pour le groupe SIPA/Ouest-France 
 
Google Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative CommonGoogle Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative Common
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009
 
Web 2.0 & Génie Logiciel - GTI780 & MTI780 - ETS - A09
Web 2.0 & Génie Logiciel  - GTI780 & MTI780 - ETS - A09Web 2.0 & Génie Logiciel  - GTI780 & MTI780 - ETS - A09
Web 2.0 & Génie Logiciel - GTI780 & MTI780 - ETS - A09
 
Les apports d'HTML5 pour l'interopérabilité des applications géospatiales
Les apports d'HTML5 pour l'interopérabilité des applications géospatialesLes apports d'HTML5 pour l'interopérabilité des applications géospatiales
Les apports d'HTML5 pour l'interopérabilité des applications géospatiales
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
 
Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web components
 
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
 

Le futur de gwt

  • 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 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. 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. 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, 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. 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. 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 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. 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. Nextgen JSInterop La nouvelle couche d’interopérabilité 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 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. 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. 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. 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. Quelques éléments du futur JSNI (c) LTE Consulting - Tous droits de reproduction interdits 18
  • 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. @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. @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. 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. Et le mode Dev ? Un candidat remplaçant ? (c) LTE Consulting - Tous droits de reproduction interdits 23
  • 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. 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. 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. Merci ! (c) LTE Consulting - Tous droits de reproduction interdits 27 Twitter : @ltearno