{"id":398,"date":"2010-10-15T09:11:30","date_gmt":"2010-10-15T08:11:30","guid":{"rendered":"http:\/\/www.alpesjug.fr\/?p=398"},"modified":"2010-11-04T13:51:43","modified_gmt":"2010-11-04T12:51:43","slug":"compte-rendu-de-la-soiree-groovy-et-les-webservices","status":"publish","type":"post","link":"https:\/\/www.alpesjug.fr\/?p=398","title":{"rendered":"Compte rendu de la soir\u00e9e Groovy et les Webservices"},"content":{"rendered":"<div id=\"attachment_401\" style=\"width: 310px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/www.alpesjug.fr\/wp-content\/uploads\/2010\/10\/LP0_7793.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-401\" class=\"size-medium wp-image-401\" title=\"Ken Kousen \u00e0 l'AlpesJUG\" src=\"http:\/\/www.alpesjug.fr\/wp-content\/uploads\/2010\/10\/LP0_7793-300x199.jpg\" alt=\"Ken Kousen\" width=\"300\" height=\"199\" srcset=\"https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2010\/10\/LP0_7793-300x199.jpg 300w, https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2010\/10\/LP0_7793-1024x681.jpg 1024w, https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2010\/10\/LP0_7793.jpg 1280w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-401\" class=\"wp-caption-text\">Ken Kousen \u00e0 l&#39;AlpesJUG (par Ludovic Poitou)<\/p><\/div>\n<p>C&rsquo;est par un concours de circonstances des plus improbables que <a href=\"http:\/\/kousenit.com\">Kenneth Kousen<\/a> s&rsquo;est retrouv\u00e9 \u00e0 l&rsquo;AlpesJug ce mercredi soir. Le hasard faisant rarement les choses \u00e0 moiti\u00e9 la pr\u00e9sentation fut excellente.<\/p>\n<p>Kenneth est persuad\u00e9 que Java et Grovy sont faits pour vivre ensemble et se compl\u00e9ter : Java is good at providing the infrastructure, Groovy for the higher level code. C&rsquo;est pour cette raisson qu&rsquo;il est en train d&rsquo;\u00e9crire un livre pour Manning : \u00ab\u00a0Groovy and Java, the sweet spots\u00a0\u00bb.<\/p>\n<p>La premi\u00e8re partie de la conf\u00e9rence s&rsquo;int\u00e9resse aux services REST. Apr\u00e8s un bref r\u00e9capitulatif sur ce qu&rsquo;est un service REST et notamment sur le fait que GET, PUT et DELETE doivent \u00eatre idempotents et qu&rsquo;en plus GET doit \u00eatre &lsquo;safe&rsquo; (c&rsquo;est \u00e0 dire e rien modifier sur le serveur). Kenneth nous pr\u00e9sente un service en ligne de Google Maps qui a tout pour faire du REST. Groovy prend alors tout son int\u00e9r\u00eat facilitant par ses closures la construction des URLs appelantes puis parsant et se d\u00e9pla\u00e7ant dans l&rsquo;arbre XML retourn\u00e9 de mani\u00e8re tr\u00e8s naturelle.<\/p>\n<p>Nous voil\u00e0 donc bien all\u00e9ch\u00e9s quand nous attaquons les bons &lsquo;vieux&rsquo; webservices en SOAP. On rencontre une difficult\u00e9 classique de Groovy par rapport aux outils de g\u00e9n\u00e9ration de code en Java (avec notamment la m\u00e9thode <em>getMetaModel()<\/em>). Passer par des interfaces va nous r\u00e9soudre ce probl\u00e8me, et ensuite comme on veut cacher notre impl\u00e9mentation Groovy du service on utilise les capacit\u00e9s de m\u00e9ta-programmation de Groovy pour remplacer l&rsquo;h\u00e9ritage par de la composition en une annotation: <strong>@Delegate<\/strong><\/p>\n<p>Et l\u00e0 tout devient beau et on peut commencer \u00e0 pr\u00e9parer nos potions magiques, voir y mettre un peu de sang de licorne ;o)<\/p>\n<p>J&rsquo;ai pass\u00e9 une excellente soir\u00e9e o\u00f9 j&rsquo;ai appris les bases de Groovy et vu comment profiter de sa puissance dans un contexte Java. Groovy et Java vivent sur la m\u00eame plateforme (la JVM) et ils sont faits pour travailler ensemble. Merci Kenneth pour cette superbe soir\u00e9e, ce n&rsquo;\u00e9tait pas une contribution &lsquo;classique&rsquo; de code au projet Groovy mais c&rsquo;\u00e9tait bel et bien une contribution de taille \u00e0 la communaut\u00e9 Groovy.<br \/>\nPour terminer je citerai un mail envoy\u00e9 par C\u00e9dric TRAN-XUAN :<br \/>\n<strong><em>Juste un petit mail pour vous f\u00e9liciter d&rsquo;avoir inviter Ken Kousen. C&rsquo;est une des meilleures pr\u00e9sentations auxquelles j&rsquo;ai assist\u00e9es ! Tr\u00e8s instructive.<br \/>\nMerci encore !<br \/>\n&#8212;<br \/>\nC\u00e9dric<\/em><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C&rsquo;est par un concours de circonstances des plus improbables que Kenneth Kousen s&rsquo;est retrouv\u00e9 \u00e0 l&rsquo;AlpesJug ce mercredi soir. Le hasard faisant rarement les choses \u00e0 moiti\u00e9 la pr\u00e9sentation fut excellente&#8230;..<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,18],"tags":[29,4,28,366,11],"class_list":["post-398","post","type-post","status-publish","format-standard","hentry","category-compte-rendu","category-slides","tag-groovy","tag-jug","tag-rest","tag-slides","tag-soiree"],"_links":{"self":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=398"}],"version-history":[{"count":19,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/398\/revisions"}],"predecessor-version":[{"id":409,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/398\/revisions\/409"}],"wp:attachment":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=398"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=398"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}