<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:media="http://search.yahoo.com/mrss/"
> <channel><title>Blog Xebia France &#187; JEE</title> <atom:link href="http://blog.xebia.fr/tag/jee/feed/" rel="self" type="application/rss+xml" /><link>http://blog.xebia.fr</link> <description>J2EE, Agilité et SOA</description> <lastBuildDate>Wed, 08 Feb 2012 09:23:16 +0000</lastBuildDate> <language>fr</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <copyright>CC BY-NC-ND 2.0 http://creativecommons.org/licenses/by-nc-nd/2.0/fr/</copyright> <managingEditor>blog-france@xebia.com (Xebia France)</managingEditor> <webMaster>blog-france@xebia.com (Xebia France)</webMaster> <ttl>1440</ttl> <image> <url>http://blog.xebia.fr/videos/xebia-podcast.png</url><title>Blog Xebia France</title><link>http://blog.xebia.fr</link> <width>144</width> <height>144</height> </image> <itunes:new-feed-url>http://blog.xebia.fr/feed/podcast/</itunes:new-feed-url> <itunes:subtitle>Les podcasts de Xebia France vous permettent de suivre l&#039;actualité autour de Java, de l&#039;agilité, des technologies Web et bien d&#039;autres. Xebia France est une entreprise spécialisée dans les technologies Java et JEE en environnement agi[...]</itunes:subtitle> <itunes:summary>Les podcasts de Xebia France vous permettent de suivre l&#039;actualité autour de Java, de l&#039;agilité, des technologies Web et bien d&#039;autres. Xebia France est une entreprise spécialisée dans les technologies Java et JEE en environnement agile.</itunes:summary> <itunes:keywords>Xebia, Java, JEE, SOA, Agile, Méthodes, Agiles</itunes:keywords> <itunes:category text="Technology" /> <itunes:category text="Technology"> <itunes:category text="Software How-To" /> </itunes:category> <itunes:category text="Technology"> <itunes:category text="Tech News" /> </itunes:category> <itunes:author>Xebia France</itunes:author> <itunes:owner> <itunes:name>Xebia France</itunes:name> <itunes:email>blog-france@xebia.com</itunes:email> </itunes:owner> <itunes:block>no</itunes:block> <itunes:explicit>no</itunes:explicit> <itunes:image href="http://blog.xebia.fr/videos/xebia-podcast.png" /> <item><title>Xebia Essentials</title><link>http://blog.xebia.fr/2011/05/18/xebia-essentials/</link> <comments>http://blog.xebia.fr/2011/05/18/xebia-essentials/#comments</comments> <pubDate>Wed, 18 May 2011 13:44:17 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Publications]]></category> <category><![CDATA[Craftsmanship]]></category> <category><![CDATA[java]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Méthodes agiles]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=7746</guid> <description><![CDATA[Un développement logiciel de qualité repose sur le respect et la bonne application d’un certain nombre de principes, bonnes pratiques ou « patterns ». Beaucoup de ces principes se rapportent à des aspects techniques et méthodologiques propres à notre métier de développeur tandis que d’autres dépassent largement ce cadre et touchent au bon sens, au [...]]]></description> <content:encoded><![CDATA[<p>Un développement logiciel de qualité repose sur le respect et la  bonne application d’un certain nombre de principes, bonnes pratiques ou «  patterns ». Beaucoup de ces principes se rapportent à des aspects  techniques et méthodologiques propres à notre métier de développeur  tandis que d’autres dépassent largement ce cadre et touchent au bon  sens, au pragmatisme, à la communication.</p><p>Un développeur aguerri  applique quotidiennement beaucoup de ces  principes, souvent par automatisme et expérience, mais éprouve  généralement une grande difficulté à les énoncer clairement, à  les  recenser de manière exhaustive et a fortiori à les partager avec ses  pairs. Or c’est sur le partage, la transmission et l’application de ces  bonnes pratiques que repose la progression d’une équipe et  l’amélioration continue de la qualité du logiciel développé.<br
/> Forts de ce constat, les consultants Xebia se sont posés comme défi  d’extraire, trier et consolider ces bonnes pratiques, à partir de leurs  expériences de terrain, dans le but de pouvoir les restituer sous forme  synthétique puis de les partager entre eux et avec la communauté.</p><p>Le fruit de 6 mois de ce travail de consolidation, que Xebia est  fière de vous dévoiler aujourd’hui, se présente sous la forme d’un  ensemble de « flash cards », baptisées Xebia Essentials.</p><div
align="center"> <img
title="Xebia Essentials" src="http://blog.xebia.fr/wp-content/uploads/2011/05/XebiaEssentialsDeck.jpg" alt="Xebia Essentials" width="520" height="439" /></div><p>Concrètement, chacune de ces flash cards isole une bonne pratique  ou un principe, énoncé de manière synthétique et facilement mémorisable  sur son recto, détaillée au verso, et identifiée par un code couleur qui  détermine le domaine auquel elle s’applique (code, architecture &amp;  design, test, process, état d&#8217;esprit …). Cerise sur le gâteau, chaque  carte affiche un code-barres 2D qui permet, à partir d’un simple scan  avec son téléphone mobile de retrouver une page web  détaillée qui apporte des compléments sur le contenu de la carte  elle-même (<a
href="http://www.youtube.com/watch?v=z3KwsbrAibM">voir la vidéo</a>).</p><div
align="center"> <iframe
width="640" height="510" src="http://www.youtube.com/embed/z3KwsbrAibM?rel=0" frameborder="0" allowfullscreen></iframe></div><p>Nous croyons que cette présentation sous forme de cartes, par son  caractère pratique et ludique, est un formidable moyen de partager des  pratiques de développement essentielles et de les mettre en application  sur les projets.</p><p>Ces flash cards, initialement destinées à nos consultants et aux  équipes projet chez nos clients, seront finalement mise à disposition de  la communauté prochainement, à travers notre site.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/05/18/xebia-essentials/feed/</wfw:commentRss> <slash:comments>23</slash:comments> </item> <item><title>Xebia en route pour Devoxx !</title><link>http://blog.xebia.fr/2010/11/15/xebia-en-route-pour-devoxx-2/</link> <comments>http://blog.xebia.fr/2010/11/15/xebia-en-route-pour-devoxx-2/#comments</comments> <pubDate>Mon, 15 Nov 2010 07:57:56 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Cloud / NoSQL]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[java]]></category> <category><![CDATA[Jdk7]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[JEE 6]]></category> <category><![CDATA[JPA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5873</guid> <description><![CDATA[Le rendez-vous annuel incontournable de la communauté Java européenne est arrivé ! 3000 participants inscrits et une centaine de speakers pour 5 jours de conférences à Anvers en Belgique : Devoxx s&#8217;annonce cette année comme grandiose après une édition 2009 en léger retrait en raison du contexte économique. Xebia sera présent à cet évènement pour [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://www.devoxx.com/"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/logo.jpeg" alt="Devoxx" style="margin: 1em 1em 1em 1em; float: right;" /></a></p><p>Le rendez-vous annuel incontournable de la communauté Java européenne est arrivé ! 3000 participants inscrits et une centaine de <em>speakers</em> pour 5 jours de conférences à Anvers en Belgique : <a
href="http://www.devoxx.com" title="Devoxx" >Devoxx</a> s&#8217;annonce cette année comme grandiose après une édition 2009 en léger retrait en raison du contexte économique. Xebia sera présent à cet évènement pour vous retransmettre l&#8217;information qui y sera véhiculée.</p><p>Au-delà des connaissances techniques qui y circulent, des échanges et des rencontres qui s&#8217;y font, Devoxx est aussi un formidable baromètre de l&#8217;éco-système Java actuel. Il est donc intéressant d&#8217;observer les sujets les plus en vogue cette année :</p><ul><li><strong>NoSQL</strong> : il s&#8217;agit clairement du sujet majeur dont il sera question cette année. Très peu représenté l&#8217;année dernière (2 sessions seulement), on compte pour cette édition pas moins d&#8217;une douzaine de sessions dédiées à ce thème. Il sera ainsi question de Cassandra, HBase, Hadoop, Hive, Pig, MongoDB ou encore Voldemort.</li><li><strong>Java EE 6 et JPA 2</strong> : déjà très représenté l&#8217;année dernière, ce sujet sera encore d&#8217;actualité cette année à Devoxx, ces APIs n&#8217;ayant pas encore été digérées par les entreprises.</li><li><strong>JDK 7</strong> : le sujet devient récurrent, mais <a
href="http://blog.xebia.fr/2010/10/12/revue-de-presse-xebia-180/#IBMrejointleprojetOpenJDK" title="la rcente actualit" >la récente actualité</a> le concernant le rend incontournable dans une conférence Java de cette envergure. Cette semaine à Anvers sera l&#8217;occasion de faire le point sur les dernières avancées et orientations avec l&#8217;équipe responsable du JDK chez Oracle.</li></ul><p>Outres ces sujets majeurs, on retrouve de nouveaux venus tels que DevOps, ce mouvement prônant le rapprochement des équipes de développement et d&#8217;exploitation, ainsi que des sujets maintenant plus classiques qui présenteront leurs dernières évolutions tels que Grails, Android, Scala, ou HTML5.</p><p>Comme l&#8217;année dernière, vous retrouverez jour après jour sur ce blog et <a
href="http://jduchess.org/duchess-france/" title="celui de Duchess France" >celui de Duchess France</a> nos retours des principales sessions qui se tiendront à Anvers cette semaine. Retrouvez également l&#8217;information en <em>live</em> sur nos comptes Twitter : <a
href="http://twitter.com/dijouxellene" title="dijouxellene" >dijouxellene</a>, <a
href="http://twitter.com/mfiguiere" title="mfiguiere" >mfiguiere</a>, <a
href="http://twitter.com/morlhon" title="morlhon" >morlhon</a> et <a
href="http://twitter.com/rmat0n" title="rmat0n" >rmat0n</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/11/15/xebia-en-route-pour-devoxx-2/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Xebia Training : Les formations Java EE de la rentrée</title><link>http://blog.xebia.fr/2010/06/23/xebia-training-les-formations-java-ee-de-la-rentree/</link> <comments>http://blog.xebia.fr/2010/06/23/xebia-training-les-formations-java-ee-de-la-rentree/#comments</comments> <pubDate>Wed, 23 Jun 2010 08:03:15 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Performances]]></category> <category><![CDATA[Production]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4957</guid> <description><![CDATA[Pour la rentrée, Xebia Training a le plaisir de vous proposer les formations Java EE suivantes : Formation Java performance tuning Animée par Kirk Pepperdine. Les 13, 14, 15 et 16 septembre 2010 à Paris. Les 22, 23, 24 et 25 novembre 2010 à Sophia Antipolis. Formation Architectures d’aujourd’hui avec Java EE 6 Animée par [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://flipflashpages.uniflip.com/2/26742/50371/pub/"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/02/xebia-training.png" style="margin: 1em 1em 1em 1em; float: right;" /></a></p><p>Pour la rentrée, Xebia Training a le plaisir de vous proposer les formations Java EE suivantes :</p><ul><li><a
href="http://training.xebia.fr/formation-java-performance-tuning-kirk-pepperdine/">Formation Java performance tuning</a><ul><li>Animée par <a
href="http://training.xebia.fr/kirk-pepperdine/">Kirk Pepperdine</a>.</li><li>Les 13, 14, 15 et 16 septembre 2010 à Paris.</li><li>Les 22, 23, 24 et 25 novembre 2010 à Sophia Antipolis.</li></ul></li><li><a
href="http://training.xebia.fr/formation-architectures-aujourdhui-java-ee-antonio-goncalves/">Formation Architectures d’aujourd’hui avec Java EE 6</a><ul><li>Animée par <a
href="http://training.xebia.fr/antonio-goncalves-formateur-java/">Antonio Goncalves</a>.</li><li>Les 20, 21 et 22 septembre 2010 à Paris.</li></ul></li><li><a
href="http://training.xebia.fr/formations-applications-java-pretes-pour-la-production-cyrille-leclerc/">Formation Applications Java prêtes pour la production</a><ul><li>Animée par <a
href="http://training.xebia.fr/cyrille-leclerc/">Cyrille Le Clerc</a>.</li><li>Les 23 et 24 septembre 2010 à Paris.</li></ul></li><li><a
href="http://training.xebia.fr/formations-troubleshooting-en-java-guillaume-bodet/">Formation troubleshooting en Java</a><ul><li>Animée par <a
href="http://training.xebia.fr/guillaume-bodet-formateur-agiles-et-java/">Guillaume Bodet</a>.</li><li>Les 29 et 30 septembre 2010 à Paris.</li></ul></li></ul><p>Si vous souhaitez avoir de plus amples informations sur ces formations, n&#8217;hésitez pas à nous contacter :</p><ul><li>Par téléphone au 06.09.69.05.49.</li><li>Par mail : <a
href="mailto:info@xebia-training.fr">info@xebia-training.fr</a>.</li><li>Via <a
href="http://training.xebia.fr/contactez-nous/">le site de Xebia Training</a>.</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/06/23/xebia-training-les-formations-java-ee-de-la-rentree/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Kirk Pepperdine : Java Performance Tuning</title><link>http://blog.xebia.fr/2010/05/04/kirk-pepperdine-java-performance-tuning-2/</link> <comments>http://blog.xebia.fr/2010/05/04/kirk-pepperdine-java-performance-tuning-2/#comments</comments> <pubDate>Tue, 04 May 2010 09:24:40 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[optimisation]]></category> <category><![CDATA[tuning]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4546</guid> <description><![CDATA[Xebia-training a le plaisir d’accueillir Kirk Pepperdine, un référent de la communauté Java EE pour une formation d’optimisation des performances Java EE (Java performance tuning) les 7, 8, 9 et 10 juin dans nos locaux. Cette formation approfondie de 4 jours vous permettra d’obtenir les compétences nécessaires pour optimiser la performance de vos applications Java. [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://training.xebia.fr">Xebia-training</a> a le plaisir d’accueillir Kirk Pepperdine, un référent de la communauté Java EE pour une formation d’optimisation des performances Java EE <em>(Java performance tuning)</em> les 7, 8, 9 et 10 juin dans nos locaux.</p><p>Cette formation approfondie de 4 jours vous permettra d’obtenir les compétences nécessaires pour optimiser la performance de vos applications Java. Vous aborderez pendant cette formation tous les aspects de la performance : l’outillage nécessaire, les méthodologies à appliquer, les concepts d’architecture sous jacents à la performance, les meilleures pratiques, le benchmarking et la gestion de mémoire.</p><p>A l’issue de cette formation, vous serez en mesure :</p><ul><li>D’identifier rapidement et régler les problèmes de performance de vos applications.</li><li>D’identifier et résoudre des problèmes de fuite mémoire en quelques heures.</li><li>D’isoler des problèmes classiques et d’éviter de s’engager dans des plans d’actions couteux et inefficaces.</li><li>D’identifier des problèmes de performance avant qu’ils ne deviennent critiques pour les applications.</li></ul><p>Les stagiaires bénéficieront des Tips de Kirk Pepperdine, référence reconnue dans le monde de l’optimisation de performance objet.<br
/> Kirk Pepperdine dispose de 15 ans d’expérience dans les technologies OO et l’optimisation de la performance. Figure emblématique du monde Java et élu <em>&laquo;&nbsp;Champion JAVA&nbsp;&raquo;</em> en 2005, Kirk est reconnu comme le référent de l’optimisation de performance Java.<br
/> Vous pouvez consulter le programme complet de cette formation en consultant notre site : <a
href="http://training.xebia.fr/formation-java-performance-tuning-kirk-pepperdine/">http://training.xebia.fr/formation-java-performance-tuning-kirk-pepperdine/</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/05/04/kirk-pepperdine-java-performance-tuning-2/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/</link> <comments>http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#comments</comments> <pubDate>Mon, 19 Apr 2010 16:49:05 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[AMQP]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[jQuery]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[rabbitmq]]></category> <category><![CDATA[SOA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4418</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposépar Xebia. Agilité Comment faire des tests d&#8217;IHM sans se tirer une balle dans le pied ? La gestion des risques dans un projet agile SOA RabbitMQ racheté par SpringSource Le coin de la technique Billy Newport et la programmation parallèle Performance jQuery avec $.delegate() Faille de [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposépar Xebia.</em></p><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#CommentfairedestestsdIHMsansse">Comment faire des tests d&#8217;IHM sans se tirer une balle dans le pied ?</a></li><li><a
href="http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#Lagestiondesrisquesdansunproje">La gestion des risques dans un projet agile</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#RabbitMQrachetparSpringSource">RabbitMQ racheté par SpringSource</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#BillyNewportetlaprogrammationp">Billy Newport et la programmation parallèle</a></li><li><a
href="http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#PerformancejQueryavecdelegate">Performance jQuery avec $.delegate()</a></li><li><a
href="http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#FailledescuritdansOracleJava">Faille de sécurité dans Oracle Java</a></li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="CommentfairedestestsdIHMsansse"></a>Comment faire des tests d&#8217;IHM sans se tirer une balle dans le pied ?</h4><p>L&#8217;automatisation des tests d&#8217;IHM est souvent une mauvaise idée. Le constat est très souvent le même : bien que simple à mettre en place en général, leur apport est souvent mineur par rapport à leur coût (je vous dirige vers <a
href="http://blog.objectmentor.com/articles/2009/09/29/ruining-your-test-automation-strategy" title="lexcellent article de Robert Martin" >l&#8217;excellent article de Robert Martin</a> pour creuser le sujet). Comment faire si l&#8217;on veut cependant s&#8217;engager dans cette voie?<br
/> Dans <a
href="http://gojko.net/2010/04/13/how-to-implement-ui-testing-without-shooting-yourself-in-the-foot-2/" title="cet article" >cet article</a>, Gojko Adzic (commiter fitnesse et auteur du livre passionnant &laquo;&nbsp;<a
href="http://www.amazon.fr/Bridging-Communication-Gap-Specification-Acceptance/dp/0955683610" title="Bridging the communication gap" >Bridging the communication gap</a>&laquo;&nbsp;), nous livre des pistes pour maximiser le retour sur investissement sur ceux-ci. Tout d&#8217;abord, ne surtout pas partir sur de l&#8217;enregistrement brut des cas de tests les uns après les autres (avec <a
href="http://seleniumhq.org/projects/ide/" title="Selenium IDE" >Selenium IDE</a> par exemple). C&#8217;est dans ce cas-là que l&#8217;on se tire une balle dans le pied. Les coûts de maintenance explosent et l&#8217;intérêt des tests est remis en question au fil du temps.<br
/> La clé est de représenter les tests d&#8217;IHM sur plusieurs niveaux :</p><ul><li>Règles métiers</li><li>Worfklows</li><li>Technique</li></ul><p>Les niveaux supérieurs sont plus stables dans le temps et sont plus compréhensibles que ceux du dessous. Les niveaux supérieurs s&#8217;appuient bien évidemment sur les niveaux du dessous pour fonctionner.<br
/> Le but de cette approche est de faire en sorte que les tests restent compréhensibles (bon courage pour aller comprendre la règle métier cachée derrière une centaine d&#8217;instructions Selenium) et surtout de promouvoir la réutilisabilité afin de garder la main sur la maintenance des tests.</p><h4><a
name="Lagestiondesrisquesdansunproje"></a>La gestion des risques dans un projet agile</h4><p><a
href="http://blog.mountaingoatsoftware.com/managing-risk-on-agile-projects-with-the-risk-burndown-chart" title="Mike Cohn" >Mike Cohn</a>, scrum master certifié et auteur de nombreux ouvrages de référence, nous suggère une manière de mettre en place la gestion des risques sur un projet agile.<br
/> Le management des risques est un sujet central dans de nombreux projets et est souvent considéré comme un enjeu déterminant pour leur réussite.<br
/> Il existe un ensemble de méthodes dédiées, ainsi que des normes et pratiques pour limiter les risques.<br
/> Au premier abord, on peut constater que Scrum n&#8217;implémente pas vraiment une gestion spécifique des risques. Cependant, les différentes pratiques et outils mis en place comme: les itérations courtes, l&#8217;intégration continue, les tests automatisés, etc. permettent de limiter drastiquement l&#8217;apparition des risques.<br
/> Ainsi, la mise en place d&#8217;une gestion des risques sur des projets agiles ayant des facteurs de risque faibles n&#8217;est pas nécessaire. Pour les autres projets, Mike nous propose une solution introduite par John Brothers dans <em>The Agile Times</em> avec le <em>risk burndown chart</em>.</p><p>Pour obtenir ce graphique, il convient au préalable de faire un recensement des risques (durant un sprint planning par exemple). On évalue la probabilité d&#8217;apparition, l&#8217;impact en jours sur la livraison si celui-ci se réalise, et enfin le nombre de jours exposés à ce risque potentiel. Pour calculer ce dernier, Mike multiplie la probabilité du risque par l&#8217;impact en nombre de jours. Ces informations sont renseignées dans un tableau de recensement.<br
/> Pour générer le <em>risk burndown chart</em>, il suffit ensuite de positionner la colonne du nombre de jours exposés en ordonnée et le nombre de jours (ou de sprints) en abscisse. On constate alors que plus on avance dans les sprints, moins le projet est exposé à des risques.</p><p>Sans tomber dans le sur-outillage, la mise en place d&#8217;un <em>risk burndown chart</em> permet d&#8217;introduire de manière légère la gestion des risques. Le tableau de recensement des risques peut suffire.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="RabbitMQrachetparSpringSource"></a>RabbitMQ racheté par SpringSource</h4><p>Deux nouvelles importantes ces derniers jours autour d&#8217;AMQP, une bonne et une mauvaise.</p><p>La bonne nouvelle pour <a
href="http://blog.xebia.fr/2010/02/23/amqp-une-alternative-a-jms/" title="AMQP" >AMQP</a>, c&#8217;est le rachat (<a
href="http://www.springsource.com/newsevents/springsource-acquires-rabbitmq-cloud-messaging" title="ici" >ici</a>, <a
href="http://www.springsource.com/rabbit-technologies-acquisition-faq" title="ici" >ici</a> et <a
href="http://www.rabbitmq.com/news.html" title="là" >là</a>) par VMWare de RabbitMQ, rejoignant ainsi la gamme de produit SpringSource. Ceci donne l&#8217;occasion à Rod Johnson de donner son <a
href="http://blog.springsource.com/2010/04/13/springsource-acquires-rabbitmq/" title="point de vue" >point de vue</a>. Les efforts de RabbitMQ pour s&#8217;intégrer à des solutions cloud semblent avoir été déterminants pour VMWare. L&#8217;aspect standardisation par contre apparait moins dans les différentes annonces et il est sûrement encore trop tôt pour savoir quel sera l&#8217;investissement de SpringSource dans le groupe de travail d&#8217;AMQP. Néanmoins AMQP profitera sûrement de l&#8217;aura de Spring dans la communauté Java et ça ne peut être qu&#8217;une bonne nouvelle pour ce standard. Par contre <a
href="http://www.opencredo.com/technologies/opencredo-amq" title="OpenCredo" >OpenCredo</a>, qui tente de faciliter les solutions AMQP en Java et propose entre autres un template Spring pour RabbitMQ, risque d&#8217;être une victime collatérale de cette nouvelle association.</p><p>Ensuite la mauvaise nouvelle. IMatix, qui a créé OpenAMQ, la première implémentation de ce standard, a l&#8217;intention d&#8217;arrêter son support en <a
href="http://lists.openamq.org/pipermail/openamq-dev/2010-March/001598.html" title="2011" >2011</a>. <a
href="http://www.zeromq.org/" title="0MQ" >0MQ</a>, acheté il y a quelques mois, remplacera ce produit. Par la même occasion, ils cesseront de participer au groupe de travail AMQP. Outre le fait que 0MQ parait avoir des performances très supérieures à OpenAMQ, il semble que l&#8217;inertie autour de la nouvelle version de la norme AMQP/1.0 ait fini par éteindre l&#8217;enthousiasme des dirigeants d&#8217;iMatix. D&#8217;ailleurs, on peut trouver sur leur site un <a
href="http://www.imatix.com/articles:whats-wrong-with-amqp" title="article intressant" >article intéressant</a> sur les arcanes du groupe de travail. Il apparait qu&#8217;à vouloir spécifier trop de choses le standard deviendrait beaucoup trop complexe et que le retard pris sur la livraison de la nouvelle version serait dû à des considérations plus humaines que techniques, laissant entendre que l&#8217;ambiance n&#8217;y est peut-être pas toujours très détendue.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="BillyNewportetlaprogrammationp"></a>Billy Newport et la programmation parallèle</h4><p>Billy Newport, un des acteurs majeurs de la programmation distribuée, a donné <a
href="http://www.infoq.com/interviews/billy-newport-parallel" title="une interview  InfoQ" >une interview à InfoQ</a> dans le cadre de Qcon.<br
/> Il y parle de programmation parallèle en Java, selon lui l&#8217;avenir de notre langage.<br
/> La tendance actuelle dans le hardware est à la multiplication des cœurs, mais au ralentissement de leur fréquence. Et contrairement à ce que semblent penser certaines équipes d&#8217;exploitation (nous avons des noms), la multiplication des cœurs ne permettra pas aux applications Web de traiter plus d&#8217;utilisateurs, plus vite (bien au contraire, puisque unitairement, les cœurs sont moins puissants).</p><p>Le problème que Billy Newport voit dans l&#8217;écosystème actuel est l&#8217;absence complète d&#8217;un framework de haut niveau pour faciliter la programmation parallèle (qui reste une arcane secrète réservée aux grand maîtres). Il existe bien un certain nombre d&#8217;outils pour gérer le <em>comment implémenter</em> des traitements parallèles :</p><ul><li>les grilles de calculs en mémoire, comme eXtrem Scale.</li><li>les traitements massifs de fichiers, comme Hadoop.</li></ul><p>Malheureusement, aucune de ces solutions ne propose d&#8217;API de haut niveau qui permettrait de décrire les traitements à appliquer aux données quelle que soit l&#8217;implémentation &laquo;&nbsp;physique&nbsp;&raquo; mise en place. De plus, il semblerait que bien peu de personnes travaillent dans la recherche sur ce sujet. Billy Newport y voit là une superbe opportunité pour créer la prochaine entreprise <em>à la mode</em> dans l&#8217;open source.<br
/> Proposer une API de haut niveau qui proposerait de décrire les traitements et la façon de les appliquer aux données, en permettant de s&#8217;abstraire de la tuyauterie classique de la programmation parallèle :</p><ul><li>Gérer les structures de données et la concurrence autour de ces données.</li><li>Gérer la distribution optimisée des traitements (afin que le gain de temps réalisé en utilisant un cœur distant ne soit pas perdu en temps d&#8217;IO par exemple).</li></ul><p>Selon lui, les mécanismes existant en Java posant les prémices du calcul massivement parallèle (les Actors en Scala par exemple) sont de trop bas niveau.<br
/> Afin de pouvoir faire de la programmation parallèle sans avoir à connaitre toutes les implémentations sur le bout des doigts, il faudrait que Java adopte une réflexion comme celle que les auteurs de Haskell et Erlang ont mené (et non pas des recherche sur des mécanismes de <em>primitives</em> comme Scala)</p><p>D&#8217;autres problématiques vont apparaitre, notamment à cause des mécanismes d&#8217;auto découverte des nœuds d&#8217;une architecture distribuée (il existe plusieurs parades, comme changer les ports standard ou bien utiliser un mécanisme déclaratif).</p><p>Bref une entrevue passionnante, dont vous trouverez l&#8217;intégralité en video, mais également en transcript, peut être plus accessible pour les anglophobes.</p><h4><a
name="PerformancejQueryavecdelegate"></a>Performance jQuery avec $.delegate()</h4><p>Voilà une petite astuce <a
href="http://jquery.com/" title="jQuery" >jQuery</a> plutôt intéressante pour gagner en performance sur votre site web si vous êtes déjà, tout comme moi <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , un accro de la fonction <a
href="http://api.jquery.com/live/" title="live" >live</a> <em>(via <a
href="http://www.sitecrafting.com/blog/delegate" title="ce site" >ce site</a>)</em>.</p><p>Pour la gestion des évènements, nous avons la méthode <a
href="http://api.jquery.com/bind/" title="jQuery" >bind</a> qui permet d&#8217;associer à un élément de notre page un évènement de type <code>click</code>, <code>change</code>, <code>focus</code>&#8230; Mais <code>bind</code> ne s&#8217;appliquera que sur les éléments explicitement retournés par le sélecteur. Ainsi, même si nous spécifions un sélecteur du type <code>$('a')</code> <em>(tous les éléments <code>a</code> de la page)</em>, les éventuels éléments <code>a</code> qui seraient créés plus tard dans la page ne seront pas pris en compte.</p><p>Pour cela, jQuery 1.4 introduit la méthode <code>live</code> qui est un <code>bind</code> <em>présent</em> et <em>futur</em>. En effet, il s&#8217;applique sur tous les éléments retournés par le sélecteur mais aussi sur tous les éléments futurs de la page qui matcheront avec ce sélecteur ! Une fonctionnalité très intéressante donc mais aussi très consommatrice si l&#8217;on a un DOM important. En effet, le sélecteur parcourt à chaque fois le document pour matcher les nouveaux éléments et leurs associer l&#8217;évènement.</p><p>Mais c&#8217;est sans compter sur <a
href="http://api.jquery.com/delegate/" title="delegate" >delegate</a> qui est un <code>live</code> <em>voisin</em>. Ainsi, plutôt que de matcher tous les éléments <code>a</code> de ma page, <code>delegate</code> va s&#8217;appliquer sur un élément parent <em>(et donc restreint)</em> et, de cet élément parent, rechercher un certain élément sur lequel binder l&#8217;évènement. Imaginons que notre <code>a</code> soit inclus dans un élément ayant l&#8217;id <code>container</code>, on pourra alors écrire :</p><pre class="brush: java; title: ; notranslate">
$('#container').delegate('a', 'click', function() {...})
</pre><p>Une écriture quelque peu différente donc mais un véritable gain sur un DOM conséquent. A essayer d&#8217;urgence !</p><h4><a
name="FailledescuritdansOracleJava"></a>Faille de sécurité dans Oracle Java</h4><p>Oracle Java a sorti une nouvelle mise à jour du JDK et du JRE 6 suite à une <a
href="http://www.oracle.com/technology/deploy/security/alerts/alert-cve-2010-0886.html" title="alerte" >alerte</a> de sécurité sur le Java Deployment Toolkit utilisé pour Java Web Start. <a
href="http://seclists.org/fulldisclosure/2010/Apr/119" title="Tavis Ormandy" >Tavis Ormandy</a> et <a
href="http://reversemode.com/index.php?option=com_content&#038;task=view&#038;id=67&#038;Itemid=1" title="Ruben Santamarta" >Ruben Santamarta</a> ont découvert simultanément la possibilité d&#8217;exécuter du code arbitraire à travers cette faille et ont alerté la communauté le 9 avril dernier. Ce problème existe depuis la version 1.6.0_10 et est dû à un certain laxisme sur la vérification du paramètre &laquo;&nbsp;codebase&nbsp;&raquo; dans le JNLP qui devient maintenant obligatoire. Bien que ce problème impacte potentiellement les environnements Linux, Windows semble plus vulnérable, donnant par exemple la possibilité de charger une DLL. Par contre il ne concerne pas les Mac. Oracle a commencé par minimiser la gravité du problème avant finalement de sortir cette mise à jour une semaine après sa découverte. Il est donc fortement conseillé de se <a
href="http://www.java.com/en/download/installed.jsp?detect=jre&#038;try=2" title="mettre  jour" >mettre à jour</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/04/12/revue-de-presse-xebia-154/</link> <comments>http://blog.xebia.fr/2010/04/12/revue-de-presse-xebia-154/#comments</comments> <pubDate>Mon, 12 Apr 2010 17:25:09 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Apple]]></category> <category><![CDATA[AWS]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4391</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Vague de départs chez Sun/Oracle Avec son OS4, Apple bride les développeurs AWS s&#8217;enrichie d&#8217;un nouveau service de notification Agilité Maîtriser votre dette technique Actualité éditeurs / SSII Vague de départs chez Sun/Oracle Le rachat de Sun par Oracle constitue [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/04/12/revue-de-presse-xebia-154/#VaguededpartschezSunOracle">Vague de départs chez Sun/Oracle</a></li><li><a
href="http://blog.xebia.fr/2010/04/12/revue-de-presse-xebia-154/#AvecsonOSApplebridelesdveloppe">Avec son OS4, Apple bride les développeurs</a></li><li><a
href="http://blog.xebia.fr/2010/04/12/revue-de-presse-xebia-154/#AWSsenrichiedunnouveauserviced">AWS s&#8217;enrichie d&#8217;un nouveau service de notification </a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/04/12/revue-de-presse-xebia-154/#Matriservotredettetechnique">Maîtriser votre dette technique</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="VaguededpartschezSunOracle"></a>Vague de départs chez Sun/Oracle</h4><p>Le rachat de Sun par Oracle constitue un changement de politique et d&#8217;identité majeur pour l&#8217;entreprise qui avait créé Java. On pouvait donc s&#8217;attendre à un certain nombre de départs de quelques personnes clé de Sun. Ces dernières semaines ont vu notamment les démissions de :</p><ul><li><a
href="http://news.cnet.com/8301-1001_3-20002207-92.html" title="James Gosling" >James Gosling</a> : le créateur du langage Java. Après avoir passé 20 ans chez Sun, James Gosling quitte Sun/Oracle. Son départ a logiquement fait beaucoup de bruit au sein de la communauté Java.</li><li><a
href="http://webmink.com/2010/03/08/sundown/" title="Simon Phipps" >Simon Phipps</a> : le directeur de la stratégie Open Source de Sun. Il avait rejoint Sun 10 ans auparavant et était devenu <em>Chief Open Source Officer</em> il y a 5 ans.</li><li><a
href="http://www.tbray.org/ongoing/When/201x/2010/03/15/Joining-Google" title="Tim Bray" >Tim Bray</a> : le co-rédacteur de la spécification XML et directeur des technologies Web chez Sun. Il <a
href="http://www.tbray.org/ongoing/When/201x/2010/03/15/Joining-Google" title="rejoint Google" >rejoint Google</a> dès à présent.</li></ul><p>Ces départs retentissants, accompagnés de disparitions de produits et de changements de politiques, marquent bien la fin d&#8217;une époque&#8230;</p><h4><a
name="AvecsonOSApplebridelesdveloppe"></a>Avec son OS4, Apple bride les développeurs</h4><p>Apple a dévoilé la semaine dernière son nouvel OS, OS4, système d&#8217;exploitation destiné aux derniers iPhones, iPods et autres iPads. Nous ne reviendrons pas sur les nombreuses nouveautés techniques mais sur un simple paragraphe de la &laquo;&nbsp;iPhone Developer License Agreement&nbsp;&raquo; dont les termes ont depuis <a
href="http://techcrunch.com/2010/04/08/adobe-flash-apple-sdk/" title="anim la blogosphre" >animé la blogosphère</a>. L&#8217;ancienne version de ce document spécifiait que les développeurs devaient utiliser les API publiques de la manière prescrite par Apple et ne devaient pas utiliser d&#8217;appels à des API non publiées ou privées. Cette licence est maintenant beaucoup plus restrictive: elle spécifie explicitement que les applications devront être écrites en C, C++ ou Objective-C (voir Javascript à travers le Webkit d&#8217;origine). Tout programme destiné à être exécuté après une traduction ou se reposant sur une couche type machine virtuelle est interdit. La conséquence directe est que Flash, Java ou .Net se voient interdire l&#8217;accès à l&#8217;immense marché des applications iPhone.</p><p>La première question venant à l&#8217;esprit est &laquo;&nbsp;pourquoi ?&nbsp;&raquo;. Pourquoi se limiter alors que ces types de langages et technologies ont le vent en poupe ces temps ci et sont un fort moteur d&#8217;innovation. Une réponse <a
href="http://www.taoeffect.com/blog/2010/04/steve-jobs-response-on-section-3-3-1/" title="apporte par Steve Jobs" >apportée par Steve Jobs</a> est que l&#8217;utilisation par les développeurs de couches intermédiaires produit des sous-applications non standard qui grèvent l&#8217;évolution de la plateforme.</p><p>En fait, <a
href="http://daringfireball.net/2010/04/why_apple_changed_section_331" title="selon John Gruber" >selon John Gruber</a>, Apple cherche à éviter à tout prix qu&#8217;une autre compagnie n&#8217;établisse ses propres outils comme un standard surtout si ceux ci permettent d&#8217;écrire un seul code et de l&#8217;exécuter indifféremment sur iPhone, Android ou Windows Mobile. Apple veut imposer sa plateforme de développement, que celle-ci devienne un standard, un passage obligé. Plus les développeurs seront familiers avec elle, plus ils développeront pour elle. De la même manière que Windows s&#8217;est imposé dans les années 90. Eviter le &laquo;&nbsp;write once, run anywhere&nbsp;&raquo;, ca ne vous rappelle rien ?! Surtout que les applications iPhone représentent déjà la plus grosse part du gâteau des applications mobiles.</p><p>Les conséquences sont importantes. En premier lieu, l&#8217;avenir de Flash sur les machines de la Pomme <a
href="http://techcrunch.com/2010/04/09/adobe-go-screw-yourself-apple-2/" title="semble compromis" >semble compromis</a> et <a
href="http://anscamobile.com/" title="de" >de</a> <a
href="http://monotouch.net/" title="nombreux" >nombreux</a> <a
href="http://www.appcelerator.com/" title="développeurs" >développeurs</a> voient leurs efforts réduits à (presque) néant. Nous n&#8217;avons pas fini d&#8217;entendre parler de cette affaire et de débattre pour savoir si <a
href="http://www.mobilecrunch.com/2010/04/11/gruber-a-voice-of-calm-in-a-mobile-world-gone-out-of-control/" title="Apple préserve simplement la qualité de sa plateforme" >Apple préserve simplement la qualité de sa plateforme</a> ou bien joue trop restrictif, ce qui, pour certains, <a
href="http://www.mobileorchard.com/goodbye/" title="nest plus acceptable" >n&#8217;est plus acceptable</a>.</p><h4><a
name="AWSsenrichiedunnouveauserviced"></a>AWS s&#8217;enrichie d&#8217;un nouveau service de notification</h4><p>Amazon enrichie son offre Cloud Computing AWS (Amazon Web Services) d&#8217;un nouveau service de notification. Baptisé <a
href="http://aws.amazon.com/sns/" title="Simple Notification Service" >Simple Notification Service</a> (SNS), il permet à des systèmes externes de souscrire à un <em>topic</em> pour recevoir des notifications par SMTP, HTTP(S) ou Amazon SQS (<a
href="http://aws.amazon.com/sqs/" title="Simple Queue Service" >Simple Queue Service</a>). SNS vient donc en complément du service SQS existant puisque ce dernier était un <em>broker</em> de messages qui offrait une connectivité HTTP. SNS, quant à lui, se définit plutôt comme un <em>publish-subscribe</em> lié à une capacité d&#8217;intégration.</p><p>Ce type de traitement peut être effectué très simplement au sein des applications Java, par programmation. Tout l&#8217;intérêt de ce nouveau service est donc le même que pour la majorité des autres services de Cloud Computing offerts par Amazon : il s&#8217;agit d&#8217;un service clé en main pour lequel aucune tâche de déploiement, d&#8217;exploitation, et de planification de charge n&#8217;est requise. Le choix d&#8217;exploiter ce service peut alors être fait sur la base d&#8217;une projection de coût basé sur l&#8217;habituelle tarification linéaire d&#8217;AWS, tandis qu&#8217;en informatique traditionnelle ce choix aurait été basé sur les contraintes de mise en œuvre d&#8217;un <em>middleware</em> supplémentaire.</p><p>L&#8217;offre de Cloud Computing d&#8217;Amazon s&#8217;étoffe mois après mois avec l&#8217;arrivée de services supplémentaires, conférant ainsi à Amazon une position très confortable sur ce marché. Le Cloud Computing est un marché émergeant qui se <a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#LesstandardsduCloudComputingen" title="cherche encore des standards" >cherche encore des standards</a>. AWS, fort de son innovation régulière et de sa popularité pourrait s&#8217;octroyer une position de standard <em>de facto</em> telle celle gagnée par Spring. Le fait que le projet <a
href="http://www.eucalyptus.com/" title="Eucalyptus" >Eucalyptus</a> &#8211; qui vise a offrir une solution de <em>private cloud</em> &#8211; soit basé sur les contrats des services d&#8217;AWS donne d&#8217;ailleurs un crédit supplémentaire à cette hypothèse.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Matriservotredettetechnique"></a>Maîtriser votre dette technique</h4><p>La dette technique est généralement introduite à cause de raccourcis pris lors d&#8217;un développement pour tenter de gagner du temps, en lieu et place d&#8217;une conception propre, simple et évolutive. L&#8217;évolution et la maintenance de ce code se feront au prix d&#8217;efforts supplémentaires que l&#8217;on peut assimiler à des intérêts financiers.</p><p>Dans <a
href="http://www.infoq.com/news/2010/03/monetizing-technical-debt" title="Monetizing the technical debt" >Monetizing the technical debt</a>, Vikas Hazarati nous explique que la dette technique doit être maîtrisée faute de quoi, l&#8217;application risque de péricliter. En effet, au delà d&#8217;une certaine dette technique, la modification du code risque d&#8217;entraîner des comportements hasardeux (régressions) dans l&#8217;application. La diminution de la dette (capital) se fera en refactorant le code avant d&#8217;atteindre un niveau de dette trop élevé. L&#8217;article nous explique les bénéfices de monétiser notre dette technique et donne quelques éléments pour déterminer le niveau d&#8217;endettement (notamment via l&#8217;emploi d&#8217;un plugin Sonar).</p><p>La détermination d&#8217;un montant de dette technique pertinent semble difficile à mettre en œuvre et la détermination d&#8217;un seuil de maîtrise semble aussi particulièrement subjective. Le ressenti de l&#8217;équipe de développement sur le niveau (qualitatif) de la dette technique semble plus pertinent.</p><p>Comme l&#8217;explique Ward Cunningham, l&#8217;introduction d&#8217;une petite dette technique peut accélérer le développement à condition que celle-ci soit remboursée rapidement après sa souscription. Une bonne pratique pour vous aider à maîtriser votre dette technique est d&#8217;identifier le code à améliorer au moment où vous l&#8217;introduisez et de planifier les corrections nécessaires lors des itérations suivantes.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/04/12/revue-de-presse-xebia-154/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Kirk Pepperdine : Java Performance Tuning</title><link>http://blog.xebia.fr/2010/04/06/kirk-pepperdine-java-performance-tuning/</link> <comments>http://blog.xebia.fr/2010/04/06/kirk-pepperdine-java-performance-tuning/#comments</comments> <pubDate>Tue, 06 Apr 2010 10:27:55 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Performances]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4316</guid> <description><![CDATA[Xebia-training a le plaisir d’accueillir Kirk Pepperdine, un référent de la communauté Java EE pour une formation d’optimisation des performances Java EE (Java performance tuning) les 7, 8, 9 et 10 juin dans nos locaux. Cette formation approfondie de 4 jours vous permettra d’obtenir les compétences nécessaires pour optimiser la performance de vos applications Java. [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://training.xebia.fr">Xebia-training</a> a le plaisir d’accueillir Kirk Pepperdine, un référent de la communauté Java EE pour une formation d’optimisation des performances Java EE <em>(Java performance tuning)</em> les 7, 8, 9 et 10 juin dans nos locaux.</p><p>Cette formation approfondie de 4 jours vous permettra d’obtenir les compétences nécessaires pour optimiser la performance de vos applications Java. Vous aborderez pendant cette formation tous les aspects de la performance : l’outillage nécessaire, les méthodologies à appliquer, les concepts d’architecture sous jacents à la performance, les meilleures pratiques, le benchmarking et la gestion de mémoire.</p><p>A l’issue de cette formation, vous serez en mesure :</p><ul><li>D’identifier rapidement et régler les problèmes de performance de vos applications.</li><li>D’identifier et résoudre des problèmes de fuite mémoire en quelques heures.</li><li>D’isoler des problèmes classiques et d’éviter de s’engager dans des plans d’actions couteux et inefficaces.</li><li>D’identifier des problèmes de performance avant qu’ils ne deviennent critiques pour les applications.</li></ul><p>Les stagiaires bénéficieront des Tips de Kirk Pepperdine, référence reconnue dans le monde de l’optimisation de performance objet.<br
/> Kirk Pepperdine dispose de 15 ans d’expérience dans les technologies OO et l’optimisation de la performance. Figure emblématique du monde Java et élu <em>&laquo;&nbsp;Champion JAVA&nbsp;&raquo;</em> en 2005, Kirk est reconnu comme le référent de l’optimisation de performance Java.<br
/> Vous pouvez consulter le programme complet de cette formation en consultant notre site : <a
href="http://training.xebia.fr/category/filiere-java-jee/">http://training.xebia.fr/category/filiere-java-jee/</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/04/06/kirk-pepperdine-java-performance-tuning/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Soirée &#171;&#160;Les applications Java et la Production&#160;&#187; suivie d&#8217;un cocktail</title><link>http://blog.xebia.fr/2010/03/25/soiree-les-applications-java-et-la-production-suivie-dun-cocktail/</link> <comments>http://blog.xebia.fr/2010/03/25/soiree-les-applications-java-et-la-production-suivie-dun-cocktail/#comments</comments> <pubDate>Thu, 25 Mar 2010 16:03:02 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Exploitation]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Production]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4270</guid> <description><![CDATA[Xebia organise le 12 Avril à partir de 19h, une soirée &#171;&#160;Les dix bonnes pratiques des applications Java prêtes pour la production&#160;&#187; suivie d’un cocktail. Cette soirée gratuite vous permettra d’appréhender les bonnes pratiques que se doivent de respecter les Directions Etudes et Développement pour rendre leurs applications Java/J2EE prêtes pour la production. Elle se [...]]]></description> <content:encoded><![CDATA[<p>Xebia organise le 12 Avril à partir de 19h, une soirée &laquo;&nbsp;Les dix bonnes pratiques des applications Java prêtes pour la production&nbsp;&raquo; suivie d’un cocktail.</p><p>Cette soirée gratuite vous permettra d’appréhender les bonnes pratiques que se doivent de respecter les Directions Etudes et Développement pour rendre leurs applications Java/J2EE prêtes pour la production.</p><p>Elle se déroulera dans les locaux de Xebia : 156, boulevard Haussmann, 75008 Paris.<br
/> Les inscriptions peuvent se faire :</p><ul><li>Par mail : <a
href="mailto:info@xebia-training.fr">info@xebia-training.fr</a></li><li>Par téléphone : 01.53.89.99.93</li><li>En ligne <a
href="http://training.xebia.fr/soiree-les-applications-java-et-la-production/"> sur le site de Xebia Training</a></li></ul><p>Les technologies Java ont été massivement adoptées par les DSI pour la réalisation de leurs applications critiques. Porteuses de valeur et d’innovation, elles posent régulièrement problème au niveau des départements Exploitation/Production. Instabilité chronique, manque de capacité à monter en charge, difficultés de diagnostiques en cas de dysfonctionnement, déploiement chaotique sont autant de maux fréquemment rencontrés par les entreprises utilisatrices.</p><p>Les bonnes pratiques que se doivent de respecter les Directions Etudes et Développement pour rendre leurs applications Java/J2EE prêtes pour la production s’articulent autour des axes suivants :</p><h4>Les bonnes pratiques pour le déploiement</h4><p>Le déploiement est le baptême du feu d’une application en production. Comment réussir cette épreuve ?</p><ul><li>Complexité des composants à déployer : simplicité rime avec fiabilité,</li><li>Les paramètres de configuration : éviter l’anarchie,</li><li>Traçabilité et build automatisés : maitriser sa plateforme.</li></ul><h4>Les bonnes pratiques de robustesse</h4><p>Dans l’adversité, une application robuste assure un service minimum plutôt que de s’arrêter :</p><ul><li>Dépendances inter-application : fail fast est il synonyme de fragilité ?</li><li>Prévention des saturations et des effets “domino” : l’art du code défensif,</li><li>Modes dégradés : les négociation technico-fonctionnelles.</li></ul><h4>Les bonnes pratiques pour la supervision et le monitoring</h4><p>Une application en production doit exposer son état aux équipes d’exploitation et faciliter la détection de problèmes :</p><ul><li>Indicateurs de bon fonctionnement d’une application : ne pas se noyer dans les chiffre,</li><li>Comment exposer les indicateurs de performances ? Fichier de log versus page JSP versus Java Management eXtension (JMX) ?</li></ul><h4>Les bonnes pratiques de log</h4><p>Grande source d’incompréhension entre les départements études et exploitation, les logs d’application Java ? Quels formats de messages ?</p><ul><li>Codes erreurs chers aux exploitants, exceptions chainées et stacktraces familières aux développeurs, quel compromis ?</li><li>Des logs de troubleshooting extrêmement verbeuses aux logs d’audit sécurité à conserver plus d’un an en passant par celles de perfs et celles de diagnostique, comment organiser les logs ?</li></ul><h4>Les bonnes pratiques organisationnelles</h4><p>Avoir une application prête pour la production ne se limite pas à des bonnes pratiques techniques, la collaboration des départements études et exploitation est essentielle :</p><ul><li>Prendre en considération les réalités de production dans les développements : une amélioration continue,</li><li>Les incidents : comment s’y préparer pour qu’ils ne se transforment pas en longues indisponibilité.</li></ul><h4>BONUS</h4><p>Les bonnes pratiques de robustesse</p><ul><li>Les mécanismes de ré-essai</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/03/25/soiree-les-applications-java-et-la-production-suivie-dun-cocktail/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/03/22/revue-de-presse-xebia-152/</link> <comments>http://blog.xebia.fr/2010/03/22/revue-de-presse-xebia-152/#comments</comments> <pubDate>Mon, 22 Mar 2010 18:57:08 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Cassandra]]></category> <category><![CDATA[Cloud / NoSQL]]></category> <category><![CDATA[Ehcache]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Lean]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[scala]]></category> <category><![CDATA[Scalaj Collections]]></category> <category><![CDATA[Sonar]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4249</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Agilité Quand Toyota se met au Lean Le coin de la technique Ehcache 2.0 : un renouveau ? Scalaj Collections Sonar 2.0 MySQL + Memcached vs Cassandra Evènements de notre communauté en France et à l&#8217;étranger Kawa Camp Paris mardi : HTML 5, Android, [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/03/22/revue-de-presse-xebia-152/#QuandToyotasemetauLean">Quand Toyota se met au Lean</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/03/22/revue-de-presse-xebia-152/#Ehcacheunrenouveau">Ehcache 2.0 : un renouveau ?</a></li><li><a
href="http://blog.xebia.fr/2010/03/22/revue-de-presse-xebia-152/#ScalajCollections">Scalaj Collections</a></li><li><a
href="http://blog.xebia.fr/2010/03/22/revue-de-presse-xebia-152/#Sonar">Sonar 2.0</a></li><li><a
href="http://blog.xebia.fr/2010/03/22/revue-de-presse-xebia-152/#MySQLMemcachedvsCassandra">MySQL + Memcached vs Cassandra</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/03/22/revue-de-presse-xebia-152/#KawaCampParismardiHTMLAndroidN">Kawa Camp Paris mardi : HTML 5, Android, NoSQL</a></li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="QuandToyotasemetauLean"></a>Quand Toyota se met au Lean</h4><p>Tout le monde le sait, le Lean est l&#8217;adaptation du système de production de Toyota au développement logiciel. Et pourtant, qui est en train de s&#8217;inspirer du Lean pour améliorer son développement logiciel ? &#8230; Toyota!<br
/> Dans <a
href="http://blog.crisp.se/henrikkniberg/2010/03/16/1268757660000.html" title="cet article" >cet article</a>, Henrik Kniberg (l&#8217;auteur de <a
href="http://www.infoq.com/minibooks/scrum-xp-from-the-trenches" title="Scrum and xp from the trenches" >&laquo;&nbsp;Scrum and xp from the trenches&nbsp;&raquo;</a>) nous raconte comment il a découvert avec stupeur que Toyota utilisait encore le &laquo;&nbsp;bon&nbsp;&raquo; vieux cycle en V pour le développement logiciel. Conscient des problèmes rencontrés il semblerait cependant que les équipes de développement de Toyota s&#8217;orientent vers les méthodes agiles. La boucle est ainsi bouclée!</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Ehcacheunrenouveau"></a>Ehcache 2.0 : un renouveau ?</h4><p><a
href="http://ehcache.org/" title="Ehcache" >Ehcache</a> est une solution de cache Open Source qui est longtemps restée très basique : aucun mécanisme de réplication n&#8217;était proposé. Le projet se limitait alors une table de hachage enrichie d&#8217;une logique d&#8217;éviction et d&#8217;<em>offload</em> sur disque. La réplication du cache sur plusieurs nœuds par RMI est apparue tardivement, et fut suivie d&#8217;autres technologies de réplication telles que JGroups ou JMS. Plus récemment, l&#8217;acquisition du projet par Terracotta fut assez logiquement suivie de l&#8217;introduction d&#8217;une réplication par Terracotta en version 1.7.</p><p>Ces dernières années ont donc vu un enrichissement (ou une complexification) croissant d&#8217;Ehcache. Une nouvelle version 2.0 <a
href="http://ehcache.org/" title="vient dtre annonce" >vient d&#8217;être annoncée</a> par Terracotta et les nouveautés incluses créent une nouvelle fois la rupture avec les versions précédentes&nbsp;:</p><ul><li><strong>Support de JTA</strong> : Ehcache se comporte maintenant comme une ressource transactionnelle XA. Ce support de JTA place ainsi EhCache face à JBoss Cache, maintenant renommé <a
href="http://www.jboss.org/infinispan" title="Infinispan" >Infinispan</a>, qui se démarquait jusqu&#8217;alors parmi les caches Open Source par ses capacités transactionnelles.</li><li><strong>Write-behind</strong> : Ehcache est maintenant capable d&#8217;écrire de manière asynchrone et planifiée dans la ressource dont il est la façade.</li></ul><p>Les autres nouveautés concernent diverses améliorations liées à la configuration dynamique d&#8217;Ehcache ou à l&#8217;utilisation de Terracotta.</p><p>Il s&#8217;agit donc bien d&#8217;une version majeure pour Ehcache qui propose désormais de nombreuses fonctionnalités dédiées aux architectures distribuées. Le <a
href="http://sourceforge.net/projects/ehcache/files/" title="poids de la distribution" >poids de la distribution</a> s&#8217;en ressent puisqu&#8217;il est passé de 300 Ko pour la version 1.0 a 14 Mo pour la version 2.0 : une vraie rupture&#8230;</p><h4><a
name="ScalajCollections"></a>Scalaj Collections</h4><p>Voici une petite librairie fort sympathique qui permet de convertir une collection Java vers une collection Scala et inversement <em>(vu sur le <a
href="http://code.technically.us/post/464828790/scalaj-collection" title="Coderspiel" >Coderspiel</a>)</em>.</p><p>La librairie enrichit certaines classes existantes comme <code>List</code>, <code>Map</code> et <code>Set</code> côté Scala ou <code>ArrayList</code> côté Java. Une fois l&#8217;objet créé et si besoin initialisé avec certaines données, il suffit d&#8217;appeler la méthode <code>asJava</code> ou <code>asScala</code> pour modifier le type l&#8217;objet. Il est aussi possible d&#8217;appeler la méthode <code>foreach</code> sur une liste Java. Les méthodes <code>map</code>, <code>filter</code> et <code>flatMap</code> sont en cours de développement. Quelques exemples :</p><pre class="brush: java; title: ; notranslate">
List(1, 2, 3).asJava   // returns java.util.List1
Map(1 -&gt; &quot;a&quot;, 2 -&gt; &quot;b&quot;, 3 -&gt; &quot;c&quot;).asJava   // returns java.util.Map1
val list = new java.util.ArrayList1
list.add(1)
list.add(2)
list.asScala   // returns scala.Seq[Int]
list.foreach(print)   // prints &quot;123&quot;
</pre><p>Le projet est hébergé sur <a
href="http://github.com/scalaj/scalaj-collection" title="GitHub" >GitHub</a>. Vous pouvez récupérer le jar à cette <a
href="http://www.scala-tools.org/repo-releases/org/scalaj/scalaj-collection_2.8.0.Beta1/1.0.Beta1/" title="adresse" >adresse</a> ou par maven :</p><pre class="brush: xml; title: ; notranslate">
&lt;dependency&gt;
  &lt;groupId&gt;org.scalaj&lt;/groupId&gt;
  &lt;artifactId&gt;scalaj-collection_${scala.version}&lt;/artifactId&gt;
  &lt;version&gt;1.0.Beta1&lt;/version&gt;
