{"id":145,"date":"2015-12-29T15:43:45","date_gmt":"2015-12-29T14:43:45","guid":{"rendered":"http:\/\/www.jacquescortes.fr\/blog\/?p=145"},"modified":"2016-01-04T09:05:17","modified_gmt":"2016-01-04T08:05:17","slug":"agents-java","status":"publish","type":"post","link":"https:\/\/www.jacquescortes.fr\/blog\/2015\/12\/agents-java\/","title":{"rendered":"Agents Java et outils de d\u00e9veloppement"},"content":{"rendered":"<p>Voici une petite introduction aux agents Java et la pr\u00e9sentation de 2 outils utilisant cette technologie afin de faciliter les d\u00e9veloppements.<\/p>\n<h1>Agents Java<\/h1>\n<p>Un agent Java, c&rsquo;est d&rsquo;abord un jar que l&rsquo;on rajoute au lancement de la JVM par le param\u00e8tre -javaagent:vers\/mon\/agent.jar<br \/>\nC&rsquo;est ensuite des classes Java qui vont intervenir au niveau du class loader afin de pouvoir faire de multiples choses.<\/p>\n<p>Introduction aux agents Java : <a href=\"http:\/\/www.gcuisinier.net\/blog\/2012\/06\/15\/javaagents\/\" target=\"_blank\" class=\"broken_link\">http:\/\/www.gcuisinier.net\/blog\/2012\/06\/15\/javaagents\/<\/a><\/p>\n<p><a href=\"http:\/\/www.jacquescortes.fr\/blog\/2015\/12\/agents-java\/java\/\" rel=\"attachment wp-att-149\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-149\" src=\"http:\/\/www.jacquescortes.fr\/blog\/wp-content\/uploads\/2015\/12\/java.jpg\" alt=\"Agent Java\" width=\"218\" height=\"239\" \/><\/a><\/p>\n<h1>Exemples d&rsquo;outils pour le d\u00e9veloppement en Java<\/h1>\n<h2 class=\"header center white-text\">Flow Visual Debugger<\/h2>\n<p>Pour avoir rencontr\u00e9 les 2 personnes qui sont \u00e0\u00a0temps plein\u00a0sur ce projet, je vais faire un peu \u00a0de pub pour ce concept que je trouve innovant :\u00a0<strong><a href=\"http:\/\/findtheflow.io\/\" target=\"_blank\" class=\"broken_link\">findtheflow.io<\/a><\/strong><br \/>\nIl s&rsquo;agit d&rsquo;un outil de d\u00e9buggage ou de d\u00e9couverte du fonctionnement d&rsquo;un programme Java de fa\u00e7on visuelle.<br \/>\nCela utilise un agent Java \u00e0 renseigner en param\u00e8tre sur la ligne de commande de lancement de la JVM et une webapp d&rsquo;affichage qui pour le moment est h\u00e9berg\u00e9e sur internet.<br \/>\nN\u00e9anmoins, il est important de souligner qu&rsquo;aucune information n&rsquo;est stock\u00e9e par la webapp, les informations restent m\u00eame en local d&rsquo;apr\u00e8s ce que l&rsquo;on m&rsquo;a expliqu\u00e9.<br \/>\nPour l&rsquo;aspect d\u00e9couverte, il s&rsquo;agit de rendre visuel \/ graphique le d\u00e9roulement du programme.<br \/>\nPour l&rsquo;aspect d\u00e9buggage, cela se passe en 2 \u00e9tapes :<\/p>\n<ul>\n<li>enregistrement de l&rsquo;\u00e9xecution<\/li>\n<li>restitution graphique autant de fois que l&rsquo;on veut et \u00e0 la vitesse que l&rsquo;on veut. Plus besoin de break-point et de relancer n fois en mode d\u00e9bug pour voir la valeur d&rsquo;une propri\u00e9t\u00e9 que l&rsquo;on a oubli\u00e9e de tracer.<\/li>\n<\/ul>\n<p>L&rsquo;outil est disponible en standalone et en plugin Eclipse (\u00e0 partir de la version Juno 4.2).<\/p>\n<p>Yiquan Zhou, membre de l&rsquo;\u00e9quipe, nous fait la d\u00e9mo en anglais :<\/p>\n<ul>\n<li>Recording mode<\/li>\n<\/ul>\n<p><iframe loading=\"lazy\" width=\"1170\" height=\"658\" src=\"https:\/\/www.youtube.com\/embed\/Exf6h0Lx2BA?feature=oembed\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<ul>\n<li>Debugging mode<\/li>\n<\/ul>\n<p><iframe loading=\"lazy\" width=\"1170\" height=\"658\" src=\"https:\/\/www.youtube.com\/embed\/hcLxyNZGyQM?feature=oembed\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<h2>JRebel<\/h2>\n<p>2\u00e8me outils \u00e9galement pour aider le d\u00e9veloppement : JRebel<\/p>\n<p>Il s&rsquo;agit d&rsquo;un agent Java permettant le\u00a0hotswap de code Java afin d\u2019acc\u00e9l\u00e9rer le d\u00e9veloppement.<br \/>\nPar exemple sur le d\u00e9veloppement d&rsquo;une API REST, on peut modifier le code et le tester sans relancer \u00e0 chaque fois un build et un d\u00e9ploiement, voir m\u00eame un red\u00e9marrage du serveur.<\/p>\n<p>Pour le code Java (Batch, Backend, UI&#8230;) : <a href=\"https:\/\/zeroturnaround.com\/software\/jrebel\/\" target=\"_blank\">https:\/\/zeroturnaround.com\/software\/jrebel\/<\/a><\/p>\n<p>Pour les applications Android : <a href=\"https:\/\/zeroturnaround.com\/software\/jrebel-for-android\/\" target=\"_blank\">https:\/\/zeroturnaround.com\/software\/jrebel-for-android\/<\/a><\/p>\n<p>Une pr\u00e9sentation de son utilisation : <a href=\"http:\/\/blog.jetoile.fr\/2010\/02\/jrebel-ou-comment-accelerer-le_24.html\" target=\"_blank\">http:\/\/blog.jetoile.fr\/2010\/02\/jrebel-ou-comment-accelerer-le_24.html<\/a><\/p>\n<p>A noter tout de m\u00eame que cet outil n&rsquo;est pas gratuit, il y a une licence \u00e0 acqu\u00e9rir.<\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/player.vimeo.com\/video\/112443042\" width=\"1170\" height=\"658\" frameborder=\"0\" title=\"60 Second Introduction to JRebel\" webkitallowfullscreen mozallowfullscreen allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici une petite introduction aux agents Java et la pr\u00e9sentation de 2 outils utilisant cette technologie afin de faciliter les d\u00e9veloppements. Agents Java Un agent Java, c&rsquo;est d&rsquo;abord un jar que l&rsquo;on rajoute au lancement de la JVM par le param\u00e8tre -javaagent:vers\/mon\/agent.jar C&rsquo;est ensuite des classes Java qui vont intervenir au niveau du class loader [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":149,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"series":[],"class_list":{"0":"post-145","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-developpement","8":"czr-hentry"},"_links":{"self":[{"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/posts\/145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/comments?post=145"}],"version-history":[{"count":8,"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/posts\/145\/revisions"}],"predecessor-version":[{"id":179,"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/posts\/145\/revisions\/179"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/media\/149"}],"wp:attachment":[{"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/media?parent=145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/categories?post=145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/tags?post=145"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/www.jacquescortes.fr\/blog\/wp-json\/wp\/v2\/series?post=145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}