Vous aimez ce que vous lisez sur ce blog ?
Envie d'aller plus loin avec véritable formation d'expertise en Java ?
Venez suivre ma formation Masterclasse Expertise Java !

"Même un développeur experimenté a besoin de continuer à apprendre. Et dans cette formation... j'ai appris beaucoup !" - A.G., Java Champion

Sessions intra-entreprises sur demande : contact[at]mokatech.net.
Inscrivez-vous vite !

Paris JUG "Java Rebel" : compte-rendu

Mardi dernier avait lieu une présentation de JavaRebel au Paris JUG, par Toomas Römer.

Un cycle de développement se décompose traditionnellement en quatre phases : développement, compilation, déploiement, test/run.
Le problème est que les deux phases intéressantes et à valeur ajoutée, le développement et le test, sont séparées par des phases techniques souvent longues et fastidieuses mais nécessaires. Il en résulte une perte de temps et de concentration fort préjudiciables à l'efficacité générale du processus.
N'est-il pas possible de les raccourcir, voire les supprimer ?

JavaRebel

C'est exactement ce que propose JavaRebel.
Ce produit, édité par Zero Turnaround, se présente sous la forme d'un agent pour la JVM, et autorise le remplacement à chaud du bytecode des classes composant l'application. Ainsi, toute modification de code est immédiatement prise en compte par l'application, sans avoir besoin de la redémarrer.

On imagine les bénéfices d'une telle solution :

  • Un gain de temps important
  • Une meilleure concentration du développeur, qui n'est plus distrait par l'attente de la complétion des phases intermédiaires
  • Une plus grande facilité de test des applications, car il est possible de rester sur l'écran testé, qui n'est parfois accessible qu'au terme de manipulations fastidieuses.

Vous me direz que HotSpot permet déjà, dans une certaine mesure, la prise en compte dynamique des changements (HotSwap). Certes, mais les capacités de JavaRebel sont sans commune mesure. Là où HotSpot ne tolère que des modifications mineures à l'intérieur des méthodes, JavaRebel autorise des refactorings massifs ; la seule limite est qu'il ne faut pas modifier la hiérarchie des classes (superclasse et interfaces).
Notez qu'il existe des plugins additionnels permettant de gérer également les changements de configuration Spring, les JSP, etc.

Démonstration

Suite à cette présentation, Toomas a effectué une impressionnante démonstration de son produit.
La première consistait à refactorer massivement l'application Spring PetClinic : modification de code Java, ajout et suppression de méthodes, refactoring avec Eclipse. Puis, il a édité la structure des pages JSP et modifié les expressions EL. A chaque modification, un simple rafraîchissement de la page dans le navigateur était nécessaire.
Tout au long de cette démonstration, les logs de Tomcat étaient visibles, afin de prouver que l'application n'était jamais rechargée.

Pour obtenir ce résultat, il a suffi de :

  • Placer un lien symbolique dans le répertoire webapps de Tomcat, pointant vers l'environnement de développement d'Eclipse
  • Lancer Tomcat avec une commande spéciale activant l'agent JVM de JavaRebel : -javaagent javarebel.jar

Rebellez-vous !

D'après ce que j'en ai vu, JavaRebel est un produit tout à fait intéressant.
Fonctionnant à partir de Java 1.4 et non intrusif, il semble capable d'augmenter significativement la productivité des développeurs, et de supprimer la frustration et la fatigue dues aux phases techniques intermédiaires. A $60 la licence personnelle et $150 la licence professionnelle, je ne vois vraiment aucune raison de ne pas essayer JavaRebel !

Note : le Touilleur-Express a réalisé une interview exclusive de Toomas Römer que je vous invite à lire.


Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.