&lt;/dependency&gt;
</pre><h4><a
name="Sonar"></a>Sonar 2.0</h4><p>Dans cette première release de 2010, l&#8217;équipe Sonar élargit le champs d&#8217;analyse de leur outil en y ajoutant un septième axe d&#8217;analyse de qualité logiciel. Pour rappel, les six premiers axes déjà supportés par Sonar sont:</p><ul><li>La couverture de code par les tests unitaires</li><li>La distribution de la complexité (par classe et par méthode)</li><li>La recherche de bugs potentiels (avec <a
href="http://findbugs.sourceforge.net/" title="FindBugs" >FindBugs</a>)</li><li>La détection des codes dupliqués</li><li>L&#8217;insuffisance des commentaires</li><li>Le respect des normes du langage</li></ul><p>Le septième et dernier axe, propose d&#8217;évaluer la conception objet à l&#8217;aide:</p><ul><li>D&#8217;une <a
href="http://docs.codehaus.org/display/SONAR/Dependency+Structure+Matrix" title="matrice de dpendance des classes" >matrice de dépendance des classes</a>, équivalente à la DSM de IntelliJ Idea</li><li>Des métriques de <a
href="http://www.aivosto.com/project/help/pm-oo-ck.html" title="Chidamber &#038; Kemerer (DIT, NOC, RFC, CA, CE, LCOM4)" >Chidamber &#038; Kemerer (DIT, NOC, RFC, CA, CE, LCOM4)</a></li></ul><p>Ces nouveaux outils vont nous permettre, d&#8217;une part, de détecter et résoudre les cycles de dépendances, et, d&#8217;autre part, de surveiller l&#8217;étendue des responsabilités de nos classes. L&#8217;équipe Sonar reste donc très active, elle prévoit d&#8217;ailleurs une nouvelle version pour le courant du mois de mai avec notamment la détection de code mort dans la roadmap.</p><ul><li><a
href="http://sonar.codehaus.org/sonar-2-0-in-screenshots/" title="Lannonce sur le blog Sonar" >L&#8217;annonce sur le blog Sonar</a></li><li><a
href="http://sonar.codehaus.org/downloads/#2.0" title="La release note" >La release note</a></li><li><a
href="http://sonar.codehaus.org/roadmap/" title="La roadmap" >La roadmap</a></li></ul><h4><a
name="MySQLMemcachedvsCassandra"></a>MySQL + Memcached vs Cassandra</h4><p>Après <a
href="http://blog.xebia.fr/2010/03/01/revue-de-presse-xebia-149/#LactualitdesbasesdedonnesNoSQL" title="Twitter il y a un mois" >Twitter il y a un mois</a>, c&#8217;est maintenant Digg qui <a
href="http://about.digg.com/node/564" title="vient d'abandonner" >vient d&#8217;abandonner</a> sa solution de persistance basée sur MySQL et <a
href="http://memcached.org/" title="Memcached" >Memcached</a> au profit de <a
href="http://cassandra.apache.org/" title="Cassandra" >Cassandra</a>. Les raisons invoquées pour l&#8217;abandon de leur précédente solution de persistance restent les mêmes :</p><ul><li>Complexité induite par le partitionnement de MySQL</li><li>Manque de scalabilité de l&#8217;ensemble</li><li>Maintenance délicate du <em>cluster</em> MySQL</li></ul><p>Le choix de Cassandra parmi l&#8217;ensemble des base de données NoSQL disponibles était quant à lui dirigé par les qualités que l&#8217;on reconnait souvent à ce projet :</p><ul><li>Sa nature <em>column-oriented</em> apporte une persistance plus structurante qu&#8217;une simple solution clé-valeur</li><li>Son architecture <em>peer to peer</em> ne présente pas de <em>single point of failure</em> assurant donc la haute disponibilité</li><li>Le projet bénéficie d&#8217;une large communauté, gage de pérennité de l&#8217;investissement</li></ul><p>Les difficultés à gérer de très larges volumes de données dans les bases de données relationnelles sont ainsi régulièrement mises en avant. Ainsi Philip Tellis <a
href="http://tech.bluesmoon.info/2009/09/scaling-writes-in-mysql.html" title="publiait" >publiait</a> il y a quelques mois son retour d&#8217;expérience sur un projet nécessitant la persistance de quelques 40 millions d&#8217;enregistrements par jour dans une base de données MySQL partitionnée : on se rend rapidement compte des nombreux efforts nécessaires à la mise en œuvre d&#8217;une telle architecture en comparaison à la solution clé en main proposée par Cassandra.</p><p>Face à cette opposition, il est intéressant de se souvenir que Facebook, le créateur de Cassandra, est également <a
href="http://developers.facebook.com/opensource.php" title="le plus gros utilisateur" >le plus gros utilisateur</a> de Memcached au monde. Il y est utilisé conjointement à MySQL montrant ainsi que l&#8217;un des contributeurs majeurs du mouvement NoSQL a su tirer le meilleur de ces deux mondes.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="KawaCampParismardiHTMLAndroidN"></a>Kawa Camp Paris mardi : HTML 5, Android, NoSQL</h4><p>Le <a
href="http://barcamp.org/KawaCampParis1" title="Kawa Camp Paris 1" >Kawa Camp Paris 1</a> se déroulera demain mardi 23 Mars à partir de 19h00 au <a
href="http://goo.gl/HiZn	" title="Quigleys Point" >Quigley&#8217;s Point</a>. Les thèmes qui suscitent le plus d&#8217;intérêts sont cette fois HTML 5, Android et NoSQL. Déjà 32 participants confirmés et 11 autres qui tenteront de venir.</p><p>Les Barcamp Java sont un très bon moment pour discuter de technique comme de carrière et d&#8217;entretenir son réseau.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/03/22/revue-de-presse-xebia-152/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/03/08/revue-de-presse-xebia-150/</link> <comments>http://blog.xebia.fr/2010/03/08/revue-de-presse-xebia-150/#comments</comments> <pubDate>Mon, 08 Mar 2010 18:26:24 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[JSR-310]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SproutCore]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4179</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Agilité Convaincre votre MOA de passer aux méthodes Agiles RIA Sortie de SproutCore 1.0 Le coin de la technique Commenter son code: jusqu&#8217;où aller ? Où l&#8217;on reparle de la JSR-310 Agilité Convaincre votre MOA de passer aux méthodes Agiles Dans un récent article, [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/03/08/revue-de-presse-xebia-150/#ConvaincrevotreMOAdepasserauxm">Convaincre votre MOA de passer aux méthodes Agiles</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/03/08/revue-de-presse-xebia-150/#SortiedeSproutCore">Sortie de SproutCore 1.0</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/03/08/revue-de-presse-xebia-150/#Commentersoncodejusquoaller">Commenter son code: jusqu&#8217;où aller ?</a></li><li><a
href="http://blog.xebia.fr/2010/03/08/revue-de-presse-xebia-150/#OlonreparledelaJSR">Où l&#8217;on reparle de la JSR-310</a></li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="ConvaincrevotreMOAdepasserauxm"></a>Convaincre votre MOA de passer aux méthodes Agiles</h4><p>Dans un récent <a
title="article" href="http://www.agilex.fr/2010/03/agilite-pour-moa/">article</a>, Alexandre Boutin explique comment convaincre une MOA de s&#8217;intéresser à l&#8217;agilité.<br
/> La démarche d&#8217;Alexandre a été de demander à la MOA de répondre à un questionnaire reprenant les divers problèmes habituellement rencontrés :</p><ul><li>difficultés à définir le besoin fonctionnel et à maîtriser son évolution au cours du temps,</li><li>délais importants entre chaque version et effet tunnel pendant les périodes de développements,</li><li>les versions se terminent généralement avec du retard,</li><li>communication avec la MOE,</li><li>la productivité n&#8217;est pas au rendez-vous.</li></ul><p>Ce questionnaire ayant permis à la MOA de mettre le doigt sur des problèmes récurrents, Alexandre présente les avantages que vont apporter l&#8217;utilisation des méthodes agiles dans leur travail :</p><ul><li>meilleure communication et visibilité sur le travail de la MOE,</li><li>livraisons fréquentes à dates fixes d&#8217;un produit démontrable et fonctionnel,</li><li>amélioration de la productivité.</li></ul><p>Alexandre termine par préconiser un accompagnement pour se former et passer aux méthodes agiles le plus rapidement et le plus efficacement possible.</p><p>L&#8217;adoption d&#8217;une méthode de travail (agile ou non) par l&#8217;ensemble des acteurs d&#8217;un projet est fondamentale. Il est en effet compliqué pour une MOA de travailler avec des méthodes différentes de celles employées par la MOE. Cela génèrera immanquablement des problèmes de communication entre les deux parties.<br
/> Convaincre une MOA de changer ses habitudes de travail n&#8217;est pas chose aisée, et le questionnaire proposé par Alexandre Boutin (potentiellement agrémenté en fonction des spécificités du contexte du projet) peut-être un bon moyen de déclencher le besoin de changement.<br
/> L&#8217;adoption d&#8217;une méthode agile n&#8217;est pas sans contrainte, mais un bon coach agile saura mettre en avant les bénéfices de l&#8217;agilité pour combler les lacunes de l&#8217;ancienne méthode.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="SortiedeSproutCore"></a>Sortie de SproutCore 1.0</h4><p>Les frameworks HTML5 continuent de se mettre à jour. Et après <a
title="52framework" href="http://blog.xebia.fr/2010/02/22/revue-de-presse-xebia-148/#HTMLCSSframework">52framework</a>, c&#8217;est au tour de <a
title="SproutCore" href="http://www.sproutcore.com/home/">SproutCore</a> de sortir en release majeure <em>(version 1.0, information relayée <a
title="ici" href="http://itshala.com/2010/03/01/sproutcore-javascript-html5-application-framework/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sproutcore-javascript-html5-application-framework">ici</a>)</em>.</p><p><a
title="InfoQ" href="http://www.infoq.com/">InfoQ</a> a récemment réalisé une <a
title="interview de Charles Jolley" href="http://www.infoq.com/news/2009/09/sproutcore-1-0">interview de Charles Jolley</a> <em>(CEO de Sproutit)</em> concernant SproutCore.<br
/> On y apprend ainsi que le framework gère certaines fonctionnalités d&#8217;HTML5 (comme l&#8217;<em>offline storage</em> ou le nouveau tag <code>video</code>) et qu&#8217;il est possible d&#8217;intégrer du code existant jQuery, ExtJS, YUI ou bien encore Prototype.<br
/> Il explique aussi les raisons principales de la migration, côté vue, de Ruby à JavaScript. La première est l&#8217;arrivée prochaine d&#8217;un Drag &amp; Drop UI Designer <em>(facilitée par les APIs JavaScript)</em> et la seconde pour des raisons de performances <em>(jusqu&#8217;à 10 fois plus rapide que la version précédente !)</em>.</p><p>Rendez-vous sur cette <a
title="page" href="http://demo.sproutcore.com/">page</a> pour une petite démonstration de SproutCore et sur <a
title="celleci" href=" http://wiki.sproutcore.com/Abbot-Setting+Up">celle-ci</a> pour le téléchargement.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Commentersoncodejusquoaller"></a>Commenter son code: jusqu&#8217;où aller ?</h4><p>Rebondissant sur une discussion qu&#8217;ont eu <a
title="des programmeurs .Net de  Seattle" href="http://groups.google.com/group/altnetseattle">des programmeurs .Net de  Seattle</a>, InfoQ publie <a
title="un article sur l'intérêt de commenter (ou non) son code" href="http://www.infoq.com/news/2010/03/To-Comment-or-Not-to-Comment">un article sur l&#8217;intérêt de commenter (ou non) son code</a>. Le sujet, tel un éternel serpent de mer, donne toujours  matière à discussion. A tel point que les interventions des lecteurs, à la suite de l&#8217;article, sont des plus intéressantes !</p><p>Le consensus semble être que les commentaires sont à éviter au  maximum car le code se doit de s&#8217;auto-documenter: sans commentaires, et  seulement avec le nom des méthodes et des variables, nous devons être  capable de le comprendre. Ainsi, pour Thiébaut Champenier, il y  a 2 types de commentaires:</p><ul><li>Les commentaires documentant l&#8217;API (notés /** */ )</li><li>Les commentaires dans le code (notés /* */ ou // ) qui doivent  un maximum décrire <strong>pourquoi</strong> le code existe plutôt que <strong>comment</strong> le code agit.</li></ul><p>Alex Suvorov ajoute qu&#8217;une suite de plusieurs  opérations successives nécessitant un commentaire devrait plutôt être  extraite en une fonction nommée de manière explicite. Tim  Linquist, lui va même plus loin en souhaitant disposer d&#8217;une  fonctionnalité lui permettant de sortir les commentaires du code une  fois la documentation (javadoc) générée. Pour contrebalancer ces avis,  la palme du meilleur commentaire revient à Pete Haidinyak. Celui-ci  se permet une suggestion amusante destinée à toutes les personnes <em>&laquo;&nbsp;qui  ne commentent pas leur code ou qui pensent qu&#8217;un commentaire toutes les  10000 lignes est suffisant&nbsp;&raquo;</em>. Il leur demande de rajouter un  en-tête dans leur code spécifiant: <em>&laquo;&nbsp;A toute personne chargée de maintenir ce code:  si vous ne comprenez pas mon code ou êtes troublé par mon style,  n&#8217;hésitez pas à m&#8217;appeler à toute heure, nuit et jour, au numéro  suivant: { numéro_de_téléphone_du_développeur }. Je vous expliquerai ce que j&#8217;avais en tête  lorsque j&#8217;ai écrit ce code&nbsp;&raquo;</em>. L&#8217;idée est bonne,  avec un tel en-tête, les développeurs risqueraient de se soucier un peu  plus de la façon dont les autres peuvent comprendre leur code !</p><h4><a
name="OlonreparledelaJSR"></a>Où l&#8217;on reparle de la JSR-310</h4><p>La <a
title="JSR-310 (Date and Time API)" href="http://www.jcp.org/en/jsr/detail?id=310">JSR-310 (Date and Time API)</a> était initialement prévue pour le JDK 7 mais il y a un an, <a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#EnfinuneroadmapdtaillepourleJD">la <em>roadmap</em> de Sun l&#8217;en excluait</a>. Cette spécification était pourtant attendue par tous ceux qui étaient lassés par les défauts de <code>java.util.Date</code> et qui voyaient en <a
title="Jodatime" href="http://joda-time.sourceforge.net/">Jodatime</a> (dont la JSR-310 est largement inspirée) une échappatoire tentante. L&#8217;API proposée par cette JSR est en effet beaucoup plus riche et permet de représenter tous les concepts d&#8217;instants et de durées.</p><p>Lors de <a
title="l'annonce du report du JDK 7" href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#JDKJEEetMavenlesannoncesdeDevo">l&#8217;annonce du report du JDK 7</a> en novembre dernier, Mark Reinhold avait laissé la porte ouverte aux fonctionnalités qui avaient été abandonnées faute de temps ; la JSR-310 en faisait partie. Courant février, questionné sur cette spécification par un spectateur d&#8217;un <em>webcast</em>, <a
title="il disait regretter" href="http://java.dzone.com/articles/mark-reinhold-talks-about-jdk">il disait regretter</a> qu&#8217;elle n&#8217;ait pu être finalisée dans les temps. Dans le même temps, <a
title="Stephen Colebourne" href="http://www.jroller.com/scolebourne/">Stephen Colebourne</a>, <em>spec lead</em> de la JSR-310, expliquait sur son blog qu&#8217;il disposait désormais de temps libre pour travailler sereinement sur cette spécification. Quelques semaines plus tard une <a
title="&lt;i&gt;early draft review&lt;/i&gt;" href="http://wiki.java.net/bin/view/Projects/DateTimeEDR1"><em>early draft review</em></a> voyait le jour. Enfin, il y a quelques jours, Stephen Colebourne <a
title="rpondait  un commentaire" href="http://www.theserverside.com/news/thread.tss?thread_id=59624#332934">répondait à un commentaire</a> en disant que l&#8217;inclusion de la JSR-310 dans le JDK 7 dépendrait de sa finalisation et de la volonté de Sun/Oracle.</p><p>La saga de la JSR-310 semble donc renaître de ses cendres et la possibilité de son intégration au prochain JDK est bien réelle. L&#8217;affaire est donc à suivre&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/03/08/revue-de-presse-xebia-150/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Création de JDuchess en France</title><link>http://blog.xebia.fr/2010/03/03/creation-de-jduchess-en-france/</link> <comments>http://blog.xebia.fr/2010/03/03/creation-de-jduchess-en-france/#comments</comments> <pubDate>Wed, 03 Mar 2010 13:34:31 +0000</pubDate> <dc:creator>Ellène Dijoux</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JDuchess]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[JUG]]></category> <category><![CDATA[Paris JUG]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4171</guid> <description><![CDATA[Un nouveau groupe vient de se créer sur Paris. Il est destiné à mettre en relation les femmes du monde Java. A l&#8217;origine, JDuchess est un JUG féminin provenant des Pays Bas. Après avoir rencontré Clara Ko (JUG Leader de JDuchess), elles nous a proposé de représenter son JUG en France. Ce que nous souhaiterions [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2010/03/duchess-france.jpg" alt="duchess-france" title="duchess-france" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> Un nouveau groupe vient de se créer sur Paris. Il est destiné à mettre en relation les femmes du monde Java.</p><p>A l&#8217;origine, JDuchess est un JUG féminin provenant des Pays Bas. Après avoir rencontré Clara Ko (JUG Leader de JDuchess), elles nous a proposé de représenter son JUG en France. Ce que nous souhaiterions pour JDuchess c&#8217;est de monter une communauté où les femmes faisant du Java peuvent se rencontrer et partager leurs expériences, leurs points de vue. Nous voudrions pouvoir monter un réseau social pour rendre les femmes plus visibles dans ce domaine, les inciter à participer à des événements comme le Paris JUG, et d&#8217;autres événements techniques ou conférences. Et pourquoi pas y faire une présentation.</p><p>Vous pouvez rester en contact avec les Duchess via <a
href="http://twitter.com/duchessfr" title="Twitter" >Twitter</a> , notre <a
href="http://groups.google.fr/group/duchessfr" title="Google Group" >Google Group</a> et <a
href="http://www.linkedin.com/groups?gid=2750811" title="LinkedIn" >LinkedIn</a>.</p><p>Pour celles qui assisteront à la <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20100309">soirée Emmanuel Bernard du Paris JUG le 9 Mars</a> vous pourrez retrouver les Duchess pour l&#8217;Avant JUG qui se passera au Vavin Café (18, Rue Vavin, 75006 Paris) à partir de 18h30.</p><p>Lorsque vous serez inscrites au JUG, contactez ellene(dot)dijoux(at)jduchess(dot)org qui vous accueillera Mardi prochain.</p><p>J&#8217;y serai et je serai heureuse de vous y rencontrer.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/03/03/creation-de-jduchess-en-france/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/03/01/revue-de-presse-xebia-149/</link> <comments>http://blog.xebia.fr/2010/03/01/revue-de-presse-xebia-149/#comments</comments> <pubDate>Mon, 01 Mar 2010 18:25:17 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[closures]]></category> <category><![CDATA[Cloud / NoSQL]]></category> <category><![CDATA[Hotspot]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JDK]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Jigsaw]]></category> <category><![CDATA[JRockIt]]></category> <category><![CDATA[JVM]]></category> <category><![CDATA[Maven]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[OpenJDK]]></category> <category><![CDATA[Sonatype]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4116</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Sonatype ouvre son dépôt maven pour java.net La fusion JRockIt / Hotspot pas pour demain Agilité Utilisez-vous des métriques intelligentes sur vos projets ? Le coin de la technique Jigsaw, les modules du pauvre ? Comment les closures seront implémentées [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/03/01/revue-de-presse-xebia-149/#Sonatypeouvresondptmavenpourja">Sonatype ouvre son dépôt maven pour java.net</a></li><li><a
href="http://blog.xebia.fr/2010/03/01/revue-de-presse-xebia-149/#LafusionJRockItHotspotpaspourd">La fusion JRockIt / Hotspot pas pour demain</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/03/01/revue-de-presse-xebia-149/#Utilisezvousdesmtriquesintelli">Utilisez-vous des métriques intelligentes sur vos projets ?</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/03/01/revue-de-presse-xebia-149/#Jigsawlesmodulesdupauvre">Jigsaw, les modules du pauvre ?</a></li><li><a
href="http://blog.xebia.fr/2010/03/01/revue-de-presse-xebia-149/#Commentlesclosuresserontimplme">Comment les <em>closures</em> seront implémentées dans OpenJDK 7 ?</a></li><li><a
href="http://blog.xebia.fr/2010/03/01/revue-de-presse-xebia-149/#LactualitdesbasesdedonnesNoSQL">L&#8217;actualité des bases de données NoSQL toujours aussi riche</a></li><li><a
href="http://blog.xebia.fr/2010/03/01/revue-de-presse-xebia-149/#Astucedelasemainercuprezlalist">Astuce de la semaine, récupérez la liste complète des options de votre JVM</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Sonatypeouvresondptmavenpourja"></a>Sonatype ouvre son dépôt maven pour java.net</h4><p>L&#8217;idée est venue d&#8217;une quantité toujours grandissante de plaintes sur les dépôts Maven fournis par java.net. A l&#8217;heure de la fusion annoncée entre Kenai et java.net, Kenai n&#8217;a aucune solution pour gérer les dépôts et java.net fait mauvaise presse sur ce point. Il n&#8217;aura pas fallu longtemps à Sonatype pour saisir l&#8217;opportunité de mettre en avant sa solution Nexus. L&#8217;éditeur propose donc à tous les projets java.net de migrer vers leur instance Nexus OSS, allant même jusqu&#8217;à organiser le 5 mars une grande journée migration, avec la mise à disposition pour tous des services de conseil et d&#8217;ingénierie interne. Outre la performance et la stabilité du dépôt Maven maintenu par Sonatype, Nexus génère des fichiers d&#8217;index utilisés par nos IDE pour rechercher les dépendances de nos POM.</p><ul><li><a
title="La nouvelle sur DZone" href="http://java.dzone.com/news/sonatype-free-maven-repo">La nouvelle sur DZone</a></li><li><a
title="Lannonce sur le blog Sonatype" href="http://www.sonatype.com/people/2010/02/java-net-maven-repository-rescue-mission-on-march-5th/">L&#8217;annonce sur le blog Sonatype</a></li></ul><h4><a
name="LafusionJRockItHotspotpaspourd"></a>La fusion JRockIt / Hotspot pas pour demain</h4><p><a
title="Nous en parlions il y a quelques semaines" href="http://blog.xebia.fr/2010/02/01/revue-de-presse-xebia-145/">Nous en parlions il y a quelques semaines</a>, Oracle envisage de ne proposer à l&#8217;avenir qu&#8217;une seule JVM, qui tirerait le meilleur des deux que la firme s&#8217;est offert (JRockit via BEA, et Hotpsot via Sun). Dans un récent <a
title="webcast" href="https://channelsun.sun.com/media/show/15028">webcast</a> (via InfoQ), Mark Reinhold s&#8217;est exprimé sur le sujet. Cette fusion n&#8217;est pas pour tout de suite : trop de clients utilisent les fonctionnalités spécifiques à l&#8217;une ou l&#8217;autre des JVMs en production, et il serait risqué de les forcer à migrer vers une version fusionnée bancale. Ce dernier se dit jaloux de certaines fonctionnalités de JRockIt et donc particulièrement excité d&#8217;avoir l&#8217;occasion de l&#8217;étudier en profondeur. Cependant, ce qui transparait dans son discours (et peut être via nos diverses expérience), c&#8217;est que la JVM de Sun est en avance sur celle de BEA. La prochaine version fusionnée devrait donc tendre plus vers Hotspot que vers JRockit. En résumé rapide, cette future VM Oracle devrait avoir les fonctionnalités <em>runtime</em> de Hotspot, et le <em>garbage collector</em> et la robustesse de JRockit. Finalement, à part l&#8217;ébauche d&#8217;une <em>timeline</em>, nous ne sommes pas beaucoup plus avancés.<br
/> Coté nouveautés du JDK 7, Mark Reinhold se dit aussi particulièrement excité par l&#8217;intégration du projet Coin (au contraire de la grande majorité des consultants Xebia, qui trouvent que la plupart de ces évolutions syntaxiques confinent au gadget).<br
/> Il reparle aussi des <em>closures</em>, principalement sous l&#8217;angle des raisons de la polémique, mais personne ne semble réellement savoir comment elles seront implémentées dans le JDK 7 (voir ci-dessous pour l&#8217;avancement du projet Lambda).<br
/> Dernière annonce, pour ceux qui comme lui sont impatients de voir une JVM enfin modulaire (aka Jigsaw, prévu dans le JDK 7, voir ci-dessous), ils devraient en avoir un aperçu mi-mars, avec la <em>release</em> 88 de l&#8217;OpenJDK.</p><p>Certains noteront avec un certain amusement (ou une certaine nostalgie) quelques ratés : <em>&laquo;&nbsp;We, at Sun&#8230;&nbsp;&raquo;</em></p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Utilisezvousdesmtriquesintelli"></a>Utilisez-vous des métriques intelligentes sur vos projets ?</h4><p><a
title="Mike Griffiths" href="http://leadinganswers.typepad.com/leading_answers/2010/02/smart-metrics-slides.html">Mike Griffiths</a>, agiliste expérimenté et bloggeur actif, nous présente sa réflexion sur l&#8217;utilisation des métriques dans un projet.<br
/> Au préalable,  Mike nous prévient que :</p><ul><li>Toutes les observations ne sont pas utiles et d&#8217;une grande aide pour analyser et comprendre un phénomène. Elles peuvent même amener à de mauvaises conclusions.</li><li>Certaines mesures très utiles ne sont pas facilement observables.</li></ul><p>Une autre caractéristique à ne pas négliger est <strong>l&#8217;effet Hawthorne</strong> :  L&#8217;observateur influence la mesure. On retrouve d&#8217;ailleurs ce phénomène en physique quantique. Mike nous explique alors que le fait d&#8217;observer et donc d&#8217;influencer la mesure,  à un effet <strong>positif</strong>.</p><p>Pour lui, une métrique « intelligente » doit avoir les caractéristiques suivantes :</p><ul><li>Simple et auto-générée.</li><li>Influence de manière significative ce que l&#8217;on cherche à observer.</li><li>Permet de prendre des décisions et décrire des tendances pour le futur.</li></ul><p>Mike nous conseille de donner plus d&#8217;attention aux métriques  permettant d&#8217;observer des tendances futures et d&#8217;anticiper.</p><p>On peut ainsi opposer aux vieilles métriques :  nombres de lignes codées,  points de fonctions réalisés ou nombres d&#8217;heures travaillées ;  des métriques plus « intelligentes » : confiance des sponsors, satisfaction client, nombre de fonctionnalités réalisées,  ou encore temps passé à la correction de bugs.</p><p>Dans la dernière partie de l&#8217;article sont présentés un certain nombre de métriques plus ou moins connues des agilistes, comme : le <em>taskboard</em> de <em>Scrum</em> ou <em>Kanban</em>. L&#8217;utilisation de métriques intelligentes est indispensable pour mener à bien un projet. Elles permettent d&#8217;observer des tendances, d&#8217;identifier et d&#8217;anticiper des problèmes; et ainsi, de prendre les bonnes décisions.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Jigsawlesmodulesdupauvre"></a>Jigsaw, les modules du pauvre ?</h4><p><a
title="Adam Bien" href="http://www.adam-bien.com/inhalte/about/index.htm">Adam Bien</a> est l&#8217;un des <a
title="Java champions" href="https://java-champions.dev.java.net/">Java champions</a> les plus visibles et les plus lus d&#8217;internet. Il a publié cette semaine un petit article au titre accrocheur : « <a
title="Jigsaw  JDK 17 sera une solution qui permettra  de rpondre  80 des besoins de modularit" href="http://www.adam-bien.com/roller/abien/entry/jigsaw_jdk_1_7_will">Jigsaw / JDK 1.7 sera une solution qui permettra de répondre à 80% des besoins de modularité</a> ». Vous avez probablement suivi les différents épisodes et rebondissements de la modularité dans le JDK 7. C&#8217;est peut-être l&#8217;occasion de faire le point sur ce que propose Jigsaw.</p><p>Le projet <a
title="Jigsaw" href="http://openjdk.java.net/projects/jigsaw/">Jigsaw</a> proposera une implémentation permettant la mise en place d&#8217;un système de modules bas niveau pour vos projets. Il sera également utilisé en interne pour découper le JDK Oracle/Sun lui-même.</p><ul><li>Jigsaw vous permettra  de choisir <strong>tout ou partie</strong> du JDK tout en restant 100% rétro-compatible, d&#8217;améliorer les temps de démarrage de la JVM et son utilisation mémoire.</li><li>Jigsaw  pourra être utilisé <strong>directement</strong> sur vos projets si vous disposez d&#8217;une JVM reposant sur ce système. Jigsaw sera chargé avant <code>rt.jar</code> et sera donc disponible à quiconque désirant l&#8217;utiliser. Ce projet étant open source, il sera également possible de réutiliser celui-ci dans d&#8217;autres contextes.</li><li>Jigsaw vous permettra de rendre vos applications modulaires <strong>progressivement</strong>. Nul besoin de migrer vos applications dans leur ensemble pour tirer parti des bénéfices de la modularité. Un même <em>package</em> peut être éclaté dans plusieurs modules.</li><li>Contrairement à OSGi, Jigsaw ne vous permet pas le rechargement de modules à chaud. Vos modules sont chargés <strong>statiquement</strong> au démarrage de vos applications.</li><li>Tous vos modules sont chargés dans <strong>un même classloader</strong>, cela permet de simplifier grandement son utilisation. Du même coup, il vous sera probablement possible de &#8216;tricher&#8217; en chargeant, au runtime,  des classes d&#8217;un module sans que vous en ayez réellement le droit.</li></ul><p>Si vous confondiez modularité du JDK avec OSGi, cette liste vous a certainement ouvert les yeux :  Jigsaw vous propose une solution beaucoup moins fournie qu&#8217;OSGi.</p><p>Dans les faits, ce projet a été créé, avant tout, pour casser  notre bon vieux JDK monolithique. Bon nombre de polémiques ont été faites sur ce choix. Pourquoi  se contenter d&#8217;aborder 80% des problématiques de la modularisation avec une nouvelle solution alors qu&#8217;OSGi en aborderait 90% ? La simplicité et la souplesse d&#8217;utilisation ont été préférées à une solution décrite comme lourde (nécessitant beaucoup de glue), vieillissante (datant de 1998) et difficile à maîtriser. Ce choix a été sans conteste difficile à effectuer, il s&#8217;est ailleurs attiré les foudres des défenseurs d&#8217;OSGi, mais reste complètement défendable.</p><h4><a
name="Commentlesclosuresserontimplme"></a>Comment les <em>closures</em> seront implémentées dans OpenJDK 7 ?</h4><p>Fin 2009, le projet Lambda, dont le but est d&#8217;apporter les <em>closures</em> à la prochaine version de Java, <a
title="apparaissait au sein d'OpenJDK" href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#LeprojetLambdaapparatauseindOp">apparaissait au sein d&#8217;OpenJDK</a>. Le lancement du projet faisait suite <a
title="aux rebondissements" href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#JDKJEEetMavenlesannoncesdeDevo">aux rebondissements</a> dans l&#8217;actualité du JDK 7 lors de la conférence Devoxx un mois auparavant. Une <a
title="documentation" href="http://cr.openjdk.java.net/~mr/lambda/straw-man/">documentation</a> montrant la syntaxe des <em>closures</em> avait accompagné la création du projet, plus tard, un <em>draft</em> d&#8217;une <a
title="spcification plus formelle" href="http://mail.openjdk.java.net/pipermail/lambda-dev/attachments/20100212/af8d2cc5/attachment-0001.txt">spécification plus formelle</a> est apparue, mais <em>quid</em> de l&#8217;implémentation ?<br
/> Rémi Forax, contributeur au projet Lambda, <a
title="a mis à disposition" href="http://weblogs.java.net/blog/forax/archive/2010/02/22/fosdem-presentations">a mis à disposition</a> la présentation qu&#8217;il a faite au FOSDEM&#8217;10, dans laquelle il résume <a
title="les discussions" href="http://mail.openjdk.java.net/pipermail/lambda-dev/2009-December/thread.html">les discussions</a> ayant eu lieu sur la <em>mailing list</em> du projet concernant les possibilités d&#8217;implémentation :</p><ul><li>Convertir les <em>closures</em> en classes anonymes. Cette solution présente l&#8217;inconvénient de produire beaucoup de classes et pose problème pour certaines constructions liées au <em>closures</em>.</li><li>Convertir les <em>closures</em> en invocations dynamiques telles que le permettra la <a
title="JSR-292 (Supporting Dynamically Typed Languages on the Java Platform)" href="http://www.jcp.org/en/jsr/detail?id=292">JSR-292 (Supporting Dynamically Typed Languages on the Java Platform)</a>. Cette solution ne produit pas de classes supplémentaires et bénéficie de bonnes performances puisque l&#8217;invocation dynamique présentera un temps d&#8217;exécution similaire aux invocations de méthode classiques.</li></ul><p>Le reste de ses <em>slides</em> présente certaines des problématiques d&#8217;implémentations des <em>closures</em> liées à l&#8217;accès aux variables locales et aux champs de la classe hôte.</p><h4><a
name="LactualitdesbasesdedonnesNoSQL"></a>L&#8217;actualité des bases de données NoSQL toujours aussi riche</h4><p>Depuis plusieurs mois maintenant le mouvement NoSQL <a
title="s'est installé dans l'actualité" href="http://blog.xebia.fr/2009/11/09/revue-de-presse-xebia-133/#LemouvementNoSQLdiviseetintrig">s&#8217;est installé dans l&#8217;actualité</a>. A Paris, le <a
title="NoSQL User Group" href="https://sites.google.com/a/octo.com/nosql/home">NoSQL User Group</a> a attiré l&#8217;attention en réunissant une cinquantaine de personnes à chacune de ses 2 sessions jusqu&#8217;à présent.</p><p>D&#8217;un point de vue plus général, l&#8217;actualité des bases de données NoSQL est marquée par l&#8217;intérêt croissant qu&#8217;elles suscitent, et par leur évolution rapide grâce à l&#8217;effort soutenu de leurs développeurs. Ainsi on a pu noter récemment :</p><ul><li><a
title="Neo4j" href="http://neo4j.org/">Neo4j</a>, une base de données orienté graphe, est maintenant <a
title="disponible en version 10 finale" href="http://news.neo4j.org/2010/02/neo4j-10-released.html">disponible en version 1.0 finale</a>. L&#8217;intérêt de la représentation en graphe est la possibilité de modéliser les données relatives aux réseaux sociaux, mais également tout type d&#8217;objets qui seraient liés entre eux de manière arbitraire. De plus, il est possible d&#8217;appliquer à ces données divers algorithmes de graphe classiques tels que la détermination du plus court chemin entre deux objets ou de l&#8217;objet central/majeur dans un nuage d&#8217;élément.</li><li><a
title="Cassandra" href="http://incubator.apache.org/cassandra/">Cassandra</a> vient pour sa part d&#8217;être publié en version 0.5.1, et connait un succès tout particulier puisque Twitter vient d&#8217;annoncer qu&#8217;il l&#8217;utiliserait désormais comme solution de persistance en remplacement de MySQL. Par ailleurs le projet <a
href="http://github.com/tjake/Lucandra">Lucandra</a> a été créé récemment pour permettre d&#8217;utiliser Cassandra comme solution de persistance pour les indexes Lucene. Donné à la Fondation Apache par Facebook, Cassandra est pour rappel un hybride entre BigTable de Google et Dynamo d&#8217;Amazon.</li><li><a
title="HBase" href="http://hadoop.apache.org/hbase/">HBase</a> profite d&#8217;une communauté très active et d&#8217;un intérêt important, renforcé par sa position de sous-projet du <a
title="très populaire Hadoop" href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#YahoodistribueHadoop">très populaire Hadoop</a>. Sematext vient de publier un <a
title="&lt;i&gt;digest&lt;/i&gt; de l'actualité récente" href="http://blog.sematext.com/2010/02/28/hbase-digest-february-2010/"><em>digest</em> de l&#8217;actualité récente</a> de ce projet. Celle-ci est principalement marquée par le développement d&#8217;une <a
title="réplication &lt;i&gt;multi datacenter&lt;/i&gt;" href="https://issues.apache.org/jira/browse/HBASE-1295">réplication <em>multi datacenter</em></a>, par l&#8217;arrivée d&#8217;un <a
title="plugin DataNucleus pour HBase" href="http://www.datanucleus.org/plugins/store.hbase.html">plugin DataNucleus pour HBase</a> et par la disponibilité prochaine d&#8217;une solution de <a
title="benchmark pour les cloud storages" href="http://www.brianfrankcooper.net/pubs/ycsb.pdf"><em>benchmark</em> pour les <em>cloud storages</em></a> développée par Yahoo!.</li></ul><p>Enfin, deux conférences entièrement dédiées au NoSQL sont à venir : <a
title="NoSQL Live" href="http://nosqlboston.eventbrite.com/">NoSQL Live</a> le 11 mars à Boston et, plus proche de nous, <a
title="NoSQL Europe" href="http://nosqleu.com/">NoSQL Europe</a> du 20 au 22 avril à Londres.</p><h4><a
name="Astucedelasemainercuprezlalist"></a>Astuce de la semaine, récupérez la liste complète des options de votre JVM</h4><p>Cette astuce est complètement inutile, et donc également complètement indispensable. <a
title="Cet article" href="http://representz.blogspot.com/2010/02/get-complete-list-of-all-possible-jvm.html">Cet article</a> nous propose une petite commande permettant de récupérer la liste complète des options de votre JVM Hotspot à partir de sa library native Linux, la voici :</p><pre class="brush: java; title: ; notranslate">
prompt$  strings $JAVA_HOME/jre/lib/amd64/server/libjvm.so | grep -B646 assert_null$ | grep -v '{' | grep -v '&amp;amp;' | grep -v '/' | grep -v '%' | grep -v assert_null
</pre>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/03/01/revue-de-presse-xebia-149/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Catalogue Xebia Training</title><link>http://blog.xebia.fr/2010/02/24/catalogue-xebia-training/</link> <comments>http://blog.xebia.fr/2010/02/24/catalogue-xebia-training/#comments</comments> <pubDate>Wed, 24 Feb 2010 12:32:34 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Exploitation]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[eXtrem Programming]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[XP]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4085</guid> <description><![CDATA[Nous sommes heureux de vous proposer le nouveau catalogue de formation Xebia Traning : Le catalogue numérique. Le catalogue PDF. Xebia Training se positionne logiquement dans la continuité de Xebia, tant sur la qualité de son offre de formation technique que méthodologique (méthodes agiles), en proposant des formations haut de gamme animées uniquement par les [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://flipflashpages.uniflip.com/2/26742/50371/pub/"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/02/xebia-training.png" style="margin: 1em 1em 1em 1em; float: right;" /></a><br
/> Nous sommes heureux de vous proposer le nouveau <a
href="http://flipflashpages.uniflip.com/2/26742/50371/pub/">catalogue de formation Xebia Traning</a> :</p><ul><li>Le <a
href="http://flipflashpages.uniflip.com/2/26742/50371/pub/">catalogue numérique</a>.</li><li>Le <a
href="http://training.xebia.fr/wp-content/uploads/catalogue%20des%20formations%202010-xebia-training.pdf">catalogue PDF</a>.</li></ul><p><a
href="http://training.xebia.fr">Xebia Training</a> se positionne logiquement dans la continuité de Xebia, tant sur la qualité de son offre de formation technique que méthodologique (méthodes agiles), en proposant des formations haut de gamme animées uniquement par les référents de leur domaine.</p><p>Avec pour principe premier le refus de tout compromis sur la qualité du formateur et du contenu, <a
href="http://training.xebia.fr">Xebia Training</a> fait systématiquement intervenir des acteurs de références dans leurs domaines respectifs.</p><p>Nos formations, savant équilibre entre théorie et travaux pratiques, sont destinées à un large public soucieux d’acquérir les meilleures pratiques de notre industrie.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/02/24/catalogue-xebia-training/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/02/22/revue-de-presse-xebia-148/</link> <comments>http://blog.xebia.fr/2010/02/22/revue-de-presse-xebia-148/#comments</comments> <pubDate>Mon, 22 Feb 2010 17:32:23 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[CSS3]]></category> <category><![CDATA[G1]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Subversion]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4050</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Subversion devient un projet top-level Apache Agilité Sortie du livre &#171;&#160;SCRUM : Le guide pratique de la méthode agile la plus populaire&#160;&#187; RIA HTML5 + CSS3 = 52framework Le coin de la technique Les nulls, c&#8217;est nul ! G1 pas [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/02/22/revue-de-presse-xebia-148/#Subversiondevientunprojettople">Subversion devient un projet top-level Apache</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/02/22/revue-de-presse-xebia-148/#Sortiedulivrenbspahrefhttpwwwd">Sortie du livre <a
href="http://www.dunod.com/livre-dunod-9782100540181-scrum-le-guide-pratique-de-la-methode-agile-la-plus-populaire.html" title="SCRUM  Le guide pratique de la mthode agile la plus populaire" >&laquo;&nbsp;SCRUM : Le guide pratique de la méthode agile la plus populaire&nbsp;&raquo;</a></a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/02/22/revue-de-presse-xebia-148/#HTMLCSSframework">HTML5 + CSS3 = 52framework</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/02/22/revue-de-presse-xebia-148/#Lesnullscestnul">Les nulls, c&#8217;est nul !</a></li><li><a
href="http://blog.xebia.fr/2010/02/22/revue-de-presse-xebia-148/#Gpaslahauteurdesesprances">G1 pas à la hauteur des espérances ?</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Subversiondevientunprojettople"></a>Subversion devient un projet top-level Apache</h4><p>Après seulement <a
href="http://java.dzone.com/news/subversion-graduates-only-3" title="3 mois d'incubation" >3 mois d&#8217;incubation</a> (mais sur le point de fêter ses 10 ans, <a
href="http://www.collab.net/" title="Collabnet" >Collabnet</a> ayant sorti la première version en 2000), Subversion est <a
href="http://subversion.wandisco.com/component/content/article/1/43.html" title="maintenant" >maintenant</a> projet <em>top-level</em> Apache. Pour ce faire, le projet a du se plier aux règles strictes édictées par la fondation Apache, qui touchent à la fois au code source du logiciel, à la provenance des différents codes, à leur licence, au site internet du projet, au processus de <em>release</em> des nouvelles versions&#8230; C&#8217;est un <a
href="http://www.apache.org/foundation/how-it-works.html" title="gros travail" >gros travail</a> mais il permet ensuite aux projets de bénéficier de toute l&#8217;infrastructure ainsi que de l&#8217;aura de la fondation Apache.<br
/> Subversion s&#8217;assure donc pour la suite une stabilité et une plus grande visibilité, élargit sa communauté et s&#8217;octroit plus de crédibilité vis à vis des entreprises. En effet, être projet top-level Apache est gage de pérennité.<br
/> Le projet en aura besoin, étant fortement concurrencé par les outils de gestion de version distribués comme <a
href="http://git-scm.com/" title="Git" >Git</a> ou <a
href="http://mercurial.selenic.com/" title="Mercurial" >Mercurial</a>. Martin Fowler <a
href="http://martinfowler.com/bliki/VersionControlTools.html" title="notait ainsi rcemment" >notait ainsi récemment</a> plusieurs points négatifs de SVN :</p><ul><li>l&#8217;absence de copie locale du <em>repository</em> d&#8217;où des problèmes de performance et l&#8217;impossibilité de travailler <em>offline</em> sur ce repository.</li><li>le fait que les branches aient une visibilité globale est un frein à l&#8217;innovation: les développeurs sont moins enclins à créer une branche pour expérimenter diverses innovations.</li></ul><p>Néanmoins, SVN reste pour lui le meilleur des outils non distribué, et est largement recommandable. D&#8217;autant que c&#8217;est un outil plus simple à appréhender et son ancienneté fait que <a
href="http://lsimons.wordpress.com/2010/02/19/using-long-lived-stable-branches/" title="les bonnes pratiques" >les bonnes pratiques</a> sont largement répandues. D&#8217;autre part, ajoutons que les développeurs semblent ne pas se reposer sur leurs récents lauriers, et <a
href="http://subversion.wandisco.com/component/content/article/1/44.html" title="annoncent" >annoncent</a> la disponibilité dans la version 1.7 de la fonctionnalité de <em>offline commit</em>. Comme d&#8217;habitude, nous bénéficions encore de la concurrence pour avoir à notre disposition les meilleurs outils. Chouette <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> !</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Sortiedulivrenbspahrefhttpwwwd"></a>Sortie du livre <a
href="http://www.dunod.com/livre-dunod-9782100540181-scrum-le-guide-pratique-de-la-methode-agile-la-plus-populaire.html" title="SCRUM  Le guide pratique de la mthode agile la plus populaire" >&laquo;&nbsp;SCRUM : Le guide pratique de la méthode agile la plus populaire&nbsp;&raquo;</a></h4><p>Claude Aubry, auteur du bien connu blog <a
href="http://www.aubryconseil.com/" title="Scrum Agilit et Rockn roll" >Scrum, Agilité et Rock&#8217;n roll</a> nous délivre dans ce livre un condensé de son expérience sur la mise en place de Scrum. Très pragmatique, ce livre traite point par point les différentes composantes de Scrum en les expliquant et en détaillant pour chacune les pratiques qui fonctionnent et celles à ne pas tenter. Après avoir dévoré les 5 premiers chapitres nous ne pouvons que vous engager à lire cet ouvrage qui fera office de référence pour vous accompagner sur vos projets Scrum.<br
/> C&#8217;est comme d&#8217;avoir un peu de Claude Aubry avec soi sur son projet, mais sans l&#8217;accent <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="HTMLCSSframework"></a>HTML5 + CSS3 = 52framework</h4><p>Même si c&#8217;est en très bonne voie, les navigateurs Web du marché ne sont pas entièrement compatibles HTML5 et CSS3. Néanmoins, plusieurs librairies JavaScript permettent de rendre votre navigateur 100% compatible avec ces 2 technologies et <a
href="http://www.52framework.com/" title="52framework" >52framework</a> en fait partie.</p><p>Au menu, la librairie nous propose d&#8217;utiliser les différentes nouvelles balises HTML5 telles que <code>aside</code>, <code>nav</code>, <code>section</code> ou bien encore <code>article</code>. Les nouveaux <code>input type='email'</code> et <code>input type='url'</code> sont aussi de la partie. La balise <code>script</code> contenant du JavaScript n&#8217;a plus besoin de l&#8217;attribut <code>type='text/javascript'</code>. Côté CSS3, il est possible d&#8217;utiliser les coins arrondis, les <em>text-shadow</em> et les <em>box-shadow</em>.<br
/> La démo se trouve <a
href="http://www.52framework.com/demo/?normalText=normal+text+field&#038;email=ema&#038;url=url.com&#038;required=required" title="ici" >ici</a>, le plus intéressant étant son code source où l&#8217;on retrouve les nouveaux éléments cités ci-dessus.</p><p>Pour le téléchargement, rendez-vous est pris sur le <a
href="http://code.google.com/p/52framework/" title="Google Code" >Google Code</a> du projet section <a
href="http://code.google.com/p/52framework/downloads/list" title="Downloads" >Downloads</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Lesnullscestnul"></a>Les nulls, c&#8217;est nul !</h4><p>C&#8217;est en tout cas ce que beaucoup d&#8217;entre nous ressentent en tombant sur certaines <code>NullPointerExceptions</code>. Et suivent les premières questions : Où sont les tests unitaires ? Quel paramètre n&#8217;a pas été testé ? Mais, ressenti de plus en plus grandissant avec les derniers langages alternatifs pour la JVM, pourquoi laisser passer des valeurs <code>nulls</code> en paramètre ?</p><p>Pour ne prendre qu&#8217;un seul exemple, Scala permet d&#8217;éviter ce genre de désagrément grâce à la classe <a
href="http://www.scala-lang.org/docu/files/api/scala/Option.html" title="Option" >Option</a> <em>(<a
href=" http://www.ilyasterin.com/blog/2010/02/avoid-using-nulls-in-scala-at-any-costs.html" title="Avoid using nulls in Scala" >Avoid using nulls in Scala</a>)</em>. Dans le cas d&#8217;une valeur définie, il suffit d&#8217;utiliser <code>Some(something)</code> qui est l&#8217;option avec valeur. Et pour le <code>null</code>, il faudra se tourner vers <code>None</code> qui est l&#8217;option sans valeur. Le code est ainsi réduit et ne contient plus de test <code>if(obj !=null)</code> (englobé dans l&#8217;option <code>None</code>) :</p><pre class="brush: java; title: ; notranslate">
// possible parameters
var anObject = Some(5)
var nullObject = None
// our code that do not care about nulls
val doubleFunc = (option:Option[Int]) =&gt; print(option.map(_*2))
doubleFunc(anObject)
doubleFunc(nullObject)
// prints
Some(10) // values has been doubled
None // does nothing
</pre><p>Mais pour Java ? Une petite piqure de rappel ne faisant pas de mal, cet <a
href="http://thetechcandy.wordpress.com/2010/01/28/avoid-null/" title="article" >article</a> nous présente une solution possible avec en citation Martin Fowler et le pattern <a
href="http://martinfowler.com/eaaCatalog/specialCase.html" title="Special Case" >Special Case</a>.</p><p>L&#8217;idée est la même que pour l&#8217;option Scala. On commence par définir une classe abstraite ou une interface avec une méthode spécifique qui sera appelée par notre code. Et de là seront créés 2 objets : un objet réel et un objet <code>null</code>. Ce dernier implémentera la méthode demandée mais ne fera rien alors que l&#8217;objet réel exécutera son code métier. Ainsi, plus de test de nullité, notre code lancera directement la méthode sur l&#8217;objet et ne se souciera plus de savoir si l&#8217;objet est <code>null</code> ou non.</p><p>Ce pattern anti <code>NPE</code> est une solution possible mais elle n&#8217;est pas la seule. Si vous avez suivi l&#8217;actualité, vous êtes malheureusement au courant que les operateurs <em>null-safe</em> et <em>elvis</em> ne seront pas implémentés par l&#8217;ambitieux <a
href=" http://blogs.sun.com/darcy/entry/project_coin_final_five" title="Project Coin" >Project Coin</a>. Le sucre syntaxique ne viendra donc pas directement dans nos appels de fonctions mais par les annotations de <a
href="http://www.infoq.com/news/2008/06/jsr-305-update" title="JSR305" >JSR-305</a> dont <code>@NonNull</code>. Bien sûr, cette spécification a pour cible FindBugs, Intellij IDEA, Checkstyle ou bien encore PMD. On aurait préféré une intégration <em>au Project Coin</em> mais c&#8217;est déjà mieux que rien&#8230;</p><h4><a
name="Gpaslahauteurdesesprances"></a>G1 pas à la hauteur des espérances ?</h4><p>G1 (Garbage First) est un nouvel algorithme pour votre Garbage Collector. Il est destiné à remplacer l&#8217;implémentation par défaut lors de l&#8217;arrivée de la prochaine JVM. Celui-ci apporte un certain nombre d&#8217;avancées significatives dont des performances annoncées (quasi) compatibles avec le temps réel. Pour cela, G1 relève le défi de la maitrise des temps de pause des collections <em>stop the world</em> grâce à une gestion innovante de la mémoire (reposant sur beaucoup plus de &#8216;petites&#8217; zones).</p><p>Nous n&#8217;allons pas détailler son fonctionnement ici. Si le sujet  vous intéresse, nous vous encourageons à consulter l&#8217;un de nos articles sur le sujet. Il date un peu, mais son contenu reste tout à fait d&#8217;actualité : <a
href="http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/" title="GC générationnels traditionnels (jdk6) VS GC Garbage First (jdk7)" >GC générationnels traditionnels (jdk6) VS GC Garbage First (jdk7)</a>.</p><p>Si les fonctionnalités de ce nouvel algorithme sont alléchantes, on retrouve <a
href="http://www.jroller.com/broneill/entry/g1_garbage_collector_experiences" title="ici et l " >ici et là </a> quelques retours frileux suite à son usage.  L&#8217;auteur de ce billet annonce des performances moins bonnes qu&#8217;avec le garbage collector par défaut lors de l&#8217;utilisation de LinkedHashMap. Faut-il s&#8217;en inquiéter pour autant ? Non !  Vu la criticité de ce genre de fonctionnalité, il est tout à fait normal que quelques ajustements soient faits lors des premiers retours d&#8217;utilisation terrain. C&#8217;est d&#8217;ailleurs le but recherché suite à l&#8217;intégration à Java 6 update 14 (via les options <code>-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC</code>), même s&#8217;il est vrai qu&#8217;il n&#8217;est plus flagué &#8216;expérimental&#8217; depuis peu sur les derniers build  du jdk 7.</p><p>En revanche, en plus de la mise en doute des performances de G1 relayée sur le internet, nous pensons qu&#8217;un élément bloque effectivement son adoption en production : le monitoring. Celui-ci est aujourd&#8217;hui insuffisant, ni jstat ni VisualGC ne remontent d&#8217;informations comme le montrent les captures d&#8217;écran ci-dessous. <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><strong>jstat et VisualGC ne sont pas encore prêts pour G1</strong><br
/> <code><br
/> $ jstat -gccause 30572 5s<br
/> Warning: Unresolved Symbol: sun.gc.generation.0.space.1.capacity substituted NaN<br
/> Warning: Unresolved Symbol: sun.gc.generation.0.space.1.used substituted NaN<br
/> ...<br
/> Warning: Unresolved Symbol: sun.gc.collector.0.invocations substituted NaN<br
/> Warning: Unresolved Symbol: sun.gc.collector.0.time substituted NaN<br
/> ...<br
/> S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC<br
/> ?      ?      ?      ?  79.96      ?        ?     ?        ?        ? unknown GCCause      No GC<br
/> ?      ?      ?      ?  79.96      ?        ?     ?        ?        ? unknown GCCause      No GC<br
/> </code></p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/02/screenshot-visualgc-g1.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/02/screenshot-visualgc-g1-300x179.png" alt="screenshot-visualgc-g1" title="screenshot-visualgc-g1" width="300" height="179" class="alignnone size-medium wp-image-4053" /></a></div> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/02/22/revue-de-presse-xebia-148/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Performance, les Xebians jouent les démineurs 2</title><link>http://blog.xebia.fr/2010/02/16/performance-les-xebians-jouent-les-demineurs-2/</link> <comments>http://blog.xebia.fr/2010/02/16/performance-les-xebians-jouent-les-demineurs-2/#comments</comments> <pubDate>Tue, 16 Feb 2010 13:51:05 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Exploitation]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[dump]]></category> <category><![CDATA[HTTPConnector]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Mémoire]]></category> <category><![CDATA[Performances]]></category> <category><![CDATA[Threads]]></category> <category><![CDATA[Xssn]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4004</guid> <description><![CDATA[Suite de nos investigations sur l&#8217;application PetClinic dégradée. Après une première passe qui nous a permis de calibrer les logs de manière un peu plus pertinente, il est temps, toujours sans l&#8217;aide du code source, de mettre les mains sous le capot de Tomcat (6.0.20). Et pour cela, rien de mieux que de jeter de [...]]]></description> <content:encoded><![CDATA[<p>Suite de nos investigations sur l&#8217;application PetClinic dégradée.</p><p>Après <a
href="http://blog.xebia.fr/2010/01/27/performance-les-xebians-jouent-les-demineurs/" title="une premire passe" >une première passe</a> qui nous a permis de calibrer les logs de manière un peu plus pertinente, il est temps, toujours sans l&#8217;aide du code source, de mettre les mains sous le capot de Tomcat (6.0.20).</p><p>Et pour cela, rien de mieux que de jeter de nouveau un œil à notre VisualVm.</p><h4><a
name="Tantdethreadspourunseulutilisa"></a>Tant de threads pour un seul utilisateur.</h4><p>Pour (re)commencer, penchons nous sur nos threads, juste après le démarrage du serveur (et donc avant la première connexion d&#8217;un utilisateur)</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/02/threadsOverview.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/02/threadsOverview.png" alt="threadsOverview" title="threadsOverview" width="567" height="272" class="aligncenter size-full wp-image-4009" /></a></div><p>Lorsque l&#8217;on démarre un serveur Tomcat, un certain nombre de threads sont affectés à sa &#8216;tuyauterie&#8217; interne (connecteurs RMI, JMX). Mais de là à avoir 165 threads, il y a certainement un souci quelque part !<br
/> Creusons un peu, et entrons dans le détail de ces threads en utilisant l&#8217;onglet <em>Threads</em>.</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/02/threadsDetails.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/02/threadsDetails.png" alt="threadsDetails" title="threadsDetails" width="700" class="aligncenter size-large wp-image-4013" /></a></div><p>Hormis les threads &#8216;connecteurs&#8217; de Tomcat, on voit apparaître 150 threads catalina-exec. Ces threads sont en charge des traitements des requêtes HTTP, via le HTTP-8080-acceptor. Nous avons donc, &laquo;&nbsp;à froid&nbsp;&raquo; 150 unités d&#8217;œuvre prêtes à traiter nos requêtes. Sachant que pour l&#8217;instant nos tests se limitent à un utilisateur, on sent que nous sommes très légèrement surarmés par rapport à nos besoins.<br
/> Tomcat ne devrait-il pas gérer automatiquement ces problématiques de montée ou descente en charge ?<br
/> Allons faire un petit tour dans la documentation, <a
href="<br /> http://tomcat.apache.org/tomcat-6.0-doc/config/http.html">du côté du connecteur HTTP</a>.</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/02/httpConnector.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/02/httpConnector.png" alt="httpConnector" title="httpConnector" width="700" class="aligncenter size-large wp-image-4015" /></a></div><p>Si nous recherchons le paramètre minSpareThreads dans nos fichiers de configuration, nous le trouvons dans server.xml. Repassons le à une valeur plus réaliste de 10 threads, sachant que Tomcat montera automatiquement en charge si besoin.<br
/> Cela n&#8217;a pas d&#8217;impact visible sur les performances, mais au moins, les ThreadDumps deviennent lisibles (obfusquer les ThreadDumps était le but recherché de ce paramétrage).<br
/> Autre paramètre qui a interpellé les connaisseurs de Tomcat, la classe de l&#8217;Executor. <code>org.apache.catalina.core.extended.PrestartingThreadExecutor</code> n&#8217;est pas une classe courante. D&#8217;habitude, on utilise plutôt le <code>StandardThreadExecutor</code>. Une fois encore, on peut remercier nos buggers en chef : PrestartingThreadExecutor est une classe custom, qui démarre automatiquement tous les threads HTTP. De nouveau, l&#8217;impact sur les performances est négligeable pour un utilisateur, mais mieux vaut laisser Tomcat gérer toutes les problématiques de vie du serveur d&#8217;application. Sans vouloir leur faire offense, nos maîtres de cérémonie n&#8217;ont pas le niveau des équipes Apache rodées à l&#8217;exercice depuis de très nombreuses années <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br
/> Dernier paramètre &laquo;&nbsp;malin&nbsp;&raquo; introduit au niveau de Tomcat, le paramètre -Xss. Celui-ci peut être découvert via l&#8217;overview de VisualVm. -Xmx, -Xms sont des paramètres classiques (nous reviendrons dessus) que grand nombre de développeurs connaissent. Mais -Xss ? Comme d&#8217;habitude, notre meilleure arme est <a
href="http://java.sun.com/javase/6/docs/technotes/tools/windows/java.html" title="la documentation de Sun" >la documentation de Sun</a>.</p><pre class="brush: java; title: ; notranslate">-Xssn
    Set thread stack size.</pre><p>Avons nous réellement besoin d&#8217;une taille de stack de 1024 Ko ? Difficile à dire, surtout a priori. Mais une fois encore, le plus simple est de faire confiance à Tomcat, quitte à devoir intervenir a posteriori. Nous ne sommes plus à un redémarrage près.</p><p>Maintenant que notre application est déployée et paramétrée de manière à peu près correcte, il est temps de rentrer &laquo;&nbsp;dans le dur&nbsp;&raquo; : mettre les mains dans le cambouis et explorer le code source.</p><h4><a
name="Fuitemmoirethreadsdumpaexplose"></a>Fuite mémoire, threads dump, ça explose de tous les côtés.</h4><p>Dès que nous avons eu le code source entre les mains, plusieurs stratégies se sont dégagées :</p><ul><li>la première consiste à conserver un seul utilisateur dans les scripts JMeter et à le pousser à faire plus d&#8217;itérations,</li><li>la seconde consiste à mettre plus d&#8217;utilisateurs JMeter en parallèle.</li></ul><p>Toujours dans le but de rester très didactique, nous allons appliquer la première stratégie. Qui trouve rapidement sa limite :</p><p>Aux environs de la 70ème itération, la <em>heap used</em> tangente la <em>heap max</em>, le Garbage Collector est déclenché plusieurs dizaines de fois par seconde de manière totalement inefficace, et la JVM finit par faire un joli OutOfMemory. Les symptômes classiques de la fuite mémoire.</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/02/memoryLeak.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/02/memoryLeak.png" alt="memoryLeak" title="memoryLeak" width="700" class="aligncenter size-medium wp-image-4017" /></a></div><p>Comment faire pour la trouver ?<br
/> C&#8217;est à la fois simple et complexe : depuis la JVM 6, il est très facile, grâce à VisualVm de réaliser des &laquo;&nbsp;photographies&nbsp;&raquo; exhaustives de la mémoire de la JVM, les célèbres heap dumps. Malheureusement, ce n&#8217;est possible que sur les JVM locales.<br
/> Conformons nous donc à l&#8217;énoncé et n&#8217;installons pas notre Tomcat en local. La solution consiste à utiliser la commande jmap.<br
/> Commençons par générer un histogramme, que nous allons filtrer.<br
/> <code>jmap -histo &lt;pid_jvm&gt; | grep org.spring</code><br
/> Notre premier candidat arrive en 16ème position dans l&#8217;histogramme :<br
/> <code>16:         14000         560000  org.springframework.samples.petclinic.Vet</code><br
/> 14 000 vétérinaires, voilà qui est surprenant&#8230; De là à dire que notre fuite tourne autour de cet objet métier, il n&#8217;y a qu&#8217;un pas. Malheureusement, à part en allant dans le code à la pioche, il va être difficile de colmater la fuite avec aussi peu d&#8217;information. De nouveau, jmap va nous rendre service, cette fois en générant un heap dump.<br
/> <code>jmap -dump:format=b,file=/tmp/dump.hprof &lt;pid_jvm&gt;</code><br
/> Pour exploiter ce dump, nous avons choisi d&#8217;utiliser l&#8217;outil <a
href="http://www.eclipse.org/mat/" title="Eclipse Mat" >Eclipse Mat</a>. Dès l&#8217;ouverture, Mat nous propose de rechercher les <em>leak suspects</em><br
/> Et là, le diagnostic est assez évident.</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/02/leakMat.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/02/leakMat.png" alt="leakMat" title="leakMat" width="700" class="aligncenter size-medium wp-image-4020" /></a></div><p>Un type d&#8217;objet monopolise à lui seul 92 % de la mémoire. Il ne reste plus qu&#8217;à creuser dans le heap dump pour déceler l&#8217;allocation coupable.<br
/> Passons donc à la vue <em>dominator tree</em>. En dépliant progressivement la pile mémoire (en cliquant sur l&#8217;objet qui a la plus grande <em>retained heap</em>), on constate que la mémoire est occupée par de très nombreuses occurences de <code>org.springframework.samples.petclinic.util.CacheFilter$CacheEntry</code></p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/02/memoryLeakMat.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/02/memoryLeakMat.png" alt="memoryLeakMat" title="memoryLeakMat" width="700" class="aligncenter size-medium wp-image-4018" /></a></div><p>Maintenant que nous avons un coupable, il est temps, pour la première fois, d&#8217;ouvrir notre code source sous Eclipse. En faisant une simple recherche de classe sur notre coupable désigné, nous arrivons au code suivant :</p><pre class="brush: java; title: ; notranslate">
HttpSession session = request.getSession();
Map&lt;String, CacheEntry&gt; cache = (Map&lt;String, CacheEntry&gt;) session.getAttribute(&quot;pages.cache&quot;);
if (cache == null){
    cache = new Hashtable&lt;String, CacheEntry&gt;();
    session.setAttribute(&quot;pages.cache&quot;, cache);
}
...
//Return cached content if available
String path = context.getRealPath(&quot;&quot;) + request.getRequestURI() + request.getQueryString();
CacheEntry cacheEntry = cache.get(path);
if (cacheEntry != null) {
    response.setContentType(cacheEntry.t);
} else {
    //Else, fetch it
    cacheEntry = new CacheEntry();
    CacheResponseWrapper wrapper = new CacheResponseWrapper(response);
    chain.doFilter(request, wrapper);
    byte[] buf = cacheEntry.buf;
    InputStream in = wrapper.getContentAsInputStream();
    OutputStream out = cacheEntry.c;
    int length;
    while((length = in.read(buf)) &gt;= 0) {
        out.write(buf, 0, length);
    }
cacheEntry.t = wrapper.getContentType();
cache.put(path, cacheEntry);
}
</pre><p>Chaque page est donc mise en cache dans la session de l&#8217;utilisateur. Le timeout du cache étant fixé à l&#8217;infini, on voit de manière assez évidente que chaque fois que notre JMeter lance une campagne de test, il ouvre une nouvelle Session dans laquelle l&#8217;ensemble des pages vues est gardée en mémoire (avec un taux de réutilisation proche de zéro).<br
/> L&#8217;utilisation des ressources mémoire de notre JVM est ici particulièrement mauvaise.<br
/> Deux solutions sont envisageables :</p><ul><li>basculer le cache dans un scope application. Mais dans ce cas, attention, la taille de celui-ci peut vite exploser et l&#8217;utilisation d&#8217;un filtre qui cache systématiquement tout le contenu de la réponse peut rapidement échapper à tout contrôle.</li><li>supprimer purement et simplement ce cache dont le taux de hit est ridiculement bas. C&#8217;est la solution que nous choisirons ici, car c&#8217;est la plus économique (une ligne à commenter dans le <code>web.xml</code>).</li></ul><p>Cette correction ne devrait toutefois pas affecter notre nombre élevé de <code>Vets</code> trouvés via l&#8217;histogramme&#8230; Nous y reviendrons probablement.</p><p>Ne reste alors plus qu&#8217;à re-construire (via Maven) et relivrer l&#8217;application pour voir le résultat.</p><p>Cette fois, le gain de performance ne se mesure pas directement dans JMeter. Les temps de réponse de l&#8217;application sont sensiblement identiques à ce qu&#8217;ils étaient avant nos interventions.</p><p>En revanche, nous avons largement gagné en performance dans deux domaines :</p><ul><li>le plus immédiat, celui du ressenti utilisateur : plus la peine de rebooter notre serveur tous les 70 scenarii, et ça toutes les équipes d&#8217;exploitation vous le diront (sauf les mauvais élèves qui ont bêtement automatisé leurs redémarrages), c&#8217;est un énorme gain.</li><li>celui plus égoïste, d&#8217;avoir des traces propres et peu nombreuses, donc beaucoup plus exploitables.</li></ul><p>Pour finir, les points attribués :</p><ul><li> Fuite mémoire de CacheFilter en session</li><li> Passage de la barre des 70 scenarii pour 1 utilisateur</li><li> 2 points pour l&#8217;équipe qui a trouvé</li></ul><p>Comme l&#8217;a très bien pressenti l&#8217;un de nos lecteurs (voir les <a
href="http://blog.xebia.fr/2010/01/27/performance-les-xebians-jouent-les-demineurs/#comment-20398" title="commentaires" >commentaires</a> sur l&#8217;article précédent), nous ne sommes pas encore au bout de nos <em>surprises</em></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/02/16/performance-les-xebians-jouent-les-demineurs-2/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Performance, les Xebians jouent les démineurs</title><link>http://blog.xebia.fr/2010/01/27/performance-les-xebians-jouent-les-demineurs/</link> <comments>http://blog.xebia.fr/2010/01/27/performance-les-xebians-jouent-les-demineurs/#comments</comments> <pubDate>Wed, 27 Jan 2010 17:19:40 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[debug]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[log4j]]></category> <category><![CDATA[VisualVM]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3883</guid> <description><![CDATA[Le premier XKE dans nos nouveaux locaux a donné lieu à de bien curieuses scènes : des bisounours ont hué des poubelles sous le regard moqueur de pokemons ! Et, non, les cartons de déménagement ne nous sont pas tombés sur la tête. Ce n&#8217;était là que quelques uns des noms choisis par des équipes [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2010/01/picto.png" alt="" /></p><p>Le premier <a
title="XKE" href="http://blog.xebia.fr/2008/03/03/un-xke-chez-xebia/">XKE</a> <a
title="dans nos nouveaux locaux" href="http://blog.xebia.fr/2010/01/15/2010-xebia-fait-peau-neuve/">dans nos nouveaux locaux</a> a donné lieu à de bien curieuses scènes : des <em>bisounours</em> ont hué des <em>poubelles</em> sous le regard moqueur de <em>pokemons</em> ! Et, non, les cartons de déménagement ne nous sont pas tombés sur la tête. Ce n&#8217;était là que quelques uns des noms choisis par des équipes de 3 à 4 consultants, qui se sont mesurés dans un concours de tuning de performance, sur une application Java EE standard, buggée (<em>volontairement</em>, pour une fois) par les maîtres de cérémonie, <a
title="Guillaume Bodet" href="http://blog.xebia.fr/author/gbodet/">Guillaume Bodet</a> et <a
title="Cyrille Le Clerc" href="http://blog.xebia.fr/author/cleclerc/">Cyrille Le Clerc</a>. Tous les participants se sont vus remettre une VM, contenant un Tomcat, une application (<em>PetClinic</em> de Spring, revue et &laquo;&nbsp;corrigée&nbsp;&raquo;) et des scripts de performance JMeter. Le code source n&#8217;a, dans un premier temps, pas été fourni.</p><p>Pour tous, un seul but : faire diminuer les temps de réponses de l&#8217;application.</p><p>Les règles étaient les suivantes :</p><ul><li>Un bug n&#8217;est considéré comme trouvé que lorsqu&#8217;il a été identifié, qu&#8217;un correctif a été proposé et que la preuve est faite que ce correctif permet d&#8217;améliorer significativement les temps de réponse.</li><li>Il existe trois niveaux de difficulté, allant du bug évident à l&#8217;anomalie la plus fourbe.</li><li>Le choix des outils est libre.</li></ul><p>A vos marques&#8230; Prêts ? Débuggez !</p><h3><a
name="Prambule"></a>Préambule</h3><p>L&#8217;un des buts de ce Xke était d&#8217;être très didactique, dans les méthodes de recherche et dans l&#8217;utilisation des outils. Les bombes placées dans le code permettaient de réaliser une progression linéaire (dans la difficulté comme dans les gains attendus). Cette progression est retranscrite dans cet article et ceux qui vont suivre.</p><p>Cependant, pour différentes raisons que nous aurons l&#8217;occasion d&#8217;expliquer, l&#8217;ordre des analyses, et donc de découvertes des bugs, n&#8217;est pas celui qu&#8217;aurait choisi un champion de la performance, j&#8217;ai nommé Kirk Pepperdine. Nous lui avons soumis notre application, et nous vous exposerons sa méthode d&#8217;analyse et les raisons qui la motivent dans le dernier article de la série.</p><h3><a
name="Premiercontactaveclapplication"></a>Premier contact avec l&#8217;application&#8230;</h3><p>Ouverture du navigateur, entrée de l&#8217;url, et, pas de surprise, l&#8217;application PetClinic s&#8217;ouvre.</p><div><img
src="http://blog.xebia.fr/wp-content/uploads/2010/01/application.png" border="0" alt="" /></div><p>Premier lancement de JMeter, et première constatation : avec un seul utilisateur, l&#8217;application met en moyenne plus de 2 secondes à répondre. Inacceptable pour la plupart des sites web (surtout avec un seul utilisateur actif).</p><div><a
href="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter1.png"><img
class="alignnone size-medium wp-image-3886" title="JMeter1" src="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter1-650.png" alt="JMeter1" /></a></div><h3><a
name="etpremiersrglages"></a>&#8230; et premiers réglages</h3><p>A première vue, la machine ne semble pas à genoux, on peut donc incriminer directement l&#8217;application.<br
/> Nous allons donc chercher à savoir ce qu&#8217;elle fait. Un réflexe classique, qu&#8217;un certain nombre d&#8217;entre nous a eu, est d&#8217;aller ouvrir les logs. Catalina.out est vide, on n&#8217;a pas de répertoire de logs applicatives évident, à priori le coupable classique, la configuration log4j, est à écarter. Et pourtant&#8230; Pour savoir ce que fait réellement notre application, il est possible de réaliser une série de thread dumps. Pour cela, deux possibilités :</p><ul><li>la vieille école, qui va dumper le contenu des threads à l&#8217;aide d&#8217;un kill -3 sur la jvm.</li><li>l&#8217;école moderne, qui va utiliser <a
title="JVisualVm" href="http://blog.xebia.fr/2008/10/22/diagnostic-dune-jvm-a-distance/">JVisualVm</a> (et <a
title="ses plugins" href="https://visualvm.dev.java.net/plugins.html">ses plugins</a>) pour réaliser la même opération à l&#8217;aide d&#8217;une belle interface.</li></ul><div><a
href="http://blog.xebia.fr/wp-content/uploads/2010/01/TDLog4j.png"><img
class="alignnone size-medium wp-image-3890" title="TDLog4j" src="http://blog.xebia.fr/wp-content/uploads/2010/01/TDLog4j-650.png" alt="TDLog4j" /></a></div><p>Et là, demie surprise, notre thread actif est souvent surpris dans la méthode <code>org.apache.log4j.spi.LoggingEvent.getLocationInformation</code>. Nous aurions donc un logger actif. Nos soupçons initiaux se confirment, ne reste plus qu&#8217;à débusquer le coupable.<br
/> Nous n&#8217;avons pas (encore) le code source. Or, cette bombe plombe tellement l&#8217;application qu&#8217;il n&#8217;est pas envisageable que nous ne puissions pas la résoudre de suite. On doit donc avoir un fichier de paramétrage de la log externalisé. Là encore, VisualVm va nous aider. Dans la fenêtre overview, les paramètres de démarrage de la VM sont affichés. Et l&#8217;on voit apparaitre une directive de configuration log4j, <code>-Dlog4j.configuration</code>.</p><div><img
src="http://blog.xebia.fr/wp-content/uploads/2010/01/VMOverview.png" border="0" alt="" /></div><p>Un petit grep dans le répertoire de lancement de Tomcat (<code>$TOMCAT_HOME/bin</code>), et nous voyons apparaître dans le setEnv.sh la ligne <code>-Dlog4j.configuration=file:$CATALINA_HOME/conf/log.xml</code>. Et si nous ouvrons ce fichier, le root Logger est bien en DEBUG. Mais aucune directive spécifique pour logger ailleurs que dans la console. Tout devrait donc aller dans catalina.out. Ca sent la redirection &#8216;sauvage&#8217;. Continuons à parcourir les fichiers de lancement. Un petit tour dans catalina.sh, et surprise, une belle redirection Unix <code>"$CATALINA_BASE"/logs/catalina.out 1&gt; /var/log/catalina/tomcat.log  &amp;</code><br
/> Et en ouvrant ce fichier, on comprend mieux le temps perdu : des milliers de lignes de debug !</p><div><a
href="http://blog.xebia.fr/wp-content/uploads/2010/01/debugLog.png"><img
class="alignnone size-medium wp-image-3895" title="debugLog" src="http://blog.xebia.fr/wp-content/uploads/2010/01/debugLog-650.png" alt="debugLog" /></a></div><p>Celles ci ont d&#8217;ailleurs une particularité sympathique : à chaque ligne de debug, le numero de ligne de la classa Java est indiqué.<br
/> C&#8217;est pratique ! Pourquoi ne met on pas systématiquement en place cette configuration sur nos projets ?<br
/> Un petit tour dans la documentation Log4J nous apprend :</p><div><a
href="http://blog.xebia.fr/wp-content/uploads/2010/01/docLog4J.png"><img
class="alignnone size-medium wp-image-3896" title="docLog4J" src="http://blog.xebia.fr/wp-content/uploads/2010/01/docLog4J-650.png" alt="docLog4J" /></a></div><p>Log4J nous prévient, ces méthodes sont sous performantes. Si l&#8217;on creuse un peu dans le source, on trouve la classe affichant les pattern %M et %L, <code>org.apache.log4j.spi.LocationInfo</code>, qui contient le constructeur suivant :</p><pre class="brush: java; title: ; notranslate">
public LocationInfo(Throwable t, String fqnOfCallingClass) {
if(t == null || fqnOfCallingClass == null)
return;
String s;
// Protect against multiple access to sw.
synchronized(sw) {
t.printStackTrace(pw);
s = sw.toString();
sw.getBuffer().setLength(0);
}
[...]
</pre><p>Autrement dit, pour chaque ligne de log, Log4J génère une stackTrace pour pouvoir récupérer le numéro de la ligne et le nom de la méthode. Pas vraiment performant.<br
/> Modifions donc le pattern et observons le résultat.</p><div><a
href="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter2.png"><img
class="alignnone size-medium wp-image-3887" title="JMeter2" src="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter2-650.png" alt="JMeter2" /></a></div><ul><li> Suppression de %M:%L dans le pattern du Logger</li><li> Temps moyen de 2,3 s à 2,0 s pour 1 utilisateur</li><li> 2 points pour l&#8217;équipe qui a trouvé</li></ul><p>Toujours concernant ce fichier de log, nous voyons apparaître une ligne ne respectant pas le <em>PatternLayout</em> de Log4J, préfixée par <em>Hibernate</em>, qui trace une requête SQL. Gardons cette ligne en mémoire, nous y repenserons quand nous aurons le code source.</p><p>Deuxième amélioration immédiate envisageable, une application, qui plus est en production, ne devrait pas avoir besoin d&#8217;un niveau de log aussi fin. Passons le donc à ERROR.</p><div><a
href="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter3.png"><img
class="alignnone size-medium wp-image-3888" title="JMeter3" src="http://blog.xebia.fr/wp-content/uploads/2010/01/JMeter3-650.png" alt="JMeter3"  /></a></div><ul><li> Logger de DEBUG à ERROR</li><li> Temps moyen de 2,0 s à 1,75 s pour 1 utilisateur</li><li> 1 point pour l&#8217;équipe qui a trouvé</li></ul><p>Nous avons fait un sort au logger. Mais nous n&#8217;en avons pas encore fini avec la configuration out-of-the-box de cette application.</p><h4><a
name="Source"></a>Source</h4><p><a
title="Image libre de droits" href="http://commons.wikimedia.org/wiki/File:Magnifying_glass_and_Stamp_tong.jpg">Image libre de droits</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/01/27/performance-les-xebians-jouent-les-demineurs/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/01/25/revue-de-presse-xebia-144/</link> <comments>http://blog.xebia.fr/2010/01/25/revue-de-presse-xebia-144/#comments</comments> <pubDate>Mon, 25 Jan 2010 19:17:14 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Firebug]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Pair programming]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Tomcat]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3867</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Tomcat 6.0.24, version mineure mais non négligeable Agilité Le pair-programming comment ça marche ? RIA Firebug passe en version 1.5 Actualité éditeurs / SSII Tomcat 6.0.24, version mineure mais non négligeable Nous allons commencer par un clin d&#8217;oeil humoristique, même [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/25/revue-de-presse-xebia-144/#Tomcatversionmineuremaisnonngl">Tomcat 6.0.24, version mineure mais non négligeable</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/25/revue-de-presse-xebia-144/#Lepairprogrammingcommentamarch">Le pair-programming comment ça marche ?</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/25/revue-de-presse-xebia-144/#Firebugpasseenversion">Firebug passe en version 1.5</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Tomcatversionmineuremaisnonngl"></a>Tomcat 6.0.24, version mineure mais non négligeable</h4><p>Nous allons commencer par un clin d&#8217;oeil humoristique, même les plus grands ont des difficultés à <code>builder</code>, le projet Tomcat a <em>brulé</em> trois tags subversion pour faire une release sans défaut, il y a eu de nombreux problème d&#8217;adaptation des sauts de ligne aux plateformes Windows/Unix-Linux <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p><p>Ensuite, la sécurité avec la correction de la faille <a
href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555" title="CVE20093555" >CVE-2009-3555</a> appelée <em>&laquo;&nbsp;SSL-Man-In-The-Middle attack&nbsp;&raquo;</em> qui intéressera ceux qui gèrent SSL avec Tomcat.</p><p>Enfin, nous avons retenu deux nouvelles fonctionnalités qui nous paraissent particulièrement utiles :</p><p>L&#8217;intégration de la <a
href="http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html" title="<code>RemoteIpValve</code>" ><code>RemoteIpValve</code></a> pour connaitre l'adresse IP de l'internaute et le protocole (http/https) utilisé lorsque Tomcat est précédé de load balancers et/ou d'un serveur web. Nous en avons longuement parlé dans <a
href="http://blog.xebia.fr/2009/05/05/tomcat-adresse-ip-de-linternaute-load-balancer-reverse-proxy-et-header-http-x-forwarded-for/" title="Tomcat : Adresse IP de l'internaute, load balancer, reverse proxy et header Http X-Forwarded-For" >Tomcat : Adresse IP de l'internaute, load balancer, reverse proxy et header Http X-Forwarded-For</a> et dans <a
href="http://blog.xebia.fr/2009/11/13/tomcat-ssl-communications-securisees-et-x-forwarded-proto/" title="Tomcat SSL communications scurises et XForwardedProto" >Tomcat, SSL, communications sécurisées et X-Forwarded-Proto</a>.<br
/> Exemple :<br
/> Fragment de server.xml pour déclarer le RemoteIpValve avec utilisation de X-Forwarded-Proto :</p><pre class="brush: xml; title: ; notranslate">
&lt;Valve className=&quot;org.apache.catalina.valves.RemoteIpValve&quot; protocolHeader=&quot;X-Forwarded-Proto&quot; /&gt;
&lt;!-- AccessLogValve must be declared after RemoteIpValve --&gt;
&lt;Valve className=&quot;org.apache.catalina.valves.AccessLogValve&quot; directory=&quot;logs&quot;
       prefix=&quot;localhost_access_log.&quot; suffix=&quot;.txt&quot; pattern=&quot;common&quot; resolveHosts=&quot;false&quot;/&gt;
</pre><p>L'intégration du <a
href="http://tomcat.apache.org/tomcat-6.0-doc/config/listeners.html" title="<code>JmxRemoteLifecycleListener</code>" ><code>JmxRemoteLifecycleListener</code></a> qui permet de figer le deuxième port d'écoute RMI et ainsi se connecter avec <a
href="https://visualvm.dev.java.net/" title="VisualVM" >VisualVM</a> et un tunnel SSH pour passer les firewalls. A nous le profiling sur les serveurs de production ! <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Mais attention aux chausses-trappes <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> :</p><ul><li>il faut télécharger le <a
href="http://apache.cict.fr/tomcat/tomcat-6/v6.0.24/bin/extras/catalina-jmx-remote.jar" title="catalinajmxremotejar" >catalina-jmx-remote.jar</a> et le copier sous <code>$TOMCAT_HOME/lib</code>,</li><li>un vilain problème de UnmarshalException/ClassNotFoundException dans les clients comme Hyperic HQ si vous activez <code>useLocalPorts</code> (contournement <a
href="http://markmail.org/message/enpid5dli75ynjfd" title="ici" >ici</a>),</li><li>les propriétés à définir dans <code>setenv.sh</code> (ou <code>catalina.properties</code>) en plus de la déclaration dans <code>server.xml</code>.</li></ul><p>L'occasion d'une contribution <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ?<br
/> Exemple :<br
/> Fragment de setenv.sh pour déclarer des variables d'environnement de JmxRemoteLifecycleListener :</p><pre class="brush: java; title: ; notranslate">
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
</pre><p>Fragment de server.xml pour déclarer le JmxRemoteLifecycleListener :</p><pre class="brush: xml; title: ; notranslate">
&lt;Listener className=&quot;org.apache.catalina.mbeans.JmxRemoteLifecycleListener&quot;
          rmiRegistryPortPlatform=&quot;6969&quot;
          rmiServerPortPlatform=&quot;7969&quot;
          useLocalPorts=&quot;true&quot; /&gt;
</pre><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Lepairprogrammingcommentamarch"></a>Le pair-programming comment ça marche ?</h4><p>Stuart Wray de la Royal School of Signals, s'est fendu d'un article sur le fonctionnement du pair-programming dans l'édition de Janvier du magazine de l'IEEE. Dans l'article, il liste quatre bonne pratiques permettant de garantir selon ses termes, l'efficacité du développement par pair. Il ne s'agit pas de simplement développer à deux l'un au clavier et l'autre le doigt sur l'écran.</p><ul><li>Dialogue entre les développeurs :<br
/> Il est important de verbaliser les problèmes rencontrés de façon intelligible. Présenter une difficulté à un tiers permet de garder le focus dessus et l'effort de présentation force à clarifier la situation. Il faut sortir la tête du mur pour résoudre les problèmes et parfois le seul fait de présenter le blocage permet de trouver la solution. L'auteur identifie la conversation comme un point clé permettant aux paires d'être et de rester productifs.</li><li>Voir plus de détails :<br
/> Un phénomène bien connu de tous, deux personnes ne voient pas les même choses au même moment. C'est à cela que sert la relecture sur le blog Xebia. Il y a toujours des fautes d'inattention, liés à des centre d'intérêts différents par exemple. En paire, un développeurs trouve plus rapidement certaines erreurs que son collègue qui en voit d'autres. Celui qui ne tape pas au clavier repère toujours beaucoup plus rapidement les coquilles.<br
/> Stuart lève notre attention sur la fatigue des paires, en travaillant ensemble, les développeurs commencent à repérer les mêmes erreurs et à fixer leur attention sur les mêmes points. La productivité est alors en chute libre et l'apport du pair-programming se perd. Il faut prévoir des rotations régulière entre les paires pour se prémunir contre cet effet de bord.</li><li>Combattre les mauvaises pratiques :<br
/> Les deux développeurs doivent prendre l'engagement de coder en respectant une convention, en utilisant des bonnes pratiques. Chacun est juge du travail de son voisin, pourtant a terme c'est le travail des deux ensemble qui sera jugé. Cet engagement nécessaire des deux parties augmente la responsabilité de chacun sur la qualité du code produit. Posez vous la question : faites vous plus propre en développant seul dans votre cave ou en développant sous le regard attentif de votre paire ?</li><li>Partager et juger l'expertise :<br
/> Aucun individu n'a la même productivité et la différence varie au moins d'un facteur de un à dix entre deux individus. Cela implique des erreurs d'estimation temporelle par exemple si votre héros Java qui code les yeux fermés annonce une journée pour une tache et qu'elle est réalisée par un autre le temps passé ne sera sûrement pas d'une journée (Tous le monde ne peut pas coder les yeux fermés). C'est seulement en collaborant étroitement avec un développeur qu'il devient possible de juger de ses capacités. Mais avec le pair programming et la rotation des paires chaque développeur connait les domaines d'expertise des autres et sait se positionner par rapport aux autres. Les estimations seront donc plus réaliste dans une équipe en pair programming.</li></ul><ul><li><a
href="http://www.infoq.com/news/2010/01/how-pair-programming-works" title="La news sur InfoQ" >La news sur InfoQ</a></li><li><a
href="http://www.computer.org/cms/Computer.org/ComputingNow/homepage/2010/0110/W_SW_PairProgramming.pdf" title="Larticle complet" >L'article complet</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="Firebugpasseenversion"></a>Firebug passe en version 1.5</h4><p><a
href="http://getfirebug.com/" title="Firebug" >Firebug</a>, le plugin Firefox ultime pour le débogage de nos applications web, passe en <a
href="http://blog.getfirebug.com/2010/01/15/firebug-1-5-0/" title="version 1.5" >version 1.5</a> (<em>via <a
href="http://ajaxian.com/archives/firebug-1-5-new-features-and-ready-for-firefox-3-6" title="Ajaxian" >Ajaxian</em></a>).<br
/> Pour rappel, cet outil permet d'inspecter notre code HTML, CSS et Javascript, de l'éditer avec répercutions direct sur la page, d'analyser les flux XMLHttpRequest avec le nombre d'appels effectués ainsi que leur durée... En bref, un outil incontournable !</p><p>Les corrections de bugs sont <a
href="https://wiki.mozilla.org/Firebug/MarchOfTheFirebugs" title="nombreuses" >nombreuses</a> et les nouvelles fonctionnalités sont aussi au <a
href="http://getfirebug.com/wiki/index.php/Firebug_Release_Notes#Firebug_1.5" title="rendez-vous" >rendez-vous</a>. On appréciera ainsi un mode d'inspection encore plus robuste, une boîte d'information rapide lors de l'inspection, l'ajout du <a
href="http://blog.getfirebug.com/2009/07/24/firebug-1-5a19/" title="bouton de persistance" >bouton de persistance</a>, le blocage du Javascript et des évènements sur un breakpoint, les nombreux <a
href="http://getfirebug.com/doc/breakpoints/demo.html" title="nouveaux breakpoints" >nouveaux breakpoints</a> ou bien encore l'<a
href="http://www.softwareishard.com/blog/firebug/xml-explorer-for-firebug/" title="explorateur XML" >explorateur XML</a> pour une réponse de type XML. Ces deux derniers points seront à coup sûr des fonctionnalités clés pour le débogage de nos applications.</p><p>Si vous ne le possédez pas encore, c'est par <a
href="https://addons.mozilla.org/fr/firefox/addon/1843" title="ici" >ici</a> que cela se passe.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/01/25/revue-de-presse-xebia-144/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/</link> <comments>http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#comments</comments> <pubDate>Mon, 18 Jan 2010 18:55:11 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[dmServer]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[HornetQ 2.0]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[jQuery]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Nexus]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Sonatype]]></category> <category><![CDATA[SpringSource]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3835</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII dm Server 2.0 transféré de SpringSource à Eclipse HornetQ 2.0, un véritable renouveau ? Nexus sous license GPL: Sonatype explique son choix Agilité Le rôle des leaders dans une équipe agile RIA Le nouveau jQuery est arrivé ! Survol de [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#dmServertransfrdeSpringSourceE">dm Server 2.0 transféré de SpringSource à Eclipse</a></li><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#HornetQunvritablerenouveau">HornetQ 2.0, un véritable renouveau ?</a></li><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#NexussouslicenseGPLSonatypeexp">Nexus sous license GPL: Sonatype explique son choix</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#Lerledesleadersdansunequipeagi">Le rôle des leaders dans une équipe agile</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#LenouveaujQueryestarriv">Le nouveau jQuery est arrivé !</a></li><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#SurvoldelagalaxieFlex">Survol de la galaxie Flex.</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="dmServertransfrdeSpringSourceE"></a>dm Server 2.0 transféré de SpringSource à Eclipse</h4><p>SpringSource annonce cette semaine <a
href="http://blog.springsource.com/2010/01/12/dm-server-2-0-0-released/" title="la finalisation de dm Server 20" >la finalisation de dm Server 2.0</a>. Il s&#8217;agit là d&#8217;une mise à jour importante qui agit principalement sur la réduction des nuisances causées au développeur de par la nature même d&#8217;OSGi. En effet, si beaucoup peuvent s&#8217;accorder sur le fait que la modularité dynamique peut constituer un intérêt sur de nombreux projets, c&#8217;est le coût en nuisances et en lourdeurs qui fait que cette solution n&#8217;est toujours pas très populaire au sein des applications d&#8217;entreprise. L&#8217;enjeu est donc crucial puisqu&#8217;il s&#8217;agit maintenant pour SpringSource de rendre attractif son serveur modulaire pour les entreprises. Un an et demi après le lancement du projet l&#8217;évolution de cette version 2.0 sera donc à suivre&#8230;</p><p>Parallèlement, SpringSource <a
href="http://blog.springsource.com/2010/01/12/dm-server-project-moves-to-eclipse-org/" title="annonce le transfert" >annonce le transfert</a> de dm Server au sein de la fondation Eclipse. Il tiendra alors le rôle d&#8217;implémentation de référence de la spécification BluePrint OSGi 4.2 <a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#OSGi" title="rcemment finalise" >récemment finalisée</a>. Tout comme le travail de simplification apporté à la nouvelle version, la standardisation permettra de rassurer les entreprises sur la pérennité de la technologie proposée par dm Server, qui restait jusqu&#8217;alors propriétaire.</p><h4><a
name="HornetQunvritablerenouveau"></a>HornetQ 2.0, un véritable renouveau ?</h4><p>Pour mémoire, <a
href="http://jboss.org/hornetq/" title="HornetQ" >HornetQ</a> est le nouveau nom de JBoss messaging. En bref, c&#8217;est pour le moment un projet Open Source sans support ayant vocation à s&#8217;intégrer dans le futur aux produits d&#8217;entreprise RedHat. <a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#JBossHornetQ" title="Nous en parlions dj en aout lanne dernire" >Nous en parlions déjà en aout l&#8217;année dernière</a>. La <em>roadmap</em> visait alors clairement la mise à disposition d&#8217;une API de <em>messaging</em> RESTful. Malheureusement, il n&#8217;y en a même pas l&#8217;ombre pour le moment et cela reste dans la <em>roadmap</em>. Gageons que quelques problèmes d&#8217;architecture accompagnés de bugs bloquants ont empêché le développement de cette nouvelle fonctionnalité.</p><p>L&#8217;annonce reprend principalement la précédente et ne liste rien de neuf par rapport à Aout 2009. Mais s&#8217;il y a bien dans le <a
href="https://jira.jboss.org/jira/browse/HORNETQ?report=com.atlassian.jira.plugin.system.project:changelog-panel" title="Jira du projet" >Jira du projet</a> un grand nombre de bugs corrigés, c&#8217;est surtout la maturité du source qui a grandi.<br
/> Malgré tout, la bonne nouvelle est que JBoss espère bien pouvoir l&#8217;intégrer dans sa ligne produit et que RedHat continue l&#8217;investissement sur le projet.</p><h4><a
name="NexussouslicenseGPLSonatypeexp"></a>Nexus sous license GPL: Sonatype explique son choix</h4><p><a
href="http://nexus.sonatype.org/" title="Nexus" >Nexus</a> est le gestionnaire de dépôts Maven développé par Sonatype. La version 1.0 est sortie à l&#8217;été 2008 sous la licence GPL. Il faut croire que Sonatype a fait face à de nombreuses critiques car la société vient de publier sur son blog un post intitulé &laquo;&nbsp;<a
href="http://www.sonatype.com/people/2010/01/why-we-chose-the-gpl-for-nexus/" title="Why we chose the GPL for Nexus" >Why we chose the GPL for Nexus</a>&nbsp;&raquo; lui permettant d&#8217;argumenter son choix. Alors quelles furent ces raisons ?<br
/> Le &laquo;&nbsp;problème&nbsp;&raquo; de <a
href="http://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_GNU" title="la GPL" >la GPL</a> est qu&#8217;elle force à redonner à la communauté les changements effectués dans le source au cas où le logiciel obtenu est redistribué. Dans le cas spécifique de Nexus, Sonatype explique que le produit était vu dès l&#8217;origine comme un produit commercial, sans question d&#8217;open source. Puis, trouvant le processus de développement plus fun, intéressant et plus productif, couplé au fait que l&#8217;équipe voulait &laquo;&nbsp;protéger son investissement&nbsp;&raquo;, il fut décidé de passer en Open Source. Sonatype est franc sur ce dernier point et affirme l&#8217;avoir toujours été.<br
/> Ensuite, la société explique les idées qui guident généralement ses choix de licence:</p><ul><li>L&#8217;<a
href="http://fr.wikipedia.org/wiki/Affero_General_Public_License" title="Affero GPL" >Affero GPL</a> ne permet pas aux utilisateurs de développer des extensions, même à usage interne, sans avoir à redistribuer les sources. Dans le cas de Nexus, cela aurait sans doute impacté négativement son adoption.</li><li>Sonatype considère que, pour un projet open source, passer d&#8217;une licence donnée à une licence plus restrictive n&#8217;est pas correct. On se souvient que certains on déjà réalisé cette transition en s&#8217;attirant alors <a
href="http://www.extjs.com/forum/showthread.php?t=33096" title="des critiques dutilisateurs" >des critiques d&#8217;utilisateurs</a>. Sonatype déclare que ce ne sera pas leur cas.</li><li>La documentation, elle, est soumise à un principe différent. En effet, la compagnie pense que celle-ci constitue une bonne partie de la plus-value apportée. Ainsi, ils ne veulent pas voir de concurrents se servir de leur travail. C&#8217;est pourquoi ils ont choisi la licence <a
href="http://creativecommons.org/licenses/by-nc-nd/3.0/deed.fr" title="Creative Common 30 BYNDNC" >Creative Common 3.0 BY-ND-NC</a> interdisant à quiconque de modifier cette documentation.</li></ul><p>Au final, cet article est passionnant dans la mesure où il nous permet de bien appréhender le raisonnement derrière le choix d&#8217;une License pour des produits très répandus dans l&#8217;écosystème Java. Nous les utilisons tous les jours sans forcément nous poser de questions. Pourtant, pour certains clients, il peut être important de garder fermées leurs sources. Après, savoir si c&#8217;est une réelle nécessité ou un simple état d&#8217;esprit difficile à changer est une autre histoire !</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Lerledesleadersdansunequipeagi"></a>Le rôle des leaders dans une équipe agile</h4><p><a
href="http://blog.mountaingoatsoftware.com/the-role-of-leaders-on-a-self-organizing-team" title="Mike Cohn" >Mike Cohn</a>, auteur de nombreux livres sur l&#8217;agilité et membre fondateur de <a
href="http://www.agilealliance.org/" title="lAlliance Agile" >l&#8217;Alliance Agile</a>, revient sur le rôle des managers au sein d&#8217;une organisation de type agile. Un des principes forts des méthodes agiles est la mise en place d&#8217;une équipe auto-organisée, où il n&#8217;y a théoriquement plus de chef de projet. Cependant, Mike nous averti qu&#8217;une auto-organisation ne veut pas dire les développeurs font tout ce qu&#8217;ils veulent. Au contraire, Mike explique que des managers ont tout à fait leur rôle à jouer dans ce type d&#8217;organisation. Ainsi, il développe l&#8217;idée d&#8217;une influence subtile et indirecte des managers sur l&#8217;équipe.<br
/> C&#8217;est alors au fur et à mesure des challenges, des échecs et réussites que l&#8217;équipe évolue d&#8217;elle-même vers l&#8217;organisation la plus appropriée. Les managers sont néanmoins là pour poser certaines limites et contraintes.<br
/> A la fin de son article, Mike nous présente un exemple concret d&#8217;un scrum master au prise avec un développeur, qui est un peu trop solitaire, et nous expose comment il pourrait résoudre ce problème de manière subtile. Le scrum master peut être alors vu comme un agitateur au sein de l&#8217;équipe pour l&#8217;aider à devenir plus agile. Et, c&#8217;est là l&#8217;un des plus gros challenges d&#8217;un scrum master, qui consiste à naviguer entre un subtil mélange de contrôle et d&#8217;influence.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="LenouveaujQueryestarriv"></a>Le nouveau jQuery est arrivé !</h4><p>Un an jour pour jour (ou presque) après la <a
href="http://blog.xebia.fr/2009/01/19/revue-de-presse-xebia-92/#SortieduframeworkJavaScriptJQu" title="sortie de jQuery 1.3" >sortie de jQuery 1.3</a>, voici venir la nouvelle mouture du framework qui nous arrive dans une <a
href="http://jquery14.com/day-01" title="version 1.4" >version 1.4</a>. Le détail complet des nouveautés se trouve sur cette <a
href="http://jquery14.com/day-01" title="page" >page</a>. Le mot d&#8217;ordre : <em>performance</em> !</p><p>L&#8217;API a subit une réécriture complète. Un des points marquants  est la fonction <code>live()</code>, déjà présente dans la version précédente, qui supporte désormais tous les évènements Javascript <em>(click, change&#8230;)</em>. Pour ce qui est des nouveautés au niveau de l&#8217;API, on retiendra plus particulièrement :</p><ul><li><code>contains()</code> : vérifie l&#8217;existence d&#8217;un nœud DOM dans un autre nœud DOM,</li><li><code>isEmptyObject()</code> et <code>isPlainObject()</code> :  vérifie si un objet est vide ou existant <em>(new Object ou {})</em>,</li><li><code>detach()</code> : supprime du DOM un set d&#8217;éléments,</li><li><code>focusin()</code> et <code>focusout()</code> : ajoute un événement de type focus,</li><li><code>clearQueue()</code> : supprime de la pile les éléments qui n&#8217;ont pas encore été lancés,</li><li><code>delay()</code> : définit un <em>timer</em> pour l&#8217;exécution de certains éléments dans la pile,</li><li><code>toArray()</code> : récupère tous les éléments du conteneur jQuery dans un tableau.</li></ul><p>Côté performance, on peut noter une réelle <a
href="http://www.flickr.com/photos/jeresig/4271690739/" title="amélioration" >amélioration</a> pour les méthodes <em>remove</em>, <em>html</em> et <em>empty</em>. Un gros travail a donc été effectué au niveau des méthodes de manipulation du DOM. Il en va de même pour la gestion des <a
href="http://www.flickr.com/photos/jeresig/4271691147/" title="attributs et des proprits css" >attributs et des propriétés css</a>.</p><p>Pour le téléchargement de la librairie production <em>(minifié et GZippé)</em> ou développement <em>(code non compressé)</em> ou pour consulter la documentation, je vous renvoie directement sur la <a
href="http://jquery.com/" title="home page" >home page</a> du site. Et pour les fans de CheatSheet <em>(comme moi <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</em>, la version 1.4 est déjà disponible au format <a
href="http://www.futurecolors.ru/jquery/" title="HTML" >HTML</a>, <a
href="http://www.futurecolors.ru/jquery/jquery.cheatsheet.1.4.pdf" title="PDF" >PDF</a> ou <a
href="http://www.futurecolors.ru/jquery/jquery.cheatsheet.1.4.png" title="PNG" >PNG</a>.</p><p>Et si vous appréciez jQuery et le travail de toute l&#8217;équipe qui se trouve derrière, vous pouvez faire une <a
href="http://jquery14.com/donate" title="donation de 20$ et ainsi recevoir un eBook jQuery gratuitement" >donation de 20$ et ainsi recevoir un eBook jQuery gratuitement</a> !</p><h4><a
name="SurvoldelagalaxieFlex"></a>Survol de la galaxie Flex.</h4><p>Vous voulez passer à Flex, mais vous ne savez pas par où commencer ? Suivant l&#8217;adage &laquo;&nbsp;Pour bien travailler il faut avoir de bons outils&nbsp;&raquo;, InfoQ propose <a
href="http://www.infoq.com/news/2010/01/state-of-flex-dev-tools" title="un survol de la galaxie Flex" >un survol de la galaxie Flex</a>. Sans rentrer dans les détails de l&#8217;article, on notera :</p><ul><li>les IDE : le célèbre FlexBuilder, mais aussi IntelliJ, ou encore des environnements plus exotiques comme Amethyst, EnsembleTofino et FlashDevelop. Nous n&#8217;avons pas (encore) eu l&#8217;occasion d&#8217;essayer ces derniers, mais si l&#8217;un de nos lecteurs possède une expérience avec ces outils, qu&#8217;il n&#8217;hésite pas à la partager !</li><li>les frameworks : là encore, outre les classiques (PureMvc, Cairgorm&#8230;), quelques petits nouveaux tentent d&#8217;émerger, dont deux qui nous ont interpellé : Ruboss (pour intégrer Ruby on Rails) et Prana (IoC). Nous espérons bientôt les tester.</li><li>les outils de support du developpement : là encore, Flex commence à se doter d&#8217;un arsenal conséquent : tests unitaires (FlexMonkey), couverture de code (FlexCover), tests de GUI (RIATest). Il ne reste plus qu&#8217;à monter une usine logicielle digne de ce nom en agrégeant ces utilitaires.</li><li>les outils d&#8217;intégration dans l&#8217;entreprise : là encore, un certains nombre de ces outils sont archi-connus (comme BlazeDs), et d&#8217;autres plus confidentiels, peuvent présenter un réel intérêt : intégration à Struts (FxStruts), AmFast (Python)&#8230; Nous aurons probablement l&#8217;occasion d&#8217;en reparler.</li></ul><p>Au final, InfoQ propose un survol relativement complet et permet de découvrir de nouveaux outils. Ne reste plus qu&#8217;à les tester, ou à recueilli vos retours d&#8217;expérience !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Session privée avec Kirk Pepperdine</title><link>http://blog.xebia.fr/2010/01/13/session-privee-avec-kirk-pepperdine-2/</link> <comments>http://blog.xebia.fr/2010/01/13/session-privee-avec-kirk-pepperdine-2/#comments</comments> <pubDate>Wed, 13 Jan 2010 14:10:27 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Performances]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3774</guid> <description><![CDATA[Il reste des places pour la session privée avec Kirk Pepperdine que Xebia organise le 20 Janvier 2010. Cette session aura lieu en nos locaux (au 156 Boulevard Haussmann à Paris) à partir de 19h30. Pour ceux qui ne le connaissent pas, Kirk Pepperdine dispose de plus de 15 ans d’expérience dans les technologies orientées [...]]]></description> <content:encoded><![CDATA[<p>Il reste des places pour la session privée avec Kirk Pepperdine que Xebia organise le 20 Janvier 2010.<br
/> Cette session aura lieu en nos locaux (au 156 Boulevard Haussmann à Paris) à partir de 19h30.</p><p>Pour ceux qui ne le connaissent pas, Kirk Pepperdine dispose de plus de 15 ans d’expérience dans les technologies orientées objets et l’optimisation de la performance. Figure emblématique du monde Java, il a été élu <a
href="https://java-champions.dev.java.net/">Java Champion</a> en 2005. Kirk est reconnu comme le référent de l’optimisation de performance Java. Il est le DSI de <a
href="http://www.kodewerk.com/">Kodewerk Ltd</a> et le principal contributeur de <a
href="http://www.javaperformancetuning.com/">javaperformancetuning.com</a>.</p><p>Le déroulement de cette session privée est très simple : deux heures de questions-réponses et de discussion informelle autour d&#8217;un verre avec l&#8217;un des experts mondiaux de la performance java.</p><p>Vous pouvez désormais vous inscrire sans poser de question à Kirk. Le nombre de places restant limité, les règles sont désormais très simples : premiers arrivés, premiers servis.</p><div
id="usermessage4a" class="cf_info "></div><form
enctype="multipart/form-data" action="/tag/jee/feed/#usermessage4a" method="post" class="cform" id="cforms4form"><fieldset
class="cf-fs1"><legend>Session privée avec Kirk Pepperdine</legend><ol
class="cf-ol"><li
id="li-4-2"><label
for="cf4_field_2"><span>Votre nom</span></label><input
type="text" name="cf4_field_2" id="cf4_field_2" class="single fldrequired" value="" onfocus="clearField(this)" onblur="setField(this)"/><span
class="reqtxt">(obligatoire)</span></li><li
id="li-4-3"><label
for="cf4_field_3"><span>Votre prénom</span></label><input
type="text" name="cf4_field_3" id="cf4_field_3" class="single fldrequired" value="" onfocus="clearField(this)" onblur="setField(this)"/><span
class="reqtxt">(obligatoire)</span></li><li
id="li-4-4"><label
for="cf4_field_4"><span>Votre adresse email</span></label><input
type="text" name="cf4_field_4" id="cf4_field_4" class="single fldemail fldrequired" value="" onfocus="clearField(this)" onblur="setField(this)"/><span
class="emailreqtxt">(veuillez entrer une adresse email valide)</span></li><li
id="li-4-5"><label
for="cf4_field_5"><span>Votre site web</span></label><input
type="text" name="cf4_field_5" id="cf4_field_5" class="single" value="" onfocus="clearField(this)" onblur="setField(this)"/></li><li
id="li-4-6"><label
for="cf4_field_6"><span>Informations complémentaires</span></label><textarea cols="30" rows="8" name="cf4_field_6" id="cf4_field_6" class="area" onfocus="clearField(this)" onblur="setField(this)"></textarea></li><li
id="li-4-7"><label
for="cforms_captcha4" class="seccap"><span>Captcha anti-spam</span></label><input
type="text" name="cforms_captcha4" id="cforms_captcha4" class="secinput" value=""/><img
id="cf_captcha_img4" class="captcha" src="http://blog.xebia.fr/wp-content/plugins/cforms/cforms-captcha.php?ts=4&amp;c1=4&amp;c2=5&amp;ac=abcdefghijkmnpqrstuvwxyz23456789&amp;i=i&amp;w=115&amp;h=25&amp;c=000066&amp;l=000066&amp;f=font4.ttf&amp;a1=-12&amp;a2=12&amp;f1=17&amp;f2=19&amp;b=1.gif" alt=""/><a
title="reset captcha image" href="javascript:reset_captcha('4')"><img
class="captcha-reset" src="http://blog.xebia.fr/wp-content/plugins/cforms/images/spacer.gif" alt="Captcha"/></a></li></ol></fieldset><fieldset
class="cf_hidden"><legend>&nbsp;</legend> <input
type="hidden" name="cf_working4" id="cf_working4" value="Veuillez%20patienter%20..."/> <input
type="hidden" name="cf_failure4" id="cf_failure4" value="Certains%20champs%20obligatoires%20ne%20sont%20pas%20renseign%C3%A9s.%20Merci%20de%20les%20corriger."/> <input
type="hidden" name="cf_codeerr4" id="cf_codeerr4" value="Please%20double-check%20your%20verification%20code."/> <input
type="hidden" name="cf_customerr4" id="cf_customerr4" value="yyy"/> <input
type="hidden" name="cf_popup4" id="cf_popup4" value="nn"/></fieldset><p
class="cf-sb"><input
type="submit" name="sendbutton4" id="sendbutton4" class="sendbutton" value="Envoyez la demande" onclick="return cforms_validate('4', false)"/></p></form> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/01/13/session-privee-avec-kirk-pepperdine-2/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Session privée avec Kirk Pepperdine</title><link>http://blog.xebia.fr/2010/01/06/session-privee-avec-kirk-pepperdine/</link> <comments>http://blog.xebia.fr/2010/01/06/session-privee-avec-kirk-pepperdine/#comments</comments> <pubDate>Wed, 06 Jan 2010 16:59:48 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[Performances]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3717</guid> <description><![CDATA[Xebia organise le 20 Janvier 2010 une session privée avec Kirk Pepperdine. Cette session aura lieu en nos locaux (au 156 Boulevard Haussmann à Paris) à partir de 19h30. Pour ceux qui ne le connaissent pas, Kirk Pepperdine dispose de plus de 15 ans d’expérience dans les technologies orientées objets et l’optimisation de la performance. Figure [...]]]></description> <content:encoded><![CDATA[<p>Xebia organise le 20 Janvier 2010 une session privée avec Kirk Pepperdine.<br
/> Cette session aura lieu en nos locaux (au 156 Boulevard Haussmann à Paris) à partir de 19h30.<span
style="color: red;"><span
style="color: #000000;"><span
style="color: #ff0000;"><br
/> </span></span></span></p><p>Pour ceux qui ne le connaissent pas, Kirk Pepperdine dispose de plus de 15 ans d’expérience dans les technologies orientées objets et l’optimisation de la performance. Figure emblématique du monde Java, il a été élu <a
href="https://java-champions.dev.java.net/">Java Champion</a> en 2005. Kirk est reconnu comme le référent de l’optimisation de performance Java. Il est le DSI de <a
href="http://www.kodewerk.com/">Kodewerk Ltd</a> et le principal contributeur de <a
href="http://www.javaperformancetuning.com/">javaperformancetuning.com</a>.</p><p>Le déroulement de cette session privée est très simple : deux heures de questions-réponses et de discussion informelle autour d&#8217;un verre avec l&#8217;un des experts mondiaux de la performance java.</p><p>Le nombre de places étant très limité (30 places), nous vous proposons de nous soumettre, via le formulaire d’inscription ci dessous une question que vous souhaiteriez poser à Kirk Pepperdine. La sélection des participants à cette rencontre se fera en fonction de l&#8217;intérêt des questions proposées.</p><div
id="usermessage3a" class="cf_info "></div><form
enctype="multipart/form-data" action="/tag/jee/feed/#usermessage3a" method="post" class="cform" id="cforms3form"><fieldset
class="cf-fs1"><legend>Session privée avec Kirk Pepperdine</legend><ol
class="cf-ol"><li
id="li-3-2"><label
for="cf3_field_2"><span>Votre nom</span></label><input
type="text" name="cf3_field_2" id="cf3_field_2" class="single fldrequired" value="" onfocus="clearField(this)" onblur="setField(this)"/><span
class="reqtxt">(obligatoire)</span></li><li
id="li-3-3"><label
for="cf3_field_3"><span>Votre prénom</span></label><input
type="text" name="cf3_field_3" id="cf3_field_3" class="single fldrequired" value="" onfocus="clearField(this)" onblur="setField(this)"/><span
class="reqtxt">(obligatoire)</span></li><li
id="li-3-4"><label
for="cf3_field_4"><span>Votre adresse email</span></label><input
type="text" name="cf3_field_4" id="cf3_field_4" class="single fldemail fldrequired" value="" onfocus="clearField(this)" onblur="setField(this)"/><span
class="emailreqtxt">(veuillez entrer une adresse email valide)</span></li><li
id="li-3-5"><label
for="cf3_field_5"><span>Votre site web</span></label><input
type="text" name="cf3_field_5" id="cf3_field_5" class="single" value="" onfocus="clearField(this)" onblur="setField(this)"/></li><li
id="li-3-6"><label
for="cf3_field_6"><span>Votre question à Kirk Pepperdine</span></label><textarea cols="30" rows="8" name="cf3_field_6" id="cf3_field_6" class="area fldrequired" onfocus="clearField(this)" onblur="setField(this)"></textarea><span
class="reqtxt">(obligatoire)</span></li><li
id="li-3-7"><label
for="cf3_field_7"><span>Informations complémentaires</span></label><textarea cols="30" rows="8" name="cf3_field_7" id="cf3_field_7" class="area" onfocus="clearField(this)" onblur="setField(this)"></textarea></li><li
id="li-3-8"><label
for="cforms_captcha3" class="seccap"><span>Captcha anti-spam</span></label><input
type="text" name="cforms_captcha3" id="cforms_captcha3" class="secinput" value=""/><img
id="cf_captcha_img3" class="captcha" src="http://blog.xebia.fr/wp-content/plugins/cforms/cforms-captcha.php?ts=3&amp;c1=4&amp;c2=5&amp;ac=abcdefghijkmnpqrstuvwxyz23456789&amp;i=i&amp;w=115&amp;h=25&amp;c=000066&amp;l=000066&amp;f=font4.ttf&amp;a1=-12&amp;a2=12&amp;f1=17&amp;f2=19&amp;b=1.gif" alt=""/><a
title="reset captcha image" href="javascript:reset_captcha('3')"><img
class="captcha-reset" src="http://blog.xebia.fr/wp-content/plugins/cforms/images/spacer.gif" alt="Captcha"/></a></li></ol></fieldset><fieldset
class="cf_hidden"><legend>&nbsp;</legend> <input
type="hidden" name="cf_working3" id="cf_working3" value="Veuillez%20patienter%20..."/> <input
type="hidden" name="cf_failure3" id="cf_failure3" value="Certains%20champs%20obligatoires%20ne%20sont%20pas%20renseign%C3%A9s.%20Merci%20de%20les%20corriger."/> <input
type="hidden" name="cf_codeerr3" id="cf_codeerr3" value="Please%20double-check%20your%20verification%20code."/> <input
type="hidden" name="cf_customerr3" id="cf_customerr3" value="yyy"/> <input
type="hidden" name="cf_popup3" id="cf_popup3" value="nn"/></fieldset><p
class="cf-sb"><input
type="submit" name="sendbutton3" id="sendbutton3" class="sendbutton" value="Envoyez la demande" onclick="return cforms_validate('3', false)"/></p></form> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/01/06/session-privee-avec-kirk-pepperdine/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/</link> <comments>http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#comments</comments> <pubDate>Mon, 04 Jan 2010 19:12:31 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[Camel]]></category> <category><![CDATA[Impala]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Spring Integration]]></category> <category><![CDATA[Spring ROO]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3702</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. SOA Spring Integration et Apache Camel : 2 ESB lightweight en action Le coin de la technique Impala, la modularité pour Spring sans OSGi La définition de DataSources dans JEE 6 Les google-collections sont finales ! Spring Roo en 1.0.0 pour terminer l&#8217;année SOA [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#SpringIntegrationetApacheCamel">Spring Integration et Apache Camel : 2 ESB <em>lightweight</em> en action</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#ImpalalamodularitpourSpringsan">Impala, la modularité pour Spring sans OSGi</a></li><li><a
href="http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#LadfinitiondeDataSourcesdansJE">La définition de <em>DataSources</em> dans JEE 6</a></li><li><a
href="http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#Lesgooglecollectionssontfinale">Les google-collections sont finales !</a></li><li><a
href="http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#SpringRooenpourterminerlanne">Spring Roo en 1.0.0 pour terminer l&#8217;année</a></li></ul><h3><a
name="SOA"></a>SOA</h3><h4><a
name="SpringIntegrationetApacheCamel"></a>Spring Integration et Apache Camel : 2 ESB <em>lightweight</em> en action</h4><p>La mouvance SOA a amené un certain nombre de produits classifiés comme ESB (<em>Enterprise Service Bus</em>) dont le but est de répondre aux problématiques d&#8217;intégration courantes en entreprise. Dans un premier temps, ces produits prenaient la forme de <em>middlewares</em> très lourds dont la mise en œuvre devait être justifiée par des besoins importants. Il y a deux ans, <a
title="nous assistions  lavnement" href="http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/">nous assistions à l&#8217;avènement</a> d&#8217;ESB qualifiés de <em>lightweight</em> car ils prenaient la forme de <em>frameworks</em> moins gourmands en ressources et plus simples à utiliser. Spring Integration et Apache Camel sont les deux principales options à envisager en matière d&#8217;ESB léger.</p><p>C&#8217;est justement de l&#8217;utilisation de chacun de ces deux <em>frameworks</em> que discute <a
title="larticle que vient de publier Biju Kunjummen" href="http://java.dzone.com/articles/spring-integration-and-apache">l&#8217;article que vient de publier Biju Kunjummen</a>. Il y propose une problématique d&#8217;intégration qui consiste en l&#8217;exposition d&#8217;un service qui, lorsqu&#8217;il est invoqué, entraîne l&#8217;invocation multiple d&#8217;un même service de bas niveau via l&#8217;utilisation d&#8217;un pattern <em>splitter</em> sur la requête et d&#8217;un pattern <em>aggregator</em> sur la réponse. Les deux <em>frameworks</em> offrent nativement ce type d&#8217;EIP (<em>Enterprise Intergration Pattern</em>).</p><p>Aucun favori ne se démarque clairement dans la comparaison entre ces deux implémentations : Spring Integration vient s&#8217;intégrer naturellement à l&#8217;<em>Application Context</em> de Spring en reprenant le même type de structure de définition XML, tandis qu&#8217;Apache Camel, bien qu&#8217;offrant également la possibilité d&#8217;une configuration XML, sera surtout apprécié pour son DSL Java permettant la définition des routes d&#8217;intégration.</p><p>Le lecteur intéressé par ces deux <em>frameworks</em> pourra se tourner, au-delà des documentations respectives, vers les deux livres en préparation chez l&#8217;éditeur Manning, <a
title="Spring Integration in Action" href="http://manning.com/fisher/">Spring Integration in Action</a> et <a
title="Camel in Action" href="http://manning.com/ibsen/">Camel in Action</a>, prévus pour l&#8217;été prochain.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="ImpalalamodularitpourSpringsan"></a>Impala, la modularité pour Spring sans OSGi</h4><p>La modularité est un sujet porteur en ce moment, tant du côté du JDK avec Jigsaw, que du côté Java Entreprise avec OSGi dont le principal acteur actuellement est sans conteste SpringSource avec Spring Dynamic Modules et son serveur d&#8217;application associé Spring dm Server.</p><p>Phil Zoio <a
title="a été interviewé il y a peu" href="http://osgi.dzone.com/articles/impala-alternative-module">a été interviewé il y a peu</a> pour présenter le projet Open Source qu&#8217;il a fondé : <a
title="Impala" href="http://code.google.com/p/impala/">Impala</a>. Il s&#8217;agit d&#8217;une vision différente de la modularité pour applications d&#8217;entreprise. Ainsi, Impala repose sur Spring, tout comme Spring Dynamic Modules, mais contrairement à ce dernier, il n&#8217;utilise pas OSGi et adopte une stratégie radicalement différente : il constitue lui-même des modules encapsulant chacun un <em>application context</em> qui déclare un certain nombre de <em>beans</em>. La solution de modularité ainsi produite offre tout comme OSGi un fonctionnement dynamique permettant le chargement à chaud de nouveaux modules.</p><p>Dans un climat où beaucoup s&#8217;interrogent sur la potentielle lourdeur d&#8217;OSGi, ce type d&#8217;initiative proposant une solution alternative plus simple face au standard prend tout son sens et n&#8217;est pas sans rappeler l&#8217;offensive de <em>Spring Framework</em> lui-même, il y a quelques années, face au contesté standard EJB.</p><h4><a
name="LadfinitiondeDataSourcesdansJE"></a>La définition de <em>DataSources</em> dans Java EE 6</h4><p>Matt Corey <a
title="poste cette semaine un article" href="http://smokeandice.blogspot.com/2009/12/datasourcedefinition-hidden-gem-from.html">poste cette semaine un article</a> mettant en avant une facilité rarement (jamais ?) évoquée de Java EE 6 : la configuration des sources de données par annotation. En effet, si la nouvelle spécification de Sun est largement couverte depuis des mois, y compris sur notre blog, il est en général question des nouveautés qui retiennent le plus l&#8217;attention telles que les <em>beans</em> singletons d&#8217;EJB 3.1, l&#8217;API <em>query builder</em> de JPA 2.0 ou encore ses nouveaux modèles de composants.</p><p>En fait il s&#8217;agit d&#8217;une standardisation de la technique de configuration des sources de données dans les serveurs d&#8217;application Java EE. Cette définition était en effet jusqu&#8217;alors un détail d&#8217;implémentation des serveurs et n&#8217;était donc pas portable. Cette configuration peut donc maintenant se faire par l&#8217;annotation <a
title="DataSourceDefinition" href="http://java.sun.com/javaee/6/docs/api/javax/annotation/sql/DataSourceDefinition.html"><code>@DataSourceDefinition</code></a> ce qui évite ainsi l&#8217;utilisation de XML et va donc dans le sens de la logique initiée depuis Java EE 5. L&#8217;exemple suivant permet de mieux se rendre compte de son utilisation :</p><pre class="brush: java; title: ; notranslate">
@DataSourceDefinition (
className=&quot;org.apache.derby.jdbc.ClientDataSource&quot;,
name=&quot;java:global/jdbc/AppDB&quot;,
serverName=&quot;localhost&quot;,
portNumber=1527,
user=&quot;user&quot;,
password=&quot;password&quot;,
databaseName=&quot;dev-db&quot;
)
public class Config {
...
}
</pre><p>Si tout le monde n&#8217;appréciera pas forcément d&#8217;avoir recours à une annotation pour ce type de configuration, les projets souhaitant distribuer des <code>war</code> ou <code>ear</code> portables qui se connectent à une base de données embarquée ou locale devraient en revanche y trouver leur compte.</p><h4><a
name="Lesgooglecollectionssontfinale"></a>Les google-collections sont finales !</h4><p>Annoncée sur la <a
title="&lt;i&gt;users list&lt;/i&gt;" href="http://groups.google.com/group/google-collections-users/browse_thread/thread/8001013ee996b3c9?pli=1"><em>users list</em></a> du projet, l&#8217;API <a
title="google-collections" href="http://code.google.com/p/google-collections/">google-collections</a> passe en version <a
title="finale 10" href="http://code.google.com/p/google-collections/downloads/list">finale 1.0</a>.<br
/> Pour ceux qui ne connaissent pas encore cette API de collections <em>type-safe</em>, rendez-vous sur <a
title="cette page" href="http://bwinterberg.blogspot.com/2009/09/introduction-to-google-collections.html">cette page</a> pour une introduction à la librairie.</p><p>La finalisation de Google Collections constitue un changement majeur dans l&#8217;environnement des développeurs Java. En effet Apache Commons Collections constituait jusqu&#8217;alors le principal complément à l&#8217;API de base du JDK. Or, la librairie de la fondation Apache est vieillissante et ne propose toujours pas les <em>generics</em> de Java 5. Google Collection se positionne donc ni plus ni moins que comme un remplaçant.</p><p>La <a
title="FAQ" href="http://code.google.com/p/google-collections/wiki/Faq">FAQ</a> répondra à bon nombre de questions que l&#8217;on peut se poser sur cette API notamment sur les raisons qui ont poussé Google à créer sa propre API plutôt que de contribuer à Commons Collections.</p><p>Enfin on notera que Google Collections sera intégré à <a
href="http://code.google.com/p/guava-libraries/">Guava</a> sous peu pour constituer la librairie d&#8217;extension du JDK de Google.</p><p>De par la nature de ces APIs, Google Collections et Guava peuvent également constituer un premier pas vers la programmation <em>un peu</em> plus orientée fonctionnelle. A ce sujet, il est aussi possible de regarder du côté de <a
title="lambdaj" href="http://code.google.com/p/lambdaj/">lambdaj</a>, une API de parcours de collections sans boucle explicite. Et pour ceux qui souhaitent aller encore plus loin, rendez-vous sur <a
title="functionaljava" href="http://functionaljava.org/">functional.java</a> ou  tournez vous vers la préparation des <em>closures</em> dans Java.</p><h4><a
name="SpringRooenpourterminerlanne"></a>Spring Roo en 1.0.0 pour terminer l&#8217;année</h4><p>Encore une <em>release</em> pour Spring pour clôturer en beauté l&#8217;année 2009. Bravo!<br
/> <a
title="Spring Roo" href="http://www.springsource.org/roo">Spring Roo</a>, 8 mois après sa première version alpha, vient de sortir en <a
title="100" href="https://jira.springsource.org/browse/ROO#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel">1.0.0</a>. Roo, en quelques mots, permet de développer des applications plus rapidement en générant et maintenant, tout au long des développements, une partie importante du code source (du POJO à la JSP).<br
/> Un effort a été mis sur la documentation qui a intégré un tutoriel et les commandes. La seule partie encore en travaux est le chapitre 3, celle qui concerne le fonctionnement interne de ROO. Cette partie permet entre autres d&#8217;avoir les bases pour développer des extensions.<br
/> En standard, Roo propose déjà des extensions, comme par exemple les fonctionnalités de sécurité, basées sur Spring Security et des flows avec Spring Webflow.</p><p>Spring Roo présente un formidable intérêt pédagogique, car il s&#8217;appuie systématiquement sur les toutes dernières versions des jars de Spring et d&#8217;Hibernate.<br
/> On peut par contre trouver peu commode son mécanisme interne qui se base sur la technologie AspectJ. Son principe est de générer les méthodes de classe en se basant sur des fichiers d&#8217;aspects. Jusqu&#8217;à présent, notre expérience avec Spring Roo a montré que cela ne fonctionnait pas de manière complètement transparente pour le développeur, même avec l&#8217;Eclipse de SpringSource (<a
title="STS" href="http://www.springsource.com/products/sts">STS</a>). Cette limitation pourra donc dissuader certaines équipes de partir sur un projet avec ROO tout au long des développements.</p><p>Voici sur Slideshare, les deux présentations mises en ligne par le <em>leader</em> du projet, Ben Alex:</p><ul><li><a
title="Introduction To Spring Roo 100" href="http://www.slideshare.net/benalexau/introduction-to-spring-roo-100-2805183">Introduction To Spring Roo 1.0.0</a></li><li><a
title="Spring Roo 100 Technical Deep Dive" href="http://www.slideshare.net/benalexau/spring-roo-100-technical-deep-dive">Spring Roo 1.0.0 Technical Deep Dive</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/</link> <comments>http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#comments</comments> <pubDate>Mon, 28 Dec 2009 19:02:30 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Cloud Computing]]></category> <category><![CDATA[EC2]]></category> <category><![CDATA[GAE]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[Hibernate]]></category> <category><![CDATA[IBM]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[JEE6]]></category> <category><![CDATA[JGroups]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Spring Security]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3665</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Le meilleur de The Server Side Le coin de la technique Spring Security seulement un alignement sur Spring 3.0 ? Tour d&#8217;horizon de JBoss Infinispan JGroups à l&#8217;heure du Cloud Computing Actualité éditeurs / SSII Le meilleur de The Server [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#LemeilleurdeTheServerSide">Le meilleur de The Server Side</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#SpringSecurityseulementunalign">Spring Security seulement un alignement sur Spring 3.0 ?</a></li><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#TourdhorizondeJBossInfinispan">Tour d&#8217;horizon de JBoss Infinispan</a></li><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#JGroupslheureduCloudComputing">JGroups à l&#8217;heure du Cloud Computing</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="LemeilleurdeTheServerSide"></a>Le meilleur de The Server Side</h4><p>Avec les fêtes vient le temps des rétrospectives. Et c&#8217;est TheServerSide qui ouvre le bal, avec son hit parade des neuf fils de discussion les plus vus en 2009. Sans surprise, on retrouve quelques stars de l&#8217;année, dont la popularité ne devrait pas faiblir en 2010 : <a
title="JavaEE 6" href="http://www.theserverside.com/news/thread.tss?thread_id=53459">JavaEE 6</a> et <a
title="Glassfish 3" href="http://www.theserverside.com/news/thread.tss?thread_id=58858">Glassfish 3</a>, la persistance (<a
title="JPA" href="http://www.theserverside.com/news/thread.tss?thread_id=53142">JPA</a>, <a
title="les caches d'Hibernate" href="http://www.theserverside.com/news/thread.tss?thread_id=53716">les caches d&#8217;Hibernate</a>, <a
title="la démarcation transactionnelle avec Spring" href="http://www.theserverside.com/news/thread.tss?thread_id=53529">la démarcation transactionnelle avec Spring</a>)&#8230; Mais aussi les buzz de l&#8217;année : <a
title="Google App Engine" href="http://www.theserverside.com/news/thread.tss?thread_id=54215">Google App Engine</a>, <a
title="les langages next-gen" href="http://www.theserverside.com/news/thread.tss?thread_id=55185">les langages next-gen</a>&#8230; On trouve ensuite un grand article communautaire, <a
title="sur ce que doit savoir un architecte applicatif" href="http://www.theserverside.com/news/thread.tss?thread_id=53819">sur ce que doit savoir un architecte applicatif</a>.<br
/> Enfin, et nous devons bien avouer qu&#8217;à la vue des évènements passés, cela prête à sourire, un très beau fil de prospective : <a
title="IBM parle de racheter Sun" href="http://www.theserverside.com/news/thread.tss?thread_id=54007">IBM parle de racheter Sun</a>.</p><p>Cette première rétrospective reflète pour nous bien les tendances de l&#8217;année passée : pas mal de grandes manœuvres chez les éditeurs, des <em>concurrents</em> à Java de plus en plus présent, un nouvelle spécification très attendue, et des frameworks incontournables qui continuent à mener la danse.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SpringSecurityseulementunalign"></a>Spring Security seulement un alignement sur Spring 3.0 ?</h4><p>Dans la foulée de la sortie de la version 3 de Spring Framework, c&#8217;est au tour de Spring Security de faire <a
title="son annonce" href="http://www.springsource.org/node/2271">son annonce</a>. Le point le plus marquant de cette version est l&#8217;utilisation du Spring Expression Language pour décrire les règles de contrôle d&#8217;accès qui simplifieront des vérifications simples comme <code>@PreAuthorize("#contact.name == principal.name)")</code> et surtout, couplé à des classes java transverses de sécurité, permettra d&#8217;effectuer élégamment des contrôles déclaratifs sophistiqués tels que :</p><pre class="brush: java; title: ; notranslate">
@PreAuthorize(&quot;isPhysician(#patientFile.patient)&quot;)
public void create(PatientFile patientFile);
</pre><p>Bien sûr, il faudra programmer la méthode <code>isPhysician()</code>, Spring Security ne se substituera pas au code métier de votre application, il sera juste une aide précieuse <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .<br
/> Nous noterons au passage que l&#8217;<em>Expression Language</em> apporte à l&#8217;<em>Aspect Oriented Programming</em> le haut niveau d&#8217;abstraction qui permet de programmer des fonctionnalités métiers transverses sans être un spécialiste de la plomberie <code>ProceedingJoinPoint</code> et autres joyeusetés. L&#8217;AOP devient alors beaucoup plus accessible pour les développeurs d&#8217;informatique de gestion.</p><p>Les autres nouveautés que nous garderons en tête : des contrôles pré et post traitement (<code>@PreAuthorize</code> et <code>@PostAuthorize</code>), la restructuration des jars similaire à celle que Spring 2.5 a connu, et une clarification des règles de redirection post authentification.</p><h4><a
name="TourdhorizondeJBossInfinispan"></a>Tour d&#8217;horizon de JBoss Infinispan</h4><p>Le projet <a
title="Infinispan" href="http://www.jboss.org/infinispan.html">Infinispan</a> a été <a
title="initié en milieu d'année 2009" href="http://blog.xebia.fr/2009/05/04/revue-de-presse-xebia-107/#JBossveutsonDataGrid">initié en milieu d&#8217;année 2009</a> chez JBoss. Il s&#8217;agit d&#8217;une évolution de <a
title="JBoss Cache" href="http://www.jboss.org/jbosscache/">JBoss Cache</a> d&#8217;un simple cache vers un DataGrid.</p><p>Dans le <a
title="dernier pisode en date de JBoss Asylum" href="http://asylum.libsyn.com/index.php?post_id=562565">dernier épisode en date de JBoss Asylum</a>, le podcast dédié à la communauté JBoss maintenu par Emmanuel Bernard et Max R Andersen, Mark Surtani, <em>leader</em> du projet Infinispan, était invité pour parler de son projet. Il a pu faire un tour d&#8217;horizon global en commençant par le lien entre JBoss Cache et Infinispan :</p><ul><li>Contrairement à JBoss Cache qui utilisait une organisation arborescente, Infinispan se base uniquement sur une structure clé-valeur à plat.</li><li>Tout comme le faisait JBoss Cache, Inifinispan utilise JGroups pour assurer la découverte de ses instances.</li><li>Une API d&#8217;adaptation permettra d&#8217;assurer la transition entre JBoss Cache et Infinispan, notamment en offrant une arborescence au dessus de la structure de base d&#8217;Infinispan. Des outils seront fournis afin de migrer les fichiers de configuration.</li></ul><p>Manik Surtani a également abordé les fonctionnalités à venir, après la finalisation de la première version, dévoilant ainsi les ambitions de positionnement de ce produit :</p><ul><li>Utilisation de Lucene pour offrir une API de requêtes puissante permettant des recherches dans le DataGrid. Plusieurs possibilités d&#8217;architecture ont été évoquées telles que la réplication d&#8217;un index complet sur l&#8217;ensemble des noeuds ou la distribution de <em>shards</em> de l&#8217;index complet sur les noeuds via l&#8217;utilisation d&#8217;un <code>InfinispanDirectory</code> pour Lucene, actuellement en cours de développement.</li><li>Intégration éventuelle avec Hibernate Search. Infinispan se substituerait à Hibernate Core et Hibernate Search lui apporterait alors la fonctionnalité de recherche.</li><li>Possibilité d&#8217;effectuer des <em>continuous requests</em> pour que les résultats d&#8217;une requête s&#8217;enrichissent au fur et a mesure de l&#8217;arrivée de données sur la grille.</li><li>API de MapReduce permettant de soumettre un <code>Callable</code> et un ensemble de clés d&#8217;objets sur lesquels doivent s&#8217;appliquer le traitement pour obtenir un <code>Future</code> représentant le résultat, à venir, après opération de réduction.</li></ul><p>La plupart des fonctionnalités évoquées sont présentes dans les produits commerciaux que sont <a
title="Oracle Coherence" href="http://www.oracle.com/technology/products/coherence/index.html">Oracle Coherence</a> ou <a
title="IBM eXtreme Scale" href="http://www.ibm.com/software/webservers/appserv/extremescale/">IBM eXtreme Scale</a>. Toutefois, de telles possibilités seraient inédites dans un produit Open Source ce qui devrait faire d&#8217;Inifinispan un produit très intéressant à suivre en 2010&#8230;</p><h4><a
name="JGroupslheureduCloudComputing"></a>JGroups à l&#8217;heure du Cloud Computing</h4><p>JGroups est un <em>framework</em> permettant la communication au sein d&#8217;un groupe de serveurs. Actuellement développé au sein de JBoss, il est à la base de nombreux <em>middlewares</em> et frameworks d&#8217;entreprise permettant un fonctionnement distribué tels que JBoss Cache ou plus récemment Infinispan.</p><p>Après un an sans mise à jour majeure, Bela Ban, <em>leader</em> du projet, <a
title="annonce la version 28" href="http://belaban.blogspot.com/2009/12/jgroups-280ga-released.html">annonce la version 2.8</a>. Outre de nombreuses évolutions améliorant la flexibilité de JGroups, un apport notable s&#8217;est glissé dans la liste : le support d&#8217;Amazon EC2. Il s&#8217;agit là d&#8217;une nouveauté emblématique de cette année 2009 qui va se conclure ; la majorité des <em>frameworks</em> cherche à afficher une compatibilité voire une synergie avec les environnements de Cloud Computing courant.<br
/> En pratique, cette intégration de JGroups à EC2 se fait par l&#8217;ajout d&#8217;un nouveau protocole de découverte de voisinage nommé S3_PING. Comme son nom l&#8217;indique, il utilise un stockage S3 commun dans lequel tous les membres d&#8217;un groupe écrivent leurs coordonnées. Ce mécanisme est particulièrement bien adapté à EC2 qui, de part la topologie réseau qu&#8217;il offre, ne permet pas le <em>multicasting</em> et n&#8217;est guère adapté aux autres protocoles de découvertes qui existaient jusqu&#8217;alors dans JGroups.</p><p>Notons tout de même que la principale nouveauté de cette version 2.8 est l&#8217;ajout du concept d&#8217;adresse logique que Bela Ban <a
title="presentait il y a quelques mois" href="http://belaban.blogspot.com/2009/02/whats-cool-about-logical-addresses.html">présentait il y a quelques mois</a>. Une adresse logique permet de découpler l&#8217;identité d&#8217;un nœud JGroups de son adresse réseau ; l&#8217;association entre adresse logique et physique est résolue lors de la découverte des nœuds. Outre le découplage offert par ce concept, ces adresses permettent également de simplifier la gestion des pertes de messages lors de la ré-incarnation d&#8217;un nœud suite a son indisponibilité temporaire.</p><p>10 ans après sa création, JGroups continue donc de se maintenir à jour et, dans la mesure où il remplit toujours parfaitement son rôle, il devrait rester présent encore des années dans plusieurs <em>middlewares</em> et <em>frameworks</em> majeurs.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/12/07/revue-de-presse-xebia-137/</link> <comments>http://blog.xebia.fr/2009/12/07/revue-de-presse-xebia-137/#comments</comments> <pubDate>Mon, 07 Dec 2009 18:47:07 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[Camel]]></category> <category><![CDATA[DDD]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[JEE 6]]></category> <category><![CDATA[TeamCity]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3510</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII JEE 6 commence à apparaître chez JBoss Le coin de la technique Sortie de TeamCity 5 Apache Camel continue d&#8217;évoluer Evènements de notre communauté en France et à l&#8217;étranger Suite et fin, traduction de la deuxième partie de DDD Quickly [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/07/revue-de-presse-xebia-137/#JEEcommenceapparatrechezJBoss">JEE 6 commence à apparaître chez JBoss</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/07/revue-de-presse-xebia-137/#SortiedeTeamCity">Sortie de TeamCity 5</a></li><li><a
href="http://blog.xebia.fr/2009/12/07/revue-de-presse-xebia-137/#ApacheCamelcontinuedvoluer">Apache Camel continue d&#8217;évoluer</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/07/revue-de-presse-xebia-137/#Suiteetfintraductiondeladeuxim">Suite et fin, traduction de la deuxième partie de DDD Quickly</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="JEEcommenceapparatrechezJBoss"></a>JEE 6 commence à apparaître chez JBoss</h4><p>Quelques jours avant la finalisation de <a
href="https://glassfish.dev.java.net/" title="Glassfish V3" >Glassfish V3</a>, l&#8217;implémentation de référence de la nouvelle spécification JEE, <a
href="http://in.relation.to/13275.lace" title="JBoss met  disposition" >JBoss met à disposition</a> une première <em>milestone</em> de JBoss AS 6.0, le serveur d&#8217;application que l&#8217;éditeur destine à implémenter JEE 6.</p><p>Ce premier jet apporte seulement 3 des composants propres à JEE 6 :</p><ul><li><a
href="http://seamframework.org/Weld" title="Weld" >Weld</a>, un conteneur CDI implémentant la <a
href="http://www.jcp.org/en/jsr/detail?id=299" title="JSR-299 (Contexts and Dependency Injection)" >JSR-299 (Contexts and Dependency Injection)</a>.</li><li>Un moteur de validation implémentant la <a
href="http://www.jcp.org/en/jsr/detail?id=303" title="JSR-303 (Bean Validation)" >JSR-303 (Bean Validation)</a>. L&#8217;implémentation utilisée est Hibernate Validator 4.0.</li><li>Une implémentation de JSF 2. Il s&#8217;agit de l&#8217;implémentation de référence de Sun.</li></ul><p>Pourquoi ces composants en particulier ? Parce qu&#8217;il s&#8217;agit soit des composants pour lesquels JBoss est responsable de l&#8217;implémentation de référence, soit, dans le cas de JSF 2, d&#8217;une implémentation de référence empruntée à Sun. Or, ces composants sont forcément finalisés puisqu&#8217;ils seront intégrés à l&#8217;implémentation de référence de l&#8217;ensemble de la spécification JEE 6 qu&#8217;est Glassfish V3, qui sera disponible dans quelques jours (peu après la finalisation de la spécification le 10 décembre).</p><p>JBoss AS 6.0 M1 embarque Hibernate 3.5.0 beta 2, or Steve Ebersole, un des membres de l&#8217;équipe Hibernate, <a
href="http://relation.to/12696.lace" title="expliquait" >expliquait</a> que le support de JPA 2 dans cette version était encore partiel. Aucune indication n&#8217;est par contre donnée quant au statut de l&#8217;autre composant majeur de JEE 6 qu&#8217;est EJB 3.1.</p><p>Aucune <em>roadmap</em> n&#8217;est annoncée, mais il semble raisonnable de penser à une finalisation pour fin 2010. Si l&#8217;on regarde la vitesse de déploiement des serveurs Java EE 5, rares seront donc les privilégiés qui pourront utiliser Java EE 6 avant 2011 voire 2012&#8230;</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SortiedeTeamCity"></a>Sortie de TeamCity 5</h4><p>Fin de semaine dernière est sortie la nouvelle version du serveur d&#8217;intégration continue de <a
href="http://www.jetbrains.com/index.html" title="JetBrains" >JetBrains</a> à savoir <a
href="http://www.jetbrains.com/teamcity/index.html" title="TeamCity" >TeamCity</a> <em>(via <a
href="http://jetbrains.dzone.com/announcements/jetbrains-releases-teamcity-50" title="JavaLobby" >JavaLobby</a>)</em>. Cette version 5 apporte son <a
href="http://www.jetbrains.com/teamcity/whatsnew/index.html" title="lot de nouveauts" >lot de nouveautés</a> et elles sont assez alléchantes, jugez par vous-même :</p><ul><li>support d&#8217;Amazon EC2 avec un agent de build sur le Cloud permettant de faire du build distribué,</li><li>meilleur support de maven,</li><li>templates de build <em>(préférences partagées)</em>,</li><li>intégration avec les gestionnaires de bugs <a
href="http://www.jetbrains.com/youtrack?utm_source=DZone&#038;utm_medium=Post&#038;utm_term=Release&#038;utm_campaign=YouTrack" title="YouTrack" >YouTrack</a>, <a
href="http://www.atlassian.com/software/jira/" title="Jira" >Jira</a> et <a
href="http://www.bugzilla.org/" title="Bugzilla" >Bugzilla</a>,</li><li>archivage de projets,</li><li>command line tool <em>(build sans plugin intégré à l&#8217;IDE)</em>,</li><li><em>back-up and restore</em> pour simplifier la maintenance de TeamCity,</li><li>ainsi que <a
href="http://www.jetbrains.com/teamcity/whatsnew/index.html#Many_Other_Improvements" title="plusieurs nouvelles fonctionnalits et corrections de bugs" >plusieurs nouvelles fonctionnalités et corrections de bugs</a> dont le support de Git et la compatibilité du plugin TeamCity avec IntelliJ IDEA CE.</li></ul><p>Les <a
href="http://www.jetbrains.com/teamcity/buy/index.jsp" title="licences" >licences</a> ne changent pas, <a
href="http://www.jetbrains.com/teamcity/download/index.html" title="laissezvous tenter" >laissez-vous tenter</a> !</p><h4><a
name="ApacheCamelcontinuedvoluer"></a>Apache Camel continue d&#8217;évoluer</h4><p>Claus Ibsen, un membre de l&#8217;équipe Apache Camel, <a
href="http://davsclaus.blogspot.com/2009/12/apache-camel-21-released.html" title="annonce une nouvelle version 21" >annonce une nouvelle version 2.1</a> du moteur de médiation d&#8217;Apache.</p><p>Il liste les principales nouveautés parmi lesquelles on notera un effort particulier pour apporter une gestion plus robuste des routes&nbsp;:</p><ul><li>Amélioration des messages d&#8217;erreur fournit au démarrage en cas de mauvaise définition d&#8217;une route.</li><li>Il est désormais possible de définir un ordre de démarrage pour les routes.</li><li>Il est également possible d&#8217;indiquer si une route doit être auto-démarrée.</li></ul><p>Poursuivant dans cette voie, Claus Ibsen explique son intention d&#8217;apporter un <em>graceful shutdown</em> à Camel pour la version 2.2, ce qui permettrait un arrêt de l&#8217;ESB sans perdre de messages. Cet arrêt sans perte est dors et déjà possible avec la version 2.1 mais nécessite plusieurs manipulations via JMX (arrêt des routes, puis arrêt du moteur lorsque plus aucun message n&#8217;est en cours de traitement).</p><p>James Strachan, créateur du projet, expliquait lors de Devoxx 2009 que la majorité de ses clients déployaient Camel sur Tomcat, Jetty ou ServiceMix pour bénéficier d&#8217;un environnement de <em>monitoring</em> plus riche et d&#8217;une structure plus familière pour l&#8217;administration. Ces pratiques montrent les besoins de robustesse des entreprises quant aux déploiements Camel. Ces améliorations, répondant à des problématiques réelles lors de l&#8217;utilisation de Camel pour la médiation, devraient donc être accueillies avec joie par les équipes utilisant ce <em>framework</em>.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="Suiteetfintraductiondeladeuxim"></a>Suite et fin, traduction de la deuxième partie de DDD Quickly</h4><p>Dans la revue de presse du 10 octobre 2009, nous avons relayé l&#8217;information de la <a
href="http://blog.xebia.fr/2009/10/19/revue-de-presse-xebia-130/#TraductiondelapremirepartiedeD" title="traduction de la premire partie de DDD Quickly" >traduction de la première partie de DDD Quickly</a>.</p><p>La traduction de la deuxième et dernière partie est terminée. <a
href="http://www.dddfrance.org/DDDViteFait" title="Ce livre" >Ce livre</a> est disponible sur le portail <a
href="http://www.dddfrance.org/" title="DDD France" >DDD France</a>.</p><p>Dans cette deuxième partie : <em>On y retrouve des techniques pour mettre en oeuvre DDD sur de gros projets impliquant plusieurs équipes, mais aussi pour refactorer un domaine et gérer sa croissance, notamment à travers la distillation et l&#8217;identification d&#8217;un Coeur de Domaine.</em> (<a
href="http://blog.infosaurus.fr/post/2009/12/06/DDD-Vite-Fait%2C-notions-avanc%C3%A9es" title="source sur le blog de Guillaume" >source sur le blog de Guillaume</a>)</p><p>Félicitations à <a
href="http://blog.infosaurus.fr/" title="Guillaume Lebur" >Guillaume Lebur</a> pour ce gros travail, et bonne lecture de <em>DDD Vite fait</em> au pied de votre arbre de Noël !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/12/07/revue-de-presse-xebia-137/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Devoxx &#8211; Jour 3 &#8211; JEE6</title><link>http://blog.xebia.fr/2009/11/25/devoxx-jour-3-jee6/</link> <comments>http://blog.xebia.fr/2009/11/25/devoxx-jour-3-jee6/#comments</comments> <pubDate>Wed, 25 Nov 2009 07:46:47 +0000</pubDate> <dc:creator>Romain Maton</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[JEE 6]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3338</guid> <description><![CDATA[Comme énoncé dans notre résumé de la keynote du mercredi, la star de ce Devoxx 2009 est clairement JEE6. Et, au premier rang avec mon superbe t-shirt &#171;&#160;I Love Spring&#160;&#187;, j&#8217;ai pu profiter d&#8217;une présentation générale de cette nouvelle version de JEE par Antonio Goncalves et la petite caricature de Rod Johnson . &#160; Introduction [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://blog.xebia.fr/wp-content/uploads/2009/11/jee6-speaker.jpg"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/jee6-speaker-150x150.jpg" border="0" alt="" style="margin: 0em 5em 1em 5em; float: right;" /></a></p><p>Comme énoncé dans notre résumé de la <a
href="http://blog.xebia.fr/2009/11/24/devoxx-jour-3-la-keynote/" title="keynote du mercredi" >keynote du mercredi</a>, la <em>star</em> de ce Devoxx 2009  est clairement JEE6. Et, au premier rang avec mon superbe t-shirt <em>&laquo;&nbsp;I Love Spring&nbsp;&raquo;</em>, j&#8217;ai pu profiter d&#8217;une <a
href="http://www.devoxx.com/display/DV09/The+Java+EE+6++Platform" title="présentation générale de cette nouvelle version de JEE" >présentation générale de cette nouvelle version de JEE</a> par <a
href="http://www.devoxx.com/display/DV09/Antonio+Goncalves" title="Antonio Goncalves" >Antonio Goncalves</a> et la petite caricature de Rod Johnson <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p><p>&nbsp;</p><h3><a
name="Introduction"></a>Introduction</h3><p>Tout d&#8217;abord quelques chiffres autour de JEE6 :</p><ul><li>une sortie prévue le 10 décembre 2009</li><li>11 ans de JEE (JPE / J2EE / JEE)</li><li>le plus grand intervalle entre 2 versions (3 ans et demi avec JEE5)</li><li>28 spécifications</li></ul><p>Un récapitulatif nous montre les différentes spécifications utilisées (ainsi que quelques technos Java SE 6) avec en jaune les nouvelles spécifications et en noir les montées de version majeures :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/jee6_summary.jpg" border="0" alt="" /></div><p>Il y en a pour tous les goûts : de l&#8217;injection, du back-end et du web et cela a de quoi séduire.</p><p>Certaines spécifications sont marquées comme <em>pruned</em> par JEE6 et pourraient éventuellement disparaître dans JEE7. Nous parlons ici des Entity CMP 2.x, de JAX-RPC, JAX-R et de JSR-88 (Java EE Application Deployment).</p><p>Antonio nous fait ensuite un rapide tour d&#8217;horizon des spécifications marquantes de ce JEE6.</p><h3><a
name="WebProfile"></a>Web Profile</h3><p>Web Profile est un sous-ensemble de la plateforme JEE orienté Web. On compte parmi les spécifications retenues JSF, Servlet, JSP, JPA, JTA, JCDI, @Inject ou bien encore EJB Lite. La liste complète en image :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/web_profile.jpg" border="0" alt="" /></div><h3><a
name="EJBLite"></a>EJB Lite</h3><p>De même que pour Web Profile, EJB Lite est un sous-ensemble d&#8217;EJB 3.1, le tout packagé dans un fichier War. Retenues dans EJB Lite :</p><ul><li>Local Session Bean</li><li>Injection</li><li>CMT / BMT</li><li>Interceptors</li><li>Security</li></ul><p><em>Out</em> donc les Messages Driven Beans, les Remote Interfaces ou bien encore les Timer Services.</p><h3><a
name="ManagedBeans"></a>Managed Beans</h3><p>Les Managed Beans sont de simples POJOs gérés par le container <em>(lightweight model)</em>. Ces beans supportent un ensemble de services basiques <em>(par annotations)</em> dont :</p><ul><li>Injection (<code>@Resource</code> &#8230;)</li><li>Life-Cycle (<code>@PostConstruct</code>, <code>@PreDestroy</code>)</li><li>Interceptor (<code>@Interceptor</code>, <code>@AroundInvoke</code>)</li></ul><pre class="brush: java; title: ; notranslate">
@javax.annotation.ManagedBean
public class MyPojo {
   @Resource
   private DataSource dataSource ;
   @PostConstruct
   private void init() {
      // ...
   }
   @Interceptor(LoggingInterceptor.class)
   public void perform() {
       // ...
   }
}
</pre><h3><a
name="BeanValidation"></a>Bean Validation</h3><p>Antonio nous parle ensuite de Bean Validation, spécification qui va nous permettre de définir des contraintes directement sur nos POJOs par annotations. L&#8217;accroche : <em>constrain once, validate anywhere</em> ! Nous pouvons donc ajouter des validations de type <code>@NotNull</code>, <code>@Size</code> ou autres sur nos propriétés de bean. Il est aussi possible de définir nos propres validateurs.</p><p>Cette spécification définit ainsi un standard de validation pour Java, Bean Validation étant déjà supportée par JPA 2.0 et JSF 2.0. On a ainsi une validation qui part de la base de données et va jusqu&#8217;à la couche cliente.</p><h3><a
name="JAXRS"></a>JAX-RS</h3><p>Un peu de RESTful dans JEE avec JAX-RS qui passe au passage en version 1.1 pour supporter les EJBs. L&#8217;API reste bien sûr orientée POJO et annotations. Voici un exemple d&#8217;intégration de JAX-RS avec un EJB :</p><pre class="brush: java; title: ; notranslate">
@Path(&quot;/users/{userId}&quot;)
@Stateless
public class UserResource {
   @GET @Produces(&quot;image/jpeg&quot;)
   public byte[] getPhoto() {
      // ...
   }
   @GET @Produces(&quot;text/xml&quot;)
   public String getUser(@PathParam(&quot;userId&quot;) String id) {
      // ...
   }
}
</pre><h3><a
name="InjectetCDIContextandDependenc"></a>@Inject et CDI (Context and Dependency Injection)</h3><p>Nous vous avons déjà beaucoup parlé de ces JSRs (<a
href="http://blog.xebia.fr/2009/05/11/inject-standardisation-de-linjection-de-dependances/" title="ici" >ici</a>, <a
href=" http://blog.xebia.fr/2009/01/26/revue-de-presse-xebia-93/#JSRexWebBeansUneJSRDependencyI" title="ici" >ici</a>, <a
href="http://blog.xebia.fr/2009/08/10/revue-de-presse-xebia-121/#FinofficielledelaguerredesJSRd" title="ici" >ici</a> mais aussi <a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#Inject" title="l" >là</a> et encore <a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#WebBeansestmortLonguevieaWeld" title="l" >là</a>).<br
/> <code>@Inject</code>, <code>@Named</code>, <code>@Qualifier</code>, <code>@Scope</code> ou bien encore <code>@Singleton</code>, voici les annotations de JSR-330 que nous allons pouvoir utiliser.<br
/> Quant à CDI (JSR-299), qui utilise @Inject, elle nous propose un set de services utilisables par nos composants EE (servlets, beans&#8230;). Elle nous permet aussi d&#8217;utiliser nos EJBs directement dans JSF en tant que <em>backing beans</em>.<br
/> Évidemment, le contenu de ces spécifications est beaucoup plus large et nous n&#8217;avons ici qu&#8217;un rapide résumé.</p><h3><a
name="Maisaussi"></a>Mais aussi&#8230;</h3><p>Parmi les autres nouveautés, on peut citer en vrac :</p><ul><li>Appels asynchrones avec <code>@Asynchronous</code> avec un retour <code>void</code> ou <code>Future&lt;T&gt;</code> ;</li><li>Annotation <code>@Singleton</code> ;</li><li>Annotation <code>@Cacheable</code> avec toute l&#8217;API de cache <em>(contain, evict ou evictAll)</em> qui permet le support d&#8217;un cache de second niveau ;</li><li><em>Embeddable Container</em>, API qui permet d&#8217;initialiser le container, de récupérer les contextes&#8230; faisant qu&#8217;il est possible de le faire tourner dans un environnement Java SE (par exemple une application Swing), ce ne sera qu&#8217;un JAR dans votre classpath ;</li><li><em>Timer Service</em> pour gérer la planification de tâche avec l&#8217;annotation <code>@Schedule</code> ;</li><li>Fichier <code>web.xml</code> optionnel grâce entre autres aux annotations <code>@WebServlet</code>, <code>@WebFilter</code>,<code>@WebListener</code> ou bien encore <code>@WebInitParam</code> ;</li></ul><h3><a
name="Conclusion"></a>Conclusion</h3><p>L&#8217;opération séduction fonctionne plutôt bien pour JEE6 si l&#8217;on écoute les différents commentaires des conférenciers en sortie de session. La simplicité et facilité d&#8217;utilisation des EJBs, le profile web ou encore les injections ont vraiment convaincus et nombreux sont ceux qui attendent désormais avec impatience ce 10 décembre 2009. En effet, il n&#8217;y a plus qu&#8217;à tester et à voir si JEE6 tient vraiment toutes ses promesses&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/25/devoxx-jour-3-jee6/feed/</wfw:commentRss> <slash:comments>15</slash:comments> </item> <item><title>Devoxx &#8211; Jour 3 &#8211; La keynote</title><link>http://blog.xebia.fr/2009/11/24/devoxx-jour-3-la-keynote/</link> <comments>http://blog.xebia.fr/2009/11/24/devoxx-jour-3-la-keynote/#comments</comments> <pubDate>Tue, 24 Nov 2009 17:09:31 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Divers]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[parleys]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3327</guid> <description><![CDATA[Cette première keynote qui a eu lieu Mercredi marque le début officiel des conférences de Devoxx. Stephan Janssen nous a souhaité la bienvenue en nous précisant quelques chiffres pour Devoxx 2009 : 2500 participants, 737 compagnies représentées comme Xebia par exemple , 132 sessions, 120 speakers, 56 JUGs (dont 10 en France), 36 pays, et [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://www.devoxx.com/"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/logo.jpeg" alt="Devoxx" style="margin: 1em 1em 1em 1em; float: right;" /></a><br
/> Cette première keynote qui a eu lieu Mercredi marque le début officiel des conférences de Devoxx. <a
href="http://www.devoxx.com/display/DV09/Stephan+Janssen" title="Stephan Janssen" >Stephan Janssen</a> nous a souhaité la bienvenue en nous précisant quelques chiffres pour Devoxx 2009 :</p><ul><li>2500 participants,</li><li>737 compagnies représentées comme Xebia par exemple <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ,</li><li>132 sessions,</li><li>120 speakers,</li><li>56 JUGs (dont 10 en France),</li><li>36 pays,</li><li>et 19 partenaires ce qui est moins que d&#8217;habitude.</li></ul><h3><a
name="LanouvelleversiondeParleyscom"></a>La nouvelle version de Parleys.com</h3><p>Stephen Janseen débute en nous expliquant ce que fournira la nouvelle version de Parleys.com. Gratuites et disponibles, le nombre de vidéos augmente sur les serveurs, ce qui est très coûteux. Pour pallier ce problème, il a décidé de publier le plus tôt possible les conférences de Devoxx (ce week end même d&#8217;ailleurs <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). Et avec un abonnement de 49€ pour 6 mois, un utilisateur pourra soit  télécharger toutes les vidéos qu&#8217;il souhaite sur le site soit les regarder directement en streaming. Pour les plus patients, la video sera rendue publique en streaming pour tous au bout d&#8217;un an.<br
/> Dans cette nouvelle version, il sera possible :</p><ul><li>De définir des channels privés ou publiques selon les besoins du publieur,</li><li>De choisir son look&#8217;n'feel,</li><li>D&#8217;ajouter des commentaires sur la piste video.</li></ul><p>Ces nouveautés sont actuellement disponibles sur <a
href="http://beta.parleys.com" title="httpbetaparleyscom" >http://beta.parleys.com</a>.</p><h3><a
name="LakeynotedeJavaEE"></a>La keynote de Java EE 6</h3><p>Cette année à Devoxx, la <em>star</em> est clairement JEE6 avec pas moins de 7 sessions autour de ce sujet :</p><ul><li>Une keynote.</li><li>Une université et un BOF JEE6.</li><li>Une université et un BOF JSF 2.0.</li><li>Une conférence JEE6.</li><li>Une conférence JEE6 et Glassfish V3.</li></ul><p>La keynote met en avant les spécifications les plus <em>hypes</em> de JEE6 avec entre autres :</p><ul><li>EJB 3.1,</li><li>DI 1.0 (@Inject),</li><li>CDI 1.0 (Context and Dependency Injection),</li><li>JSF 2.0 (<a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-jsf-2/" title="vnement que nous avons couvert" >événement que nous avons couvert</a>),</li><li>Bean Validation 1.0,</li><li>Servlet 3.0,</li><li>et JAX-RS 1.1.</li></ul><p>Un article plus complet décrivant JEE6 arrivera très prochainement, l&#8217;information principale de cette keynote étant la date de sortie de JEE6 qui est prévue pour le 10 décembre 2009 <em>(Cf. notre <a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#JDKJEEetMavenlesannoncesdeDevo" title="prcdente revue de presse" >précédente revue de presse</a>)</em>.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/keynote_jee6.jpg" border="0" alt="" /></div><h3><a
name="LakeynotedAdobeavecengueststar"></a>La keynote d&#8217;Adobe avec en guest-star Flash Catalyst</h3><p>Adobe fut à l&#8217;honneur cette année <strike>à l&#8217;instar de JavaFX</strike>. La keynote fut l&#8217;occasion pour l&#8217;éditeur de tenter une opération séduction de la communauté Java avec des annonces autour de Flex, Air, Flash Player Lite et Flash Catalyst.</p><p>Pour commencer, Flash Player 10.1 fut présenté. Cette version a surtout été travaillée pour fonctionner sur téléphone mobile :</p><ul><li>Réduction de la mémoire utilisée.</li><li>Limitation de la consommation de batterie.</li><li>Gestion du multi-touch et de l&#8217;accéléromètre.</li></ul><p><a
href="http://www.webkitchen.be/" title="Serge Jespers" >Serge Jespers</a> a présenté un Flash Player déployé sur mobile : oui, il est enfin possible d&#8217;accéder à Parleys depuis son mobile !</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/keynote_flash.jpg" border="0" alt="" /></div><p>La liste des partenariats entre Adobe et les fabricants de smartphone et d&#8217;OS a considérablement augmenté depuis l&#8217;année dernière. Avec, entre autres, le petit dernier : RIM, l&#8217;OS de BlackBerry. Actuellement, Apple ne fait toujours pas partie de cette liste. Aucun accord n&#8217;a été trouvé pour le moment. Il n&#8217;est donc pas possible de lire une application Flex par exemple depuis le navigateur de son iPhone. En revanche, il est possible de déployer une application Flex sur l&#8217;AppStore et de l&#8217;utiliser. En effet, Adobe a mis en place un <a
href="http://www.insideria.com/2009/10/flash-and-iphone.html" title="moyen" >moyen</a> permettant de convertir un swf en code natif pour l&#8217;iPhone. Des jeux Flash sont d&#8217;ailleurs déjà disponibles sur l&#8217;AppStore.</p><p>Autre annonce, la sortie depuis quelques jours de la béta de Adobe Air 2.0. Cette version fournit les nouveautés suivantes :</p><ul><li>Le support de l&#8217;usb.</li><li>Le support du multi-touch.</li><li>De nouvelles APIs permettant de récupérer la sortie du microphone.</li><li>Une sécurité améliorée pour mieux répondre aux standards des entreprises et gouvernements.</li></ul><p>Nos deux speakers ont ensuite impressionné la salle en réalisant rapidement à partir d&#8217;un dessin issu d&#8217;Illustrator une application Flex comportant des effets, gérant un évènement <em>click</em> sur un bouton, et le plus impressionnant de tous, la gestion d&#8217;une scrollbar provenant d&#8217;un dessin. Cette génération fut ensuite exportée dans Flash Builder 4 en tant que projet Flex. La salle semblait séduite par la démo. Attendons maintenant 2010, pour voir si cette plateforme tiendra ses promesses et si la communauté continuera à suivre.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/24/devoxx-jour-3-la-keynote/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
