GWT Aujourd'hui...

BeZend 2015 - Université de Picardie - LTE Consulting

Arnaud Tournier

ArchiDév passionné chez LTE Consulting

Speaker Devoxx, GWT.create, Paris/Toulouse JUG, etc...

@ltearno www.lteconsulting.fr

Full stack !

Qu'est-ce que GWT ?

  • Un outil de développement pour le Web
  • Coder en Java
  • Améliorer la productivité du développeur
  • Offir un maximum de performances aux utilisateurs

Contenu

  • Compilateur Java vers Javascript très efficace,
  • Emulation d'une partie de la JCL,
  • Gestion automatique des navigateurs,
  • Des outils de production pour le web (resources, i18n, code splitting...),
  • Un environnement de développement puissant.

Histoire

  • Ecrit par Bruce Johnson et open sourcé en 2006 par Google
  • Piloté par un comité mixte (RedHat, Vaadin, Sencha, ArcBees, Bizo, Google)
  • Utilisé dans de nombreuses applications
  • Taille de la communauté (réactivité)

Concurrents

  • Web : Typescript, Dart, DuoCode, TeaVM, CoffeeScript, ...
  • Applications hybrides : React Native, JUniversal, Xamarin, ...

Utilisation

  • Applications Web (Google Spreadsheet, AdWords, ...)
  • Applications hybrides (Google Inbox, ...)
  • Applications métier
  • Ecriture de bibliothèques Javascript

  • Une certaine courbe d'apprentissage
  • Majorité des applis gwt font 20+ écrans et sont responsive

Avantages du Java

  • typage (pour les gros projets)
  • ecosystème riche
  • outillage
  • communauté très active
  • compétences disponibles

Coeur

  • compilateur Java vers Javascript
  • permutations et DeferredBinding
  • JsInterop / JSNI
  • code splitting
  • compilation incrémentale
  • intégration SourceMaps

Périphérie

  • Widgets
  • RPC
  • UiBinder
  • I18N
  • CssResource

Optimisations

  • Permutations,
  • ImageResources,
  • CodeSplitting,
  • DeferredBinding,
  • Code pruning et autres

Permutations

Chaque navigateur reçoit une implémentation différente

Images

  • Le spriting est réalisée automatiquement
  • Latence réseau divisée

Code splitting

L'application charge son code au fur et à mesure des besoins

Deferred Binding

Mécanisme permettant de sélectionner ou générer du code en fonction de variables résolues à la compilation.

Optimisations du code

    Shape shape = new Square(2);
    int area = shape.getArea();
    

devient

    int area = 4;

Environnement de développement

Structure d'un projet

On part de :

  • une page "hôte"
  • des sources Java
  • les resources de l'application (images, css, ...)

Compilation

Le compilateur produit :

  • un fichier Javascript pour chaque permutation,
  • des fichiers de resources "cachables".

Débuggage

Le débugage des applications est possible dans l'IDE ou directement dans Chrome Dev Tools.

Le SuperDevMode est le compilateur incrémental dédié à la phase de développement.

Génère le Javascript et les informations SourceMaps pour le debug dans l'IDE ou dans Chrome directement en Java.

Quelques bibliothèques utiles avec GWT (PUB!)

  • HexaTools (www.github.com/ltearno/hexatools)
    • HexaCss : intégration framework CSS
    • DataBinding
    • RPC rapide multi back-end (Java, Php, ...)
    • JPA 4 Gwt

Demo !

Questions ?

Merci !!!