Voici une petite introduction aux agents Java et la présentation de 2 outils utilisant cette technologie afin de faciliter les développements.
Agents Java
Un agent Java, c’est d’abord un jar que l’on rajoute au lancement de la JVM par le paramètre -javaagent:vers/mon/agent.jar
C’est ensuite des classes Java qui vont intervenir au niveau du class loader afin de pouvoir faire de multiples choses.
Introduction aux agents Java : http://www.gcuisinier.net/blog/2012/06/15/javaagents/
Exemples d’outils pour le développement en Java
Flow Visual Debugger
Pour avoir rencontré les 2 personnes qui sont à temps plein sur ce projet, je vais faire un peu de pub pour ce concept que je trouve innovant : findtheflow.io
Il s’agit d’un outil de débuggage ou de découverte du fonctionnement d’un programme Java de façon visuelle.
Cela utilise un agent Java à renseigner en paramètre sur la ligne de commande de lancement de la JVM et une webapp d’affichage qui pour le moment est hébergée sur internet.
Néanmoins, il est important de souligner qu’aucune information n’est stockée par la webapp, les informations restent même en local d’après ce que l’on m’a expliqué.
Pour l’aspect découverte, il s’agit de rendre visuel / graphique le déroulement du programme.
Pour l’aspect débuggage, cela se passe en 2 étapes :
- enregistrement de l’éxecution
- restitution graphique autant de fois que l’on veut et à la vitesse que l’on veut. Plus besoin de break-point et de relancer n fois en mode débug pour voir la valeur d’une propriété que l’on a oubliée de tracer.
L’outil est disponible en standalone et en plugin Eclipse (à partir de la version Juno 4.2).
Yiquan Zhou, membre de l’équipe, nous fait la démo en anglais :
- Recording mode
- Debugging mode
JRebel
2ème outils également pour aider le développement : JRebel
Il s’agit d’un agent Java permettant le hotswap de code Java afin d’accélérer le développement.
Par exemple sur le développement d’une API REST, on peut modifier le code et le tester sans relancer à chaque fois un build et un déploiement, voir même un redémarrage du serveur.
Pour le code Java (Batch, Backend, UI…) : https://zeroturnaround.com/software/jrebel/
Pour les applications Android : https://zeroturnaround.com/software/jrebel-for-android/
Une présentation de son utilisation : http://blog.jetoile.fr/2010/02/jrebel-ou-comment-accelerer-le_24.html
A noter tout de même que cet outil n’est pas gratuit, il y a une licence à acquérir.