Préambule
Après cette 1ère journée de conférences, il semble maintenant clair que le monde des applications de gestions basées sur des clients légers va à nouveau subir des bouleversements de taille. Dans un premier temps, IE6 et son règne sans partage du marché des navigateurs web de mi-2001 à mi-2006 (voir ) a incité un grand nombre de sociétés à réaliser des développements compatibles uniquement avec ce navigateur. IE6 se souciait alors peu des standards, son statut de monopole le mettant jusqu’alors au dessus de ce type de préoccupations.
Pendant ce temps là, coté Java, les différents outils et autres frameworks étaient alors concentrés sur de la génération de pages coté serveur. Les dévelopeurs prenaient alors à leur charge la compatibilité entre les différents navigateurs (le monopole d’IE6 évinçait quasiment totalement la question). Fin 2006, IE6 fut progressivement poussé vers la sortie par l’arrivée de concurrents plus aboutis et plus performants comme Firefox 2 (octobre 2006).
IE6 n’étant pas compatible avec un grand nombre de standard (que FireFox et les autres ont pris soin de suivre), la plupart des sociétés qui avaient jusqu’alors tout misé sur IE6 se virent dans l’obligation de revoir une grande partie de leurs applications si elles voulaient pouvoir utiliser les navigateurs nouvelle génération.
C’est en réponse à ce traumatisme que GWT est apparut avec une technologie compatible avec l’ensemble des navigateurs. La complexité liée à l’interopérabilité entre les navigateurs étant prise en charge à travers un système de compilation transformant du Java en Javascript par son éditeur : Google.
Depuis quelques temps maintenant, les navigateurs se structurent autour de standards tels que l’HTML5 et le CSS3 et posent de moins en moins de problèmes de compatibilité entre eux dans leurs dernières versions.
Dans cette configuration, la technologie GWT, de par la lourdeur de sa mise en place, commence à être remise en question. Aucune conférence n’a été dédiée à ce sujet lors de cette 1ere journée de Devoxx Paris 2013.
Celui-ci a été remplacé par plusieurs framework JS dont les plus célèbres (d’après les statistiques de recherche de Google) et les plus représentés lors de cette journée ont été BackboneJS (le fwk historique) et AngularJS (le chalenger le plus en vogue poussé par Google).
Ces framesworks JS permettant de déporter vers le navigateur toute la logique qui ne nécessite pas d’appel au serveur, les performances sont bien meilleurs que sur des structures plus classiques d’appels successifs de pages coté serveur. Il est également important de noter que ceux-ci sont particulièrement bien adaptés aux nouveaux supports comme les tablettes et les smart-phones.
Alors qu’AngularJS propose de réaliser une architecture vues / modèle / template au sein du navigateur, les prochaines normes du web avancent en parallèle. Celles-ci poussent notamment des méthodes telles que le “Object.observe()” (déjà sous forme de prototype sous la dernière version de chrome) avec comme finalité une gestion des évènements (listener) native au langage javascript.
A terme, cette évolution des standard pourrait booster les performances des frameworks tels qu’AngularJS et ainsi faire pencher, encore un peu plus, la balance vers ce type d’architecture.
Labs : 6 Minute Apps! Build Your First Modern Web App
par James Ward et Nicolas Leroux
James Ward (TypeSafe) et Nicolas Leroux (Lunatech) nous apprennent à prendre en mains Playframework 2.1 en java. L’objectif est d’écrire une application web de gestion des bières. A travers l’écriture de cette application, James et Nicolas nous expliquent permet la fabrication d’applications Web Real Time, Scalables, Type Safety ! De plus, le framework est full stack, il compile tout, il utile less, coffeescript. Enfin, la gestion des routes et configurations est simple et puissante ! Le tutorial de tests de play est vraiment très enrichissant : Playframework et est disponible en scala et java.
AngularJS, ou le futur du développement Web
par Thierry Châtel
Thierry Châtel nous présente le framework JS opensource de Google : AngularJS (77KB et 43866 lignes de codes JS). Ce framework se veut un outil pour booster le travail sur les applications HTML modernes. Il permet de déplacer côté client l’ensemble du modèle MVC des applications web. AngularJS utilise le two way data-binding pour lier les vues htmls avec les modèles automatiquement mais il permet :
- Avoir un code code js indépendant des vues,
- Avoir de l’injection de dépendances,
- De ne pas avoir d’état global,
- De filtrer les données à afficher,
- De travailler avec les événements navigateurs,
- De nombreux outils de tests sont disponibles : Tests unitaires : Karma (ex-Testacular) & Tests fonctionnels : End to end (Automatisation des scénarios),
Dans le cadre de son université, Thierry Châtel a développé devant nous trois applications de démonstration permettant de mettre en avant les possibilités d’AngularJS :
-> Une application web simple pour expliquer la mise en place d’une application basée sur AngularJS,
-> Une application web permettant de charger des cartes google maps et de naviguer dessus directement avec une mise à jour automatiques des formulaires de coordonnées,
-> Une application e-commerce light pour nous montrer la gestion des états et événements
Une précision importante, le binding AngularJS n’est pas anodin en terme de consommation CPU, Thierry Châtel évoque une limite de 2000 ‘watchs (binding angular) pour une machine peu puissante. Au delà de cette limite, dépendante de la machine cliente, l’expérience utilisateur s’en trouvera dégradée.
Pour en savoir plus, le site officiel d’Angular : http://angularjs.org
avec notamment son tutoriel très complet : http://docs.angularjs.org/tutorial
ainsi qu’un projet type pour éviter de partir from scratch : https://github.com/angular/angular-seed
Live coding avec Yeoman & AngularJS
Par Matthieu Lux
Matthieu nous présente Yeoman, un ensemble d’outils permettant un workflow JS. Il est principalement composé de trois outils permettant d’améliorer la productivité de constructions d’applications web :
- Yo : pour préparer l’application web (son squelette),
- Bower : pour gérer les dépendances,
- Grunt : pour construire, prévisualiser et tester son projet,
24 Plugins Chrono
Par Romain Maton
Présentation de quelques plugins pouvant faciliter la vie du développeur :
JREBEL
Permet de rafraichir une appli web à partir du workspace sans avoir besoin à redémarrer le serveur
Terminal Plug-In (Eclipse) / Bahs Support (Inteliji)
Lance un invite de commande dans l’IDE. Pratique pour éviter de switcher entre l’IDE et l’invite de commande
Lombok
Permet de génerer du code à partir d’annotations. Par exemple @Getter génère tous les getters et setters de la classe automatiquement
Plugin beaucoup plus utile qu’il en a l’air, a d’ailleurs été mentionné plusieurs fois pendant Devoxx
Eclipse code formatter
permet d’uniformiser le formatage entre les développeurs
InstaSearch
recherche instantané sur le workspace, plutôt pratique
TabDir
permet de rajouter un préfix sur les onglets pour éviter de se perdre lorsque des classes ont le même nom
Shifter
Permet à partir de Shift Down et Shift Up de :
- naviguer dans les propriétés des objets
- naviguer dans les annotations
- de trier liste
- de switcher entre quote et double quote
- etc..
Probablement le plugin le plus puissant de la présentation
Eclipse Runner
Plugin permettant d’organiser les runners sous Eclipse
Scratch
Pour se faire des petits mémos sous eclipse. Gadget mais peut être pratique.
ePomodoro
Permet d’appliquer la technique pomorodoro c’est à dire d’alterner des phases de coding et de réflexion.
A noter que pour être sur d’appliquer la technique une option permet de freezer l’IDE pendant le temps de réflexion 🙂
MouseFeed (eclipse) KeyPromoter( Inteliji)
Petit plugin pour obliger à créer des raccourcis clavier. Des que l’utilisateur utilise la souris pour effectuer une action, une fenêtre popup s’affiche pour lui indiquer le nombre de fois qu’il a effectué cet action à la souris et lui indiquer qu’il serait temps de créer un raccourci clavier.
Plugin qui peut rapidement devenir agaçant 🙂
CopyAsHtml
Pour copier d’exporter une sélection du workspace sous format Html
Markdown
Markdown automatique
Pair Hero
Permet de jouer avec les tests unitaires. Un développeur doit mettre en test unitaire en échec puis passer la main à un autre développeur qui lui devra le faire passer.
TDGotchi
pareil que Pair Hero mais avec un joueur
EclEmma
Outil de code coverrage qui permet de montrer les lignes de code testées ou non dans l’IDE
Infinitest
Lance les tests automatiquement et indique le résultat d’exécution à l’écran. Par défaut lance tous les tests, mais donne également la possibilité de filtrer les tests que l’on veut exécuter.
DatabaseNavigator / SQL Query Plugin
Permet d’inclure un browser SQL à l’intérieur de l’IDE et d’effectuer des actions basiques sur une base de données.
Guava Helper Plugin
Générateur de code pour Guava