30/04/2015

Tu fais encore du GWT ?

Ben oui, je fais encore du GWT.
C'est une question que j'ai eu plusieurs fois à Devoxx.
Ce n'est pas du tout 'hype' d'utiliser un outil qui a 10 ans.
Quoi 10 ans! oui, Java a bientôt 20 ans, et GWT bientôt 10 ans.

Samy Jaber leur répond que cette année, c'est le retour en force de GWT.
C'était le titre de sa présentation.
GWT n'est pas mort.
Alors je répète et complète ce qu'il a dit.

Pourquoi c'est un bon outil ?

 - Coder en Java, avec un typage fort
 - Utiliser les IDE Java, en insistant sur la compilation (c'est le feedback le plus rapide pour un dev)
 - Les refactoring sont facilités
 - Multiples vérifications de syntaxe html, de typo de style, et de clé de traduction
 - Utiliser les outils de Test Java
 - Utiliser les outils de build Java
 - Utiliser les outils de mesure de qualité de code Java
 - Les performances pour l'utilisateur final sont optimales
 - La taille du javascript à télécharger pour l'utilisateur final est optimal (élément critique pour une utilisation sur mobile)
 - Les différences des navigateurs sont masquées
 - Google le maintient et l'utilise

Pourquoi il a eu un creux ?

 - Les temps de build étaient long
 - Ce n'est pas parce que l'on code en java que l'on peut se passer de bien comprendre comment fonctionne une page web.
 - Lorsque Google a libéré le projet à la communauté Open Source en 2012, il y a eu comme un flottement.
 - L'API navigateur utilisé par le Dev Mode, NPAPI a été annoncée dépréciée en 2013, elle a été supprimée mi 2014 et n'existe plus sur les dernières versions de chrome et firefox. Et durant cette phase, le super dev mode n'était pas complètement opérationnel.
 - A la meme époque, l'écosystème Node, Javascript a grandit très vite avec des outils de build et une gestion de package comme bower en 2012

Pourquoi il a de l'avenir ?

 - Google continue de l'utiliser, par exemple pour Inbox, mais n'est plus tout seul
 - Le steering comitee et la communauté sont très actifs
 - Une conférence annuelle nommée gwtcreate sur deux sites (Mountain View et Munich)
 - Un nouveau logo, et un nouveau design du site web gwtproject
 - La version 2.7 est d'excellente qualité
 - Le super DevMode permet de faire une compilation partielle, seulement pour la permutation nécessaire, et incrémentale.
 - Debuggage dans le navigateur avec sourcemap ou dans l'IDE IntelliJ ou Eclipse avec SDBG
 - Les temps de build complet on été améliorés, et cela va continuer
 - Les applications hybrides basées sur des vues web
 - les applications android réutilisant du code de l'application web gwt
 - Le language javascript et les API des navigateurs évoluant sans cesse, GWT saura utiliser au maximum les possibilités de chaque navigateur, en utilisant elemental
 - Votre application web est ou va être complexe par les fonctionnalités qu'elles va proposer et les apis du navigateur qu'elle va utiliser

 Que contiendra la version 2.8 ?

 - Les performances au runtime vont continuer de s'améliorer
 - JsInterop va faciliter l'appel de code Javascript (les wrappers)
 - Utilisation des webcomponent
 - Une nouvelle syntaxe pour écrire les feuilles de style, GSS
 - Et surtout, support du JDK 8, qui corrige le côté verbeux de java

Quelques conseil pour commencer ou continuer

- Utiliser activity/presenter & places
- Utiliser des regions
- Tester les activity/presenter
- Utiliser Mockito
- Ne PAS utiliser Jukito
- Utiliser des événements pour communiquer entre les activités/presenter
- Utiliser l'injection avec gin
- N'utiliser les widgets que si nécessaire
- Ne pas mettre du tout de code css dans les ui.xml
- Utiliser RestyGWT
- Utiliser GQuery
- Utiliser Bootstrap
- Utiliser Usefull Logging 

Sources

http://fr.slideshare.net/samijaber/devoxx-fr2015-gwt
http://www.gwtproject.org/
https://en.wikipedia.org/wiki/Google_Web_Toolkit
http://gwtcreate.com/slides/
https://github.com/ronanquillevere/GWT-Multi-Activities
http://gwt-france.blogspot.fr/2014/09/utiliser-le-nouveau-super-dev-mode-avec.html

Devoxx 2015


La 4eme edition de Devoxx France a réuni 2500 personnes durant 3 jours. Ce qui est le plus marquant, c'est que ca part dans tous les sens, Jusqu'à 10 sessions en parallèle!

Keynotes Jeudi

L'equipe - Nicolas Martignole (Indep) @nmartignole, Antonio Goncalves (Indep) @agoncal, Zouheir Caidi (Telecom Paris Tech)

Beaucoup d'énergie et d'humour pour lancer la conférence des developpeurs passionnés.

Le futur de la robotique personnelle - Rodolphe Gelin (Aldebaran)

Dans des videos d'anticipation, nous voyons un Nao tenant compagnie à une personne agée.
On connaissait déjà Nao, et voici Romeo, un robot plus humanoide et plus grand (1m40 contre 58cm pour le Nao).
Le "robot de maison" utilise finalement à peu près les mêmes fonctions que le smartphone, mais c'est une experience utilisateur complètement différente.

La problématique du contrôle des technologies de l'information - Eric Filiol (Esia) @efiliol

Une bonne piqure de rappel sur notre rôle de citoyen, surtout dans le contexte actuel de la loi sur le renseignement.

Reading and Writing in 20 years - Dan Allen (Red Hat, Asciidoctor) @mojavelinux

Retour sur la dualité livre physique / livre numérique. Une porte ouverte sur l'aspect collaboratif de l'écriture numérique.


Sessions Jeudi

Personal kanban - Guillaume Lours (The Host) @glours

Quelques conseils pour bien gérer son temps en adaptant la pratique du kanban pour un usage personnel. Perso j'en suis encore à la todo-list avec wunderlist .

10 trucs que j'ai appris en lisant le code source de Chrome OS - Francois Beaufort (en retard) (Google, Chrome) +FrancoisBeaufort

Plusieurs experiences sur des features chachées dont on découvre la présence et le fonctionnement en regardant le code Open Source de Chromium .

15min to try apache Spark using the Apache Spark Notebook and Docker - Andy Petrella (NextLab) @noootsab

Je découvrais apache spark, et pour l'avoir essayé depuis, la facilité d'utilisation est impressionnate.
Un petit rappel des couches présentées
- Spark Notebook  : Interface web permettant de gérer des projets de scripts en scala et de visualiser les résultats. Inspiré de Scala Notebook
- Apache Spark  : Packaging intelligent de plusieurs briques dont hadoop, avec des api pour Java, Scala et Python
- Hadoop : Plateforme Map-Reduce Distribué, avec une API en Java, ...
- HDFS: Système de fichier utilisé par Hadoop

La latence applicative mobile: enjeux, sources, solutions... la révolution Netflix + Push - Nicolas Babel (Motwin, streamdataio), Allan Denis (ICDC)

Pour commencer un petit rappel de l'importance des performance. 0.5s est la limite à partir de laquelle le corps sort du comportement de reflexe.
Il n'ont pas pu faire la demo du produit streamdata.io , mais je l'ai vue ensuite sur leur stand.
Le principe est simple, mais terriblement efficace. Pour une application real-time , streamdata fournit un proxy intelligent et un SDK Javascript. Vous configurez votre source, une url qui fournit des données au format json, et stream data se charge de vous fournir une première version, puis de vous notifier des changements, mais ne transite entre votre navigateur et le proxy, que des diff au format json patch .

Je déploie dans mon datacenter virtuel avec OpenStack - Sylvain Avril (Indep) @sylvain_avril

Open Stack est un ensemble d'API permettant de gérer les différentes parties d'un cloud.
Présentation des composants
- Virtualisation, CPU: Nova
- Disque: Cinder
- Image de machine virtuelle, OS: Glance
- Reseau: Neutron https://wiki.openstack.org/wiki/Neutron
- Base de donnée relationnelles et autres: Trove
- Base de données objet: Swift
- Certficats: Barbican
- DNS: Designate
- Hadoop: Sahara
- Message Queue, Event: Zaqar
- System de fichier partagé: Manila
- Machines physiques: Ironic
- Docker, Kubernetes: Magnum
- Deploiement d'application: Murano

Enfin, non relié directement à OpenStack, Mesos https://mesos.apache.org/

Changing the Wheel of a moving car: Faire évoluer l'infra sans interruption - Nicolas de Loof (Cloudbees) @ndeloof

Le service de build utilisant des serveurs amazon, basé sur  Jenkins, application utilisant intensivement le système de fichier.
Utilisation de VFS pour faire des images et des restaurations de disques.
Une approche Chaos monkey, mais ils le font encore à la main.
Check engines: nagios , pingdom, ...
notifications: pagerduty, ...
Monitoring: newrelic, ...

On n'est pas que des cobayes : ORM OGM et NoSql sont-ils solubles ? - Emmanuel Bernard (Red Hat, Hibernate) @emmanuelbernard

Démonstration que le mapping designé pour une base de donnée relationnelle a une correspondance 'naturelle' en nosql, c'est à dire la manière la plus courante de le faire pour une base.
Des travaux sont en cours pour MongoDB, Infinispan, EhCache, Neo4J. Cela me semble intéressant et prometteur.

Machine Learning avec Spark, MLLib et D3.js - Hayssam Saleh (ebiznext) @hayssams

Autre présentation sur apache Spark mllib Machine Learning
Recherche du bon modèle par l'apprentissage.
Nécessité de fournir les bonnes valeurs.

Jeu de rôle en ligne massivement multijoueur avec Firebase - Alexis Moussine Pouchkine (Google) @alexismp, Thomas Guerin (Xebia) @Tom404_

Ils présentent un petit jeu de checkin dans les gares, utilisant firebase.
Le concept de firebase est que le developeur de jeu ne s'occupe ni de la disponnibilité du reseau, ni de la synchronisation des données. Un SDK Javascript est disponible, mais aussi Java, Objective-C, et une API rest. Pour le SDk Javascript, On peut imaginer une architecture où le backend est composé uniquement de la base de données. Si l'on veut ajouter de la logique, firebase propose des handlers. De plus, GeoFire permet de gérer des données de localisation.

BOF des Google user Group - Thibault Pouget (Cirruseo) @thibaultpouget, Jean-Francois Garreau (SQLI) @jefBinomed, Alain Regnier (Alto Labs)

Une présentation des nouveauté Google, de plus en plus là où on n'attend pas google.

BOF Docker Paris - Adrien Blind (Société générale) @adrienblind, Patrick Aljord (Indep) @patcito, Patrick Chanezon (Docker) @chanezon

C'était pour les participants l'occasion de poser des questions à Patrick Chanezon qui a tout récemment rejoint Docker.

Keynotes Vendredi

Un robot peut-il apprendre comme un enfant ? - Pierre-Yves Oudeyer (Inria) @pyoudeyer

Un aperçu de ce que nous reserve l'intelligence artificielle.

The upcoming decentralisation Singularity - Stephan Tual (Ethereum) @stephantual

Présentation de Ethereum , platte-forme de publication décentralisée.

The end of server management: hosting have to become a commodity - Quentin Adam (Clever Cloud) @waxzce

Une comparaison originale avec l'électricité, que l'on considère maintenant comme une simple marchandise.
http://www.slideshare.net/quentinadam/the-end-of-server-management-hosting-have-to-become-a-commodity-keynote-devoxx-fr-2015

Java; the next 20 years - Brian Goetz (Oracle) @briangoetz

Quelques examples pour nous montrer que la plate-forme évolue avec une attention particulière à la rétro-compatibilité.

Sessions Vendredi

Ifinite Infinispan - Ray Tsang (absent) (Google) , Ludovic Champenois (Google) @ludoch

Le cache en mémoire et distribué à grande échelle, avec des exemples sur la plate-forme Google Cloud.

API Hypermedia - David Martin (Ippon) @_dmartin_

Une bonne piqure de rappel et quelques concepts radicaux. Une API basée sur des liens permet de donner des possibilités de découverte et de navigation aux dévelopeurs qui consomment ces APIs. Cela porte le nom de Hateoas (Hypermedia as the Ebgine of Application State). Le petit poster offert par Octo résume bien cela aussi.
http://www.slideshare.net/delirii/api-hypermedia-devoxx-fr

Developement Web, ce qui vous attend en 2015 - Romain Linsolas (Société Générale) @romaintaz

- EcmaScript 6
- Web Components
- AngularJS 2
- React JS
- Ionic framework
- Aurelia
http://www.slideshare.net/linsolas/devoxx-france-2015-dveloppement-web-en-2015

Le retour en force de GWT - Samy Jaber (DNG) @samijaber/

Une passion qu'il partage.
Vous trouverez un article dédié à gwt.

Mot de la fin

Merci aux organisateurs, à toute la team et aux speakers, et à mycom de m'avoir donné la possibilité d'y aller, j'en ai pris plein la tête.