<?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; RIA</title> <atom:link href="http://blog.xebia.fr/tag/ria/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>Revue de presse</title><link>http://blog.xebia.fr/2011/11/15/revue-de-presse-xebia-237/</link> <comments>http://blog.xebia.fr/2011/11/15/revue-de-presse-xebia-237/#comments</comments> <pubDate>Tue, 15 Nov 2011 06:12:59 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[citcon]]></category> <category><![CDATA[Flash Player]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[jQuery]]></category> <category><![CDATA[RIA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=9144</guid> <description><![CDATA[La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia. RIA Inquiétude de la communauté Flex suite aux annonces d&#8217;Adobe Le coin de la technique Sortie de JQuery 1.7 Evénements de notre communauté en France et à l&#8217;étranger CITCON London 2011 RIA Inquiétude de la communauté Flex suite aux annonces d&#8217;Adobe La semaine dernière, [...]]]></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 hebdomadaire des écosystèmes Java/JEE proposée par Xebia.</em></p><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/11/15/revue-de-presse-xebia-237/#InquitudedelacommunautFlexsuit">Inquiétude de la communauté Flex suite aux annonces d&#8217;Adobe</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/11/15/revue-de-presse-xebia-237/#SortiedeJQuery">Sortie de JQuery 1.7</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/2011/11/15/revue-de-presse-xebia-237/#CITCONLondon">CITCON London 2011</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="InquitudedelacommunautFlexsuit"></a>Inquiétude de la communauté Flex suite aux annonces d&#8217;Adobe</h4><p>La semaine dernière, il y a eu beaucoup de confusions, et de rumeurs suite aux diverses annonces d&#8217;Adobe concernant Flash, Flex et HTML5. Tout a commencé lorsqu&#8217;Adobe a annoncé la semaine dernière l&#8217;<a
href="http://blogs.adobe.com/flashplatform/2011/11/flash-to-focus-on-pc-browsing-and-mobile-apps-adobe-to-more-aggressively-contribute-to-html5.html" title="abandon de Flash Player pour mobile" >abandon de Flash Player pour mobile</a>. Une vague de rumeurs et de confusions s&#8217;est alors abattue un peu partout, certaines personnes confondant le Flash Player avec la solution AIR pour mobile qu&#8217;Adobe ne compte pas abandonner. Tout aurait pu s&#8217;arrêter là mais c&#8217;était sans compter sur les autres communiqués plutôt maladroits d&#8217;Adobe pour annoncer leur intention de miser sur <a
href="http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html" title="HTML5 dans le futur" >HTML5 dans le futur</a> et de leur intention de fournir <a
href="http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html" title="Flex à la communauté" >Flex à la communauté</a>. Ce qui a provoqué de vives réactions au sein de la communauté Flex, le plus parlant est bien entendu le <a
href="http://www.flex-tutorial.fr/2011/11/14/point-important-sur-les-decisions-dadobe-sur-le-futur-de-la-flash-platform-et-de-flex/" title="billet de Fabien Nicollet" >billet de Fabien Nicollet</a> auteur du blog Flex Tutorial qui montre bien l&#8217;inquiétude et l&#8217;incompréhension face à ces annonces. Finalement, suite à la panique engendrée, <a
href="http://www.riagora.com/" title="Michael Chaize" >Michael Chaize</a>, évangéliste de la plateforme Flash chez Adobe France a pris l&#8217;initiative de réaliser un communiqué non officiel à la communauté francophone pour la rassurer. Dans ce qui peut être dit :</p><ul><li>Adobe n&#8217;abandonnera pas Flex, une équipe Adobe &#8211; diminuée certes &#8211; travaillera en collaboration avec la communauté et d&#8217;autres sociétés utilisatrices de Flex,</li><li>La totalité du projet Flex sera donnée à la communauté mais on ne sait pas encore à quelle fondation open source elle appartiendra,</li><li>Adobe devrait donner plus d&#8217;informations sur Flex au moment de la sortie de la release de la version 4.6 qui est prévue pour le 29 Novembre 2011.</li></ul><p>Au delà de la communauté francophone, on peut voir aussi beaucoup de réactions au travers des commentaires et réactions sur Twitter. Ce qui commence à faire réagir Adobe qui s&#8217;active pour réaliser une communication plus claire. Cette maladresse semble avoir ébranlé la communauté Flex. Espérons que les annonces à venir permettront de rassurer tout le monde et que l&#8217;ouverture de Flex à la communauté soit le début de belles initiatives.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SortiedeJQuery"></a>Sortie de JQuery 1.7</h4><p>La nouvelle version de la très populaire librairie Javascript est <a
href="http://blog.jquery.com/2011/11/03/jquery-1-7-released/" title="sortie" >sortie</a> en début de mois avec son lot de nouveautés.</p><p>Au rang des changements, on notera l&#8217;apparition d&#8217;une nouvelle API de gestion des évènements. Celle-ci remplace et unifie les méthodes existantes de <em>binding</em> d&#8217;évènements (<code>bind()</code>, <code>click()</code>, <code>delegate()</code> et <code>live()</code>) par la méthode <code>on()</code>, et d&#8217;<em>unbinding</em> (<code>unbind()</code>, <code>undelegate()</code> et <code>die()</code>) par la méthode <code>off()</code>.<br
/> Cette nouvelle méthode <code>on</code> est définie par la signature suivante : <code>on(events [,selector] [,data], handler)</code> (les éléments entre crochets sont optionnels). Elle permet donc d&#8217;associer une fonction de <em>callback</em> (<code>handler</code>) à un ou plusieurs évènement(s) déclenché(s) dans l&#8217;objet sur lequel la méthode <code>on</code> est appelé. Il est aussi possible de filtrer les éléments sur lesquels cette méthode s&#8217;applique à l&#8217;aide d&#8217;un <em>css selector</em> et de passer des données à la fonction de <em>callback</em>.<br
/> La fonction <code>off</code> de son côté possède la signature <code>off([events], [,selector] [,handler])</code> permettant de supprimer des <em>bindings</em>. Les méthodes de <em>binding</em> habituelles sont encore présentes pour des raisons de rétro-compatibilité mais sont désormais dépréciées.</p><p>Cette nouvelle API vient avec une nouveau moteur de gestion des évènements qui amène une amélioration sensible des performances dans la majorité des cas.</p><p>Pour ce qui est des autres nouveautés :</p><ul><li>amélioration du support de HTML5,</li><li>un fonctionnement plus intuitif des méthodes <code>slideToggle()</code> et <code>fadeToggle()</code>,</li><li>le support de l&#8217;API <a
href="https://github.com/amdjs/amdjs-api/wiki/AMD" title="Asynchronous Module Definition" >Asynchronous Module Definition</a> permettant la définition de modules qui pourront être chargées de manière asynchrone,</li><li>de nombreuses autres améliorations et corrections de bug à voir dans le <a
href="http://blog.jquery.com/2011/11/03/jquery-1-7-released/" title="billet dannonce" >billet d&#8217;annonce</a>.</li></ul><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evénements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="CITCONLondon"></a>CITCON London 2011</h4><p>La <a
href="http://www.citconf.com/" title="CITCON" >CITCON</a> (Continuous Integration and Testing Conference) s&#8217;est déroulé du 11 au 12 novembre à Londres dans les locaux de <a
href="http://skillsmatter.com/" title="Skills Matter" >Skills Matter</a>. Comme son nom l&#8217;indique, cette conférence est dédiée à tout ce qui touche à l&#8217;intégration continue et aux tests mais c&#8217;est avant tout un événement de type &laquo;&nbsp;Open Space&nbsp;&raquo;.</p><p><strong> Le principe de la CITCON</strong></p><p>Le premier jour de la conférence débute à 18h. Tous les participants (environ une centaine) sont invités à proposer un sujet (débats, présentation technique, démonstration d&#8217;un outil, &#8230;). Un court résumé est rédigé sur un post-it qui sera ensuite collé sur un immense tableau représentant le planning de la conférence :</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2011/11/planning.jpeg"><img
src="http://blog.xebia.fr/wp-content/uploads/2011/11/planning-225x300.jpg" alt="" title="planning" width="225" height="300" class="aligncenter size-medium wp-image-9152" /></a></div><p>Le planning s&#8217;est très vite rempli, il y avait 5 salles à notre disposition pour les 5 slots horaires prévus (1 heure par slot). Vous l&#8217;aurez compris, le contenu de la conférence est entièrement créé par la communauté. Elle est libre de proposer les sujets mais également l&#8217;heure à laquelle ils seront abordés (on parle de planning refactoring, tout le monde avait la possibilité de changer les post-it de place). Comme 5 sujets sont animés en parallèle, les participants avaient la possibilité de quitter une salle pour se rendre dans une autre si finalement la discussion ne les satisfaisait pas, c&#8217;est ce qu&#8217;on appelle la <em>règle des deux pieds</em>.</p><p><strong>Les sujets abordés</strong><br
/> Voici une liste non exhaustive des discussions animées par les participants.</p><ul><li><a
href="http://citconf.com/wiki/index.php?title=Root_Cause_Analysis" title="Root Cause Analysis" >Root Cause Analysis</a> by Squirrel</li><li><a
href="http://citconf.com/wiki/index.php?title=Aramis:_Why_do_projects_fail" title="Aramis Why do projects fail" >Aramis: Why do projects fail</a> by Eric Lefevre-Ardent.</li><li><a
href="http://citconf.com/wiki/index.php?title=Dev_and_Ops_and_System_Ops_oh_my" title="Dev and Ops and System Ops oh my" >Dev and Ops and System Ops oh my</a> by Squirrel</li><li><a
href="http://citconf.com/wiki/index.php?title=Configuration_Changes" title="Configuration Changes" >Configuration Changes</a></li><li><a
href="http://citconf.com/wiki/index.php?title=What_can_we_learn_from_CI" title="What can we learn from CI" >What can we learn from CI</a> by Benjamin Mitchel</li><li><a
href="http://citconf.com/wiki/index.php?title=Do_you_use_your_tests_in_prod" title="Do you use your tests in prod" >Do you use your tests in prod</a></li><li><a
href="http://citconf.com/wiki/index.php?title=Radiators" title="Radiators" >Radiators</a> by <a
href="http://citconf.com/wiki/index.php?title=Tom_Denley" title="Tom Denley" >Tom Denley</a></li><li>How to move an agile team from Continuous Integration to Continuous Deployment</li><li>To feature branch or not to feature branch</li><li>Are you satisfied of your build tools</li><li>TDD : Hands On</li><li>&#8230;</li></ul><p>N&#8217;ayant pu assister à toutes les présentations, je vous livre quelques informations (il est difficile de retranscrire l&#8217;intégralité des discussions).</p><p><strong>TDD : Hands On</strong><br
/> La session TDD animée par <strong>Steve Freeman</strong> (l&#8217;auteur du livre <em>Growing Object-Oriented Software, Guided by Tests</em>) était très intéressante. Un des participants voulait comprendre comment mettre en place le Test Driven Development dans son projet. Pour ce faire, il a projeté sur le video-projecteur une méthode écrite en Java non testée. Steve Freeman a guidé l&#8217;assistance de bout en bout. De la création de la classe de tests jusqu&#8217;à l&#8217;injection de dépendances en passant par l&#8217;écriture de tests unitaires mettant en exergue les règles de gestion de la classe à refactorer.</p><p><strong>Are you satisfied of your build tools ?</strong><br
/> Un premier tour de table était destiné à lister tous les outils de builds utilisés au quotidien par les participants. Les noms de Ant, Gradle, Maven sont évidemment sortis assez vite, mais il existe toujours des projets qui utilisent Make. Nous avons abordés les outils connexes que sont Jenkins, Teamcity et des plugins comme m2eclipse.</p><p><strong>La conférence s&#8217;achève</strong><br
/> En fin d&#8217;après midi, nous voilà tous réunis pour exprimer en quelques mots les moments forts et les souvenirs que nous garderons de CITCON 2011. Un tirage au sort a permis à quelques chanceux de gagner des livres tels que Agile Testing et Domain Specific Language.</p><p>C&#8217;était un réel plaisir d&#8217;assister à la CITCON, énormément de passionnés venant parfois de très loin. Il y a forcément une certaine déception de ne pouvoir assister à toutes les présentations, par exemple à celle où un participant a construit un robot pour tester Angry Birds automatiquement !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/11/15/revue-de-presse-xebia-237/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2011/05/31/revue-de-presse-xebia-213/</link> <comments>http://blog.xebia.fr/2011/05/31/revue-de-presse-xebia-213/#comments</comments> <pubDate>Tue, 31 May 2011 08:02:57 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[Jigsaw]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[What's Next]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=7921</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. RIA JavaFx est mort, vive JavaFx 2 Bêta Le coin de la technique Mark Reinhold liste les besoins du futur système de modules Evènements de notre communauté en France et à l&#8217;étranger What&#8217;s Next RIA JavaFx est mort, vive JavaFx 2 Bêta Vous souvenez-vous [...]]]></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ée par Xebia.</em></p><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/05/31/revue-de-presse-xebia-213/#JavaFxestmortviveJavaFxBta">JavaFx est mort, vive JavaFx 2 Bêta</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/05/31/revue-de-presse-xebia-213/#MarkReinholdlistelesbesoindufu">Mark Reinhold liste les besoins du futur système de modules</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/2011/05/31/revue-de-presse-xebia-213/#WhatsNext">What&#8217;s Next</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="JavaFxestmortviveJavaFxBta"></a>JavaFx est mort, vive JavaFx 2 Bêta</h4><p>Vous souvenez-vous de JavaFx ? Cette tentative de Sun de développer un nouvel RIA pour réaliser des interfaces riches sous téléphone mobile et desktop, basé sur un nouveau langage Fx Script, et ainsi concurrencer les ténors comme Flex, Android ou IOS. Annoncée à la dernière conférence JavaOne en septembre 2010, Oracle semble avoir suffisamment d’intérêt pour JavaFx pour développer une version 2 basée sur une toute nouvelle API en pur Java.</p><p>Ainsi, la version 2 vient <a
href="http://download.oracle.com/javafx/2.0/release_notes/jfxpub-release_notes.htm" title="de sortir en Bta" >de sortir en Bêta</a> et force est de constater que le site qui lui est dédié est déjà bien documenté et les nouveautés sont nombreuses. Parmi les plus importantes, on peut noter:</p><ul><li>Une API en Java. Celle-ci a été conçue pour tourner éventuellement sur d&#8217;autres langages JVM comme JRuby ou Scala.</li><li>Un nouveau moteur graphique 3D  tirant parti du GPU des cartes graphiques.</li><li>Un nouveau moteur dédié au multimédia basé sur GStreamer.</li><li>Un composant web utilisant WebKit pour intégrer du contenu HTML dans JavaFx.</li><li>Une large palette de composants graphiques de haut niveau, comme les graphiques, les tableaux, les menus, etc. Une API est même fournie afin de permettre à tous de créer leurs propres composants.</li><li>Une interopérabilité avec Swing.</li></ul><p>Pour le moment, les applications JavaFx ne tournent que sur Windows, mais, comme l&#8217;indique Richard Bair dans <a
href="http://fxexperience.com/2011/05/is-javafx-2-0-cross-platform/" title="un post" >un post</a> destiné à rassurer ceux qui s&#8217;inquiétaient de cet aspect, &laquo;&nbsp;JavaFX will be cross platform&nbsp;&raquo;. Il existe un plugin pour NetBeans alors que pour les autres IDE, il faut récupérer le SDK et builder le projet avec Ant.<br
/> Même si beaucoup sont sceptiques quant à l&#8217;avenir de JavaFx, Oracle suit <a
href="http://javafx.com/roadmap/" title="sa roadmap" >sa roadmap</a>: la version finale devrait arriver d&#8217;ici la fin de l&#8217;année. En attendant, vous pouvez toujours lire <a
href="http://download.oracle.com/javafx/2.0/architecture/jfxpub-architecture.htm" title="la doc darchitecture" >la doc d&#8217;architecture</a> récemment mise à jour.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="MarkReinholdlistelesbesoindufu"></a>Mark Reinhold liste les besoins du futur système de modules</h4><p>A l&#8217;origine, le <a
href="http://openjdk.java.net/projects/jigsaw/" title="projet Jigsaw" >projet Jigsaw</a> devait permettre d&#8217;alléger le JDK en permettant de le modulariser et ainsi de n&#8217;utiliser que les composants dont a réellement besoin une application. Le projet change avec le temps et vise maintenant, à terme, un système de modules permettant:</p><ul><li>en interne au JDK, la convergence entre Java ME et SE;</li><li>en externe, de mettre à disposition des applications le système de modules qui était destiné à l&#8217;origine aux seules entrailles du JDK.</li></ul><p>Mark Reinhold, l&#8217;architecte en chef Java chez Oracle, <a
href="http://mreinhold.org/blog/module-system-requirements" title="annonce" >annonce</a> sur son blog qu&#8217;il a ébauché un <a
href="http://openjdk.java.net/projects/jigsaw/doc/draft-java-module-system-requirements-12" title="document de travail" >document de travail</a> destiné à lister les besoins d&#8217;un système standard de modules pour Java. Ce document sera l&#8217;un des points de départ d&#8217;une éventuelle JSR &laquo;&nbsp;Java Platform Module System&nbsp;&raquo; mentionnée dans la <a
href="http://www.jcp.org/en/jsr/detail?id=337" title="JSR Umbrella de Java 8" >JSR Umbrella de Java 8</a>. Vu de l’extérieur, on ne peut qu’être étonné de voir qu&#8217;un projet débuté il y a de cela plusieurs années en soit encore à tâtonner de la sorte. D&#8217;autant que le positionnement par rapport à OSGI, qui est lui déjà fonctionnel depuis bien longtemps, semble encore se chercher.<br
/> Comme c’était le but, plusieurs réponses ont été faites à la publication de cette ébauche. Les 2 plus abouties sont les suivantes:</p><ul><li><a
href="http://osgithoughts.blogspot.com/2011/05/java-se-8-modularity-requirements.html" title="Celle" >Celle</a> de David Bosschaert. Celui-ci revient sur les bénéfices que nous pourrons tirer d&#8217;un système de modularisation directement dans Java. Pour lui, cela permettra de sensibiliser les développeurs à ces problématiques pour évoluer plus facilement ensuite vers OSGI. Il envisage même qu&#8217;il puisse être possible de se servir des implémentations existantes d&#8217;OSGI comme base de l&#8217;implémentation du Project Jigsaw. Nous n&#8217;avons pas fini de nous demander quelles sont les différences entre les 2 ! De plus, il soulève le point du format de définition des modules: il milite pour un format lisible par les humains, une sorte de MANIFEST.MF++ basé sur un DSL, alors qu&#8217;il est possible que ce format soit finalement du java compilé.</li><li>David Lloyd, lui, compte exposer son analyse en détail à travers une série de posts sur le blog de JBoss. <a
href="http://in.relation.to/Bloggers/ModulesInJDK8AndProjectJigsawRequirementsReviewPart1" title="La premire partie" >La première partie</a> de cette analyse correspond au 1er chapitre de l&#8217;ébauche de Reinhold. Lloyd y revient sur les notions de versioning, les relations entre les packages et les classloaders, le code natif et enfin la sécurité. Cette dernière est pour lui la grande absente même si les choses vont globalement dans le bon sens. Ses analyses de la suite du document de Reinhold devraient suivre.</li></ul><p>Le projet Jigsaw semble donc repartir sur des bases qui, sans être nouvelles, se trouvent renforcées et élargies. Mais n&#8217;espérons pas le voir avant Java 8, et encore !</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="WhatsNext"></a>What&#8217;s Next</h4><p>Nous vous l&#8217;avions <a
href="http://blog.xebia.fr/2011/05/25/xebia-a-la-whats-next/" title="annoncé ici-même" >annoncé ici-même</a>: les 26 et 27 mai derniers se tenait la conférence <a
href="http://www.whatsnextparis.com/" title="What's Next" >What&#8217;s Next</a> au Grand Rex à Paris. Organisée par <a
href="http://www.zenika.com/" title="Zenika" >Zenika</a>, cette conférence gravitait autour des technologies et des outils de demain pour la plateforme Java et son écosystème. La revue de presse est l&#8217;occasion de vous faire un rapide retour sur l&#8217;évènement qui sera complété très prochainement par un article plus détaillé.</p><p>Nous avons d&#8217;abord eu droit à des conférences théoriques:</p><ul><li>La Keynote d&#8217;<strong>Adrian Colyer</strong> sur l&#8217;actualité de SpringSource, très orienté <a
href="http://www.cloudfoundry.org/" title="CloudFoundry" >CloudFoundry</a>.</li><li>Une introduction au langage <a
href="http://clojure.org/" title="Clojure" >Clojure</a> par <strong>Howard Lewis Ship</strong>: attention syntaxe difficile, idéale pour les utilisateurs de Lisp.</li><li>La gestion de la mémoire par <strong>Jevgeni Kabanov</strong>: du CPU aux différents GC, en finissant par la plateforme <a
href="http://www.azulsystems.com/products/zing/whatisit" title="Azul Zing" >Azul Zing</a> dépourvue de pause GC.</li><li>L&#8217;explication de ce que sont les WebSockets et de leur avantage par <strong>Brad Drysdale</strong>.</li><li>Java, son histoire et son avenir par <strong>Neal Gafter</strong>, suivi d&#8217;une courte présentation sur <a
href="http://www.windowsazure4j.org/" title="Windows Azure" >Windows Azure</a>, la plateforme PaaS <em>Java-ready</em> de Microsoft.</li><li>Un cours magistral d&#8217;architecture par <strong>Theo Schlossnagle</strong>: couplage lâche, isolation des services, programmation défensive et monitoring en sont les maîtres-mots.</li><li><a
href="http://akka.io" title="Akka" >Akka</a> et le modèle acteur, une autre façon d&#8217;aborder le développement orienté évènement avec un système scalable et disponible par <strong>Jonas Bonér</strong>.</li><li>Comment améliorer l&#8217;intégration continue par <strong>Kohsuke Kawaguchi</strong>, beaucoup d&#8217;idées et de propositions pour simplifier la vie du développeur.</li></ul><p>Mais nous avons aussi eu le droit à notre lot de démonstrations, parfois captivantes :</p><ul><li>Un tour d&#8217;horizon d&#8217;<a
href="http://www.eclipse.org/orion/" title="Eclipse Orion" >Eclipse Orion</a>, l&#8217;IDE en ligne par <strong>Boris Bokowski</strong>. La performance de l&#8217;éditeur est impressionnante pour son moteur JavaScript, mais ses fonctionnalités en font plutôt un éditeur de texte basique.</li><li><strong>Jags Ramnarayan</strong> nous présente <a
href="http://community.gemstone.com/display/sqlfabric/SQLFabric" title="SQLFabric" >SQLFabric</a> en quelques slides et se lance dans une démonstration de création d&#8217;une base de données en SQL et pourtant dans le cloud, un no NoSQL.</li><li><strong>Rob Harrop</strong> fait une démonstration de <a
href="http://www.rabbitmq.com/" title="RabbitMQ" >RabbitMQ</a> en utilisant plusieurs langages de programmation, il se connecte même en Telnet à la file de messages, pour finir par une application en WebSocket avec NodeJS.</li><li><strong>Michaël Chaize</strong> développe un client Twitter en <a
href="http://www.adobe.com/products/flex/mobile/" title="Flex Mobile" >Flex Mobile</a>, pour lister les tweets sur la What&#8217;s Next. Il le déploie ensuite sur plusieurs supports Tablette et Mobile Android.</li><li><strong>Shay Banon</strong> a quant à lui tout fait dans un terminal pour nous démontrer les possibilités d&#8217;<a
href="http://www.elasticsearch.org/" title="Elastic Search" >Elastic Search</a>, un serveur REST au dessus de Lucene et fonctionnant en cluster avec partitionnement et réplication.</li></ul><p>Vous l&#8217;aurez compris, cette conférence fut riche en enseignements. Quelques tendances ressortent de ces deux jours:</p><ul><li>La scalabilité est sur toutes les lèvres.</li><li>Nous avons beaucoup parlé et vu des applications HTML5.</li><li>NodeJS émerge vraiment comme solution de premier ordre.</li><li>De même, le langage Scala suscite un intérêt grandissant.</li><li>Et enfin, et ce malgré la méfiance de Theo Schlossnagle, le cloud et le NoSQL se démocratisent.</li></ul><p>Merci à <a
href="http://www.zenika.com/" title="Zenika" >Zenika</a> pour l&#8217;organisation de cette belle conférence et à l&#8217;année prochaine pour la What&#8217;s Next 2012.</p><p>En attendant l&#8217;article plus détaillé, vous pouvez lire les comptes-rendus sur les blogs de <a
href="http://www.touilleur-express.fr/2011/05/27/whats-next-compte-rendu-de-la-premiere-journee/" title="Nicolas Martignole" >Nicolas Martignole</a> ou de <a
href="http://blog.courtine.org/2011/05/26/premiere-journee-a-la-whats-next/" title="Benot Courtine" >Benoît Courtine</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/05/31/revue-de-presse-xebia-213/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Application hors-ligne avec HTML5 &#8211; le manifest</title><link>http://blog.xebia.fr/2010/12/02/application-hors-ligne-avec-html5-le-manifest/</link> <comments>http://blog.xebia.fr/2010/12/02/application-hors-ligne-avec-html5-le-manifest/#comments</comments> <pubDate>Thu, 02 Dec 2010 21:53:06 +0000</pubDate> <dc:creator>Séven Le Mesle</dc:creator> <category><![CDATA[Non classé]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[cache]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[manifest]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=6054</guid> <description><![CDATA[Dans le train, l&#8217;avion, plus généralement en déplacement, combien se retrouvent perdus sans la précieuse connexion à internet ? Rappelez vous la dernière fois que vous avez voulu consulter un article ou une documentation en ligne. Prenons le cas d&#8217;un blog : vous voulez pouvoir le lire en déplacement, voire même pouvoir éditer vos articles [...]]]></description> <content:encoded><![CDATA[<p>Dans le train, l&#8217;avion, plus généralement en déplacement, combien se retrouvent perdus sans la précieuse connexion à internet ? Rappelez vous la dernière fois que vous avez voulu consulter un article ou une documentation en ligne. Prenons le cas d&#8217;un blog : vous voulez pouvoir le lire en déplacement, voire même pouvoir éditer vos articles en cours de rédaction. Avec le manifest de cache HTML5, il est possible de rendre disponible hors-ligne les interfaces web. Dans cet article, nous étudierons la mise en pratique d&#8217;un manifest de cache appliquée à un blog.</p><h3> Sommaire</h3><ul><li><a
href="http://blog.xebia.fr/2010/12/02/application-hors-ligne-avec-html5-le-manifest/#Principedefonctionnement">Principe de fonctionnement</a></li><li><a
href="http://blog.xebia.fr/2010/12/02/application-hors-ligne-avec-html5-le-manifest/#Ecrirelemanifestducache">Écrire le manifest du cache</a></li><li><a
href="http://blog.xebia.fr/2010/12/02/application-hors-ligne-avec-html5-le-manifest/#Integererlemanifestalapplication">Intégrer le manifest à l&#8217;application</a></li><li><a
href="http://blog.xebia.fr/2010/12/02/application-hors-ligne-avec-html5-le-manifest/#Gererlamiseajourducache">Gérer la mise à jour du cache</a></li><li><a
href="http://blog.xebia.fr/2010/12/02/application-hors-ligne-avec-html5-le-manifest/#GererlecacheenJavaScript">Gérer le cache en JavaScript</a></li><li><a
href="http://blog.xebia.fr/2010/12/02/application-hors-ligne-avec-html5-le-manifest/#Allerplusloinaveclemanifest">Aller plus loin avec le manifest</a></li><li><a
href="http://blog.xebia.fr/2010/12/02/application-hors-ligne-avec-html5-le-manifest/#Notesdesecurite">Notes de sécurité</a></li><li><a
href="http://blog.xebia.fr/2010/12/02/application-hors-ligne-avec-html5-le-manifest/#Conclusion">Conclusion</a></li></ul><h3><a
name="Principedefonctionnement"></a>Principe de fonctionnement</h3><p>Une page HTML intègre une référence vers un fichier manifest. Celui-ci liste les URL des ressources à mettre dans le cache. Quand le navigateur charge la page pour la première fois, il va télécharger toutes les URL du manifest et les stocke dans le cache. Tous les chargements suivants se feront directement à partir du cache sans passer par le serveur.</p><p>En parallèle, le navigateur va vérifier la version de son fichier manifest auprès du serveur. En cas de mise à jour, le navigateur va télécharger l&#8217;intégralité des ressources dans un nouveau cache, qui sera utilisé pour tous les chargements suivants.</p><p>Que le navigateur soit en ligne ou hors-ligne, il n&#8217;y a plus aucun impact sur l&#8217;affichage de la page qui vient directement du cache.<br
/> Maintenant que vous connaissez le principe de fonctionnement passons à la première étape.</p><h3><a
name="Ecrirelemanifestducache"></a>Écrire le manifest du cache</h3><p>Il s&#8217;agit d&#8217;un fichier texte encodé en UTF-8 qui contient une liste d&#8217;URLs réparties en trois sections :</p><ul><li>CACHE : C&#8217;est la section par défaut, elle contient les URLs que le navigateur doit impérativement mettre en cache.</li><li>NETWORK : Liste les URLs qui doivent toujours être consultées sur le serveur. Ce sera par exemple le cas des ressources AJAX et des ressources externes (publicité, &#8230;).</li><li>FALLBACK :  Cette section permet d&#8217;associer des préfixes d&#8217;URL à des ressources alternatives utilisées en cas d&#8217;indisponibilité.</li></ul><p>Passons maintenant à la pratique : la première chose à faire est de créer notre cache manifest.</p><pre class="brush: java; title: ; notranslate">
CACHE MANIFEST
# Version 1 25/09/2010
images/img01.gif
images/img02.gif
images/img03.gif
styles/default.css
lib/demo.js
demo.html
offline.html
NETWORK:
/online.html
FALLBACK:
/online  offline.html
</pre><p>Le navigateur doit donc conserver en cache les ressources statiques du site (images, css, javascript), ainsi que la page demo.html.<br
/> La page online.html sera toujours consultée sur le serveur. En cas d&#8217;indisponibilité, le navigateur affichera la page offline.html à la place du service en ligne.</p><p>Par défaut, seules les ressources listées dans le cache explicite sont disponibles. Par exemple : si vous oubliez de lister une image, celle-ci ne sera pas affichée dans la page. Il faut donc lister toutes les ressources, ou bien ajouter le joker &#8216;*&#8217; dans la section NETWORK afin de permettre le téléchargement des ressources manquantes. Les ressources listées dans la section CACHE sont toujours prioritaires sur les autres. De ce fait, le joker n&#8217;a aucune incidence sur la mise en cache, il permet seulement d&#8217;accéder à d&#8217;autres ressources, y compris sur des domaines différents.</p><h3><a
name="Integererlemanifestalapplication"></a>Intégrer le manifest à l&#8217;application</h3><p>Pour activer le cache, il reste maintenant à ajouter le fichier dans l&#8217;application web et à référencer son URL dans l&#8217;attribut <code>manifest='cache-manifest.mf'</code> en s&#8217;assurant qu&#8217;il est encodé en UTF-8 et que le serveur lui donnera bien le type mime &#8216;text/cache-manifest&#8217;.</p><p>web.xml:</p><pre class="brush: xml; title: ; notranslate">
&lt;mime-mapping&gt;
    &lt;extension&gt;mf&lt;/extension&gt;
    &lt;mime-type&gt;text/cache-manifest&lt;/mime-type&gt;
&lt;/mime-mapping&gt;
</pre><p>Pages HTML:</p><pre class="brush: xml; title: ; notranslate">
&lt;html manifest=&quot;cache-manifest.mf&quot;&gt;
...
</pre><p>Au premier chargement d&#8217;une page, le navigateur va construire son cache en téléchargeant toutes les ressources listées dans le manifest et afficher la page. Après quoi, le navigateur affichera toujours cette page à partir du cache.<br
/> Notez bien que toute page référençant le manifest est ajoutée dans le cache explicite associé à ce dernier. Dans le cas de la page <code>online.html</code>, il ne faut donc surtout pas y référencer le fichier manifest.</p><p>Nous avons maintenant une première démonstration fonctionnelle que l&#8217;on peut qualifier de preuve de concept. Nous souhaitons modifier la page <code>demo.html</code> pour y ajouter un peu de contenu. Malheureusement, vous l&#8217;aurez compris, la modification du fichier html sur le serveur n&#8217;a aucun effet immédiat.</p><h3><a
name="Gererlamiseajourducache"></a>Gérer la mise à jour du cache</h3><p>Souvenez vous, le navigateur vérifie toujours la version du fichier manifest au chargement des pages du cache. Si le manifest n&#8217;est plus à jour, le navigateur va le récupérer et va télécharger l&#8217;ensemble des ressources dans une nouvelle version du cache en tache de fond. Au prochain chargement de la page, le navigateur utilisera le cache le plus à jour et vous pourrez constater la prise en compte de vos modifications.</p><p>Attention, les ressources du manifest sont téléchargées en outrepassant les directives de cache HTTP. A contrario, le fichier manifest est géré dans un cache standard du navigateur, ce qui signifie qu&#8217;il respecte les standards de mise en cache. Si le serveur est configuré pour forcer la mise en cache pendant trois semaines du fichier manifest, il vous faudra attendre autant de temps avant de pouvoir voir la moindre modification de votre interface.</p><p>En développement, l&#8217;interface change régulièrement, il donc est impératif d&#8217;interdire la mise en cache du fichier à l&#8217;aide du header HTTP <code>Cache-Control</code>. Pour la production, les directives de cache peuvent-être plus agressives (24h par exemple) car l&#8217;interface évolue moins vite. Les en-têtes HTTP peuvent-être positionnées à l&#8217;aide d&#8217;un filtre sur l&#8217;URL du manifest ou d&#8217;une Servlet générant le manifest.</p><p>A chaque modification du fichier manifest détectée par le navigateur, celui-ci re-télécharge l&#8217;intégralité du cache. Pour garantir la mise à jour du cache à chaque nouvelle version de l&#8217;application, il faut donc modifier le fichier manifest. C&#8217;est le rôle du commentaire <code># version 1 25/09/2010</code> qui changera à chaque livraison ou déploiement de l&#8217;application.</p><p>Le site est donc consultable hors-ligne et nous sommes capables de forcer la mise à jour du cache. L&#8217;utilisateur pourra continuer à consulter le site et verra une page d&#8217;erreur appropriée s&#8217;il tente d&#8217;accéder à des services indisponibles.  Pour un site statique c&#8217;est très bien mais quand on parle d&#8217;application, on pense à quelque chose de dynamique.</p><h3><a
name="GererlecacheenJavaScript"></a>Gérer le cache en JavaScript</h3><p>Pour un blog dont le contenu évolue lentement, il est envisageable de s&#8217;assurer que la version du manifest soit changée à chaque nouvel article. Le manifest devient alors un service généré par l&#8217;application qui change le commentaire de version à chaque nouvel article.<br
/> Malheureusement, l&#8217;utilisateur ne pourra voir le nouvel article qu&#8217;à son deuxième passage sur le site, une fois que le cache aura été mis à jour. Un début de solution est d&#8217;utiliser l&#8217;API JavaScript pour recharger automatiquement la page lorsque le nouveau cache est prêt.</p><p>L&#8217;objet <code>window.applicationCache</code> va nous permettre de :</p><ul><li>Suivre l&#8217;activité et l&#8217;état du cache associé au document courant.</li><li>Lancer le téléchargement de la nouvelle version du cache si le manifest a changé.</li><li>Activer la nouvelle version du cache pour que les prochains chargements l&#8217;utilisent.</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;script&gt;
// Activer le nouveau cache quand il est disponible et recharger la page
window.applicationCache.addEventListener('updateready', function (){
  	window.applicationCache.swapCache();
  	alert('mise a jour du cache');
  	window.location.reload();
}, false);
// Notifier les erreurs
window.applicationCache.addEventListener('error', function (evt){
	alert('Erreur du cache : ' + evt);
}, false);
// Vérification de la version du manifest
window.applicationCache.addEventListener('checking', function (evt){
	alert('Vérification du cache : ' + evt);
}, false);
// Télécharger le nouveau cache quand le manifest a changé
window.applicationCache.addEventListener('obsolete', function (evt){
	alert('Le cache est obsolète : ' + evt);
	window.applicationCache.update();
}, false);
// Le manifest n'a pas changé
window.applicationCache.addEventListener('noupdate', function (evt){
	alert('Pas de mise à jour du cache : ' + evt);
}, false);
&lt;/script&gt;
</pre><p>Ce code rechargera automatiquement la page du navigateur lorsque le cache aura été mis à jour. Le lecteur du blog peut maintenant voir rapidement le nouvel article ou tout du moins son introduction. Pour pouvoir lire l&#8217;article hors-ligne, il faudra qu&#8217;il pense à afficher la page au moins une fois pour la mettre en cache.</p><h3><a
name="Allerplusloinaveclemanifest"></a>Aller plus loin avec le manifest</h3><p>La solution peut être de créer un service générant le manifest en changeant, d&#8217;une part, de version à chaque nouvel article publié et, d&#8217;autre part, en listant les URLs des derniers articles dans le cache explicite. Le chargement prendra plus de temps mais le lecteur pourra consulter l&#8217;article hors-ligne sans plus d&#8217;effort.</p><p>Attention, les pages implicites qui déclarent le manifest sans être listées dans ce dernier y sont ajoutées et seront téléchargées elles aussi lors de la mise à jour du cache.<br
/> Soyez prudent quand vous activez le manifest et ne multipliez pas les pages. Dans le cas du blog par exemple les pages affichant les articles ne doivent pas utiliser le manifest. Le lecteur ne souhaite certainement pas télécharger l&#8217;ensemble des articles qu&#8217;il a déjà lu à chaque nouvel article.</p><p>Cette solution minimaliste peut convenir à certains, mais elle n&#8217;est pas applicable pour un site dont le contenu change beaucoup ou pour un site à fort trafic tant l&#8217;utilisation du cache est mauvaise.</p><p>Pour optimiser l&#8217;utilisation du cache, il faut le considérer comme la vue statique de l&#8217;application qui évoluera au gré des changements d&#8217;interface et non au gré du contenu. Le contenu dynamique devra être servi par des requêtes asynchrones. Pour la mise en cache et le fonctionnement il faudra utiliser les nouvelles API JavaSript : <code>LocalStorage</code> et <code>document.onLine</code>. De cette manière, le manifest redeviendra un fichier statique évoluant au gré des versions de l&#8217;application.</p><p>Pour garantir l&#8217;indexation du contenu par les moteurs de recherche et assurer la compatibilité avec d&#8217;anciens navigateurs, prévoyez toujours un mode dégradé sans manifest ni contenu asynchrone.</p><h3><a
name="Notesdesecurite"></a>Notes de sécurité</h3><p>Notez que le cache est maintenu par nom de domaine. Il n&#8217;existe qu&#8217;une seule instance du même manifest pour un serveur. Pour les serveurs hébergeant plusieurs applications, l&#8217;utilisation d&#8217;hôte virtuel est plus que conseillée.</p><p>Le cache ne doit jamais contenir de données confidentielles. Les pages de login et tous services de sécurité doivent être exclus du cache. Ne les listez jamais dans le manifest sauf pour les exclure et surtout n&#8217;intégrez pas le manifest dans ces pages.</p><p>Informez l&#8217;utilisateur sur les dangers de ce service et surtout laissez le choisir d&#8217;activer ou non le fonctionnement hors ligne.  En effet si le navigateur lui-même n&#8217;est pas protégé, toute personne y ayant accès pourra consulter le cache. Pour limiter le problème vous pouvez activer le service en stockant un cookie sur le navigateur si l&#8217;utilisateur active le mode hors ligne. Ainsi le lecteur devra répéter l&#8217;opération pour tous les navigateurs sur lesquels il souhaite consulter le site.</p><p>En dehors de ces règles de sécurité basiques, toutes les règles de sécurité inhérentes aux sites web s&#8217;appliquent.</p><h3><a
name="Conclusion"></a>Conclusion</h3><p>Dans ce premier article, nous avons posé la première pierre d&#8217;une application hors-ligne, en intégrant un fichier manifest pour mettre en cache son interface et ses ressources statiques. Dans le prochain article, nous verrons comment utiliser les nouvelles API JavaScript pour permettre de lire et d&#8217;éditer du contenu hors-ligne.</p><p>Les points importants du manifest :</p><ul><li>Versionnez le manifest avec un commentaire</li><li>Désactivez ou maitrisez les directives de cache HTTP</li><li>Minimisez le nombre de pages référençant le manifest</li><li>Stockez uniquement les ressources statiques du site</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/12/02/application-hors-ligne-avec-html5-le-manifest/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Flash Catalyst, Flash Builder, l&#8217;avis de Xebia !</title><link>http://blog.xebia.fr/2010/04/07/flash-catalyst-flash-builder-lavis-de-xebia/</link> <comments>http://blog.xebia.fr/2010/04/07/flash-catalyst-flash-builder-lavis-de-xebia/#comments</comments> <pubDate>Wed, 07 Apr 2010 05:41:05 +0000</pubDate> <dc:creator>Nicolas Jozwiak</dc:creator> <category><![CDATA[RIA]]></category> <category><![CDATA[Flash]]></category> <category><![CDATA[Flash Builder]]></category> <category><![CDATA[Flash Catalyst]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4320</guid> <description><![CDATA[Lors du XKE de Février, nous avons eu l&#8217;occasion de tester les outils Flash Catalyst et Builder en version beta. Pour ce faire, nous avons décidé de faire un projet et de présenter les facilités et les difficultés que nous avons rencontrées. Concernant le projet, ce dernier est simple : mettre en place une application [...]]]></description> <content:encoded><![CDATA[<p>Lors du XKE de Février, nous avons eu l&#8217;occasion de tester les outils Flash Catalyst et Builder en version beta. Pour ce faire, nous avons décidé de faire un projet et de présenter les facilités et les difficultés que nous avons rencontrées.<br
/> Concernant le projet, ce dernier est simple : mettre en place une application permettant de lister des voyages, et à partir d&#8217;une image Photoshop, nous allons définir les états/transitions dans Flash Catalyst, et brancher un backend Java avec Flash Builder. Cette série d&#8217;articles reprendra ces points avec nos analyses et critiques.<br
/> Avant toute chose, nous allons commencer par nous excuser auprès des designers/graphistes : n&#8217;étant pas notre coeur de métier, le design et l&#8217;ergonomie de l&#8217;application pourra peut être heurter la sensibilité de certains de nos lecteurs.</p><h3><a
name="MiseenplacedelimagePhotoshopIl"></a>Mise en place de l&#8217;image Photoshop/Illustrator</h3><p>N&#8217;ayant que très peu de connaissance de l&#8217;univers Photoshop, cette tâche s&#8217;est avérée au début périlleuse&#8230; Néanmoins, les différents tutoriaux d&#8217;Adobe permettent d&#8217;acquérir suffisamment de connaissances pour mettre en place une image, dont voici le résultat:</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/04/Img1.jpg"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img1-300x225.jpg" alt="Img1" title="Img1" width="300" height="225" class="alignnone size-medium wp-image-4322" /></a></div><p>Assez basique, le premier écran listera les voyages, et lorsque l&#8217;utilisateur cliquera sur l&#8217;un d&#8217;eux, une image s&#8217;affichera dans le panel de droite. C&#8217;est dans cet écran que sera branché notre backend Java. Le menu sera simplement utilisé afin de montrer la mise en place des états/transitions avec Catalyst. Ainsi, les autres rubriques du menu afficheront respectivement une carte, et un descriptif.</p><p>Voici notre arborescence de l&#8217;image Photoshop créée:</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/04/Img2.jpg"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img2-135x300.jpg" alt="Img2" title="Img2" width="135" height="300" class="alignnone size-medium wp-image-4323" /></a></div><p>Le principe est simple: l&#8217;image est découpée en calque, et ces derniers sont regroupés par fonctionnalités/pages. Ainsi nous retrouvons notre menu (navigation) avec les types d&#8217;effets que nous voudrons voir lorsque la souris de l&#8217;utilisateur passera sur le texte (ici une image violette), et les différentes pages avec leurs contenus.<br
/> Cette organisation est très importante, car par la suite nous l&#8217;utiliserons afin de mettre en place les transitions entre pages et créer nos composants.</p><h3><a
name="FlashCatalyst"></a>Flash Catalyst</h3><p>Une fois l&#8217;image importée dans Catalyst, nous constatons que la structure de Photoshop est bien présente et qu&#8217;un état a été créé.</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/04/Img3.jpg"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img3-300x108.jpg" alt="Img3" title="Img3" width="300" height="108" class="alignnone size-medium wp-image-4324" /></a></div><p>Nous allons commencer par créer les transitions entre les différents écrans:</p><ul><li>Sélectionnez le premier état en haut à gauche et renommez le en voyages.</li><li>Sélectionnez pour cet état la page que vous voudrez afficher dans la fenêtre <code>Layers</code> en haut à droite (en l&#8217;occurrence voyages page)</li><li>Créez deux autres états (<code>Duplicate State</code> en haut à gauche)</li><li>Répétez l&#8217;étape 2 pour les pages opérateurs et XKE.</li></ul><p>Animons cette page en créant les boutons:</p><ul><li>Revenez sur l&#8217;état «voyages».</li><li>Sélectionnez le texte «Voyages» ainsi que le fond violet.</li><li>La fenêtre <code>Convert to Artwork</code> apparaît, sélectionnez <code>Button</code>.</li><li>Re cliquez sur le texte Voyages et cochez <code>Label</code> dans la fenêtre qui est apparue.</li></ul><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img4.jpg" border="0" alt="" /></div><ul><li>Dans la fenêtre <code>Layers</code> (en haut à droite), renommez Voyages en <code>Label</code> et voyages over en over (ce sera un composant générique pour les autres boutons du menu).</li><li>Revenez sur la racine de votre projet (nom du projet) et renommez le composant <code>Button</code> en voyages_button par exemple (fenêtre en haut à droite).</li><li>Ajoutez le label Voyages dans les propriétés du composant, et décochez <code>Enabled</code>.</li></ul><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img5.jpg" border="0" alt="" /></div><ul><li>Sélectionnez le label de «Voyages» et modifier la couleur en noir (dans la fenêtre <code>Properties</code> en bas à droite)</li></ul><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img6.jpg" border="0" alt="" /></div><ul><li>Copier coller deux fois le composant voyage_button dans la fenêtre <code>Layers</code> (en haut à droite). Ce seront les boutons Opérateurs et XKE.</li><li>Supprimez les composants du layer navigation importés de l&#8217;image Photoshop</li></ul><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img7.jpg" border="0" alt="" /></div><ul><li>Tout comme «Voyages», modifiez les labels pour Opérateurs et XKE (par contre laissez la propriété <code>Enabled</code> cochée).</li><li>Vous devez réaligner les boutons les uns en dessous des autres, car en créant ces composants, Catalyst les a superposés.</li><li>Sur chaque bouton, faire clique droit => <code>Share to State</code> => <code>All States</code>.</li><li>Allez dans les états Opérateurs et xke: alignez les boutons et vérifier la couleur des labels.</li><li>Attention, pour ces états vérifiez également que pour le bouton Voyages, la propriété <code>Enabled</code> est bien cochée.</li><li>Cliquez sur le bouton Voyages, la fenêtre suivante s&#8217;ouvre</li></ul><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img8.jpg" border="0" alt="" /></div><ul><li>Dans <code>Up</code> et <code>Down</code>, désélectionnez voyages over dans la fenêtre <code>layers</code>.</li></ul><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/04/Img9.jpg"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img9-300x26.jpg" alt="Img9" title="Img9" width="300" height="26" class="alignnone size-medium wp-image-4330"/></a></div><ul><li>Cliquez sur le bouton «Voyages» et dans le panneau Interactions (sur la droite), sélectionnez <code>Add Interaction</code>.</li><li>Dans la liste déroulante <code>Choose state</code>, sélectionnez voyages.</li></ul><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img10.jpg" border="0" alt="" /></div><ul><li>Répétez ces opérations pour les boutons Opérateurs et XKE.</li><li>Allez dans <code>File</code> => <code>Run Project</code> pour tester la navigation.</li></ul><p>Passons à la création de la scrollBar verticale ainsi que de son association avec une liste déroulante :</p><ul><li>Sélectionnez les éléments graphiques qui vont composer la scrollBar.</li><li>Une fenêtre est apparue (<code>Convert to Artwork</code>), sélectionnez <code>Vertical scrollBar</code> dans la liste. Ne tenez pas compte du message Component Issues.</li><li>Cliquez sur <code>Edit Parts</code>, et associez les éléments graphiques aux éléments de la scrollBar.</li></ul><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img11.jpg" border="0" alt="" /></div><ul><li>Un fois le composant terminé, cliquez sur la racine du projet (nom de votre projet) en haut à gauche.</li><li>Sélectionnez le fond gris clair avec le texte San Francisco et dans la fenêtre <code>Convert Artwork</code>, sélectionnez <code>Data List</code>.</li><li>Cliquez sur <code>Edit Parts</code>, et associez le fond gris ainsi que le texte San Francisco à <code>Repeated Item</code>.</li></ul><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img12.jpg" border="0" alt="" /></div><ul><li>Ajustez la taille de la <code>Data List</code> à celle de la scrollBar.</li><li>Dans la fenêtre du bas, cliquez sur l&#8217;onglet <code>Design-Time Data</code>.</li><li>Ajouter des données en cliquant sur <code>Add Row</code>.</li></ul><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/Img13.jpg" border="0" alt="" /></div><ul><li>Couper la scrollBar, double cliquez sur la <code>Data List</code> et coller la scrollBar dedans (l&#8217;association avec la liste est effectuée à ce moment).</li><li>Allez dans <code>File</code> => <code>Run Project</code> pour tester l&#8217;application.</li></ul><h3><a
name="Analyses"></a>Analyses</h3><p>A travers la mise en place de cette première partie, nous pouvons effectuer les constats suivants:</p><ul><li>La maîtrise des outils Photoshop et Illustrator est indispensable : créer ses composants graphiques, appliquer des effets nécessitent un travail non négligeable.</li><li>Pour un développeur n&#8217;ayant pas de connaissances graphiques, la courbe d&#8217;apprentissage peut être assez longue.</li><li>Lors de la mise en place de l&#8217;image, il faut anticiper les transitions et effets car l&#8217;arborescence des composants est importante pour Catalyst.</li><li>L&#8217;outil Catalyst possède de bonnes interactions avec Photoshop et Illustrator:</li><ul><li>l&#8217;import d&#8217;images Photoshop est bien reconnu</li><li>possibilité de modifier et d&#8217;améliorer ses composants à partir de Catalyst dans Illustrator.</li></ul><li>Catalyst permet de créer des états, transitions assez rapidement et facilement</li><li>La création de certains composants n&#8217;est pas forcément très intuitive : création d&#8217;un composant Button et suppression des «boutons» créés dans Photoshop&#8230;</li></ul><p>Vous pouvez télécharger l&#8217;image et le projet Catalyst sur le <a
href="http://code.google.com/p/xebia-france/source/browse/#svn/trunk/flex" title="SVN de Xebia France" >SVN de Xebia France</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/04/07/flash-catalyst-flash-builder-lavis-de-xebia/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>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>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>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/</link> <comments>http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#comments</comments> <pubDate>Mon, 14 Dec 2009 18:48:42 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[ECMAScript]]></category> <category><![CDATA[FlexPMD]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[IDEA]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Java EE 6]]></category> <category><![CDATA[Netbeans]]></category> <category><![CDATA[OpenJDK]]></category> <category><![CDATA[Quartz]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Spring Surf]]></category> <category><![CDATA[Terracota]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3545</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Java EE 6, Glassfish v3 et NetBeans 6.8 dans les bacs Terracota et Quartz : un premier produit disponible. RIA GWT 2.0 est (enfin) là ! Sortie de la release de FlexPMD 1.0 Le coin de la technique Le projet [...]]]></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/14/revue-de-presse-xebia-138/#JavaEEGlassfishvetNetBeansdans">Java EE 6, Glassfish v3 et NetBeans 6.8 dans les bacs</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#TerracotaetQuartzunpremierprod">Terracota et Quartz : un premier produit disponible.</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#GWTestenfinl">GWT 2.0 est (enfin) là !</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#SortiedelareleasedeFlexPMD">Sortie de la release de FlexPMD 1.0</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#LeprojetLambdaapparatauseindOp">Le projet Lambda apparaît au sein d&#8217;OpenJDK</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#NouvelleversiondumeilleurIDEJa">Nouvelle version du meilleur IDE Java du monde&#8230;</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#ansdattenteetECMAScript">10 ans d&#8217;attente et ECMAScript 5</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#NouvelleMilestonedEclipseHelio">Nouvelle Milestone d&#8217;Eclipse Helios</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#SpringSurflestudiodecompositio">Spring Surf &#8211; le studio de composition de pages pour Spring MVC</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="JavaEEGlassfishvetNetBeansdans"></a>Java EE 6, Glassfish v3 et NetBeans 6.8 dans les bacs</h4><p>C&#8217;est la fin de longs mois d&#8217;attente, Sun nous livre <em>finalement</em> sa version 6 de la plateforme Java EE dont nous parlons depuis déjà longtemps sur le blog. Comme promis, c&#8217;est GlassFish v3 qui sert d&#8217;implémentation de référence à JavaEE 6. Le tout est fourni prêt à l&#8217;emploi : le SDK, l&#8217;implémentation serveur et l&#8217;IDE compatible. Vous pouvez donc d&#8217;ores et déjà essayer les EJB lite, les Servlet 3.0, la validation de Bean, l&#8217;injection de dépendance et bien sûr, la toute nouvelle JSF 2 &laquo;&nbsp;tant attendue&nbsp;&raquo;.<br
/> Voilà un beau cadeau de Noël que Sun nous offre, d&#8217;autant que la sortie de GlassFish v3 s&#8217;accompagne des plugins adéquats pour Eclipse et IntelliJ. Nous souhaitons longue vie et grand succès à cette nouvelle plateforme JavaEE.<br
/> Pour plus d&#8217;information sur le sujet:</p><ul><li><a
href="http://blog.xebia.fr/2009/11/25/devoxx-jour-3-jee6/" title="JavaEE6  Devoxx" >JavaEE6 à Devoxx</a></li><li><a
href="http://www.sun.com/featured-articles/2009-1210/feature/index.jsp" title="La news sur le site de Sun" >La news sur le site de Sun</a></li><li><a
href="http://www.infoq.com/news/2009/12/ee6qanda" title="Inteview de Roberto Chinnici sur InfoQ" >Inteview de Roberto Chinnici sur InfoQ</a></li><li><a
href="http://www.theserverside.com/news/thread.tss?thread_id=58858&#038;utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed:+techtarget/tsscom/home+(TheServerSide.com:+Your+Enterprise+Java+Community)&#038;utm_content=Google+Feedfetcher" title="Lannonce sur The Server Side" >L&#8217;annonce sur The Server Side</a></li></ul><h4><a
name="TerracotaetQuartzunpremierprod"></a>Terracota et Quartz : un premier produit disponible.</h4><p>Un peu moins d&#8217;un mois après <a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#TerracottaafaimdOpenSourceacqu" title="le rachat de Quartz par Terracota" >le rachat de Quartz par Terracota</a>, l&#8217;éditeur met en application son acquisition, en proposant <a
href="http://www.terracotta.org/quartz/get-started" title="Terracotta Quartz EX" >Terracotta Quartz EX</a>, un Job Store pour Quartz. Cette nouveauté permet de développer une plate forme de gestion de charge et de distribution des traitements basée sur une gestion des jobs en mémoire.<br
/> Pour ceux qui utilisaient Quartz de manière non clusterisée, <a
href="http://www.terracotta.org/quartz/index-variation2" title="une nouvelle version de Quartz" >une nouvelle version de Quartz</a> permet d&#8217;utiliser une instance de serveur Terracota comme JobStore. Cela procure, <em>automatiquement</em>, à la fois une solution de persistance et de haute disponibilité pour la programmation des jobs. Cette implémentation repose sur le lock manager et la plate forme haute-dispo de Terracotta (et ne nécessite donc pas de base de données).<br
/> Pour ceux qui utilisaient déjà Quartz de manière clusterisée, à l&#8217;aide d&#8217;une base de données centrale, le nouveau <em>Terracotta Job Store</em> permet de continuer à utiliser le mode clusterisé, sans l&#8217;overhead dû à la base de données.</p><p>A n&#8217;en pas douter, comme pour EHCache, aquis il y a quelques temps déjà, Terracotta va rapidement proposer de nouvelles applications permettant de profiter au mieux des interactions possibles entre un <em>scheduler</em> et une plate-forme clusterisée.</p><p>Au passage, Quartz a subi un lifting afin que le <em>framework</em> respecte au mieux les normes Maven et s&#8217;intègre plus facile à Hudson.</p><p><a
href="http://www.infoq.com/news/2009/12/terracotta-quartz" title="Via infoQ" >Via infoQ</a></p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="GWTestenfinl"></a>GWT 2.0 est (enfin) là !</h4><p>L&#8217;une des sensations de la semaine dernière n&#8217;est autre que la sortie en release finale de <a
href="http://googlewebtoolkit.blogspot.com/2009/12/introducing-google-web-toolkit-20-now.html" title="GWT en version 2.0" >GWT en version 2.0</a>, quelques mois seulement après la <a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#GWTpourlesnouveauxnavigateurs" title="mise  jour 17" >mise à jour 1.7</a> qui ne faisait que corriger GWT pour les navigateurs récents.</p><p>Nous avons déjà bien couvert le sujet dans nos précédentes revues de presse, que ce soit pour la <a
href="http://blog.xebia.fr/2009/10/19/revue-de-presse-xebia-130/#GWTMilestone" title="Milestone 1" >Milestone 1</a> ou la <a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#GWTversionRC" title="Release Candidate 1" >Release Candidate 1</a>. Rien de nouveau donc si vous nous suivez régulièrement. On retrouve ainsi le <em>development mode</em>, le <em>code splitting</em>, l&#8217;intégration <code>HTMLUnit</code>, l&#8217;<code>UIBinder</code>, le <code>RunAsync</code> et bien d&#8217;autres. Le détail complet des différentes nouveautés se trouve sur cette <a
href="http://googlewebtoolkit.blogspot.com/2009/12/introducing-google-web-toolkit-20-now.html" title="page" >page</a>.</p><p>A noter aussi l&#8217;arrivée avec GWT 2.0 de <a
href="http://code.google.com/intl/fr-FR/webtoolkit/speedtracer/" title="Speed Tracer" >Speed Tracer</a>, un outil vous permettant d&#8217;analyser votre application et ainsi de repérer d&#8217;éventuels problèmes de performances.<br
/> Le plugin Eclipse a lui aussi été mis à jour et possède désormais de nouvelles fonctionnalités spécifiques à GWT 2.0, comme le support d&#8217;<code>UiBinder</code> et de <code>ClientBundle</code>.</p><p>Concernant la migration, les retours <em>(comme <a
href="http://blog.jdevelop.eu/2009/12/10/experiences-with-the-migration-from-gwt-171-to-20/" title="celuici" >celui-ci</a>)</em> sont plutôt encourageants et laissent présager une migration sans trop de difficultés. Les gains en performance se situent, comme on pouvait s&#8217;y attendre, au niveau du <em>development mode</em> et de son plugin pour débuguer directement dans le navigateur (ce bon vieux <em>Hosted Mode</em> ne va décidément pas me manquer). Même au niveau des librairies tierces, il n&#8217;y a pas de grosses incompatibilités remontées par l&#8217;auteur.</p><p>La section téléchargement se trouve <a
href="http://code.google.com/intl/fr-FR/webtoolkit/download.html" title="ici" >ici</a>.</p><h4><a
name="SortiedelareleasedeFlexPMD"></a>Sortie de la release de FlexPMD 1.0</h4><p>Une bonne nouvelle cette semaine pour les développeurs Flex : <a
href="http://blogs.adobe.com/xagnetti/2009/12/flexpmd_10_released_flexmetric.html" title="la sortie de FlexPMD FlexCPD et FlexMetrics en release" >la sortie de FlexPMD, FlexCPD et FlexMetrics en release</a> pour contrôler votre code. Voyons un peu plus en détail ces différents outils :</p><ul><li>FlexPMD</li></ul><p><a
href="http://blog.xebia.fr/2009/09/07/revue-de-presse-xebia-125/#AnalysezvotrecodeFlexavecFlexP" title="Nous vous en parlions en septembre" >Nous vous en parlions en septembre</a>, FlexPMD fournit maintenant des fonctionnalités supplémentaires :</p><ul><li>invocation depuis Eclipse grâce à son <a
href="http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD+Eclipse+plugin" title="plugin" >plugin</a>,</li><li>depuis <a
href="http://groups.adobe.com/posts/8f4c3bbe01" title="FlashDevelop" >FlashDevelop</a> ou <a
href="http://www.ohloh.net/p/textmate_flexpmd_bundle" title="TextMate" >TextMate</a> sur Mac OS X.</li></ul><p>Le rapport peut être généré en HTML ou XML. Son rapport au format XML est un standard pouvant être exploité par tout intépréteur PMD comme le plugin d&#8217;Hudson.</p><ul><li>FlexCPD (Copy &#038; and Paste Detector)</li><ul><li><a
href="http://opensource.adobe.com/wiki/display/flexpmd/FlexCPD" title="FlexCPD" >FlexCPD</a> permet comme son nom l&#8217;indique de détecter les duplications de code. Basé sur le moteur de JavaCPD, il peut être appelé en ligne de commande par une tâche Ant ou avec Maven. Les résultats sont exploitables dans Hudson également grâce au plugin <a
href="http://wiki.hudson-ci.org/display/HUDSON/DRY+Plugin" title="DRY" >DRY</a>.</li></ul><li>FlexMetrics</li><ul><li><a
href="http://opensource.adobe.com/wiki/display/flexpmd/FlexMetrics" title="FlexMetrics" >FlexMetrics</a> permet d&#8217;avoir des métriques sur votre code Flex. Comme FlexCPD, il peut être appelé en ligne de commande, avec Ant ou Maven. Pour interpréter les résultats de l&#8217;outil, il est possible d&#8217;utiliser le plugin <a
href="http://wiki.hudson-ci.org//pages/viewpage.action?pageId=36603031" title="JavaNCSS" >JavaNCSS</a>.</li></ul></ul><p>Des outils intéressants donc, pour ajouter vos projets Flex dans vos outils d&#8217;intégration continue.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="LeprojetLambdaapparatauseindOp"></a>Le projet Lambda apparaît au sein d&#8217;OpenJDK</h4><p>Mark Reinhold annonce la création d&#8217;un nouveau sous-projet au sein d&#8217;OpenJDK : le <a
href="http://openjdk.java.net/projects/lambda/" title="Projet Lambda" >Projet Lambda</a>. Son but est d&#8217;apporter une implémentation des <em>closures</em> pour le JDK 7. Dans la mesure où il est prévu que cette fonctionnalité soit implémentée dans un premier temps pour être spécifiée par la suite, il sera particulièrement intéressant de suivre l&#8217;évolution de ce projet dans les prochains mois afin de découvrir à quoi <em>pourraient</em> ressembler les <em>closures</em> dans la prochaine version de Java.</p><p>Un premier <a
href="http://cr.openjdk.java.net/~mr/lambda/straw-man/" title="document de travail" >document de travail</a> a été mis à disposition. Il présente de manière non formelle la proposition pour l&#8217;implémentation des <em>closures</em> qui est retenue pour le moment. Cette proposition se base sur les trois principales bases de travail qui s&#8217;étaient dégagées lors des débats précédents, à savoir la <a
href="http://www.javac.info/closures-v05.html" title="BGGA" >BGGA</a>, la <a
href="http://docs.google.com/Doc.aspx?id=k73_1ggr36h" title="CICE" >CICE</a> et la <a
href="http://docs.google.com/Doc?id=ddhp95vd_6hg3qhc" title="FCM" >FCM</a>. Elle met en avant principalement :</p><ul><li>La syntaxe retenue pour la définition de fonctions anonymes qui se base sur le caractère <code>#</code>, ainsi <code>#()(42)</code> définit une fonction retournant toujours <code>42</code>.</li><li>La définition d&#8217;un type Java pour ces fonctions. Ainsi la fonction <code>#()(42)</code> prise en exemple précédemment a pour type <code>#int()</code>.</li><li>Les fonctions anonymes peuvent être converties automatiquement lorsqu&#8217;elle sont passées en argument d&#8217;une méthode attendant une instance d&#8217;une classe anonyme. En clair, il sera possible de créer une nouvelle <em>thread</em> avec <code>new Thread(#() { ...some code... } )</code> plutôt que de fournir au constructeur une classe anonyme implémentant <code>Runnable</code> pour définir la méthode <code>run()</code>. Cette possibilité permettra donc aux <em>closures</em> d&#8217;être utilisées directement dans les APIs existantes !</li><li>Dans certaines conditions, les <em>closures</em> sont à même d&#8217;utiliser les variables accessibles dans le contexte dans lequel elles sont définies.</li><li>Le mot clé <code>this</code> peut être utilisé si la <em>closure</em> est déclarée depuis une méthode d&#8217;instance, il référence alors l&#8217;instance à laquelle est attachée la méthode concernée.</li></ul><p>Enfin, pour faciliter les évolutions des APIs existantes que pourraient justifier ces nouvelles possibilités du langage, la notion de méthodes d&#8217;extensions est introduite. Il s&#8217;agit de permettre la définition de méthodes au sein des interfaces dont l&#8217;implémentation par défaut serait une méthode statique indiquée en argument.</p><p>Pour plus de détails sur cette proposition, n&#8217;hésitez pas à lire le <a
href="http://cr.openjdk.java.net/~mr/lambda/straw-man/" title="document de travail" >document de travail</a>, volontairement très didactique, du projet Lambda.</p><h4><a
name="NouvelleversiondumeilleurIDEJa"></a>Nouvelle version du meilleur IDE Java du monde&#8230;</h4><p>&#8230; en tout cas, c&#8217;est une des accroches d&#8217;IntelliJ IDEA <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br
/> <a
href="http://www.jetbrains.com/" title="JetBrains" >JetBrains</a> continue donc sur sa lancée d&#8217;évolution majeure de ses produits.<br
/> Ainsi, après <a
href="http://blog.xebia.fr/2009/12/07/revue-de-presse-xebia-137/#SortiedeTeamCity" title="TeamCity 5.0" >TeamCity 5.0</a>, c&#8217;est au tour d&#8217;<a
href="http://www.jetbrains.com/idea/index.html" title="IntelliJ IDEA" >IntelliJ IDEA</a> d&#8217;évoluer et de <a
href="http://blogs.jetbrains.com/idea/2009/12/intellij-idea-9-finally-out-with-great-new-features-a-performance-boost/" title="passer en version 9" >passer en version 9</a>.</p><p>Les <a
href="http://www.jetbrains.com/idea/whatsnew/index.html" title="nouveauts sont trs nombreuses" >nouveautés sont très nombreuses</a>. Les points importants retenus par JetBrains sont :</p><ul><li>la rapidité de l&#8217;IDE,</li><li>l&#8217;amélioration de la lecture du code <em>(meilleure coloration syntaxique&#8230;)</em>,</li><li>meilleure UI, une structure de projet plus flexible,</li><li>premier support Java 7 avec JSR308, support de JEE 6,</li><li>meilleur support de Groovy,</li><li>plugin de développement Android,</li><li>support d&#8217;autres frameworks <em>(Tapestry, GAE, GWT 1.7 et 2.0, Spring 3.0 et Spring Security 2.0 et 3.0)</em>,</li><li>meilleur support de Maven,</li><li>plusieurs nouvelles fonctionnalités pour le développement d&#8217;applications Flex. <em>(Air, FlexUnit&#8230;)</em>.</li></ul><p>Deux éditions nous sont proposées <a
href="http://www.jetbrains.com/idea/download/index.html" title="en téléchargement" >en téléchargement</a> (avec <a
href="http://www.jetbrains.com/idea/buy/index.jsp#newuser" title="diffrentes licences" >différentes licences</a>) :</p><ul><li>l&#8217;édition <em>ultimate</em> : complète, gratuite pour les licences <em>Classroom</em> et <em>Open Source Project</em> ;</li><li>l&#8217;édition <em>community</em> : produit sous licence Apache 2.0 proposant en standard l&#8217;IDE pour Java et Groovy (et quelques plugins gratuits).</li></ul><p>Et même quelques <a
href="http://konigsberg.blogspot.com/2009/12/eclipse-users-go-download-intellij.html" title="Friends of Eclipse" >Friends of Eclipse</a> vous encouragent à le télécharger <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Comme on dit : <em>l&#8217;essayer, c&#8217;est l&#8217;adopter</em> !</p><h4><a
name="ansdattenteetECMAScript"></a>10 ans d&#8217;attente et ECMAScript 5</h4><p>ECMAScript, langage de programmation de type script implémenté entre autres par Javascript et ActionScript, passe en <a
href="http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf" title="version 5" >version 5</a> <em>(via <a
href="http://www.infoq.com/news/2009/12/ecmascript5" title="InfoQ" >InfoQ</a>)</em>.<br
/> La version 4 ayant été abandonnée, il faut remonter à 1999 pour voir la dernière version d&#8217;ECMAScript et sa version 3&#8230; Ce fût long, mais au moins il est là !</p><p>Comme nous le rappelle <a
href="http://alblue.blogspot.com/2009/12/javascript-5-standard-released.html" title="Alex Blewitt" >Alex Blewitt</a>, celle-ci essayera de s&#8217;imposer là où la version 4 (qui a d&#8217;ailleurs été abandonnée) a échoué, à savoir être pleinement supportée par les navigateurs actuels. En effet, nos sites web et nos outils évoluent mais pas la spécification ECMA. Côté application, c&#8217;est une nouvelle fois Google Wave <em>(en GWT donc Javascript)</em> qui est cité en exemple pour son côté collaboratif <em>live</em>. Et pour les outils, l&#8217;auteur cite Speed Tracer <em>(inclus dans la release GWT 2.0)</em> qui va nous permettre de détecter et de fixer certains problèmes de performances sur nos applications.</p><p>On notera la rétrocompatibilité avec les anciennes applications ECMAScript grâce au code suivant :</p><pre class="brush: java; title: ; notranslate">
&quot;use strict;&quot;
</pre><p>Ce code indique au runtime ECMAScript qu&#8217;il faut être compatible avec la version 5 d&#8217;ECMAScript et ses différentes nouveautés. Il sera possible d&#8217;être compatible sur tout le document ou seulement sur une partie de code. Concernant les anciens runtimes, le <code>strict</code> sera compris mais ne changera pas leur comportement.</p><p>Concernant les nouveautés de la spécification, on retiendra :</p><ul><li>déclaration de variable obligatoire : terminé les <code>i=3</code>, il faudra obligatoirement passer par <code>var i=3</code> ;</li><li><code>eval</code> devient un mot clé réservé ;</li><li>l&#8217;opérateur <code>with</code> disparaît ;</li><li>les fonctions et objets ne peuvent plus avoir des arguments/propriétés doubles avec le même nom ;</li><li>nouvel objet JSON et mécanisme de <em>parsing</em> désormais standard ;</li><li>méthode <code>trim</code> pour l&#8217;objet <code>String</code> ;</li><li>méthodes <code>indexOf</code>, <code>map</code>, <code>filter</code> and <code>reduce</code> pour l&#8217;objet <code>Array</code>;</li><li>nombreuses nouvelles méthodes sur <code>Object</code> dont <code>seal</code> <em>(empêche l&#8217;ajout/la suppression de propriétés)</em>, <code>freeze</code> <em>(propriétés read-only)</em>, <code>keys</code> <em>(liste les propriétés de l&#8217;objet)</em> ou <code>getPrototypeof</code> <em>(prototype de l&#8217;objet)</em>.</li></ul><p>Beaucoup de bonnes nouvelles pour les développeurs donc. La rétrocompatibilité permettra une mise en place progressive sur notre code, soit par bloc soit directement sur toute la page. Côté API, on avait déjà l&#8217;habitude d&#8217;utiliser ces fonctions par l&#8217;intermédiaire de librairies comme <a
href="http://jquery.com/" title="jQuery" >jQuery</a> mais cette standardisation est la bienvenue.</p><h4><a
name="NouvelleMilestonedEclipseHelio"></a>Nouvelle Milestone d&#8217;Eclipse Helios</h4><p>Eclipse 3.6, nom de code Helios, vient de sortir en version Milestone 4. De nouvelles fonctionnalités sont apparues avec ce build, comme :</p><ul><li>la possibilité d&#8217;éditer plusieurs quick fix en même temps</li><li>les &laquo;&nbsp;virtual folders&nbsp;&raquo; qui permettent de créer des regroupements de fichiers au niveau du projet pour une navigation plus facile</li><li>amélioration du plugin JUnit</li></ul><p>Pour plus de détails, voici la <a
href="http://download.eclipse.org/eclipse/downloads/drops/S-3.6M4-200912101301/eclipse-news-M4.html" title="liste des améliorations" >liste des améliorations</a> et <a
href="http://eclipsesource.com/blogs/2009/12/12/eclipse-3-6-m4-helios-available-for-download/" title="lannonce officielle" >l&#8217;annonce officielle</a> d&#8217;EclipseSource.</p><h4><a
name="SpringSurflestudiodecompositio"></a>Spring Surf &#8211; le studio de composition de pages pour Spring MVC</h4><p>Spring s&#8217;intéresse à présent à la gestion documentaire, grâce à une collaboration avec Alfresco, le système de GED Open Source Java, qui a démarré le projet Surf. A l&#8217;origine, l&#8217;objectif était de proposer aux utilisateurs d&#8217;Alfresco une plateforme pour développer leurs propres applications connectées à la GED.</p><p>Pour profiter des facilités de développement d&#8217;applications que propose Spring avec <a
href="http://www.springsource.org/roo" title="Spring Roo" >Spring Roo</a> et <a
href="http://www.springsource.com/products/sts" title="Spring Tool Suite" >Spring Tool Suite</a>, Alfresco commence à migrer son projet Surf dans l&#8217;<em>incubator</em> Spring Extension.</p><p>Pour le moment, les principales informations se trouvent sur le <a
href="http://wiki.alfresco.com/wiki/Surf" title="wiki d'Alfresco" >wiki d&#8217;Alfresco</a>, la <a
href="http://www.springsource.org/extensions/se-surf" title="page daccueil de Spring Surf" >page d&#8217;accueil de Spring Surf</a> étant encore très succincte.</p><p>Pour démarrer, seuls l&#8217;addon Spring Roo et un QuickStart sont disponibles chez Spring (pas encore de tutorial). Et pour mieux connaitre ce que deviendra cette extension, l&#8217;application <a
href="http://wiki.alfresco.com/wiki/Alfresco_Share" title="Alfresco Share" >Alfresco Share</a>, basée sur la <a
href="http://wiki.alfresco.com/wiki/Surf_Platform" title="plateforme Surf" >plateforme Surf</a> donne un bon nombre de pistes comme :</p><ul><li>Création d&#8217;applications uniquement par scripting (Freemarker, Groovy, PHP, JavaScript)</li><li>Ajout de pages à une application basée sur le framework Spring MVC</li><li>Développement avec un modèle extensible de templates, composants, styles, etc.</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Flex : Custom style DataGrid</title><link>http://blog.xebia.fr/2009/11/26/flex-custom-style-datagrid/</link> <comments>http://blog.xebia.fr/2009/11/26/flex-custom-style-datagrid/#comments</comments> <pubDate>Thu, 26 Nov 2009 12:57:02 +0000</pubDate> <dc:creator>Nicolas Jozwiak</dc:creator> <category><![CDATA[RIA]]></category> <category><![CDATA[Flex]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3353</guid> <description><![CDATA[Lors de la finalisation de l&#8217;un de nos développements Flex, nous avons mis en place des styles pour les différents composants de l&#8217;application. Mais il se trouve que nous avons rencontré une petite difficulté sur le composant DataGrid. A noter également l&#8217;utilisation de Flex 4 dans cet exemple, mais ce problème est aussi valable avec [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/fx-150x150.png" border="0" alt="" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> Lors de la finalisation de l&#8217;un de nos développements Flex, nous avons mis en place des styles pour les différents composants de l&#8217;application. Mais il se trouve que nous avons rencontré une petite difficulté sur le composant <code>DataGrid</code>. A noter également l&#8217;utilisation de Flex 4 dans cet exemple, mais ce problème est aussi valable avec Flex 3.</p><p>&nbsp;</p><h4><a
name="Lesstyles"></a>Les styles</h4><p>Avec Flex, les styles sont très simples à mettre en place, et se font de la même manière qu&#8217;en HTML :</p><ul><li>Soit via la définition des styles directement dans le fichier MXML :</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;mx:Style&gt;
	myStyle {
		fontFamily: &quot;arial&quot;;
		background-color:#FFFFFF;
	}
&lt;/mx:Style&gt;
</pre><ul><li>Soit via la définition d&#8217;une feuille de styles CSS, déclarée dans le fichier MXML :</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;mx:Style source=&quot;css/xebia.css&quot;/&gt;
</pre><p>Concernant le composant <code>DataGrid</code>, modifier les couleurs des lignes devient trivial avec la propriété <code>alternatingItemColors</code>. Néanmoins la situation se corse lorsque nous devons appliquer ces couleurs aux lignes d&#8217;une seule colonne&#8230;</p><h4><a
name="Exemple"></a>Exemple</h4><p>Prenons un exemple :</p><p><code>XebiaCustomDataGrid1.mxml</code></p><pre class="brush: xml; title: ; notranslate">
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot; xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot; xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot; minWidth=&quot;1024&quot; minHeight=&quot;768&quot;&gt;
	&lt;fx:Script&gt;
	&lt;![CDATA[
			import mx.collections.ArrayCollection;
			[Bindable]
			public var xebia:ArrayCollection = new ArrayCollection([
				{Company:&quot;Xebia France&quot;, City:&quot;Défense&quot;, Benefits:200000},
				{Company:&quot;Xebia Hollande&quot;, City:&quot;Hilversum&quot;, Benefits:400000},
				{Company:&quot;Xebia Inde&quot;, City:&quot;New Dehli&quot;, Benefits:150000},
				{Company:&quot;Xebia US&quot;, City:&quot;New York&quot;, Benefits:500000},
				{Company:&quot;Xebia Allemagne&quot;, City:&quot;Berlin&quot;, Benefits:160000},
				{Company:&quot;Xebia Espagne&quot;, City:&quot;Barcelone&quot;, Benefits:80000},
				{Company:&quot;Xebia Portugal&quot;, City:&quot;Lisbonne&quot;, Benefits:75000},
				{Company:&quot;Xebia Italie&quot;, City:&quot;Milan&quot;, Benefits:110000}
			]);
		]]&gt;
	&lt;/fx:Script&gt;
	&lt;mx: DataGrid dataProvider=&quot;{xebia}&quot; sortableColumns=&quot;false&quot; selectable=&quot;false&quot; height=&quot;228&quot; width=&quot;515&quot;&gt;
		&lt;mx:columns&gt;
			&lt;mx: DataGridColumn headerText=&quot;Company&quot; dataField=&quot;Company&quot;/&gt;
			&lt;mx: DataGridColumn headerText=&quot;City&quot; dataField=&quot;City&quot;/&gt;
			&lt;mx: DataGridColumn headerText=&quot;Benefits&quot; dataField=&quot;Benefits&quot;/&gt;
		&lt;/mx:columns&gt;
	&lt;/mx: DataGrid&gt;
&lt;/s:Application&gt;
</pre><p>Dans cet exemple, nous avons un simple <code>DataGrid</code> remplit avec une <code>ArrayCollection</code>, et dont les lignes ont des couleurs alternées.</p><div
align="center"> <object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" data="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid1.swf" height="200" width="515" type="application/x-shockwave-flash" ><param
name="data" value="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid1.swf" /><param
name="loop" value="false" /><param
name="menu" value="false" /><param
name="movie" value="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid1.swf" /><param
name="quality" value="high" /><param
name="scale" value="exactfit" /><param
name="src" value="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid1.swf" /><param
name="type" value="application/x-shockwave-flash" /><embed
height="200" width="515" quality="high" pluginspage="https://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash" src="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid1.swf" type="application/x-shockwave-flash" /><br
/> </object></div><p>Dans ce second exemple, nous ajoutons une CSS :</p><p><code>xebia.css</code></p><pre class="brush: xml; title: ; notranslate">
.grid {
	alternatingItemColors: #ffccff, #ff99cc;
}
.header {
	fontWeight: bold;
}
</pre><p><code>XebiaCustomDataGrid2.mxml</code></p><pre class="brush: xml; title: ; notranslate">
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot; xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot; xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot; minWidth=&quot;1024&quot; minHeight=&quot;768&quot;&gt;
	&lt;fx:Style source=&quot;css/xebia.css&quot;/&gt;
	&lt;fx:Script&gt;
	&lt;![CDATA[
			import mx.collections.ArrayCollection;
			[Bindable]
			public var xebia:ArrayCollection = new ArrayCollection([
				{Company:&quot;Xebia France&quot;, City:&quot;Défense&quot;, Benefits:200000},
				{Company:&quot;Xebia Hollande&quot;, City:&quot;Hilversum&quot;, Benefits:400000},
				{Company:&quot;Xebia Inde&quot;, City:&quot;New Dehli&quot;, Benefits:150000},
				{Company:&quot;Xebia US&quot;, City:&quot;New York&quot;, Benefits:500000},
				{Company:&quot;Xebia Allemagne&quot;, City:&quot;Berlin&quot;, Benefits:160000},
				{Company:&quot;Xebia Espagne&quot;, City:&quot;Barcelone&quot;, Benefits:80000},
				{Company:&quot;Xebia Portugal&quot;, City:&quot;Lisbonne&quot;, Benefits:75000},
				{Company:&quot;Xebia Italie&quot;, City:&quot;Milan&quot;, Benefits:110000}
			]);
		]]&gt;
	&lt;/fx:Script&gt;
	&lt;mx: DataGrid dataProvider=&quot;{xebia}&quot; sortableColumns=&quot;false&quot; selectable=&quot;false&quot; styleName=&quot;grid&quot; headerStyleName=&quot;header&quot; height=&quot;228&quot; width=&quot;515&quot;&gt;
		&lt;mx:columns&gt;
			&lt;mx: DataGridColumn headerText=&quot;Company&quot; dataField=&quot;Company&quot;/&gt;
			&lt;mx: DataGridColumn headerText=&quot;City&quot; dataField=&quot;City&quot;/&gt;
			&lt;mx: DataGridColumn headerText=&quot;Benefits&quot; dataField=&quot;Benefits&quot;/&gt;
		&lt;/mx:columns&gt;
	&lt;/mx: DataGrid&gt;
&lt;/s:Application&gt;
</pre><p>On notera l&#8217;ajout des attributs <code>styleName</code> et <code>headerStyleName</code> dans les propriétés du <code>DataGrid</code>, ainsi que de la déclaration de la CSS :</p><pre class="brush: xml; title: ; notranslate">
&lt;fx:Style source=&quot;css/xebia.css&quot;/&gt;
</pre><p>Nous obtenons ainsi le rendu suivant :</p><div
align="center"> <object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" data="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid2.swf" height="200" width="515" type="application/x-shockwave-flash" ><param
name="data" value="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid2.swf" /><param
name="loop" value="false" /><param
name="menu" value="false" /><param
name="movie" value="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid2.swf" /><param
name="quality" value="high" /><param
name="scale" value="exactfit" /><param
name="src" value="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid2.swf" /><param
name="type" value="application/x-shockwave-flash" /><embed
height="200" width="515" quality="high" pluginspage="https://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash" src="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid2.swf" type="application/x-shockwave-flash" /><br
/> </object></div><p>Mais que faire si nous voulons appliquer un style sur une seule colonne ? La solution consiste à surcharger les cellules de la colonne concernée par un <code>renderer</code>. Pour ce faire, une classe ActionScript doit être mise en place.</p><p>Voici la classe <code>CustomCell.as</code> :</p><pre class="brush: xml; title: ; notranslate">
public class CustomCell extends Label
     {
      override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
        {
            super.updateDisplayList(unscaledWidth, unscaledHeight);
            var g:Graphics = graphics;
            g.clear();
	    	if (DataGridListData(listData).rowIndex % 2 == 0) {
	        	g.beginFill(0xffdfbf);
	     	} else {
	     		g.beginFill(0xffc080);
	     	}
	        g.drawRect(0, -2, unscaledWidth+1, unscaledHeight+4);
	        g.endFill();
        }
     }
</pre><p>Ainsi pour chaque ligne, nous dessinons un rectangle dans la cellule avec la même alternance de couleurs.<br
/> Il ne nous reste plus qu&#8217;à appliquer ce <code>renderer</code> au <code>DataGrid</code>.</p><p><code>XebiaCustomDataGrid3.mxml</code></p><pre class="brush: xml; title: ; notranslate">
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot; xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot; xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot; minWidth=&quot;1024&quot; minHeight=&quot;768&quot;&gt;
	&lt;fx:Style source=&quot;css/xebia.css&quot;/&gt;
	&lt;fx:Script&gt;
	&lt;![CDATA[
			import mx.collections.ArrayCollection;
			[Bindable]
			public var xebia:ArrayCollection = new ArrayCollection([
				{Company:&quot;Xebia France&quot;, City:&quot;Défense&quot;, Benefits:200000},
				{Company:&quot;Xebia Hollande&quot;, City:&quot;Hilversum&quot;, Benefits:400000},
				{Company:&quot;Xebia Inde&quot;, City:&quot;New Dehli&quot;, Benefits:150000},
				{Company:&quot;Xebia US&quot;, City:&quot;New York&quot;, Benefits:500000},
				{Company:&quot;Xebia Allemagne&quot;, City:&quot;Berlin&quot;, Benefits:160000},
				{Company:&quot;Xebia Espagne&quot;, City:&quot;Barcelone&quot;, Benefits:80000},
				{Company:&quot;Xebia Portugal&quot;, City:&quot;Lisbonne&quot;, Benefits:75000},
				{Company:&quot;Xebia Italie&quot;, City:&quot;Milan&quot;, Benefits:110000}
			]);
		]]&gt;
	&lt;/fx:Script&gt;
	&lt;mx: DataGrid dataProvider=&quot;{xebia}&quot; sortableColumns=&quot;false&quot; selectable=&quot;false&quot; styleName=&quot;grid&quot; headerStyleName=&quot;header&quot; height=&quot;228&quot; width=&quot;515&quot;&gt;
		&lt;mx:columns&gt;
			&lt;mx: DataGridColumn headerText=&quot;Company&quot; dataField=&quot;Company&quot;/&gt;
			&lt;mx: DataGridColumn headerText=&quot;City&quot; dataField=&quot;City&quot;/&gt;
			&lt;mx: DataGridColumn headerText=&quot;Benefits&quot; dataField=&quot;Benefits&quot; itemRenderer=&quot;renderer.CustomCell&quot;/&gt;
		&lt;/mx:columns&gt;
	&lt;/mx: DataGrid&gt;
&lt;/s:Application&gt;
</pre><p>Nous remarquons que la propriété <code>itemRenderer</code> a été ajoutée sur la troisième colonne du <code>DataGrid</code>.</p><p>Ainsi nous obtenons le rendu suivant :</p><div
align="center"> <object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" data="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid3.swf" height="200" width="515" type="application/x-shockwave-flash" ><param
name="data" value="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid3.swf" /><param
name="loop" value="false" /><param
name="menu" value="false" /><param
name="movie" value="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid3.swf" /><param
name="quality" value="high" /><param
name="scale" value="exactfit" /><param
name="src" value="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid3.swf" /><param
name="type" value="application/x-shockwave-flash" /><embed
height="200" width="515" quality="high" pluginspage="https://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash" src="http://blog.xebia.fr/wp-content/uploads/2009/11/XebiaCustomDataGrid3.swf" type="application/x-shockwave-flash" /><br
/> </object></div><p>Enfin à travers cet exemple nous revoyons une des limites de Flex: malgré la richesse des composants et de leurs comportements, lorsque les développements deviennent un peu plus subtils, du code ActionScript est nécessaire, là où dans cet exemple une simple instruction CSS aurait suffit&#8230;</p><p>En espérant que cette solution puisse aider d&#8217;autres personnes !</p><p>Vous pouvez télécharger les sources sur le <a
href="http://code.google.com/p/xebia-france/source/browse/trunk/flex/XebiaFlex/" title="SVN de Xebia France" >SVN de Xebia France</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/26/flex-custom-style-datagrid/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Devoxx &#8211; Jour 2 &#8211; Les effets avec Flex 4</title><link>http://blog.xebia.fr/2009/11/19/devoxx-jour-2-les-effets-avec-flex-4/</link> <comments>http://blog.xebia.fr/2009/11/19/devoxx-jour-2-les-effets-avec-flex-4/#comments</comments> <pubDate>Thu, 19 Nov 2009 14:17:54 +0000</pubDate> <dc:creator>Ellène Dijoux</dc:creator> <category><![CDATA[RIA]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[Flex]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3226</guid> <description><![CDATA[La session Wicket initialement prévue Mardi matin ayant été annulée, j&#8217;ai assisté à la place à une présentation sur les effets Flex. Je pensais que je ne pouvais rien apprendre de plus à ce sujet, je me suis trompée : l&#8217;utilisation des effets a été simplifiée, et il est maintenant possible d&#8217;étendre les effets. &#160; [...]]]></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
/> La session Wicket initialement prévue Mardi matin ayant été annulée, j&#8217;ai assisté à la place à une présentation sur les effets Flex. Je pensais que je ne pouvais rien apprendre de plus à ce sujet, je me suis trompée : l&#8217;utilisation des effets a été simplifiée, et il est maintenant possible d&#8217;étendre les effets.</p><p>&nbsp;</p><h3><a
name="Questcequuneffet"></a>Qu&#8217;est ce qu&#8217;un effet ?</h3><h4><a
name="Flex"></a>Flex 3</h4><p>En Flex, il est possible de définir des effets pour des transitions ou lors du déclenchement d&#8217;un évènement (hide, show par exemple).<br
/> Nous allons reprendre l&#8217;exemple du Dissolve disponible sur le <a
href="http://examples.adobe.com/flex3/componentexplorer/explorer.html" title="Flex 3 Component Explorer" >Flex 3 Component Explorer</a>.<br
/> On commence par définir les effets :</p><pre class="brush: xml; title: ; notranslate">
&lt;mx: Dissolve id=&quot;dissolveOut&quot; duration=&quot;1000&quot; alphaFrom=&quot;1.0&quot; alphaTo=&quot;0.0&quot;/&gt;
</pre><p>Puis on indique au composant cible, l&#8217;effet qu&#8217;il doit utiliser lorsque l&#8217;on cache le label :</p><pre class="brush: xml; title: ; notranslate">
&lt;mx:Label text=&quot;Nokia 9930&quot;
          fontSize=&quot;14&quot;
          visible=&quot;{cb1.selected}&quot;
          hideEffect=&quot;{dissolveOut}&quot;/&gt;
...
&lt;mx:CheckBox id=&quot;cb1&quot; label=&quot;visible&quot; selected=&quot;true&quot;/&gt;
</pre><p>Dans Flex 3, il n&#8217;est pas possible de gérer des effets sur la valeur d&#8217;une propriété comme le texte ou la couleur par exemple. Les effets ne sont en effet applicables que sur les composants.</p><h4><a
name="Flex"></a>Flex 4</h4><p>La nouveauté dans Flex 4 tient tout d&#8217;abord dans la définition d&#8217;une nouvelle super classe Animate qui vient remplacer TweenEffect. Cette nouvelle super classe fournit de nouvelles propriétés telles que easer, interpolator et motionPaths que nous verrons par la suite.</p><p>Dans cette nouvelle version, les effets sont plus flexibles et il est possible de :</p><ul><li>modifier la valeur des propriétés telles que le gradient d&#8217;une couleur ou la taille,</li><li>régler la vitesse de l&#8217;effet, lui donner une accélération au début ou à la fin par exemple,</li><li>déplacer plus facilement les composants lors d&#8217;un effet.</li></ul><h3><a
name="Lesnouveauxeffets"></a>Les nouveaux effets</h3><h4><a
name="LeseffetsD"></a>Les effets 3D</h4><p>Parmi les nouveaux effets, voici probablement les plus impressionnants d&#8217;entre eux : les effets en trois dimensions. Grâce à Flash Player 10 qui est maintenant capable de représenter un objet 3D, on peut par exemple exécuter un effet de déplacement en profondeur ou une rotation.</p><h3><a
name="Laconfigurationdeseffets"></a>La configuration des effets</h3><p>Avec cette nouvelle super classe <em>Animate</em> viennent de nouvelles propriétés :</p><ul><li>easer : l&#8217;atténuation de l&#8217;effet (en quelque sorte une accélération ou décélération avec laquelle l&#8217;effet sera appliqué),</li><li>interpolator : fonction utilisée par l&#8217;effet pour calculer les valeurs à prendre pour une propriété entre le début et la fin de cet effet,</li><li>motionPaths : un vecteur contenant des objets MotionPath, chacun portant le nom et la valeur que la propriété peut prendre,</li><li>repeatBehavior : permet de répéter l&#8217;effet.</li></ul><p>Avec ces nouvelles fonctions, il est encore plus simple de réaliser des effets customisés comme par exemple un bouton qui s&#8217;enfonce lorsque l&#8217;on clique dessus, ou un changement de couleur lorsque le curseur pointe un composant. Maintenant à vous de laisser parler votre imagination.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/19/devoxx-jour-2-les-effets-avec-flex-4/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/11/02/revue-de-presse-xebia-132/</link> <comments>http://blog.xebia.fr/2009/11/02/revue-de-presse-xebia-132/#comments</comments> <pubDate>Mon, 02 Nov 2009 17:35:24 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Amazon]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[POI]]></category> <category><![CDATA[RDS]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[SpringOne]]></category> <category><![CDATA[Sun]]></category> <category><![CDATA[tcServer]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3056</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Amazon lance Relational Database Service Oracle tente de rassurer la communauté Sun Keynote de Rod Johnson à SpringOne/2GX 2009 Le coin de la technique Optimisez vos requêtes SQL Apache POI 3.5 Interminables débats sur la mort de Java Une version [...]]]></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/11/02/revue-de-presse-xebia-132/#AmazonlanceRelationalDatabaseS">Amazon lance Relational Database Service</a></li><li><a
href="http://blog.xebia.fr/2009/11/02/revue-de-presse-xebia-132/#Oracletentederassurerlacommuna">Oracle tente de rassurer la communauté Sun</a></li><li><a
href="http://blog.xebia.fr/2009/11/02/revue-de-presse-xebia-132/#KeynotedeRodJohnsonSpringOneGX">Keynote de Rod Johnson à SpringOne/2GX 2009</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/11/02/revue-de-presse-xebia-132/#OptimisezvosrequtesSQL">Optimisez vos requêtes SQL</a></li><li><a
href="http://blog.xebia.fr/2009/11/02/revue-de-presse-xebia-132/#ApachePOI">Apache POI 3.5</a></li><li><a
href="http://blog.xebia.fr/2009/11/02/revue-de-presse-xebia-132/#InterminablesdbatssurlamortdeJ">Interminables débats sur la mort de Java</a></li><li><a
href="http://blog.xebia.fr/2009/11/02/revue-de-presse-xebia-132/#UneversiondetcServerpourlesdve">Une version de tcServer pour les développeurs</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/11/02/revue-de-presse-xebia-132/#FlexchezlesTontonsFlexeurs">Flex 4 chez les Tontons Flexeurs</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="AmazonlanceRelationalDatabaseS"></a>Amazon lance Relational Database Service</h4><p>Quelques mois après la disponibilité d&#8217;Amazon Elastic MapReduce, le libraire américain continue d&#8217;enrichir sa gamme de services de Cloud Computing en lançant <a
title="Amazon Relational Database Service (RDS)" href="http://aws.amazon.com/rds/">Amazon Relational Database Service (RDS)</a>.</p><p>RDS offre une base de données MySQL sur une plate-forme dynamiquement provisionnable. Suivant la logique initiée avec ses autres services, la facturation est fonction de la consommation réelle, la gestion des instances se fait à l&#8217;aide d&#8217;un Web Service spécifique à RDS et leur monitoring est possible par <a
title="CloudWatch" href="http://aws.amazon.com/cloudwatch/">CloudWatch</a>.</p><p>Outre ces caractéristiques communes aux services d&#8217;Amazon, on retiendra principalement de RDS :</p><ul><li>Utilisation de MySQL 5.1 avec <a
title="InnoDB" href="http://www.innodb.com/">InnoDB</a>,</li><li>Offre de réplication prévue pour assurer la haute disponibilité, mais non disponible à ce jour,</li><li>Système de gestion des backups.</li></ul><p>Par ce service, Amazon déleste ses clients des principales tâches liées à l&#8217;administration d&#8217;une base de données relationnelle. Répondant ainsi à un besoin réel, on peut s&#8217;attendre à ce que ce service, s&#8217;inscrivant dans l&#8217;offre homogène d&#8217;Amazon, rencontre un succès commercial.</p><p>Plusieurs réactions et commentaires ont suivi cette annonce, on retiendra particulièrement <a
title="l'observation de Krishnan Subramanian" href="http://www.cloudave.com/link/amazon-releases-relational-database-as-a-service-my-initial-thoughts">l&#8217;observation de Krishnan Subramanian</a>, sur le coup dur que constitue ce nouveau service pour <a
title="FathomDB" href="http://fathomdb.com/about/home">FathomDB</a>, une entreprise qui proposait un service d&#8217;hébergement MySQL sur EC2. Il remarque alors qu&#8217;il est délicat pour des <em>startups</em> de parier sur de tels services propriétaires.</p><h4><a
name="Oracletentederassurerlacommuna"></a>Oracle tente de rassurer la communauté Sun</h4><p>Depuis l&#8217;<a
title="acquisition de Sun par Oracle en avril dernier" href="http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/">acquisition de Sun par Oracle en avril dernier</a>, le futur de la stack Sun a fait l&#8217;objet de peu de communiqués. Quelques rumeurs ici ou là sur le futur de MySQL ont fait surface, après la disparition du lien permettant de télécharger les premières briques de MySQL 6. C&#8217;est peut-être pour couper court à ce genre de bruits de couloir qu&#8217;Oracle présente ses intentions sur la stack Sun via la <a
title="mise  jour de sa FAQ" href="http://www.oracle.com/ocom/groups/public/documents/webcontent/038563.pdf">mise à jour de sa FAQ</a> . En résumé « on garde tout, et on en fait toujours plus » :</p><ul><li>Oracle dit vouloir passer plus de temps sur Solaris et Sparc que Sun ne l&#8217;a fait par le passé.  La collaboration d&#8217;ingénieurs base de données Oracle et Sun ouvre d&#8217;ailleurs de <a
title="nouvelles perspectives" href="http://www.oracle.com/technology/oramag/oracle/09-nov/o69news.html">nouvelles perspectives</a>.</li><li>Côté virtualisation, tous les produits Sun &#8216;devraient&#8217; continuer à être développés : VDI, Secure Global Desktop, Sun Ray, and VirtualBox.</li><li>Un alignement entre Oracle Weblogic Server et Glassfish Enterprise Server va être effectué. Glassfish reste l&#8217;implémentation de référence open source pour Java EE 6.</li><li>Netbeans restera une solution alternative open source à Oracle JDeveloper et Oracle Enterprise Pack pour Eclipse.</li><li>MySQL devrait être ajouté à la liste des bases de données de la suite Oracle au même titre que Berkeley DB, une base de données open source.</li></ul><p>Comme vous pouvez le constater, rien de très précis, tout est au conditionnel. Le but est avant tout de ne surtout pas se mettre à dos les différentes communautés.</p><h4><a
name="KeynotedeRodJohnsonSpringOneGX"></a>Keynote de Rod Johnson à SpringOne/2GX 2009</h4><p>SpringSource est actuellement un des plus grands agitateurs de notre écosystème. Et donc quand Rod Johnson, le <em>papa</em> de Spring, vient donner un keynote en ouverture du plus gros évènements annuel de l&#8217;éditeur, on écoute avec attention. Grâce à InfoQ, il est possible de retrouver cette <a
title="intervention en diffr" href="http://www.infoq.com/presentations/johnson-keynote-springone2gx">intervention en différé</a>.<br
/> En résumé, pas grand chose de nouveau, mais Rod Johnson enfonce le clou sur les sujets que Spring met en avant depuis quelques mois déjà :</p><ul><li>Spring 3.0 : les nouvelles fonctionnalités, et les scénarios d&#8217;upgrade.</li><li>Les languages dynamiques : Groovy et Grails, une fois encore à l&#8217;honneur</li><li>Les outils destinés aux developpeurs: tcServer (voir par ailleurs), Spring Insight, SpringSource Tool Suite</li><li>Les grandes manœuvre de l&#8217;éditeur : aquisition par VMWare (pas grand chose à se mettre sous la dent de ce coté là)</li><li>Le futur de SpringSource : CloudFoundry et les Cloud d&#8217;entreprise en Java</li></ul><p>En bref, un très bon résumé (pour ceux qui reviendraient de longues vacances) des changements qui nous attendent dans les mois à venir, impulsés par l&#8217;un des éditeurs les plus dynamiques du monde JEE.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="OptimisezvosrequtesSQL"></a>Optimisez vos requêtes SQL</h4><p>Nous sommes tombés sur ce post qui nous propose <a
title="15 moyens pour optimiser vos requtes SQL" href="http://hungred.com/useful-information/ways-optimize-sql-queries/">15 moyens pour optimiser vos requêtes SQL</a>. Si quelques-unes d&#8217;entre elles vous paraitront être issues du bon sens commun, d&#8217;autres méritent le détour :</p><ul><li><strong>Prenez le plus grand soin de vos index</strong> : Le contenu des index primaires se doit d&#8217;être le plus petit possible, les index uniques sont en règle générale plus performants.</li><li><strong>Recherchez par wildcard avec certaines précautions</strong> : Privilégiez l&#8217;utilisation de wildcard à l&#8217;utilisation de <em>SUBSTR</em>. Les wildcards postfixés sont plus performants que les wildcards préfixés. Dans la mesure du possible n&#8217;hésitez pas à n&#8217;indexer qu&#8217;une sous partie d&#8217;une chaîne de caractères plutôt que la chaîne dans son ensemble. En général utilisez les types de données les plus petits possibles.</li><li><strong>Simplifiez vos requêtes</strong> : Privilégiez l&#8217;utilisation de l&#8217;opérateur <em>EXIST</em> à une utilisation de <em>COUNT</em>. Limitez le nombre de lignes à retourner pour éviter la récupération complète d&#8217;une table. Utilisez des valeurs par défaut dans vos colonnes pour simplifier vos requêtes.</li><li><strong>Évitez les scans inutiles</strong> : Remplacer l&#8217;opérateur <em>NOT</em> d&#8217;une expression complexe par son inverse permet de ne pas évaluer l&#8217;intégralité de celle-ci. Transformez une sous-requête dans un <em>IN</em> par une sous-requête dans un <em>FROM</em> <em>(et simulez ainsi une table virtuelle)</em>. Les <em>UNION</em> sont en principe plus efficaces que les <em>OR</em> car ils permettent d&#8217;optimiser l&#8217;utilisation des index.</li></ul><p>Le tuning de requêtes SQL n&#8217;est pas simple, les commentaires sur le billet original en témoignent. Il dépend grandement de la base de données et de sa configuration. La base de données repose sur des statistiques pour savoir quand utiliser ses index. De ce fait, l&#8217;amélioration de la performance de vos requêtes commence le plus souvent par une <a
title="analyse du plan d'exécution" href=" http://www.adp-gmbh.ch/ora/sql/execution_plan.html">analyse du plan d&#8217;exécution</a> de celles-ci. Celui-ci vous permettra de trouver comment poser vos index. Enfin, certaines bases de données comme Oracle vous permettent d&#8217;agir directement sur son plan d&#8217;exécution à partir de votre requête, par l&#8217;intermédiaire de <a
title="SQL HINT" href="http://www.adp-gmbh.ch/ora/sql/hints/index.html">SQL HINT</a>. A n&#8217;utiliser qu&#8217;en dernier recours <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><h4><a
name="ApachePOI"></a>Apache POI 3.5</h4><p>Du nouveau sur le support des documents Office 2007 en Java <em>(sujet déjà abordé <a
title="il y a un an" href="http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#GestiondesdocumentsOffice">il y a un an</a>)</em> avec <a
title="Apache POI" href="http://poi.apache.org/">Apache POI</a> qui est sorti il y a un mois en version finale 3.5 <em>(via <a
title="InfoQ" href="http://www.infoq.com/news/2009/10/poi35">InfoQ</a>)</em>. Parmi les nombreuses nouveautés, on retiendra surtout le support des fichiers <em>.docx</em> et <em>.xlsx</em> et plus globalement des documents Office 2007 <em>(mais il aura fallu attendre un an entre la beta 3 et la version finale !)</em>.</p><p>Plusieurs librairies nous offrent déjà la possibilité de gérer nos fichiers Office 97-2003 <em>(format Microsoft OLE2)</em>. Peu d&#8217;entre elles proposent la gestion des fichiers Office 2007 <em>(format Microsoft Office Open XML ou OOXML)</em> : par exemple <a
title="AsposeWord" href=" http://www.aspose.com/community/blogs/aspose.words-product-family/archive/2008/11/07/this-aspose-words-for-java-2-6-0-released.aspx">Aspose.Word</a> gère uniquement les fichiers Word 2007. Avec Apache POI 3.5, c&#8217;est toute la gamme de produits Office 2007 qui se trouve ainsi supportée.</p><p>Quelques modifications seront toutefois nécessaires dans votre code pour supporter ce nouveau format. En effet, le modèle <code>org.apache.poi.hssf.usermodel.HSSF</code> actuel reste compatible OLE2 mais ne supportera pas OOXML. Il faudra ainsi passer par le nouveau modèle <code>org.apache.poi.ss.usermodel.HSSF</code> pour bénéficier de ce support. Ce nouveau modèle s&#8217;appuyant fortement sur l&#8217;ancien, l&#8217;équipe précise que le <em>switch</em> ne devrait pas être trop ardu.</p><p>Le téléchargement se passe comme d&#8217;habitude sur les <a
title="miroirs" href=" http://www.apache.org/dyn/closer.cgi/poi/">miroirs</a> d&#8217;Apache.</p><h4><a
name="InterminablesdbatssurlamortdeJ"></a>Interminables débats sur la mort de Java</h4><p>A chaque année ses raisons d&#8217;annoncer la mort de Java ; le débat n&#8217;est pas nouveau et les arguments se renouvellent depuis le début des années 2000 :</p><ul><li>Lourdeur de J2EE</li><li>Complexité et densité de l&#8217;écosystème Java</li><li>Manque d&#8217;intégration des solutions et les faiblesses du langage face au rival Microsoft .Net</li><li>Inadaptation à la création d&#8217;interfaces pour le Web et pour les clients lourds</li><li>Manque de productivité face aux nouveaux langages : Python, Ruby, &#8230;</li></ul><p>En 2009 l&#8217;argumentaire se tourne maintenant vers les langages alternatifs pour la JVM &#8211; principalement Groovy et Scala &#8211; et vers l&#8217;incertitude liée à la gouvernance de Java. Ainsi il y a quelque semaines, Stephen Colebourne <a
title="postait un inquitant graphique" href="http://www.jroller.com/scolebourne/entry/jsrs_submitted_over_time">postait un inquiétant graphique</a> montrant l&#8217;évolution décroissante du nombre de JSR créées auprès du JCP au cours des années. Il se demandait alors si cela pouvait être pris comme une perte de vitesse ou comme un signe de maturité mais remarquait que l&#8217;innovation était maintenant principalement portée par les communautés Open Source.</p><p>Stephan Schmidt apportait, en septembre dernier, <a
title="une analyse" href="http://codemonkeyism.com/java-dead/">une analyse</a> intéressante du débat sur la mort de Java. Il commençait par dissocier les 3 composantes de Java que sont le langage, la JVM et le JDK, chacun ayant une pérennité distincte. Il exposait alors différents points :</p><ul><li>La quantité d&#8217;offres d&#8217;emploi en Java reste constante comme le montre le <a
title="graphe Indeed" href="http://www.indeed.com/jobtrends?q=java">graphe Indeed</a> (devenant un classique en argumentaire).</li><li>Avant la mort de Java, un successeur doit se distinguer. Or Ruby et Python ont peiné à faire leur place dans le monde de l&#8217;entreprise. Il reconnaît en revanche le positionnement appréciable de Groovy suite à sa prise de contrôle par SpringSource puis par VMWare et l&#8217;innovation intéressante portée par Scala.</li><li>Java est toujours à même d&#8217;apporter les caractéristiques qui ont amené son succès : pas de pointeurs, gestion de la mémoire, orientation vers l&#8217;entreprise et Internet, gestion simple du parallélisme.</li><li>C&#8217;est le monde de l&#8217;entreprise qui permet le succès d&#8217;un langage, or Java répond toujours à ses besoins même si le langage présente des défauts nuisant à la productivité.</li><li>Java a perdu il y a bien longtemps le <em>hype</em> qui l&#8217;entourait, mais cela ne signifie pas pour autant sa mort.</li></ul><p>A travers l&#8217;évolution du débat, un aspect majeur ressort : les critiques portent maintenant principalement sur le langage Java, la JVM étant reconnu pour ses qualités et la capitalisation qui s&#8217;est faite autour d&#8217;elle. Dès lors, la JVM se présente comme une plate-forme standard pour les développements, non sans rappeler le statut acquis par l&#8217;environnement x86 d&#8217;Intel des années auparavant.</p><p>La mort annoncée du langage Java au profit de langages alternatifs pour la JVM doit, quant à elle, probablement être modérée. En effet Java, fort de ce que Sun <a
title="dcrit comme la plus grosse communaut" href="http://www.sun.com/java/everywhere/">décrit comme la plus grosse communauté</a> de développeurs au monde, n&#8217;est actuellement clairement pas menacé.</p><h4><a
name="UneversiondetcServerpourlesdve"></a>Une version de tcServer pour les développeurs</h4><p>SpringSource vient d&#8217;annoncer la sortie prochaine (pour l&#8217;instant, une preview est téléchargeable) de tcServer Developer Edition. Que trouve t&#8217;on dans ce joli package ?</p><p>Côté serveur d&#8217;application, rien de nouveau, c&#8217;est toujours du 100% Tomcat.<br
/> C&#8217;est une fois de plus dans les à-côtés que tcServer se distingue, avec l&#8217;arrivée de Spring Insight. Spring Insight, c&#8217;est une console qui va vous permettre de surveiller ce qui se passe au cœur de votre application, à la fois en prenant un point de vue global, mais aussi en zoomant très précisément sur une requête HTTP donnée.</p><p>Et quoi de nouveau me direz vous ? Et bien, à vrai dire, pas de rupture technologique (plusieurs outils permettaient de réaliser des mesures comparables) mais une facilité d&#8217;intégration à votre application, sujet si cher à Spring. Tout se passe en AOP (rien à faire donc dans votre code), toutes les informations sont stockées en mémoire (pas de base de données, mais en contrepartie, une augmentation de la mémoire consommée par votre application) et les principaux frameworks du marché peuvent être scrutés en utilisant un mécanisme de plugin.<br
/> En revanche, Spring est très clair : il s&#8217;agit d&#8217;un outil de développement : son utilisation en production exposerait vos applications d&#8217;un point de vue sécurité.<br
/> Une fois de plus, SpringSource joue la carte du tout intégré et de la simplicité, et risque de séduire à la fois des développeurs et des Q&amp;A un tant soit peu sensibles à la qualité intrinsèque d&#8217;une application.</p><p>Nous avons aimé :</p><ul><li>L&#8217;expressivité des métriques qui identifient les URL d&#8217;invocation, les principaux composants (actions Spring MVC, composants métier, etc), les transactions et les accès SGBD avec les requêtes SQL.</li><li>La granularité <em>macro</em> qui est souvent plus facile à comprendre que les mesures ultra-détaillées que nous proposent les profilers java.</li></ul><p>Notre souhait : l&#8217;intégration à l&#8217;environnement de développement et au code source de l&#8217;application en cliquant sur les graphes de Spring Insight.</p><p>Le screencast et la preview de tcServer Dev. se trouvent sur <a
title="le blog de SpringSource" href="http://blog.springsource.com/2009/10/21/introducing-tc-server-developer-edition-with-spring-insight/">le blog de SpringSource</a>.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="FlexchezlesTontonsFlexeurs"></a>Flex 4 chez les Tontons Flexeurs</h4><p>Les <a
title="tontons flexeurs" href="http://groups.adobe.com/groups/193bcaff5f/summary">tontons flexeurs</a>, le rendez-vous incontournable des flexeurs et des autres, nous propose une nouvelle présentation qui portera sur <a
title="les nouveauts de Flex 4" href="http://groups.adobe.com/posts/413b601182">les nouveautés de Flex 4</a>.<br
/> <a
title="Christophe Coenraets" href="http://coenraets.org/">Christophe Coenraets</a>, évangéliste senior chez Adobe, nous présentera ainsi les nouveautés de LiveCycle Data Services 3, le Model-Driven Developpement avec FlashBuilder 4 et l&#8217;intégration de Flex avec Spring.<br
/> La présentation se déroulera le mardi 10 novembre de 14h à 16h. Les inscriptions se font comme d&#8217;habitude sur l&#8217;<a
title="evenbrite" href="http://coenraets-flex4.eventbrite.com">evenbrite</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/02/revue-de-presse-xebia-132/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/</link> <comments>http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#comments</comments> <pubDate>Mon, 12 Oct 2009 16:41:35 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[AIR]]></category> <category><![CDATA[DHTMLX]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jdk-6]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[Jetty]]></category> <category><![CDATA[Maven]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Servlet 3.0]]></category> <category><![CDATA[Sonar]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2984</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII La fondation Eclipse se prépare à Servlet 3.0 avec Jetty 7.0 Sonar 1.11 RIA Air &#8216;Athena&#8217; DHTMLX 2.5 Tips and Tricks Maven 2 Le coin de la technique Sécurité : 5 choses de plus que les agresseurs d&#8217;applications web ne [...]]]></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ée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#LafondationEclipseseprpareServ">La fondation Eclipse se prépare à Servlet 3.0 avec Jetty 7.0</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#Sonar">Sonar 1.11</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#AirAthena">Air &#8216;Athena&#8217;</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#DHTMLX">DHTMLX 2.5</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#TipsandTricksMaven">Tips and Tricks Maven 2</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#Scuritchosesdeplusquelesagress">Sécurité : 5 choses de plus que les agresseurs d&#8217;applications web ne vous diront pas</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#LesoptimisationsduJDKuactivesp">Les optimisations du JDK 6u14 activées par défaut sur le JDK 7</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="LafondationEclipseseprpareServ"></a>La fondation Eclipse se prépare à Servlet 3.0 avec Jetty 7.0</h4><p>La fondation Eclipse nous livre une nouvelle version de Jetty estampillée 7.0. Côté nouveauté, pas grand chose à vrai dire. Il y a évidemment l&#8217;habituelle série de corrections de bugs et d&#8217;améliorations de performance. Cette nouvelle version marque surtout le début de la route vers l&#8217;implémentation des servlets 3.0 prévue pour Jetty 8.0. C&#8217;est aussi l&#8217;occasion pour Eclipse d&#8217;assimiler un peu plus le projet en changeant principalement le <em>package</em> ancêtre de <code>org.mortbay</code> vers <code>org.eclipse</code>, gare au <em>refactoring</em> donc. A noter tout de même, Jetty est maintenant livré sous une forme modulaire pleinement compatible OSGI. Webtide en profite pour livrer la même version de Jetty, en y intégrant des modules additionnels:</p><ul><li>JSP de glassfish</li><li>JTA d&#8217;atomikos</li><li>plugin maven</li><li>integration d&#8217;ant</li><li>configuration Spring</li></ul><p>Jetty 6 sera encore maintenu pendant quelques temps (aucune précision de la part d&#8217;Eclipse), tous les nouveaux développements seront faits sur Jetty 7, et la branche 8 sera en pré-release dans les prochains mois et supportera l&#8217;API Servlet 3.0.</p><ul><li><a
href="http://dev.eclipse.org/mhonarc/lists/jetty-dev/msg00294.html" title="Lannonce sur la ML" >L&#8217;annonce sur la ML</a></li><li><a
href="http://www.infoq.com/news/2009/10/jetty-7-0-released" title="La news dInfoQ" >La news d&#8217;InfoQ</a></li><li><a
href="http://www.eclipse.org/jetty/" title="La page Jetty chez Eclipse" >La page Jetty chez Eclipse</a></li><li><a
href="http://jetty.mortbay.org/jetty/index.html" title="La page Jetty chez Codehaus" >La page Jetty chez Codehaus</a></li></ul><h4><a
name="Sonar"></a>Sonar 1.11</h4><p>SonarSource nous gratifie d&#8217;une version 1.11 du désormais célèbre outil de suivi de qualité Sonar. Comme souvent, de nombreux de <em>bugs</em> ont été corrigés. Parmi les améliorations, on peut noter les passages à Hibernate 3.3 et GWT 1.7. Au chapitre des nouvelles fonctionnalités, la possibilité de réutiliser les fichiers de configuration PMD et CheckStyle définis dans le <em>pom</em> permettra de plus aisément éviter les doublons.</p><p>SonarSource tente de faciliter la vie des développeurs de <em>plugins</em> avec l&#8217;apparition d&#8217;un archétype Maven pour créer des <em>plugins</em> Sonar. D&#8217;autres nouveautés d&#8217;API, comme le filtrage de widgets suivant différents critères (comme le rôle utilisateur ou la langue choisie), ajoutent de la flexibilité.</p><ul><li><a
href="http://sonar.codehaus.org/sonar-111-in-screenshots/" title="Lannonce sur le blog Sonar" >L&#8217;annonce sur le blog Sonar</a> avec plein de jolies images.</li><li><a
href="http://sonar.codehaus.org/downloads/" title="La release note" >La release note</a>.</li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="AirAthena"></a>Air &#8216;Athena&#8217;</h4><p>Non, ce n&#8217;est pas une nouvelle marque de baskets, mais, comme les flexeurs le savent depuis le Flash Camp de mai, le nom de code de la future version de Adobe Air, la version 2.0. Comme on s&#8217;y attendait, celle-ci fonctionnera avec Flash 10 et Flex 4. Même si aucune date officielle n&#8217;a été avancée, Adobe dévoile peu à peu les principales évolutions de sa plate-forme, <a
href="http://www.insideria.com/2009/10/air-2-enhancements-complete-ov.html" title="nouveauts rpertories par Elad Elrom sur InsideRIA" >nouveautés répertoriées par Elad Elrom sur InsideRIA</a>.<br
/> Commençons par celle qui nous semble vitale dans l&#8217;adoption de AIR / Flex à grande échelle, à savoir une amélioration drastique des performances. Les équipes d&#8217;Adobe ont mis l&#8217;accent sur la réduction des ressources (CPU et mémoire) consommées par le runtime AIR. Les tests effectués sur une mini application montrent en effet une diminution des ressources utilisées (en regard de la version 1.5). Reste à tester ces optimisations sur une application gourmande&#8230; Toujours au chapitre performance, Adobe promet une optimisation de Webkit (le browser open source embarqué par AIR) et une installation Linux native.<br
/> Au menu des nouveautés, nous avons :</p><ul><li>Une meilleure connaissance de la plate-forme matérielle, avec la gestion des devices multi-touch et la gestion des périphériques de stockage USB ou réseau &#8216;à chaud&#8217;.</li><li>Un enrichissement des fonctionnalités des APIs existantes : points de sauvegarde dans les transactions, support IPv6, augmentation de la taille maximale de la fenêtre AIR, manipulation des données de l&#8217;API Microphone, time-out d&#8217;inactivité&#8230;</li><li>De nouvelles fonctionnalités via de nouvelles API, dont la plus étonnante est l&#8217;API File promises. Celle-ci permet de télécharger en local, depuis une application AIR, un ensemble de fichiers par simple Drag &#038; Drop. D&#8217;autres API font également leur apparition, en particulier au niveau du support réseau et de l&#8217;adhérence de AIR à l&#8217;OS (les fichiers peuvent maintenant être ouverts par des processus natifs de l&#8217;OS, par exemple Notepad pour un .txt sous Windows).</li></ul><p>Une évolution assez naturelle donc (correction des gros points de blocage des versions précédentes), mais quelques promesses de fonctionnalités intéressantes, en particulier via <em>l&#8217;adhérence</em> à l&#8217;OS.</p><h4><a
name="DHTMLX"></a>DHTMLX 2.5</h4><p>Des nouvelles de <a
href=" http://dhtmlx.com/" title="DTHMLX" >DTHMLX</a> (la 11ème librairie de notre <a
href="http://blog.xebia.fr/2009/01/26/revue-de-presse-xebia-93/#belleslibrairiesWebUI" title="revue de presse de fin janvier dernier" >revue de presse de fin janvier dernier</a>) qui est sorti il y a quelques semaines en <a
href="http://dhtmlx.com/docs/news/index.shtml?show=44" title="version 25" >version 2.5</a>.</p><p>Cette release apporte plusieurs corrections et améliorations sur tous les composants de la suite. On retiendra plus particulièrement :</p><ul><li>Une API orientée objet (l&#8217;API fonctionnelle est toujours disponible) ,</li><li>Nouvelle skin par défaut avec d&#8217;ici peu (mais non présent dans cette release) un <em>Skin Customizer</em> qui permettra de modifier facilement les couleurs principales du thème standard,</li><li>Nouveau moteur de rendu qui améliore la performance d&#8217;affichage des composants <code>Layout</code>, <code>Windows</code>, <code>Accordion</code> et <code>Tabbar</code>,</li><li>Une API de conteneurs unifiée (toujours pour les <code>Layout</code>, <code>Windows</code>, <code>Accordion</code> et <code>Tabbar</code>),</li><li>Améliorations générales pour les composants <code>Grid</code>, <code>Tree</code> et <code>TreeGrid</code>,</li><li>Révision complète du <a
href="http://www.dhtmlx.com/docs/products/docsExplorer/" title="DocsExplorer" >DocsExplorer</a>.</li></ul><p>Puisque nous sommes sur DHTMLX, notons aussi le composant <a
href="http://www.dhtmlx.com/docs//products/dhtmlxScheduler/index.shtml" title="Scheduler v20" >Scheduler v.2.0</a>, sorti en juillet dernier, qui n&#8217;est pas inclus dans la suite mais qui vaut tout de même le détour si vous avez besoin d&#8217;un composant calendrier haut niveau.</p><p>Les téléchargements se passent par <a
href="http://www.dhtmlx.com/docs/download.shtml" title="ici" >ici</a> et comme d&#8217;habitude vous aurez le choix entre le téléchargement composant par composant ou le téléchargement de la suite complète.<br
/> Chaque composant existe en édition standard ou professionnelle. Pour résumer la version standard contient moins de fonctionnalités et est sous licence GPL alors que la professionnelle contient toutes les fonctionnalités, un support prioritaire en cas de bugs/questions sur le forum et plusieurs centaines d&#8217;exemples de fonctionnalités avancées.<br
/> Pour le détail des licences et des différents prix proposés pour les composants et pour la suite complète, cela se passe sur cette <a
href="http://www.dhtmlx.com/docs/products/licenses.shtml" title="page" >page</a>.</p><h4><a
name="TipsandTricksMaven"></a>Tips and Tricks Maven 2</h4><p>Sonatype nous présente <a
href="http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/" title="ici" >ici</a> quelques nouveautés intéressantes de maven disponibles depuis la version 2.1 concernant les projets multi-modules. Cela se traduit par de nouvelles commandes disponibles telles que:</p><ul><li><code>-rf</code>, <code>-resume-from</code>: permet de spécifier au maven reactor le projet à partir duquel on veut reprendre le build</li><li><code>-pl</code>, <code>-projects</code>: permet de sélectionner une liste de modules d&#8217;un projet multi-modules</li><li><code>-am</code>, <code>-also-make</code>: combinée avec l&#8217;option <code>-pl</code>, elle permet de construire tous les modules dépendants du module passé à l&#8217;option <code>pl</code></li><li><code>-amd</code>, <code>-also-make-dependents</code>: combinée avec l&#8217;option <code>-pl</code>, elle permet de construire tous les modules qui ont une dépendance vers le module passé à l&#8217;option <code>pl</code></li></ul><p>Très bonne nouvelle donc pour les développeurs dont le build prenait beaucoup de temps à cause de la reconstruction de modules non modifiés (et non impactés) par leurs nouveaux développements.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Scuritchosesdeplusquelesagress"></a>Sécurité : 5 choses de plus que les agresseurs d&#8217;applications web ne vous diront pas</h4><p>Le Denim Group continue sa série <a
href="http://denimgroup.typepad.com/denim_group/2009/09/13-things-a-web-application-attacker-wont-tell-you.html" title="13 Things a Web Applications Attacker Won't Tell You" >13 Things a Web Applications Attacker Won&#8217;t Tell You</a> que nous avions <a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Scuritchosesquelesagresseursda" title="traitée la semaine dernière" >traitée la semaine dernière</a> avec <a
href="http://denimgroup.typepad.com/denim_group/2009/10/5-more-things-a-web-application-attacker-wont-tell-you.html" title="5 nouvelles failles de scurit" >5 nouvelles failles de sécurité</a> de nos applications web :</p><ul><li>Ce n&#8217;est pas parce que vous utilisez un framework de sécurité que votre application est sécurisée.</li><li>Je n&#8217;utilise pas un browser pour attaquer votre application web.</li><li>J&#8217;adore quand votre site me permet d&#8217;<em>uploader</em> des fichiers dans l&#8217;arborescence des répertoires servis par l&#8217;application web.</li><li>Je peux intercepter et voler toutes les informations qui passent sur HTTP si elles ne sont pas protégées par SSL ou un mécanisme équivalent.</li><li>Une sécurité obscurantiste n&#8217;en est pas une (ne pas savoir faire ou se dire que ca n&#8217;arrivera pas ne protège pas).</li></ul><p>Si le dernier point est un débat éternel chez les experts de la sécurité les premiers sont en revanche communément admis.</p><h4><a
name="LesoptimisationsduJDKuactivesp"></a>Les optimisations du JDK 6u14 activées par défaut sur le JDK 7</h4><p>Rémi Forax, un contributeur sur <a
href="http://openjdk.java.net/" title="OpenJDK" >OpenJDK</a> et sur la <a
href="http://jcp.org/en/jsr/detail?id=292" title="JSR-292" >JSR-292</a>, <a
href="http://weblogs.java.net/blog/forax/archive/2009/10/06/jdk7-do-escape-analysis-default" title="a fait part de son étonnement" >a fait part de son étonnement</a> en constatant un gain significatif de performance entre deux <em>builds</em> successifs de l&#8217;OpenJDK 7 actuellement en cours de développement. C&#8217;est ainsi qu&#8217;il a pu se rendre compte que deux optimisations majeures du compilateur JIT de la JVM étaient activées par défaut <a
href="http://download.java.net/jdk7/changes/jdk7-b72.html" title="depuis le build 72" >depuis le <em>build</em> 72</a> du projet : l&#8217;<em>escape analysis</em> et la compression de pointeurs. Celles-ci étaient apparues dans le JDK 6u14 mais n&#8217;y étaient pas activées par défaut.</p><p>Pour rappel l&#8217;<em>escape analysis</em> consiste en l&#8217;analyse du bytecode d&#8217;une méthode pour découvrir les références vers les objets qui ne &laquo;&nbsp;s&#8217;échappent&nbsp;&raquo; pas du contexte de la méthode. Grâce à cette analyse, la JVM peut alors décider d&#8217;allouer ces objets directement sur la <em>stack</em> plutôt qu&#8217;en <em>heap</em> comme c&#8217;est normalement le cas. Il en résulte un gain de performance évident puisque le coût d&#8217;allocation et de libération de mémoire est alors supprimé pour ces objets.</p><p>La <a
href="http://wikis.sun.com/display/HotSpotInternals/CompressedOops" title="compression de pointeurs" >compression de pointeurs</a>, quant à elle, concerne uniquement les JVM 64 bits. En effet le passage d&#8217;un adressage de 32 à 64 bits entraîne une consommation plus élevée de la mémoire du fait de l&#8217;augmentation de la taille des pointeurs, induisant elle-même des temps de chargement plus longs et une surconsommation du cache du processeur. Pour palier ce problème, la compression de pointeurs se base sur le fait que la JVM aligne l&#8217;adresse des objets sur 64 bits (ceci afin de simplifier et donc d&#8217;accélérer leur accès en mémoire), pour procéder à un <em>scaling</em> des pointeurs. Ainsi, en limitant l&#8217;espace mémoire adressable à 32 Go, il est possible de contenir un pointeur dans 32 bits et donc de revenir à une consommation mémoire proche de celle d&#8217;une JVM 32 bits.</p><p>L&#8217;activation par défaut de ces deux optimisations sur le JDK 7 montre que l&#8217;équipe du projet estime désormais qu&#8217;elles ne sont plus expérimentales et qu&#8217;elles conviennent dans la majorité des cas. Ismael Juma <a
href="http://weblogs.java.net/blog/forax/archive/2009/10/06/jdk7-do-escape-analysis-default#comment-10698" title="prcise" >précise</a> par ailleurs qu&#8217;il est possible que ces activations par défaut soient reportées également au JDK 6 courant 2010.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/</link> <comments>http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#comments</comments> <pubDate>Mon, 05 Oct 2009 16:06:26 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[j2me]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[MIDP]]></category> <category><![CDATA[MSA]]></category> <category><![CDATA[NDK]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Web Beans]]></category> <category><![CDATA[Weld]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2972</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Google essuie les plâtres et met à jour l&#8217;Android NDK MIDP 3 et MSA 2 pour sauver J2ME ? Agilité Départs de la Scrum Alliance : bruits de couloirs RIA Sécurité : 13 choses que les agresseurs d&#8217;applications web ne [...]]]></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ée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Googleessuielespltresetmetjour">Google essuie les plâtres et met à jour l&#8217;Android NDK</a></li><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#MIDPetMSApoursauverJME">MIDP 3 et MSA 2 pour sauver J2ME ?</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#DpartsdelaScrumAlliancebruitsd">Départs de la Scrum Alliance : bruits de couloirs</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Scuritchosesquelesagresseursda">Sécurité : 13 choses que les agresseurs d&#8217;applications web ne vous diront pas</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Lesroadmapsdesimplmentationsde">Les roadmaps des implémentations de JPA 2.0</a></li><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#WebBeansestmortLonguevieaWeld">Web Beans est mort ! Longue vie a Weld !</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Googleessuielespltresetmetjour"></a>Google essuie les plâtres et met à jour l&#8217;Android NDK</h4><p>Pour rappel, le NDK est un environnement de développement complémentaire au SDK qui permet d&#8217;utiliser des langages autres que Java pour développer sur Android. Ce NDK est principalement dédié au développement C et C++. Parmi les nouveautés de la version 1.6, vous trouverez :</p><ul><li>Les librairies OpenGL ES 1.1 qui rapprochent encore un peu Android de l&#8217;IphoneOS.</li><li>Ciblage de version Android pour garantir le fonctionnement de votre application.</li><li>Possibilité de mélanger les sources Java et le code natif dans un même projet.</li></ul><p>Mais la semaine passée fût aussi l&#8217;occasion d&#8217;une joute entre Google et certains développeurs Android. Sujet de la discorde, le <a
href="http://www.cyanogenmod.com/" title="CyanogenMod" >CyanogenMod</a> une version libre, modifiée, d&#8217;Android. Google n&#8217;a pas apprécié le fait que son développeur ait la riche idée de distribuer avec son mod, les applications propriétaires qui lui sont chères. Citons par exemple : GMail, YouTube, Maps et Market. Nul besoin de dire que le système perd de son intérêt quand il est privé de ces outils estampillés Google&#8230;</p><p>Le spécialiste de la recherche a donc demandé l&#8217;interruption de toute distribution de ce mod, en attendant que le développeur trouve un moyen de livrer de l&#8217;Android sans aucune des G-Apps. C&#8217;est un baptême du feu pour ce système que Google a voulu ouvert. D&#8217;aucun disent que Google avait la possibilité de créer une alternative libre au jardin d&#8217;Eden d&#8217;Apple entouré de hauts remparts, à la place ce sera un autre jardin avec des murs un peu plus bas.</p><h4><a
name="MIDPetMSApoursauverJME"></a>MIDP 3 et MSA 2 pour sauver J2ME ?</h4><p><a
href="http://java.sun.com/products/midp/" title="Mobile Information Device Profile" >Mobile Information Device Profile</a> <em>(MIDP)</em>, associé à <a
href="http://java.sun.com/products/cldc/" title="Connected Limited Device Configuration" >Connected Limited Device Configuration</a> <em>(CLDC)</em> constitue l&#8217;API de base de J2ME, c&#8217;est cette architecture qui constitue le parc de 2 milliards de <em>devices</em> revendiqués par SUN.</p><p>La <a
href="http://jcp.org/en/jsr/detail?id=248" title="JSR-248 (Mobile Service Architecture)" >JSR-248 (Mobile Service Architecture)</a>, quant à elle, définit un ensemble d&#8217;APIs additionnelles pour les environnements MIDP J2ME apportant chacune un service particulier permettant souvent d&#8217;accéder à des fonctionnalités matérielles sous-jacentes (Bluetooth, GPS, Camera, &#8230;).</p><p>Ces deux piliers de J2ME sont en train d&#8217;évoluer avec la finalisation de <a
href="http://jcp.org/en/jsr/detail?id=271" title="MIDP 3" >MIDP 3</a> et <a
href="http://jcp.org/en/jsr/detail?id=249" title="MSA 2" >MSA 2</a>. Tandis que le premier apportera un rafraichissement de l&#8217;API de base de J2ME, le second poussera plus loin les possibilités d&#8217;intégration des applications mobiles J2ME.</p><p>Alors que les valeurs montantes du moment dans le monde du développement mobile sont clairement les plates-formes Android et iPhone, le rafraîchissement des APIs J2ME vieillissantes est le bienvenue et viendra épauler JavaFX Mobile dans son hypothétique ascension. On peut toutefois douter que cela suffira à inverser la tendance même si J2ME, fort de son parc colossal, n&#8217;est clairement pas menacé à court terme.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="DpartsdelaScrumAlliancebruitsd"></a>Départs de la Scrum Alliance : bruits de couloirs</h4><p>Vous le savez surement, la fin de l&#8217;été a marqué un tournant au sein de la Scrum Alliance.<br
/> Le 15 Septembre, dans un <a
href="http://www.scrumalliance.org/news_items/75" title="communiqu laconique" >communiqué laconique</a> <em>(et très américain &#8211; nous remercions &#8230; blablabla pour son excellent travail &#8230; blabla)</em>, il nous était annoncé le départ de deux éminents membres de la Scrum Alliance, Ken Schwaber <em>(son CEO)</em> et Jim Cundiff <em>(son Managing Director)</em>.<br
/> Après une enquête acharnée et au détour de quelques indiscrétions de sources <em>(que nous ne citerons pas)</em>, il s&#8217;avère que Ken a eu un grave accident de vélo et que Jim a été démissionné compte tenu de ses manquements dans la refonte du processus de certification dont il était en charge.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="Scuritchosesquelesagresseursda"></a>Sécurité : 13 choses que les agresseurs d&#8217;applications web ne vous diront pas</h4><p>Le Denim Group regroupe dans <a
href="http://denimgroup.typepad.com/denim_group/2009/09/13-things-a-web-application-attacker-wont-tell-you.html" title="13 Things a Web Applications Attacker Wont Tell You" >13 Things a Web Applications Attacker Won&#8217;t Tell You</a> les principales failles de sécurité de nos applications web :</p><ol><li>Transformer une requête GET en POST ne cachera pas les paramètres même s&#8217;ils n&#8217;apparaissent plus dans la barre d&#8217;adresse du navigateur <em>(vérifiez avec <a
href="http://www.charlesproxy.com/" title="Charles Proxy" >Charles Proxy</a> ou <a
href="http://www.fiddler2.com/fiddler2/" title="Fiddler" >Fiddler</a> si vous en doutez)</em>.</li><li>Utiliser un champ de formulaire <code>hidden</code> ne permet ni de cacher une information ni d&#8217;empêcher sa modification.</li><li>Idem pour les cookies <em>(voir #1)</em>.</li><li>Contrôler les données coté client avec du javascript ne m&#8217;empêchera pas de modifier leur valeur.</li><li>J&#8217;aime vous entendre dire &laquo;&nbsp;Cela n&#8217;arrivera jamais en production&nbsp;&raquo;.</li><li>Et j&#8217;adore quand vous dites &laquo;&nbsp;Un pirate ne ferait jamais ça&nbsp;&raquo;.</li><li>Je déteste les validations strictes cote serveur.</li><li>Cette page d&#8217;erreur avec le message détaillé me facilite tellement la vie.</li><li>La plupart des bannières &laquo;&nbsp;Sécurité Garantie !&nbsp;&raquo; ne me servent qu&#8217;a voir que vous n&#8217;avez pas compris les bases de la sécurité.</li><li>Ce scanneur d&#8217;application web que vous avez lancé, il n&#8217;a rien trouvé. Il n&#8217;a même pas effleuré les failles de votre application.</li><li>Ce scanneur réseau que vous avez lancé, il n&#8217;a même pas commencé a tester la sécurité de votre application.</li><li>Je connais AJAX (et toutes les nouvelles technologies a la mode) mieux que vous et mieux que vous ne pouvez imaginer.</li><li>Le plus astucieux vous vous croyiez, le mieux je me sens.</li></ol><p>Moralité, soyons humble et rigoureux, nous ne pourrons pas dire que nous ne savions pas, ces conseils sont répétés par la plupart des tutoriaux de frameworks web <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Lesroadmapsdesimplmentationsde"></a>Les roadmaps des implémentations de JPA 2.0</h4><p>Alors que la <a
href="http://jcp.org/en/jsr/detail?id=317" title="JSR-317 (Java Persistence API 2.0)" >JSR-317 (Java Persistence API 2.0)</a> vient de diffuser une <em>Proposed Final Draft 2</em> et que sa finalisation approche, nous souhaitions faire un tour d&#8217;horizon des principales implémentations en préparation. Comme c&#8217;est souvent le cas avec les JSRs, les développeurs n&#8217;attendent pas la finalisation des spécifications pour commencer à les implémenter. Ainsi, on se souvient que JPA 1.0, intégré à la <a
href="http://jcp.org/en/jsr/summary?id=220" title="JSR-220 (Enterprise JavaBeans 3.0)" >JSR-220 (Enterprise JavaBeans 3.0)</a> avait fait l&#8217;objet d&#8217;implémentations alpha chez JBoss dès la diffusion des <em>early drafts</em>, ce qui avait permis la stabilisation du conteneur peu après la finalisation de la JSR.</p><ul><li><strong>Hibernate</strong> : l&#8217;équipe de développement Hibernate <a
href="http://relation.to/12153.lace" title="a annonc" >a annoncé</a> fin aout la disponibilité d&#8217;une version 3.5 beta 1 qui implémentait la majorité des nouveautés de JPA 2.0. Aucune indication n&#8217;était alors donnée sur la date de finalisation, mais le bon avancement permet de supposer qu&#8217;elle arrivera rapidement. A noter toutefois que certaines optimisations importantes telles que la compilation des requêtes <em>criteria</em> n&#8217;arriveront que dans une version ultérieure.</li><li><strong>EclipseLink</strong> : la fondation Eclipse <a
href="http://www.eclipse.org/org/press-release/20080317_Eclipselink.php" title="avait annoncé" >avait annoncé</a> fièrement en début d&#8217;année 2008 qu&#8217;EclipseLink serait l&#8217;implémentation JPA 2.0 de référence. Une <a
href="http://wiki.eclipse.org/EclipseLink/RoadMap" title="roadmap" >roadmap</a> mise à jour en avril dernier fait état d&#8217;une version 2.0 d&#8217;EclipseLink implémentant JPA 2.0 pour l&#8217;automne 2009.</li><li><strong>Apache OpenJPA</strong> : le projet OpenJPA maintient <a
href="http://openjpa.apache.org/jpa-20-roadmap.html" title="une roadmap" >une roadmap</a> très rigoureuse tablant sur un démarrage de phase <em>release candidate</em> pour la fin de l&#8217;année. Il s&#8217;agira de la version 2.0 d&#8217;OpenJPA, elle est actuellement développée sur le <em>trunk</em> du projet.</li></ul><p>La première version de la spécification JPA a été un succès puisque de nombreux développeurs ont reconnu sa légitimité et l&#8217;ont adopté dans leurs projets plutôt que de se reposer sur l&#8217;API propre à leur <em>framework</em> de persistance. Toutefois, pour certaines fonctionnalités telles que les requêtes <em>criteria</em> ou des options de <em>mapping</em> évoluées, il était jusqu&#8217;alors nécessaire de contourner JPA. Dès lors, on imagine aisément que JPA 2.0, comblant les manques de son ainée, bénéficiera d&#8217;une large adoption. La disponibilité des moteurs JPA 2.0 qui seront utilisés par JBoss AS, Glassfish et WebSphere autour de la fin de l&#8217;année devrait par ailleurs accélérer l&#8217;omniprésence de cette nouvelle API.</p><h4><a
name="WebBeansestmortLonguevieaWeld"></a>Web Beans est mort ! Longue vie a Weld !</h4><p>Apres les bruits de couloir de la Scrum Alliance, nous continuons la rubrique people avec une fois encore Web Beans. Après le changement de nom de la <a
href="http://jcp.org/en/jsr/detail?id=299" title="JSR 299" >JSR 299</a> en Java Contexts and Dependency Injection, voici que la Reference Implementation se <a
href="http://in.relation.to/Bloggers/TheJSR299ReferenceImplementationGetsANewName" title="rebaptise Weld" >rebaptise Weld</a>.<br
/> Pendant ce temps, la <a
href="http://www.jcp.org/en/jsr/summary?id=330" title="JSR 330: Dependency Injection for Java" >JSR 330: Dependency Injection for Java</a> continue son chemin avec son implémentation partielle dans <a
href="http://blog.springsource.com/2009/09/29/spring-framework-3-0-rc1-released/" title="Spring Framework 3.0 RC1" >Spring Framework 3.0 RC1</a> et son intégration dans <a
href="http://code.google.com/p/google-guice/issues/detail?id=424" title="Google Guice" >Google Guice</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/09/28/revue-de-presse-xebia-126/</link> <comments>http://blog.xebia.fr/2009/09/28/revue-de-presse-xebia-126/#comments</comments> <pubDate>Mon, 28 Sep 2009 16:36:38 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Chrome]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[IE]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JBoss Microcontainer]]></category> <category><![CDATA[Lucene]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Tellurium]]></category> <category><![CDATA[VFS]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2922</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Condamnation pour non respect de licence RIA Chrome dans IE avec Google Chrome Frame Le coin de la technique Guide utilisateur de Tellurium Lucene évolue et prépare l&#8217;avenir JBoss Microcontainer et son Virtual File System Injection de dépendances en Javascript [...]]]></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ée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/28/revue-de-presse-xebia-126/#Condamnationpournonrespectdeli">Condamnation pour non respect de licence</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/28/revue-de-presse-xebia-126/#ChromedansIEavecGoogleChromeFr">Chrome dans IE avec Google Chrome Frame</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/28/revue-de-presse-xebia-126/#GuideutilisateurdeTellurium">Guide utilisateur de Tellurium</a></li><li><a
href="http://blog.xebia.fr/2009/09/28/revue-de-presse-xebia-126/#Lucenevolueetprparelavenir">Lucene évolue et prépare l&#8217;avenir</a></li><li><a
href="http://blog.xebia.fr/2009/09/28/revue-de-presse-xebia-126/#JBossMicrocontaineretsonVirtua">JBoss Microcontainer et son Virtual File System</a></li><li><a
href="http://blog.xebia.fr/2009/09/28/revue-de-presse-xebia-126/#InjectiondedpendancesenJavascr">Injection de dépendances en Javascript &#8230;</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/09/28/revue-de-presse-xebia-126/#Devoxxleplanningdessessionsest">Devoxx 2009 : le planning des sessions est maintenant connu</a></li><li><a
href="http://blog.xebia.fr/2009/09/28/revue-de-presse-xebia-126/#AsylumunnouveaupodcastddiJBoss">Asylum, un nouveau podcast dédié à JBoss</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Condamnationpournonrespectdeli"></a>Condamnation pour non respect de licence</h4><p>Qu&#8217;arrive-t-il lorsque l&#8217;on réutilise du code open source sans se soucier de sa licence ? On se fait taper sur les doigts. C&#8217;est en effet la mésaventure qui est arrivé à la société Edu4, comme le présente l&#8217;<a
href="http://fsffrance.org/news/article2009-09-22.fr.html" title="article de la Free Software Foundation France sur laffaire" >article de la Free Software Foundation France sur l&#8217;affaire</a>.<br
/> Ayant fourni en 2000 à l&#8217;<a
href="http://www.afpa.fr/" title="AFPA" >AFPA</a> (un organisme de formation professionnelle) un logiciel basé sur VNC, Edu4 a reçu une requête de cet organisme demandant le code source du logiciel, conformément à ce qu&#8217;autorise la licence GPL.<br
/> Edu4, dans un premier temps, a refusé de fournir les sources de VNC modifiées par ses soins. Puis, à la suite d&#8217;une décision de justice de 2002, a fourni des sources ne correspondant pas à la version livrée et dans lesquelles le texte de la licence GPL de VNC avait été retiré.<br
/> Cette semaine, la cour d&#8217;Appel de Paris a reconnu Edu4 coupable.<br
/> Nous savons tous comment se passent les projets sur lesquels il y a une certaine pression et certains enjeux qui poussent à sortir des produits le plus vite possible sans mesurer toutes les conséquences. Nous ne jetterons donc pas la pierre à Edu4. Mais cette histoire permet de préciser que (1) la licence GNU GPL a bien valeur légale en France et que (2) n&#8217;importe quel utilisateur de logiciel basé sur la licence GNU GPL est en droit de réclamer les sources, et pas seulement les auteurs du code original (dans le cas présent, les auteurs de VNC n&#8217;ont pas participé au procès).</p><p>Il faut donc être bien conscient des conséquences que peut avoir la réutilisation de code open-source. Selon la licence (<a
href="http://fr.wikipedia.org/wiki/Logiciel_libre#Licences" title="article de Wikipedia sur les licences du logiciel libre" >article de Wikipedia sur les licences du logiciel libre</a>), il y a des obligations et des contraintes. Mais c&#8217;est bien là la moindre des choses pour pouvoir profiter de code déjà testé, éprouvé et amélioré par nombre de contributeurs. Cette prise de conscience est d&#8217;autant plus nécessaire que les composants open-source sont <a
href="http://www.zdnet.fr/galerie-image/0,50018840,39707056,00.htm" title="de plus en plus présents dans les SI des entreprises françaises" >de plus en plus présents dans les SI des entreprises françaises</a>. Pour un autre éclairage sur ces questions, on peut citer <a
href="http://www.itrmanager.com/articles/95161/trois-questions-posent-dsi-propos-logiciels-libres-br-matt-light-vice-president-recherche-gartner.html" title="linterview de Matt Light par ITRManager" >l&#8217;interview de Matt Light par ITRManager</a>.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="ChromedansIEavecGoogleChromeFr"></a>Chrome dans IE avec Google Chrome Frame</h4><p>Une des sensations de la semaine dernière est l&#8217;annonce de <a
href="http://blog.chromium.org/2009/09/introducing-google-chrome-frame.html" title="Google Chrome Frame" >Google Chrome Frame</a> ou comment transformer Internet Explorer en Google Chrome.<br
/> On ne compte plus les sites ayant relayé l&#8217;information : cela passe par <a
href="http://www.infoq.com/news/2009/09/Google-Chrome-Frame" title="InfoQ" >InfoQ</a>, <a
href="http://ajaxian.com/archives/chrome-frame" title="Ajaxian" >Ajaxian</a>, <a
href="http://www.insideria.com/2009/09/google-releases-google-chrome.html" title="Inside RIA" >Inside RIA</a> ou encore <a
href="http://www.techcrunch.com/2009/09/22/google-turns-internet-explorer-into-chrome-yes-seriously/" title="TechCrunch" >TechCrunch</a>.<br
/> <a
href="http://code.google.com/intl/fr-FR/chrome/chromeframe/" title="Google Chrome Frame" >Google Chrome Frame</a> se présente sous la forme d&#8217;un plug-in pour Internet Explorer (6, 7 et 8). Le plug-in se lancera sur la balise suivante (ce qui implique donc que tous nos <code>header</code> HTML doivent être changés) :</p><pre class="brush: java; title: ; notranslate">
&lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;chrome=1&quot;&gt;
</pre><p>À partir de là, 2 possibilités :</p><ul><li>Le plug-in est installé : il détecte le tag et lance le moteur de rendu de Chrome (<a
href="http://webkit.org/" title="WebKit" >WebKit</a>) dans IE</li><li>Le plug-in n&#8217;est pas installé : la page s&#8217;affiche normalement dans IE mais il est possible de rediriger l&#8217;utilisateur vers une page d&#8217;installation</li></ul><p>Les avantages sont multiples : on retiendra de nombreuses optimisations de performances Javascript, un chargement de page plus rapide mais aussi l&#8217;utilisation de HTML 5 avec le offline et les <code>canvas</code>.<br
/> Il sera alors possible, comme le rappelle <a
href="http://www.infoq.com/news/2009/09/Google-Chrome-Frame" title="InfoQ" >InfoQ</a>, pour <a
href="http://wave.google.com/" title="Google Wave" >Google Wave</a> d&#8217;offrir une expérience utilisateur complète à tous les utilisateurs d&#8217;Internet Explorer (en effet, celui-ci utilisera de nombreuses fonctionnalités de HTML 5).<br
/> Le support d&#8217;IE continuera comme le rappelle Lars Rasmussen (Team manager de Google Wave) qui insiste aussi sur le fait que les différentes versions d&#8217;IEs ralentissent l&#8217;élaboration d&#8217;applications web dîtes riches (avec des <em>quick fixes</em> à n&#8217;en plus finir pour obtenir des résultats présents out of the box chez les autres navigateurs).</p><p>Plusieurs réactions ont suivi cette annonce. On pourra retenir celle de <a
href="http://robertnyman.com/2009/09/23/google-chrome-frame-google-wave-not-supporting-any-version-of-internet-explorer/" title="Robert Nyman" >Robert Nyman</a> (par <a
href="http://ajaxian.com/archives/chrome-frame-no-one-will-care-but-it%E2%80%99s-fantastic" title="Ajaxian" >Ajaxian</a>) qui rappelle fort justement que les utilisateurs restant sur de vielles versions d&#8217;IEs sont (pour résumer grossièrement) :</p><ul><li>soit des utilisateurs qui ne savent pas ce qu&#8217;est un navigateur (et donc n&#8217;installeront jamais ce plug-in)</li><li>soit (malheureusement pour ceux qui y sont confrontés) des sociétés qui bloquent les mises à jours logicielles (il sera donc peu probable que le plug-in soit autorisé à être installé)</li></ul><p><a
href="http://ajaxian.com/archives/chrome-frame" title="Dion Almaer" >Dion Almaer</a> se pose la question de l&#8217;inversion des rôles quant à l&#8217;expérience utilisateur : est-ce au développeur de choisir (forcer ?) le renderer/navigateur à utiliser ?<br
/> En tous cas, on ne peut que saluer le travail effectué et espérer que cela aidera, ne serait-ce qu&#8217;un peu, à réduire les IE 6 de ce monde <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="GuideutilisateurdeTellurium"></a>Guide utilisateur de Tellurium</h4><p><a
href="http://code.google.com/p/aost/" title="Tellurium" >Tellurium</a> nous <a
href="http://code.google.com/p/aost/wiki/announcements#The_Tellurium_User_Guide_0.6.0_is_Available_Now" title="annonce" >annonce</a> la sortie de son guide utilisateur version 0.6.0.<br
/> En 5 chapitres, celui-ci parcourt :</p><ul><li>Les concepts et fonctionnalités principaux de l&#8217;outil</li><li>Un Getting Started</li><li>Les sous-projets de Tellurium (archetype Maven, TrUMP&#8230;)</li><li>L&#8217;architecture de Tellurium</li><li>Ses APIs (DSLs, data access&#8230;)</li></ul><p>Le PDF se récupère à  cette <a
href="http://aost.googlecode.com/files/TelluriumUserGuide.0.6.0.pdf" title="url" >url</a>.<br
/> Et pour un petit aperçu du projet, je vous renvoie vers notre article sur comment <a
href="http://blog.xebia.fr/2009/04/08/ameliorer-lecriture-de-vos-tests-selenium/" title="amliorer lcriture de vos tests selenium" >améliorer l&#8217;écriture de vos tests selenium</a>.</p><h4><a
name="Lucenevolueetprparelavenir"></a>Lucene évolue et prépare l&#8217;avenir</h4><p>Le projet Apache Lucene <a
href="http://lucene.apache.org/#25+September+2009+-+Lucene+Java+2.9.0+available" title="annonce" >annonce</a> la disponibilité de la version 2.9 du célèbre <em>framework</em> de recherche d&#8217;information. La <a
href="http://lucene.apache.org/java/2_9_0/changes/Changes.html" title="liste des changements" >liste des changements</a> est conséquente.</p><p>Shalin Shekhar Mangar, <em>committer</em> sur Apache Solr, <a
href="http://shalinsays.blogspot.com/2009/04/burst-of-activity-in-lucene.html" title="faisait part" >faisait part</a> il y a quelques mois d&#8217;une activité très dense sur le projet Lucene pour préparer cette nouvelle version. Il expliquait alors que la majorité du travail était imputable au <em>near real-time search</em>, amélioration permettant de refléter très rapidement les modifications des données dans les résultats des requêtes alors que celles-ci sont habituellement rendues visibles seulement après le <em>commit</em> des changements dans l&#8217;index.</p><p>Outre cette nouvelle possibilité de recherche en <em>temps réel</em>, les principaux apports de Lucene 2.9 :</p><ul><li>Optimisations portant sur la mise en cache de segments inchangés de l&#8217;index, apportant un gain significatif de performance</li><li>Gestion plus efficace des champs numériques avec l&#8217;ajout des classes <code><a
href="http://lucene.apache.org/java/2_9_0/api/core/org/apache/lucene/document/NumericField.html" title="NumericField" >NumericField</a></code> et <code><a
href="http://lucene.apache.org/java/2_9_0/api/core/org/apache/lucene/search/NumericRangeQuery.html" title="NumericRangeQuery" >NumericRangeQuery</a></code>. Il en résulte un gain de performance sur les requêtes par intervalles</li><li>Support des requêtes géo-spaciales (module <code>contrib/spatial</code>)</li><li>Nouveaux <em>analyzers</em> (<code>PersianAnalyzer</code>, <code>ArabicAnalyzer</code>, et <code>SmartChineseAnalyser</code>)</li><li>Diverses améliorations d&#8217;API notamment sur le <code>Collector</code> / <code>Scorer</code> et le <code>QueryParser</code></li></ul><p>Par ailleurs, Lucid Imagination, une société américaine d&#8217;expertise Lucene, propose un <em>webinar</em> sur <a
href="http://www.lucidimagination.com/blog/2009/09/22/lucene29_webinar/" title="les nouveauts" >les nouveautés</a> de cette version. On y retrouve également les plans pour la version 3.0 : les changements seront majeurs puisqu&#8217;il est prévu de passer l&#8217;API à Java 5 et de supprimer les éléments précédemment dépréciés.</p><p>La documentation du projet évolue également mais reste moins fournie qu&#8217;on ne le souhaiterait et les développements avec Lucene doivent souvent être accompagnés de l&#8217;ouvrage <a
href="http://www.manning.com/hatcher2/" title="Lucene In Action" >Lucene In Action</a> paru chez Manning. Ce livre paraîtra dans <a
href="http://manning.com/hatcher3/" title="une seconde dition" >une seconde édition</a>, mise à jour pour la version 3.0 du framework, en mars 2010.</p><p>Cette activité dense de l&#8217;équipe Lucene est en rapport avec l&#8217;importance que prend ce projet dans la mise en œuvre des nombreux cas d&#8217;utilisations issus du Web moderne, tels que les recherches intelligentes et rapides, les systèmes de suggestions, et les analyses de contenu.</p><h4><a
name="JBossMicrocontaineretsonVirtua"></a>JBoss Microcontainer et son Virtual File System</h4><p>Le projet Microcontainer de JBoss est le noyau de la version 5.0 du serveur d&#8217;application de l&#8217;éditeur <a
href="http://blog.xebia.fr/2008/12/08/revue-de-presse-xebia-86/#JBossAScefutlongmaiscestparti" title="sortie en fin danne dernire" >sortie en fin d&#8217;année dernière</a>. Il remplace le Microkernel JMX qui était utilisé jusqu&#8217;alors dans les version 4.x de JBoss AS. Le choix d&#8217;un tel noyau développé en interne avait fait l&#8217;objet de quelques remarques lors de son développement puisqu&#8217;il offre des fonctionnalités très classiques telles que la gestion du cycle de vie de ses composants, l&#8217;injection de dépendances et de propriétés, et des fonctionnalités d&#8217;AOP.</p><p>Ce Microcontainer s&#8217;illustre malgré tout par son système de déploiement reposant sur une abstraction très flexible encapsulant le chargement de ressources qu&#8217;elles soient sous forme de Jar, de fichiers, ou de répertoires : le <em>Virtual File System</em>. Cette fonctionnalité très puissante est malheureusement <a
href="http://www.jboss.org/file-access/default/members/jbossmc/freezone/docs/2.0.x/userGuide/ch20.html" title="trs peu documente dans le manuel utilisateur" >très peu documentée dans le manuel utilisateur</a> du projet. Sa bonne maîtrise est pourtant souhaitable pour bien comprendre le comportement et les possibilités du déploiement d&#8217;applications dans JBoss AS 5.0 ou encore (scénario certes beaucoup moins courant) pour utiliser directement le Microcontainer dans un projet.</p><p>Ce manque de documentation est maintenant partiellement comblé grâce à Ales Justin, travaillant chez JBoss sur leur serveur d&#8217;application, qui a mis en ligne <a
href="http://java.dzone.com/news/jboss-virtual-file-system" title="un article sur VFS" >un article sur VFS</a>. Cet article fait suite à deux articles précédents sur le <a
href="http://java.dzone.com/articles/a-look-inside-jboss-microconta" title="modèle de composants" >modèle de composants</a> et <a
href="http://java.dzone.com/articles/a-look-inside-jboss-microconta-0" title="linjection de dpendances" >l&#8217;injection de dépendances</a> dans JBoss Microcontainer.</p><p>Il y présente l&#8217;architecture de VFS et les abstractions et APIs mises en œuvre. On découvre alors des interfaces très claires et on se rend compte qu&#8217;il est envisageable de développer son propre protocole pour VFS afin de permettre le chargement de ressources depuis n&#8217;importe quelle source de stockage (réseau, base de données, repository, &#8230;).</p><p>Au-delà de la compréhension de cette architecture et de son comportement standard, on retiendra donc cette possibilité d&#8217;adapter le déploiement des applications sur JBoss AS 5.x à l&#8217;infrastructure mise en place dans l&#8217;entreprise, et ce, pour un coût raisonnable.</p><p>A noter que l&#8217;auteur annonce que le prochain article portera sur le système de <em>classloading</em> du Microcontainer. A suivre donc &#8230;</p><h4><a
name="InjectiondedpendancesenJavascr"></a>Injection de dépendances en Javascript &#8230;</h4><p>Dans la série <em>pourquoi faire simple quand on peut faire compliqué</em>, à l&#8217;heure où Spring vient d&#8217;annoncer la sortie de la <a
href=" http://jira.springframework.org/secure/ReleaseNote.jspa?projectId=10040&#038;styleName=Html&#038;version=11172" title="version 3-RC1" >version 3-RC1</a> de son framework, à l&#8217;heure où Google sort son nouveau framework web <a
href="http://www.infoq.com/news/2009/09/google-sitebricks" title="sitebricks" >sitebricks</a> basé sur <a
href="http://code.google.com/p/google-guice/" title="Google Guice" >Google Guice</a>, son framework d&#8217;injection de dépendances, pourquoi ne pas abandonner tout cela et gérer vous-même l&#8217;injection des dépendances de votre application Java en &#8230; Javascript ! C&#8217;est ce que nous propose <a
href="http://tuxychandru.blogspot.com/2009/08/using-javascript-as-di-container-in.html" title="lauteur de cet article" >l&#8217;auteur de cet article</a>.</p><p>S&#8217;il est clair que vous n&#8217;allez pas jeter votre framework préféré dés la lecture de ce billet, cette solution<br
/> a tout de même le mérite, en plus d&#8217;être originale, d&#8217;utiliser uniquement les fonctions du JDK : <a
href="http://java.sun.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html" title="Scripting API" >Scripting API</a> + <a
href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/Proxy.html" title="proxy dynamique" >proxy dynamique</a>.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="Devoxxleplanningdessessionsest"></a>Devoxx 2009 : le planning des sessions est maintenant connu</h4><p><a
href="http://www.devoxx.com/" title="Devoxx" >Devoxx</a> (anciennement JavaPolis) est la première conférence Java au niveau européen et la seconde au niveau mondial, après JavaOne. L&#8217;édition 2009 se déroulera du 16 au 20 novembre et devrait, cette année encore, réunir plus de 3000 personnes.</p><p>Le <a
href="http://www.devoxx.com/display/DV09/Schedule" title="planning des sessions" >planning des sessions</a> est maintenant connu, ce qui permet d&#8217;observer les tendances du moment. On dégage ainsi une présence marquée du Cloud Computing, de JDK 7 et des langages alternatifs pour la JVM, notamment Scala.</p><p>On peut également noter quelques sessions particulièrement alléchantes telles que :</p><ul><li>Le keynote de Steven Harris (Oracle, <em>Product Development</em> &#038; <em>Server Technologies</em>)</li><li>Le keynote d&#8217;Ivar Jacobson</li><li><a
href="http://www.devoxx.com/display/DV09/Distributed+Programming+the+Google+Way" title="Distributed Programming the Google Way" >Distributed Programming the Google Way</a> par Gregor Hohpe (l&#8217;auteur de <a
href="http://www.informit.com/store/product.aspx?isbn=0321200683" title="Enterprise Integration Patterns" >Enterprise Integration Patterns</a>), qui présentera les technologies mises au point par Google (MapReduce, GFS, Sawzall, Chubby, Protocol Buffers, &#8230;) pour rendre leurs applications distribuées optimales et surtout réalisables</li><li><a
href="http://www.devoxx.com/pages/viewpage.action?pageId=2753089" title="The Modular Java Platform  Project Jigsaw" >The Modular Java Platform &#038; Project Jigsaw</a> par Mark Reinold, qui permettra de faire le point sur cette technologie clé du JDK 7 qui est encore peu documentée.</li><li><a
href="http://www.devoxx.com/display/DV09/Maven3" title="Maven 3" >Maven 3</a> par Jason van Zyl (créateur de Maven)</li></ul><p>En outre, pour ceux qui n&#8217;auraient pu assister à la <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20090113" title="présentation de JEE 6" >présentation de JEE 6</a> par Antonio Goncalves au ParisJUG en début d&#8217;année, ou qui souhaiteraient être au fait des dernières évolutions, il présentera de nouveau <a
href="http://www.devoxx.com/display/DV09/The+Java+EE+6++Platform" title="une session sur ce sujet" >une session sur ce sujet</a> à Devoxx.</p><p>L&#8217;édition 2009 s&#8217;annonce donc aussi riche que les précédentes, ce qui laisse présager que, comme les années passées, les places seront toutes vendues 1 ou 2 semaines avant le début de la conférence, alors ne tardez pas à vous inscrire si vous êtes intéressés !</p><h4><a
name="AsylumunnouveaupodcastddiJBoss"></a>Asylum, un nouveau podcast dédié à JBoss</h4><p><a
href="http://asylum.libsyn.com/" title="JBoss Community Asylum" >JBoss Community Asylum</a> est un nouveau <em>podcast</em> créé par Max R. Andersen (JBoss Tools), Emmanuel Bernard (Hibernate), et Michael Neale (Drools) dont le contenu sera entièrement centré sur l&#8217;actualité et les informations relatives à la communauté JBoss.</p><p>Le premier épisode est en ligne et revient sur la conférence JBoss World et les nouveautés qui y ont été présentées, notamment :</p><ul><li><a
href="http://blog.xebia.fr/2009/05/04/revue-de-presse-xebia-107/#JBossveutsonDataGrid" title="Infinispan" >Infinispan</a>, une évolution majeure de JBoss Cache</li><li><a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#LinitiativeRESTfaitdbat" title="REST" >REST-*</a>, un ensemble de spécifications de services pour REST</li><li><a
href="http://www.jboss.org/gatein" title="GateIn" >GateIn</a>, le nouveau portail issu du <a
href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#JBosseteXofusionnentleurssolut" title="partenariat entre JBoss et eXo" >partenariat entre JBoss et eXo</a></li><li><a
href="http://torquebox.org/" title="TorqueBox" >TorqueBox</a>, un conteneur d&#8217;applications Ruby On Rails pour JBoss AS</li><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#JBossHornetQ" title="HornetQ" >HornetQ</a>, la nouvelle version de JBoss Messaging</li><li><a
href="http://www.jboss.org/community/wiki/ShrinkWrap" title="Shrinkwrap" >Shrinkwrap</a>, une API d&#8217;assemblage d&#8217;archives applicatives Java</li></ul><p>Pour rappel, Emmanuel Bernard participe également à un <em>podcast</em> en français, <a
href="http://lescastcodeurs.com" title="les Cast Codeurs" >les Cast Codeurs</a>, dont le dernier épisode en date est <a
href="http://lescastcodeurs.com/2009/09/les-cast-codeurs-podcast-episode-9-tout-le-monde-rachete-tout-le-monde/" title="disponible depuis hier" >disponible depuis hier</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/09/28/revue-de-presse-xebia-126/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/</link> <comments>http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#comments</comments> <pubDate>Mon, 31 Aug 2009 16:13:33 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[BlazeMonster]]></category> <category><![CDATA[Eclipse RCP]]></category> <category><![CDATA[Gartner]]></category> <category><![CDATA[HornetQ]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[TestSwarm]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2734</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Architecture Gartner adopte le pragmatisme avec l&#8217;Architecture Émergente Actualité éditeurs / SSII JBoss HornetQ RIA BlazeMonster Le coin de la technique Liste finale des évolutions du langage Java apportées par le JDK 7 Fin d&#8217;Eclipse RCP, place à&#8230; TestSwarm Architecture Gartner adopte le pragmatisme [...]]]></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ée par Xebia.</em></p><p><strong>Architecture</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#Gartneradoptelepragmatismeavec">Gartner adopte le pragmatisme avec l&#8217;Architecture Émergente</a></li></ul><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#JBossHornetQ">JBoss HornetQ</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#BlazeMonster">BlazeMonster</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#Listefinaledesvolutionsdulanga">Liste finale des évolutions du langage Java apportées par le JDK 7</a></li><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#FindEclipseRCPplace">Fin d&#8217;Eclipse RCP, place à&#8230;</a></li><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#TestSwarm">TestSwarm</a></li></ul><h3><a
name="Architecture"></a>Architecture</h3><h4><a
name="Gartneradoptelepragmatismeavec"></a>Gartner adopte le pragmatisme avec l&#8217;Architecture Émergente</h4><p>Gartner nous livre un plaidoyer pour la pragmatisme avec <a
href="http://www.infoq.com/news/2009/08/Emergent-Architecture" title="Emergent Architecture" >Emergent Architecture</a>. La formulation est parfois compliquée mais on se réjouira de trouver la responsabilisation des équipes sur le terrain et des Architectes d&#8217;Entreprise évangélistes de lignes directrices. Pour reprendre une expression chère au Lean Manufacturing, &laquo;&nbsp;Empower the People&nbsp;&raquo; <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> :</p><ol><li><strong>Non déterminisme</strong> &#8211; Dans le passé, les architectes d&#8217;entreprise prenaient des décisions centralisées qui s&#8217;appliquaient à tous. Dans une architecture émergente, ces architectes d&#8217;entreprise doivent au contraire décentraliser la prise de décisions pour permettre l&#8217;innovation.</li><li><strong>Acteurs autonomes</strong> &#8211; Les architectes d&#8217;entreprise ne peuvent plus contrôler tous les aspects de l&#8217;architecture comme ils le faisaient auparavant ; ils doivent désormais reconnaître l&#8217;étendue et la variété du SI ; ils doivent déléguer le contrôle aux équipes sur le terrain.</li><li><strong>Limiter les contraintes aux lignes directrices</strong> &#8211; Jusqu&#8217;à présent, les architectes d&#8217;entreprise ont fourni des spécifications détaillées de tous les aspects de l&#8217;architecture ; ils doivent désormais limiter leurs prescriptions aux lignes directrices et de permettre le choix.</li><li><strong>Acteurs orientés objectif</strong> &#8211; Auparavant, les seuls objectifs qui comptaient étaient les objectifs de l&#8217;entreprise mais cela s&#8217;est maintenant déplacé et chaque acteur agit dans ses propres intérêt. Il ne faut pas pour autant oublier les lignes directrices.</li><li><strong>Influences locales</strong>: Les acteurs sont influencés par des interactions locales et des informations limitées. Les feedbacks au sein de leur sphère de communication modifie leur comportement. Aucun acteur individuel ne possède la vision globale d&#8217;un système émergent. Les architectes d&#8217;entreprise doivent intensifier leur travail coordonner et de transmission de l&#8217;information.</li><li><strong>Systèmes dynamiques et adaptatifs</strong>: le système (les différents acteurs et leur environnement)  changent avec le temps. Les architectes d&#8217;entreprise doivent définir les pourtours des systèmes émergents et ajuster en fonction des changements.</li><li><strong>Environnement aux ressources limitées</strong>: L&#8217;abondance, les budgets illimités, ne permet pas de créer une architecture émergente ; c&#8217;est au contraire la rareté des moyens qui permet une architecture émergente.</li></ol><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="JBossHornetQ"></a>JBoss HornetQ</h4><p>Après 2 ans de développement, le projet JBoss Messaging 2.0 sort enfin dans les bacs sous le nom HornetQ. Ce Message Oriented Middleware n&#8217;est pas une évolution de son prédécesseur qui continue d&#8217;exister dans sa version 1.0, mais belle et bien une réécriture (presque) intégrale. Redhat nous le vend comme un MoM opensource, multi-protocol, embarquable, haute performance, réparti, et asynchrone.<br
/> HornetQ peut-être utilisé en standalone ou bien embarqué dans un serveur d&#8217;application JBoss AS par exemple. Chose appréciable, HornetQ est léger, il dépend uniquement du JDK (5 minimum) pour être complètement fonctionnel.<br
/> Dans sa présentation, Redhat nous annonce que le projet est facile d&#8217;utilisation avec une documentation déjà très complète et la bagatelle de 65 exemples de codes sources. <a
href="http://www.jboss.org/community/wiki/GettingstartedwithHornetQinlessthanfiveminutes" title="Il est mme possible de dmarrer en moins de 5 minutes" >Il est même possible de démarrer en moins de 5 minutes</a>.<br
/> HornetQ bénéficie d&#8217;une conception orientée Pojo qui lui permet d&#8217;être utilisé directement dans Spring ou Guice. La performance a fait l&#8217;objet d&#8217;une attention importante, avec un <a
href="http://hornetq.sourceforge.net/docs/hornetq-2.0.0.BETA5/user-manual/en/html/persistence.html" title="journal haute performance" >journal haute performance</a> et <a
href="http://jboss.org/netty/" title="JBoss Netty" >JBoss Netty</a> pour la scalabilité.<br
/> JBoss nous livre une <a
href="http://www.jboss.org/community/wiki/HornetQFeatures" title="liste sans fin des fonctionnalits embarques" >liste sans fin des fonctionnalités embarquées</a> parmi lesquels on retiendra:</p><ul><li>JMS 1.1</li><li>JTA</li><li>Adaptateur JCA</li></ul><p>Enfin, l&#8217;editeur annonce orienter ses développements vers le support d&#8217;API RestFull qu&#8217;il voit comme le futur du cloud computing. Redhat souhaite donc pousser la porte des clouds privé en tentant de s&#8217;imposer comme le provider de message incontournable dans le nuage.</p><ul><li><a
href="http://jboss.org/hornetq/" title="Site du projet" >Site du projet</a></li><li><a
href="http://www.jboss.org/community/wiki/HornetQ" title="Wiki" >Wiki</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="BlazeMonster"></a>BlazeMonster</h4><p><a
href="http://sujitreddyg.wordpress.com/blazemonster/" title="BlazeMonster" >BlazeMonster</a> vient de sortir dans sa deuxième version. Pour rappel cet outil, basée sur la technologie AIR, permet le support et l&#8217;aide à la génération de code pour consommer/exposer des services Java en tant que service Remote pour BlazeDS ou LCDS (LiveCycle Data Services).<br
/> Parmi les supports, nous avons entre autre :</p><ul><li>Génération des fichiers de configurations : déclarations des services, channels..</li><li>Génération du code appelant le service Remote</li><li>Génération des beans ActionScript (Value Object)</li><li>Visualisation des réponses des services Remote</li></ul><p>Dans cette deuxième version, <a
href="http://sujitreddyg.wordpress.com/blazemonster/" title="BlazeMonster" >BlazeMonster</a> intègre le support de <a
href="http://www.springsource.org/spring-flex" title="Spring BlazeDS" >Spring BlazeDS</a>, permettant la génération de services Remote en utilisant cette librairie. Je vous invite à jeter un coup d&#8217;œil sur les autres corrections et évolutions apportées à ce projet <a
href="http://sujitreddyg.wordpress.com/2009/08/26/blazemonster-v2-with-support-for-spring-blazeds/" title="ici" >ici</a>.<br
/> Facile d&#8217;utilisation, ce projet permet de copier/coller des morceaux de code dans votre application, facilitant le développement.<br
/> Enfin, à travers ce projet nous voyons, une fois de plus, l&#8217;engouement que les technologies Flex et BlazeDS remportent. Peut être pouvons nous espérer l&#8217;intégration de ce type d&#8217;outil dans le Flash Builder 4. Alors messieurs d&#8217;Adobe, qu&#8217;attendez vous ?</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Listefinaledesvolutionsdulanga"></a>Liste finale des évolutions du langage Java apportées par le JDK 7</h4><p>En début d&#8217;année, Sun <a
href="http://blog.xebia.fr/2009/03/16/revue-de-presse-xebia-100/#OpenJdkProjectCoinproposezvosv" title="a initié" >a initié</a> le <a
href="http://openjdk.java.net/projects/coin/" title="Project Coin" >Project Coin</a>, un sous-projet d&#8217;OpenJDK visant à recueillir les propositions d&#8217;évolutions du langage Java pour le JDK 7 prévu pour début 2010. Les soumissions ont été nombreuses et Joseph D. Darcy, <em>leader</em> du projet, informait régulièrement la communauté sur l&#8217;avancement du processus de sélection. C&#8217;est maintenant la liste finale des évolutions <a
href="http://blogs.sun.com/darcy/entry/project_coin_final_five" title="quil annonce" >qu&#8217;il annonce</a>. Sauf problème de planning, il s&#8217;agit donc là de ce que le langage Java sera dans JDK 7 :</p><ul><li>Clause <code>switch</code> utilisable sur les <code>String</code>.</li><li><a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000011.html" title="Gestion automatique des resources" >Gestion automatique des resources</a>. Cette évolution vise à simplifier la gestion de la fermeture des flux ou autre ressources par l&#8217;utilisation d&#8217;une clause <code>try</code> spécifique pour les objets implémentant l&#8217;interface <code>Disposable</code> introduite dans le JDK pour l&#8217;occasion.</li><li><a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000009.html" title="Infrence de type amliore" >Inférence de type améliorée</a> pour la création d&#8217;objets génériques grâce à une syntaxe du type <code>List&lt;String&gt; list = new ArrayList<>()</code>.</li><li>Evolution de la gestion des <em>warnings</em> pour l&#8217;utilisation des <em>generics</em> dans des <em>varargs</em>.</li><li><a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000929.html" title="Autorisation de la notation binaire" >Autorisation de la notation binaire</a> pour les entiers comme en C/C++ et <a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-April/001628.html" title="possibilit de placer des underscores" >possibilité de placer des underscores</a> dans les nombres pour en simplifier la relecture tel que <code>long creditCardNumber = 1234_5678_9012_3456L</code></li><li><a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/001108.html" title="Accès en lecture et écriture aux valeurs des collections Java" >Accès en lecture et écriture aux valeurs des collections Java</a> par la notation <code><a
href="" title="" ></a></code> utilisé jusqu&#8217;alors uniquement pour les tableaux.</li></ul><p>On est loin de la liste d&#8217;évolutions très audacieuses initialement prévue pour JDK 7, mais les évolutions finalement retenues ont l&#8217;avantage d&#8217;être réalistes en terme de temps d&#8217;implémentation, tout en apportant un confort supplémentaire au quotidien pour les développeurs Java.</p><p>Rémi Forax, très au fait des développements sur l&#8217;OpenJDK, <a
href="http://weblogs.java.net/blog/forax/archive/2009/08/29/seven-small-languages-changes-will-be-jdk7" title="propose dailleurs son analyse" >propose d&#8217;ailleurs son analyse</a> des tâches restant à accomplir et de leur complexité pour chacune des évolutions.</p><h4><a
name="FindEclipseRCPplace"></a>Fin d&#8217;Eclipse RCP, place à&#8230;</h4><p>Après <a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#FindeJavaRebelplace" title="Java Rebel" >Java Rebel</a>, c&#8217;est Eclipse RCP qui se trouve sur la voie du <a
href="http://eclipse.dzone.com/articles/renaming-eclipse-rcp-%e2%80%93-vote" title="changement de nom" >changement de nom</a>.<br
/> Cette fois-ci, ce n&#8217;est pas pour une raison de marque déposée mais tout simplement, <a
href="http://eclipse.dzone.com/articles/renaming-eclipse-rcp-%e2%80%93-vote" title="dixit lauteur" >dixit l&#8217;auteur</a>, parce que ce nom est <em>horrible</em> <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .<br
/> Un vote est organisé avec tous les noms remontés par la communauté Eclipse depuis 3 mois.<br
/> Alors, <em>Aurora</em>, <em>Montage</em> ou <em>Tangram</em>, c&#8217;est à vous de voter ! Et ça se passe sur cette <a
href="http://www.surveymonkey.com/s.aspx?sm=D9ZYFUQdiRI4b2kNPE7Rwg_3d_3d" title="page" >page</a>.</p><h4><a
name="TestSwarm"></a>TestSwarm</h4><p><a
href="http://ejohn.org/blog/test-swarm-alpha-open/" title="John Resig" >John Resig</a>, créateur de <a
href="http://jquery.com/" title="jQuery" >jQuery</a>, nous annonce que <a
href="http://testswarm.com/" title="Test Swarm" >Test Swarm</a> est maintenant ouvert au public (par <a
href="http://ajaxian.com/archives/testswarm-crowdsource-your-continuous-tests-for-javascript" title="ajaxian" >ajaxian</a>).</p><p>Test Swarm permet de tester le code Javascript sur différents navigateurs de différentes plateformes de manières continues. A l&#8217;origine utilisé pour jQuery, il est désormais possible de tester son propre code Javascript, moyennant 8 steps d&#8217;installation <a
href="http://wiki.github.com/jeresig/testswarm" title="paragraphe Setting Up Your Own Swarm" >paragraphe Setting Up Your Own Swarm</a>. Les tests (jobs) peuvent être lancés à chaque commits (SVN ou Git) ou bien en appelant une URL spécifique. Les résultats des tests sont résumés dans un <a
href="http://farm4.static.flickr.com/3500/3723002475_d628e85afb.jpg" title="tableau" >tableau</a> avec une colonne pour chaque navigateur/plateforme. Il est possible de rester au niveau projet mais on peut affiner l&#8217;affichage au niveau commit voir au niveau de chaque fichier js de tests. Côté couleur, les tests vert se sont bien passés, les rouges contiennent au moins une erreur, les noirs ont au moins une erreur critiques et les gris sous en cours/en attente. Des logs sont disponibles pour chaque <em>run</em> de tests et permettent de voir ceux qui ne seraient pas passés.</p><p>Les frameworks de tests unitaires Javascript gérés (bien d&#8217;autres suivront) sont pour l&#8217;instant :</p><ul><li>QUnit (jQuery)</li><li>UnitTestJS (Prototype)</li><li>JSSpec (MooTools)</li><li>JSUnit</li><li>Selenium</li><li>Dojo Objective Harness</li></ul><p>Une <a
href="http://www.vimeo.com/6281121" title="vido de type quick tour" >vidéo de type quick tour</a> nous donne un bon aperçu  du site. Plusieurs directions sont possible concernant la <em>roadmap</em> du produit dont l&#8217;intégration à l&#8217;IDE, tests sur encore plus de browser&#8230; Un produit à suivre.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Les nouveautés de Flex 4</title><link>http://blog.xebia.fr/2009/08/19/les-nouveautes-de-flex-4/</link> <comments>http://blog.xebia.fr/2009/08/19/les-nouveautes-de-flex-4/#comments</comments> <pubDate>Wed, 19 Aug 2009 09:26:22 +0000</pubDate> <dc:creator>Ellène Dijoux</dc:creator> <category><![CDATA[RIA]]></category> <category><![CDATA[Flash]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Flex 4]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2662</guid> <description><![CDATA[Il y a quelque temps est sortie la version bêta de Flex 4. Connue aussi sous le nom de Gumbo, cette nouvelle version n&#8217;a plus rien à voir avec les précédentes : possibilité de personnaliser ses composants, simplification des notations &#8230; Nous verrons dans ce billet quelques nouveautés de Flex 4 et les raisons d&#8217;un [...]]]></description> <content:encoded><![CDATA[<p>Il y a quelque temps est sortie la version bêta de Flex 4. Connue aussi sous le nom de Gumbo, cette nouvelle version n&#8217;a plus rien à voir avec les précédentes : possibilité de personnaliser ses composants, simplification des notations &#8230; Nous verrons dans ce billet quelques nouveautés de Flex 4 et les raisons d&#8217;un changement aussi radical des librairies.</p><ul><li><a
href="http://blog.xebia.fr/2009/08/19/les-nouveautes-de-flex-4/#Leseffets">Les effets</a></li><li><a
href="http://blog.xebia.fr/2009/08/19/les-nouveautes-de-flex-4/#Dessinemoiunboutonavecspark">Dessine moi un bouton &#8230; avec spark.</a></li><li><a
href="http://blog.xebia.fr/2009/08/19/les-nouveautes-de-flex-4/#LesautresnouveautsdeFlex">Les autres nouveautés de Flex 4</a></li><li><a
href="http://blog.xebia.fr/2009/08/19/les-nouveautes-de-flex-4/#Conclusion">Conclusion</a></li><li><a
href="http://blog.xebia.fr/2009/08/19/les-nouveautes-de-flex-4/#Pourallerplusloin">Pour aller plus loin</a></li></ul><p>Pour visualiser les exemples Flex 4 ci dessous, il vous faudra installer Flash Player 10.</p><h4><a
name="Leseffets"></a>Les effets</h4><p>Une différence notable avec la précédente version de Flex est la gestion des états qui est maintenant nettement plus simple.<br
/> En Flex, il est possible de décrire plusieurs états associés à un composant. Ces états définissent, pour un composant, des éléments à ajouter, des styles ou des propriétés à appliquer. En effet, il est question de manipuler des <code>AddChild</code>, des <code>SetProperty</code> ou encore des <code>SetStyle</code> qui peuvent devenir très vite lourds à gérer. Pour mieux comprendre, prenons un exemple :<br
/> Nous allons réaliser une application sur 2 états, l&#8217;état <code>blueState</code> qui va colorer le label <code>helloLabel</code> en bleu et l&#8217;état <code>redState</code> qui va le colorer en rouge. Pour ce faire, avec Flex 3, nous utilisons les balises <code>SetStyle</code> qui permettent de modifier le style <code>color</code> du label et de le mettre à la couleur voulue.</p><pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; minWidth=&quot;300&quot; minHeight=&quot;300&quot;&gt;
    &lt;mx:states&gt;
        &lt;mx:State name=&quot;blueState&quot;&gt;
            &lt;mx:SetStyle target=&quot;{helloLabel}&quot; name=&quot;color&quot; value=&quot;blue&quot;/&gt;
        &lt;/mx:State&gt;
        &lt;mx:State name=&quot;redState&quot;&gt;
            &lt;mx:SetStyle target=&quot;{helloLabel}&quot; name=&quot;color&quot; value=&quot;red&quot;/&gt;
        &lt;/mx:State&gt;
    &lt;/mx:states&gt;
    &lt;mx:HBox&gt;
        &lt;mx:Label text=&quot;Bonjour !&quot; id=&quot;helloLabel&quot;/&gt;
        &lt;mx:Button label=&quot;Bleu&quot; id=&quot;blue&quot; click=&quot;currentState='blueState'&quot;/&gt;
        &lt;mx:Button label=&quot;Rouge&quot; id=&quot;red&quot; click=&quot;currentState='redState'&quot;/&gt;
    &lt;/mx:HBox&gt;
&lt;/mx:Application&gt;
</pre><div
align="center"> <object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" data="http://blog.xebia.fr/wp-content/uploads/2009/08/testflex3.swf" height="100" width="400" type="application/x-shockwave-flash" ><param
name="data" value="http://blog.xebia.fr/wp-content/uploads/2009/08/testflex3.swf" /><param
name="loop" value="false" /><param
name="menu" value="false" /><param
name="movie" value="http://blog.xebia.fr/wp-content/uploads/2009/08/testflex3.swf" /><param
name="quality" value="high" /><param
name="scale" value="exactfit" /><param
name="src" value="http://blog.xebia.fr/wp-content/uploads/2009/08/testflex3.swf" /><param
name="type" value="application/x-shockwave-flash" /><embed
height="100" width="400" quality="high" pluginspage="https://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash" src="http://blog.xebia.fr/wp-content/uploads/2009/08/testflex3.swf" type="application/x-shockwave-flash" /><br
/> </object></div><p>Avec Flex 4, il n&#8217;est plus question de définir des <code>SetStyle</code> ou <code>SetProperty</code> dans les composants. Tout se fait dans les attributs qui peuvent se décliner en fonction des états comme ceci : <code>styleOuPropriete.monEtat</code>. Ainsi <code>color.blueState</code> prendra la couleur bleu lorsque l&#8217;on sera dans cet état.D&#8217;autre attributs apparaissent également dans les composants graphiques comme <code>includeIn</code> ou encore <code>excludeFrom</code> pour permettre d&#8217;exclure ou d&#8217;inclure un composant en fonction de l&#8217;état courant. De plus, Flex prend maintenant par défaut le premier état lorsqu&#8217;on en définit plusieurs pour un composant. C&#8217;est la raison pour laquelle nous avons ajouté <code>defaultState</code> comme état par défaut. Avec Flex 4, notre précédent exemple donne donc ceci :</p><pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application
   xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
   xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot; width=&quot;300&quot; height=&quot;300&quot;&gt;
	&lt;s:states&gt;
		&lt;mx:State name=&quot;defaultState&quot; /&gt;
		&lt;mx:State name=&quot;blueState&quot; /&gt;
		&lt;mx:State name=&quot;redState&quot; /&gt;
	&lt;/s:states&gt;
	&lt;mx:Label text=&quot;Bonjour !&quot; color=&quot;black&quot; color.blueState=&quot;blue&quot; color.redState=&quot;red&quot;/&gt;
	&lt;s:Button label=&quot;Rouge&quot; click=&quot;currentState='redState'&quot;/&gt;
	&lt;s:Button label=&quot;Bleu&quot; click=&quot;currentState='blueState'&quot;/&gt;
	&lt;s:layout&gt;
		&lt;s:HorizontalLayout /&gt;
	&lt;/s:layout&gt;
&lt;/s:Application&gt;
</pre><div
align="center"> <object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" data="http://blog.xebia.fr/wp-content/uploads/2009/08/testflex4.swf" height="100" width="400" type="application/x-shockwave-flash" ><param
name="data" value="http://blog.xebia.fr/wp-content/uploads/2009/08/testflex4.swf" /><param
name="loop" value="false" /><param
name="menu" value="false" /><param
name="movie" value="http://blog.xebia.fr/wp-content/uploads/2009/08/testflex4.swf" /><param
name="quality" value="high" /><param
name="scale" value="exactfit" /><param
name="src" value="http://blog.xebia.fr/wp-content/uploads/2009/08/testflex4.swf" /><param
name="type" value="application/x-shockwave-flash" /><embed
height="100" width="400" quality="high" pluginspage="https://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash" src="http://blog.xebia.fr/wp-content/uploads/2009/08/testflex4.swf"  type="application/x-shockwave-flash" /><br
/> </object></div><p>Certes, il s&#8217;agit d&#8217;un petit exemple. Mais cela pourrait simplifier la gestion des états sur des applications plus élaborées.</p><h4><a
name="Dessinemoiunboutonavecspark"></a>Dessine moi un bouton &#8230; avec spark.</h4><p>De nouvelles librairies ont vu le jour dans Flex 4. Commençons par la librairie <strong>spark</strong>, présente depuis Mai 2009. Elle offre toute une nouvelle génération de composants dont l&#8217;architecture est clairement différente de son prédécesseur <strong>halo</strong>.  Cette dernière proposait des composants graphiques sur lesquels il n&#8217;était possible que de changer les couleurs et le style du texte : le <a
href="http://examples.adobe.com/flex3/consulting/styleexplorer/Flex3StyleExplorer.html#" title="Flex Style Explorer" >Flex Style Explorer</a> en est un bon exemple.<br
/> La librairie spark, de son côté, propose un nouveau type de composant « skinnable », c&#8217;est-à-dire que nous avons d&#8217;un côté le dessin représentant un bouton et de l&#8217;autre l&#8217;objet bouton. De plus, spark intègre la librairie FXG qui fournit tous les composants permettant de faire des dessins vectoriels.<br
/> Pour mieux comprendre le fonctionnement, rien de mieux qu&#8217;un exemple :<br
/> Nous créons d&#8217;abord un Skin sous le nom de <code>component.CustomSkin</code>.</p><pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Skin xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
   xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot; height=&quot;300&quot; width=&quot;300&quot;&gt;
    &lt;fx:Metadata&gt;
        [HostComponent(&quot;spark.components.Button&quot;)]
    &lt;/fx:Metadata&gt;
    &lt;s:states&gt;
        &lt;mx:State name=&quot;up&quot; /&gt;
        &lt;mx:State name=&quot;over&quot; /&gt;
        &lt;mx:State name=&quot;down&quot; /&gt;
    &lt;/s:states&gt;
    &lt;s:Ellipse height=&quot;86&quot; width=&quot;96&quot; verticalCenter=&quot;0&quot; horizontalCenter=&quot;0&quot;&gt;
        &lt;s:fill&gt;
          &lt;mx:SolidColor color=&quot;#FF0000&quot; color.over=&quot;red&quot; color.up=&quot;blue&quot;/&gt;
         &lt;/s:fill&gt;
    &lt;/s:Ellipse&gt;
    &lt;s:layout&gt;
        &lt;s:BasicLayout/&gt;
    &lt;/s:layout&gt;
&lt;/s:Skin&gt;
</pre><p>Nous définissons le comportement de ce composant grâce au metatag <code>HostComponent</code>, ici il s&#8217;agit donc d&#8217;un bouton. Nous ajoutons ensuite les états en regardant dans la documentation, nous pouvons voir que <code>Button</code> dispose des états : <code>up</code>, <code>over</code>, <code>down</code> et <code>disabled</code>. Contentons-nous des trois premiers états pour cet exemple. Enfin, on finit par dessiner un bouton qui sera disposé dans un layout qui doit être défini dans tout composant spark. Ce <code>skin</code> est ensuite associé à un bouton dans l&#8217;application principale.</p><pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
    xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
    xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot;
    minWidth=&quot;1024&quot; minHeight=&quot;768&quot;
    xmlns:component=&quot;component.*&quot;&gt;
    &lt;fx:Script&gt;
        &lt;![CDATA[
            import mx.controls.Alert;
            import component.MyButton;
        ]]&gt;
    &lt;/fx:Script&gt;
    &lt;fx:Style source=&quot;TestFlex4.css&quot;/&gt;
    &lt;s:Button skinClass=&quot;component.CustomSkin&quot;  click=&quot;Alert.show('Je suis un bouton !')&quot;/&gt;
&lt;/s:Application&gt;
</pre><p>Et voici le rendu :</p><div
align="center"> <object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" data="http://blog.xebia.fr/wp-content/uploads/2009/08/testbutton.swf" height="200" width="400" type="application/x-shockwave-flash" ><param
name="data" value="http://blog.xebia.fr/wp-content/uploads/2009/08/testbutton.swf" /><param
name="loop" value="false" /><param
name="menu" value="false" /><param
name="movie" value="http://blog.xebia.fr/wp-content/uploads/2009/08/testbutton.swf" /><param
name="quality" value="high" /><param
name="scale" value="exactfit" /><param
name="src" value="http://blog.xebia.fr/wp-content/uploads/2009/08/testbutton.swf" /><param
name="type" value="application/x-shockwave-flash" /><embed
height="200" width="400" quality="high" pluginspage="https://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash" src="http://blog.xebia.fr/wp-content/uploads/2009/08/testbutton.swf" type="application/x-shockwave-flash" /><br
/> </object></div><h4><a
name="LesautresnouveautsdeFlex"></a>Les autres nouveautés de Flex 4</h4><p><strong>Support dans l&#8217;ASDoc des fichiers MXML</strong><br
/> La SDK de Flex 3 ne générait que la documentation associée au code ActionScript 3. Il est maintenant possible dans le SDK 4 de générer de l&#8217;ASDoc pour les composants MXML.</p><p><strong>Le data binding dans les deux sens</strong><br
/> Actuellement, la liaison des données dans un composant avec Flex se fait de la façon suivante :</p><pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot;&gt;
    &lt;mx:TextInput id=&quot;myText1&quot; /&gt;
    &lt;mx:TextInput id=&quot;myText2&quot; text=&quot;{myText1.text}&quot; /&gt;
&lt;/mx:Application&gt;
</pre><div
align="center"> <object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" data="http://blog.xebia.fr/wp-content/uploads/2009/08/databindingflex3.swf" height="100" width="400" type="application/x-shockwave-flash" ><param
name="data" value="http://blog.xebia.fr/wp-content/uploads/2009/08/databindingflex3.swf" /><param
name="loop" value="false" /><param
name="menu" value="false" /><param
name="movie" value="http://blog.xebia.fr/wp-content/uploads/2009/08/databindingflex3.swf" /><param
name="quality" value="high" /><param
name="scale" value="exactfit" /><param
name="src" value="http://blog.xebia.fr/wp-content/uploads/2009/08/databindingflex3.swf" /><param
name="type" value="application/x-shockwave-flash" /><embed
height="100" width="400" quality="high" pluginspage="https://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash" src="http://blog.xebia.fr/wp-content/uploads/2009/08/databindingflex3.swf" type="application/x-shockwave-flash" /><br
/> </object></div><p>Dans cet exemple, l&#8217;édition dans <code>myText1</code> modifie le champs <code>myText2</code> mais l&#8217;inverse ne se fait pas. Pour les lier tous les deux il faudrait modifier <code>myText1</code> comme ceci :</p><pre class="brush: xml; title: ; notranslate">
&lt;mx:TextInput id=&quot;myText1&quot; text=&quot;{myText2.text}&quot;/&gt;
</pre><p>Avec la nouvelle notation que propose Flex 4, il suffit de faire comme ceci :</p><pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
   xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot; minWidth=&quot;1024&quot; minHeight=&quot;768&quot;&gt;
    &lt;s:TextInput id=&quot;myText1&quot; /&gt;
    &lt;s:TextInput id=&quot;myText2&quot; text=&quot;@{myText1.text}&quot; /&gt;
    &lt;s:layout&gt;
        &lt;s:VerticalLayout/&gt;
    &lt;/s:layout&gt;
&lt;/s:Application&gt;
</pre><div
align="center"> <object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" data="http://blog.xebia.fr/wp-content/uploads/2009/08/databindingflex4.swf" height="100" width="400" type="application/x-shockwave-flash" ><param
name="data" value="http://blog.xebia.fr/wp-content/uploads/2009/08/databindingflex4.swf" /><param
name="loop" value="false" /><param
name="menu" value="false" /><param
name="movie" value="http://blog.xebia.fr/wp-content/uploads/2009/08/databindingflex4.swf" /><param
name="quality" value="high" /><param
name="scale" value="exactfit" /><param
name="src" value="http://blog.xebia.fr/wp-content/uploads/2009/08/databindingflex4.swf" /><param
name="type" value="application/x-shockwave-flash" /><embed
height="100" width="400" quality="high" pluginspage="https://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash" src="http://blog.xebia.fr/wp-content/uploads/2009/08/databindingflex4.swf" type="application/x-shockwave-flash" /><br
/> </object></div><p>Et automatiquement les deux composants sont liés.</p><h4><a
name="Conclusion"></a>Conclusion</h4><p>Toutes ces nouveautés proposées par Adobe ont pour but :</p><ul><li>d&#8217;améliorer la productivité du développeur en simplifiant le langage,</li><li>d&#8217;avoir plus de liberté sur le design.</li></ul><p>La librairie <code>spark</code> propose des composants radicalement différents de ce que l&#8217;on peut actuellement utiliser dans Flex 3, mais il est cependant possible d&#8217;utiliser les composants de l&#8217;ancienne librairie nommée <code>halo</code>. Les habitués ne s&#8217;y perdront donc pas.<br
/> Mais alors pourquoi autant de changement ? La raison est très simple et se nomme Flash Catalyst. <a
href="http://blog.xebia.fr/2009/06/08/revue-de-presse-xebia-112/#SortiebetadeFlashBuilderetdeFl" title="Le nouvel outil dAdobe sorti en Juin 2009 en version bta" >Le nouvel outil d&#8217;Adobe sorti en Juin 2009 en version bêta</a> est capable de générer du code Flex à partir de dessins réalisés par la gamme Creative Suite 4.<br
/> Flex 4 est toujours en bêta actuellement, une release est prévue pour le dernier trimestre 2009.</p><h4><a
name="Pourallerplusloin"></a>Pour aller plus loin</h4><ul><li><a
href="http://livedocs.adobe.com/flex/gumbo/html/" title="LiveDocs Flex 4" >LiveDocs Flex 4</a></li><li><a
href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4" title="Tlcharger le SDK" >Télécharger le SDK</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/08/19/les-nouveautes-de-flex-4/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/08/03/revue-de-presse-xebia-120/</link> <comments>http://blog.xebia.fr/2009/08/03/revue-de-presse-xebia-120/#comments</comments> <pubDate>Mon, 03 Aug 2009 16:17:11 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Ext-GWT]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE 6]]></category> <category><![CDATA[JRuby]]></category> <category><![CDATA[junit]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Sun]]></category> <category><![CDATA[Wicket]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2602</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Avancement des spécifications et implémentations JEE 6 RIA Des nouvelles d&#8217;Ext-GWT Le coin de la technique Nouveau concept dans JUnit 4.7 : Rule Attention à votre mémoire avec String.substring() Sortie de Wicket 1.4 Chouchoutez vos tests unitaires. Evènements de notre [...]]]></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ée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/03/revue-de-presse-xebia-120/#Avancementdesspcificationsetim">Avancement des spécifications et implémentations JEE 6</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/03/revue-de-presse-xebia-120/#DesnouvellesdExtGWT">Des nouvelles d&#8217;Ext-GWT</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/03/revue-de-presse-xebia-120/#NouveauconceptdansJUnitRule">Nouveau concept dans JUnit 4.7 : Rule</a></li><li><a
href="http://blog.xebia.fr/2009/08/03/revue-de-presse-xebia-120/#AttentionvotremmoireavecString">Attention à votre mémoire avec String.substring()</a></li><li><a
href="http://blog.xebia.fr/2009/08/03/revue-de-presse-xebia-120/#SortiedeWicket">Sortie de Wicket 1.4</a></li><li><a
href="http://blog.xebia.fr/2009/08/03/revue-de-presse-xebia-120/#Chouchoutezvostestsunitaires">Chouchoutez vos tests unitaires.</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/08/03/revue-de-presse-xebia-120/#SunperdJRuby">Sun perd JRuby</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Avancementdesspcificationsetim"></a>Avancement des spécifications et implémentations JEE 6</h4><p>Le <a
href="http://lescastcodeurs.com/2009/08/les-cast-codeurs-podcast-episode-7-le-dsl-et-ses-amantes/" title="dernier podcast des Cast Codeurs" >dernier <em>podcast</em> des Cast Codeurs</a> a été l&#8217;occasion de faire un tour de table des informations que chacun des <em>speakers</em> possédait sur JEE 6. Même s&#8217;il ne s&#8217;agit pas d&#8217;informations officielles, elles offrent un aperçu intéressant sur ce que pourrait être JEE 6 lors de sa finalisation ainsi que sur son calendrier :</p><ul><li>Antonio Goncalves, membre de l&#8217;<em>Expert Group</em> JEE 6, explique que la bataille entre les <a
href="http://www.jcp.org/en/jsr/detail?id=330" title="JSR-330 (Dependency Injection for Java)" >JSR-330 (Dependency Injection for Java)</a> et <a
href="http://www.jcp.org/en/jsr/detail?id=299" title="JSR-299 (Java Contexts and Dependency Injection)" >JSR-299 (Java Contexts and Dependency Injection)</a> sur le terrain de l&#8217;injection de dépendances semble partie pour se terminer de manière constructive. En effet la JSR-330 ne présentant pas d&#8217;incompatibilité particulière avec le modèle très évolué proposé par la JSR-299, les deux spécifications devraient se compléter harmonieusement. La JSR-330 définirait un ensemble d&#8217;interfaces de base que la JSR-299 viendrait étendre pour ajouter ses concepts plus élaborés. Afin de permettre cet ajustement de dernière minute, la finalisation de la spécification JEE 6 serait légèrement repoussée, la portant ainsi autour d&#8217;octobre / novembre 2009.</li><li>Emmanuel Bernard, travaillant sur les problématiques de persistance chez JBoss, nous apprend quant à lui que l&#8217;implémentation des <em>drafts</em> des spécifications JEE 6 est en cours chez JBoss et devrait aboutir en version 5.2 du serveur d&#8217;application de l&#8217;éditeur avec une première implémentation non conforme au TCK, la conformité viendrait dans un deuxième temps, lors d&#8217;une version ultérieure. Il évoque la possibilité d&#8217;une présentation de ce travail lors du <a
href="http://www.jbossworld.com/" title="JBoss World" >JBoss World</a> de début septembre. D&#8217;autre part, la <a
href="http://www.jcp.org/en/jsr/detail?id=303" title="JSR-303 (Bean Validation)" >JSR-303 (Bean Validation)</a> dont il est responsable est proche de la finalisation mais un conflit avec le JCP sur une problématique de licence complexifie l&#8217;avancement.</li></ul><p>On ne peut que se réjouir de cette éventuelle harmonie entre les deux JSR d&#8217;injections de dépendances puisque les développeurs seraient ainsi libres de choisir la spécification sur laquelle ils se basent, en fonction de leur besoins plus ou moins complexes.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="DesnouvellesdExtGWT"></a>Des nouvelles d&#8217;Ext-GWT</h4><p>Ext-GWT, la librairie Javascript <a
href="http://extjs.com/" title="ExtJS" >ExtJS</a> portée en GWT (cf. article sur la <a
href="http://blog.xebia.fr/2009/01/23/gwt-galaxy/#ahrefhttpextjscomproductsgxtti" title="galaxie GWT" >galaxie GWT</a>), sort en version <a
href="http://extjs.com/deploy/gxt-2.0.1/release_notes.html#Release_2.0.1" title="201" >2.0.1</a>.<br
/> Profitons de cette sortie pour parler plus globalement du projet et de la <a
href="http://extjs.com/blog/2009/07/09/ext-gwt-20-released/" title="release majeure 20 sortie il y a maintenant un mois" >release majeure 2.0 sortie il y a maintenant un mois</a>.</p><p>Celle-ci apporte en effet son lot de nouveaux composants et nouvelles fonctionnalités. Ces ajouts réduisent ainsi l&#8217;écart entre les 2 projets. On trouve ainsi :</p><ul><li>le <code>Tree Panel</code> et le <code>Tree Grid</code> (<a
href="http://extjs.com/examples/explorer.html#roweditortreegrid" title="dmo" >démo</a>), ce dernier (qui étend directement le composant <code>Grid</code> donc plus de binder) bénéficiant de toutes les fonctionnalités du tableau</li><li>le <code>row editor</code> (<a
href="http://extjs.com/examples/explorer.html#roweditorgrid" title="dmo" >démo</a>) qui permet de modifier une ligne complète du tableau, toutes les cellules de la ligne passant en mode <em>édition</em> (alors qu&#8217;avant il fallait éditer toutes les cellules une par une)</li><li>le <code>HTML editor / Rich Text Editor</code> (<a
href="http://extjs.com/examples/explorer.html#advancedforms" title="dmo" >démo</a>)</li><li>le <code>Live Charting</code> (<a
href="http://extjs.com/examples/explorer.html#chartgallery" title="démo" >démo</a>) qui rejoint ainsi <a
href="http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#GChartpourGWT" title="GChart" >GChart</a> (évoquée lors d&#8217;une précédente revue de presse) et <a
href="http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#comment-13822" title="OFCGWT" >OFCGWT</a></li><li>le <code>ButtonGroup</code> (<a
href="http://extjs.com/examples/explorer.html#advancedtoolbar" title="dmo" >démo</a>) et le <code>Status</code> (<a
href="http://extjs.com/examples/explorer.html#statustoolbar" title="dmo" >démo</a>)</li></ul><p>Un travail important a été apporté sur les boutons, la barre d&#8217;outil, la gestion de l&#8217;overflow dans cette barre&#8230;</p><p>Les nouveautés étant très nombreuses, un détour par le fameux <a
href="http://extjs.com/examples/explorer.html" title="showcase" >showcase</a> permettra de les parcourir/tester.</p><p>S&#8217;agissant d&#8217;une mise à jour majeure, un guide de migration présent dans le produit décrira les changements dans l&#8217;API.</p><p>Téléchargement par <a
href="http://extjs.com/products/gxt/download.php" title="ici" >ici</a> et si (comme moi <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) vous attendez déjà la suite avec la 2.1, vous trouverez la nouvelle roadmap par <a
href="http://extjs.com/products/gxt/roadmap.php" title="l" >là</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="NouveauconceptdansJUnitRule"></a>Nouveau concept dans JUnit 4.7 : Rule</h4><p>La version 4.7 du célèbre framework de test unitaire, JUnit, est en cours de préparation. Un nouveau concept a été dévoilé : <a
href="http://greenbar.saff.net/?p=18" title="Rule" ><em>Rule</em></a>.</p><p>Ce concept va réjouir les accrocs du test automatisé par JUnit. En effet, cette fonctionnalité permettra de modifier l&#8217;exécution de vos tests, afin de les préparer à un contexte d&#8217;exécution.</p><p>Un des exemples les plus significatifs est le suivant :</p><pre class="brush: java; title: ; notranslate">
 public static class HasTempFolder {
   @Rule
   public TemporaryFolder folder= new TemporaryFolder();
   @Test
   public void testUsingTempFolder() throws IOException {
     File createdFile= folder.newFile(&quot;myfile.txt&quot;);
     File createdFolder= folder.newFolder(&quot;subfolder&quot;);
     // ...
   }
 }
</pre><p>Grâce à cette déclaration <code>@Rule public TemporaryFolder folder= new TemporaryFolder();</code>, avant le test il n&#8217;y a pas besoin de créer de répertoire temporaire, après le test il n&#8217; y a pas besoin de supprimer les répertoires et fichiers créés pendant le test. Cela permet donc plus facilement de faire des tests automatisables, répétables, et portables d&#8217;environnement à environnement.</p><p>Il existe d&#8217;autres <em>Rules</em> comme par exemple :</p><ul><li><code>ExternalResource</code>: utilisable d&#8217;un fichier externe (accessible par système de fichier)</li><li><code>Timeout</code>: le test doit répondre avant un <em>timeout</em></li><li><code>ExpectedException</code>: le test doit jeter des exceptions bien déterminés</li><li>Et bien d&#8217;autres</li></ul><p>Il y aura donc un ensemble de <em>Rules</em> qui permettront d&#8217;éviter de refaire des petits bouts de code personnel pour faire la même chose en une annotation.</p><h4><a
name="AttentionvotremmoireavecString"></a>Attention à votre mémoire avec String.substring()</h4><p>Voici un article intéressant qui permet de comprendre ce qui se trouve sous le capot de la classe du JDK String : <a
href="http://www.javablogging.com/string-and-memory-leaks/" title="String and memory leaks" >String and memory leaks</a> ; il pourrait même vous donner une petite goutte de sueur sur le front. Même si le titre de l&#8217;article n&#8217;est pas forcement bien choisi (&#8216;fuite mémoire&#8217; alors qu&#8217;il s&#8217;agit plus de rétention mémoire), il nous montre simplement comment une méthode de la classe, <code>substring</code>, peut cacher un loup.</p><p>En effet, à des fins d&#8217;optimisation, on fait tourner le code suivant :</p><pre class="brush: java; title: ; notranslate">
public static void sendEmail(String emailUrl) {
    String email = emailUrl.substring(7); // 'mailto:' prefix has 7 letters
    String userName = email.substring(0, email.indexOf(&quot;@&quot;));
    String domainName = email.substring(email.indexOf(&quot;@&quot;));
}
public static void main(String[] args) {
    sendEmail(&quot;mailto:user_name@domain_name.com&quot;);
}
</pre><p>A première vue, on a trois instances de la classes String :</p><ul><li><code>String email = "mailto:"</code></li><li><code>String userName = "user_name@"</code></li><li><code>String domainName = "domain_name.com"</code></li></ul><p>Cependant, concrètement, en mémoire il n&#8217;y a qu&#8217;un tableau de <code>char<a
href="" title="" ></a></code> qui est stocké : <code>"mailto:user_name@domain_name.com"</code>, les instances des classes <code>String</code> enregistrent seulement les intervalles utilisés du tableau de <code>char<a
href="" title="" ></a></code>.</p><p>Le piège est de manipuler une grosse chaine de caractères (qui vient d&#8217;un fichier batch par exemple) et d&#8217;utiliser <code>substring</code> afin de limiter la taille de la chaine et donc l&#8217;utilisation mémoire. Faux ! La chaine initiale sera toujours stockée en mémoire.</p><p>Assez déroutant !</p><h4><a
name="SortiedeWicket"></a>Sortie de Wicket 1.4</h4><p>Le projet Wicket continue d&#8217;évoluer et, alors que nous vous parlions d&#8217;une version 1.3.6 en <a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#SortiedeWicket" title="mai dernier" >mai dernier</a> (qui a d&#8217;ailleurs fait l&#8217;objet d&#8217;une <a
href="http://refcardz.dzone.com/refcardz/getting-started-apache-wicket" title="Refcard DZone" >Refcard DZone</a>), c&#8217;est la <a
href="http://yeswicket.com/index.php?post/2009/07/30/Wicket-1.4-officiellement-disponible-!" title="version 1.4" >version 1.4</a> après un an de travail  qui nous arrive dans la mains (par <a
href="http://yeswicket.com/" title="Yes Wicket" >Yes Wicket !</a> et <a
href="http://wicket.apache.org/apache-wicket-14-takes-type-safety-to-the-next-level.html" title="Apache Wicket" >Apache Wicket</a>).</p><p>Au menu des nouveautés : un nouveau packaging des jars Wicket (qui les rend compatibles OSGi), un seul jar pour les modules Spring et plusieurs modifications d&#8217;IModel, de ses implémentations et plus globalement des APIs pour tirer avantage de Java 5 (Generics&#8230;). L&#8217;utilisation des Generics dans le code de Wicket a commencé il y a environs un an par un <a
href="http://www.nabble.com/users%2C-please-give-us-your-opinion%3A-what-is-your-take-on-generics-with-Wicket-td17589984.html" title="sondage passionné " >sondage passionné </a> sur la <a
href="http://www.nabble.com/generics-to18083910.html" title="mailing-list" >mailing-list</a>, pour arriver seulement dans la milestone 3 de Wicket 1.4 avec autant de partisans que de détracteurs &#8211; défenseurs du support du JDK1.4- et ceci jusqu&#8217;à la release final. Le thread sur <a
href="http://www.theserverside.com/news/thread.tss?thread_id=49473" title="The Server Side" >The Server Side</a> est également impressionnant ! Pour le détail complet, rendez-vous sur le <a
href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?mode=hide&#038;requestId=12313364" title="Jira du projet" >Jira du projet</a>.</p><p>Tout comme pour Ext-GWT 2.0 (ci-dessus), une guide de migration de 1.3 vers 1.4 est <a
href="http://cwiki.apache.org/WICKET/migrate-14.html" title="disponible" >disponible</a>. Un petit <a
href="http://www.apache.org/dyn/closer.cgi/wicket/1.4.0" title="tlchargement" >téléchargement</a> ?</p><h4><a
name="Chouchoutezvostestsunitaires"></a>Chouchoutez vos tests unitaires.</h4><p>InfoQ publie un intéressant florilège : <a
href="http://www.infoq.com/news/2009/07/Better-Unit-Tests" title="Ralisez de meilleurs tests unitaire" >&laquo;&nbsp;Réalisez de meilleurs tests unitaire&nbsp;&raquo;</a>.<br
/> Certains trouveront que, de nouveau, on enfonce des portes ouvertes. D&#8217;autres (comme nous), apprécierons les nombreuses réactions qui découlent de ce genre d&#8217;article, et penserons qu&#8217;il n&#8217;est jamais inutile de rappeler ces grands principes de base afin d&#8217;arrêter de voir des tests unitaires martyrisés (et inutiles) sur certains projets.<br
/> Bref, en un mot comme en mille, vos tests unitaires sont des classes de code java, qui sont vitales pour vos projet, il est donc urgent d&#8217;en prendre grand soin (nommage, documentation, refactoring&#8230;)</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SunperdJRuby"></a>Sun perd JRuby</h4><p>Trois développeurs clés de JRuby, à savoir Charles Nutter, Thomas Enebo et Nick Sieger, ont choisi de quitter Sun MicroSystems. Suite au rachat récent par Oracle et à l&#8217;incertitude concernant le support de <a
href="http://jruby.codehaus.org/" title="JRuby" >JRuby</a> par le nouveau propriétaire, ils ont décidé de rejoindre la société <a
href="http://www.engineyard.com/" title="Engine Yard" >Engine Yard</a>, spécialisée dans l&#8217;hébergement d&#8217;applications Ruby On Rails. Engine Yard a l&#8217;air enthousiaste à l&#8217;idée de pouvoir être le support du développement de l&#8217;offre JRuby et de la communauté qui va avec. (<a
href="http://www.pcworld.com/article/169145/suns_jruby_team_jumps_ship_to_engine_yard.html" title="Source" >Source</a>)</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/08/03/revue-de-presse-xebia-120/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Spring Flex BlazeDS Integration</title><link>http://blog.xebia.fr/2009/07/29/spring-flex-blazeds-integration/</link> <comments>http://blog.xebia.fr/2009/07/29/spring-flex-blazeds-integration/#comments</comments> <pubDate>Wed, 29 Jul 2009 08:11:55 +0000</pubDate> <dc:creator>Nicolas Jozwiak</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[BlazeDS]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Spring]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2591</guid> <description><![CDATA[Récemment, lors d&#8217;une intervention sur une application Flex, j&#8217;ai été confronté à un problème de migration d&#8217;une version de la librairie Spring BlazeDS Integration (passage de la version 1.0.0.RC2 à 1.0.0.M2). Cette librairie permet la configuration de BlazeDS à travers Spring de façon simplifiée. J&#8217;ai voulu configurer un appel à un service Java en Remoting. [...]]]></description> <content:encoded><![CDATA[<p>Récemment, lors d&#8217;une intervention sur une application Flex, j&#8217;ai été confronté à un problème de migration d&#8217;une version de la librairie Spring BlazeDS Integration <em>(passage de la version 1.0.0.RC2 à 1.0.0.M2)</em>. Cette librairie permet la configuration de BlazeDS à travers Spring de façon simplifiée. J&#8217;ai voulu configurer un appel à un service Java en Remoting.</p><p>Afin de déclarer votre service <code>Remote</code>, les lignes suivantes doivent être ajoutées dans votre <code>applicationContext.xml</code> :</p><pre class="brush: xml; title: ; notranslate">
&lt;bean class=&quot;org.springframework.web.servlet.handler.SimpleUrlHandlerMapping&quot;&gt;
	&lt;property name=&quot;mappings&quot;&gt;
	    &lt;value&gt;
	        /*=mySpringManagedMessageBroker
	    &lt;/value&gt;
	&lt;/property&gt;
&lt;/bean&gt;
&lt;!-- Envoie les requêtes au &quot;message broker&quot; --&gt;
&lt;bean class=&quot;org.springframework.flex.servlet.MessageBrokerHandlerAdapter&quot;/&gt;
&lt;!-- Le MessageBroker de BlazeDs --&gt;
&lt;bean id=&quot;mySpringManagedMessageBroker&quot; class=&quot;org.springframework.flex.core.MessageBrokerFactoryBean&quot; /&gt;
&lt;!-- Service myService --&gt;
&lt;bean id=&quot;myService&quot; class=&quot;com.xebia.impl.MyServiceImpl&quot; /&gt;
&lt;flex:remoting-destination message-broker=&quot;mySpringManagedMessageBroker&quot; destination-id=&quot;myServiceDest&quot; ref=&quot;myService&quot; /&gt;
</pre><p>Ainsi que la référence au fichier <code>xsd</code> : <code>http://www.springframework.org/schema/flex/spring-flex-1.0.xsd</code></p><p>Malheureusement, au démarrage de votre application, vous aurez cette erreur :</p><pre class="brush: java; title: ; notranslate">
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 67 in XML document from ServletContext resource [/WEB-INF/classes/applicationContext-service.xml] is invalid;
        nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'flex:remoting-destination'.
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
</pre><p>Pourtant cela fonctionnait parfaitement avec les versions précédentes de Spring BlazeDS Integration &#8230;</p><p>Je regarde donc le fichier <code>xsd</code> sur lequel se base mon <code>applicationContext</code> <em>(http://www.springframework.org/schema/flex/spring-flex-1.0.xsd)</em>, et le <code>remoting-destination</code> est bien présent&#8230; étrange. Je regarde également la <a
href=" http://static.springsource.org/spring-flex/docs/1.0.x/reference/html/index.html" title="documentation du projet" >documentation du projet</a> et d&#8217;après cette dernière, ma configuration est bonne &#8230; le mystère s&#8217;épaissit.</p><p>Après quelques recherches, j&#8217;ai l&#8217;idée de regarder le <code>xsd</code> du <code>jar</code> de Spring BlazDS Integration (<code>org.springframework.flex-1.0.0.M2.jar</code>). Et <em>eureka</em>, je trouve l&#8217;explication : le <code>xsd</code> du <code>jar</code> n&#8217;est pas le même que celui vers lequel pointe mon <code>applicationContext</code>&#8230; Au chargement de l&#8217;application, c&#8217;est le <code>xsd</code> du <code>jar</code> qui est recherché&#8230; De plus, je me rends compte que cette version a subi un peu de refactoring et certains chemins ont été modifiés.<br
/> Par conséquent, vous devez déclarer votre service <code>Remote</code> de cette manière :</p><pre class="brush: xml; title: ; notranslate">
&lt;bean class=&quot;org.springframework.web.servlet.handler.SimpleUrlHandlerMapping&quot;&gt;
  &lt;property name=&quot;mappings&quot;&gt;
	   &lt;value&gt;
	       /*=mySpringManagedMessageBroker
	   &lt;/value&gt;
  &lt;/property&gt;
&lt;/bean&gt;
&lt;!-- Envoie les requêtes au &quot;message broker&quot; --&gt;
&lt;bean class=&quot;org.springframework.flex.messaging.servlet.MessageBrokerHandlerAdapter&quot;/&gt;
&lt;!-- Le MessageBroker de BlazeDs --&gt;
&lt;bean id=&quot;mySpringManagedMessageBroker&quot; class=&quot;org.springframework.flex.messaging.MessageBrokerFactoryBean&quot; /&gt;
&lt;!-- Service myService --&gt;
&lt;bean id=&quot;myService&quot; class=&quot;com.xebia.impl.MyServiceImpl&quot; /&gt;
&lt;flex:remote-service message-broker=&quot;mySpringManagedMessageBroker&quot; service-id=&quot;myServiceDest&quot; ref=&quot;myService&quot; /&gt;
</pre><p>Vous remarquerez que <code>remoting-destination</code> et <code>destination-id</code> sont devenus <code>remote-service</code> et <code>service-id</code> et que les chemins des classes <code>MessageBrokerHandlerAdapter</code> et <code>MessageBrokerFactoryBean</code> ont changé.</p><p>Néanmoins, une solution plus rapide consiste à effectuer une montée de version vers la 1.0.0.RELEASE de Spring BlazeDS Integration. En effet, le fichier <code>xsd</code> ainsi que les chemins ont été remis comme la version RC2, posant ainsi moins de problèmes.</p><p>En espérant que cette solution puisse aider d&#8217;autres personnes !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/07/29/spring-flex-blazeds-integration/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/</link> <comments>http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#comments</comments> <pubDate>Mon, 27 Jul 2009 16:02:37 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[DBMS]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[GAE]]></category> <category><![CDATA[Gaelyk]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[Hadoop]]></category> <category><![CDATA[HadoopDB]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[mapreduce]]></category> <category><![CDATA[Mockito]]></category> <category><![CDATA[PostGIS]]></category> <category><![CDATA[RIA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2584</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. RIA Mockito-Flex Le coin de la technique JPA implementation patterns HadoopDB : un hybride entre MapReduce et DBMS Gaelyk ou Groovy sur AppEngine PostGIS, le SIG Open Source qui monte Evènements de notre communauté en France et à l&#8217;étranger Enquête JavaEE 6 RIA Mockito-Flex [...]]]></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ée par Xebia.</em></p><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#MockitoFlex">Mockito-Flex</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#JPAimplementationpatterns">JPA implementation patterns</a></li><li><a
href="http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#HadoopDBunhybrideentreMapReduc">HadoopDB : un hybride entre MapReduce et DBMS</a></li><li><a
href="http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#GaelykouGroovysurAppEngine">Gaelyk ou Groovy sur AppEngine</a></li><li><a
href="http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#PostGISleSIGOpenSourcequimonte">PostGIS, le SIG Open Source qui monte</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/07/27/revue-de-presse-xebia-119/#EnquteJavaEE">Enquête JavaEE 6</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="MockitoFlex"></a>Mockito-Flex</h4><p>Un mois après la sortie de la version 1.0, <a
href="http://bitbucket.org/loomis/mockito-flex/wiki/Home" title="MockitoFlex" >Mockito-Flex</a> se met à jour en 1.0.1. Une <em>release</em> mineure donc mais qui apporte toutefois son petit lot de nouveautés (<em>matchers</em> <code>anyOf(type:Class)</code>, <code>notNull()</code> &#8230;).</p><p>Les utilisateurs de <a
href="http://mockito.org/" title="Mockito" >Mockito</a> ne seront pas perdus, le code Flex étant très similaire au code Java que ce soit pour les assertions ou pour le <code>verify</code>:</p><pre class="brush: java; title: ; notranslate">
var list:ArrayCollection = ArrayCollection(mock(ArrayCollection, &quot;collection&quot;, [[]]));
given(list.getItemAt(1)).willReturn(&quot;A&quot;);
assertEquals(&quot;A&quot;, list.getItemAt(1));
assertNull(list.getItemAt(2));
...
var array:Array = mock(Array) as Array;
array.push(&quot;1&quot;);
array.pop();
verify().that(array.push(&quot;1&quot;));
verify().that(array.pop());
</pre><p>Le projet est très récent et néanmoins en bonne voie : article sur <a
href="http://www.infoq.com/news/2009/07/mockito-java-flex" title="InfoQ" >InfoQ</a>, <a
href="http://groups.google.com/group/mockito-flex?pli=1" title="mailing-list" >mailing-list</a>, <a
href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0" title="tutoriel" >tutoriel</a>&#8230; Comme toujours, rendez-vous est pris dans la <a
href="http://bitbucket.org/loomis/mockito-flex/downloads/" title="section tlchargements" >section téléchargements</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="JPAimplementationpatterns"></a>JPA implementation patterns</h4><p>Vincent Partington, collègue de Xebia Hollande, a réalisé <a
href="http://blog.xebia.com/2009/07/13/jpa-implementation-patterns-wrap-up/" title="une srie darticles autour de la spcification JPA" >une série d&#8217;articles autour de la spécification JPA</a>. Ses articles sont un complément à la documentation existante afin de faire le tour sur les fondamentaux et les faux-amis de JPA :</p><ul><li><a
href="http://blog.xebia.com/2009/03/09/jpa-implementation-patterns-data-access-objects/" title="Dao gnrique" >Dao générique</a></li><li><a
href="http://blog.xebia.com/2009/03/23/jpa-implementation-patterns-saving-detached-entities/" title="Persister" >Persister</a>, <a
href="http://blog.xebia.com/2009/04/03/jpa-implementation-patterns-retrieving-entities/" title="retrouver" >retrouver</a>, <a
href="http://blog.xebia.com/2009/04/09/jpa-implementation-patterns-removing-entities/" title="effacer" >effacer</a> une entité</li><li><a
href="http://blog.xebia.com/2009/05/11/jpa-implementation-patterns-service-facades-and-data-transfers-objects/" title="Pattern darchitecture  Pour ou contre les DAO DTO ou facade service " >Pattern d&#8217;architecture : Pour ou contre les DAO, DTO ou facade service, &#8230;</a></li><li>Et bien d&#8217;autres patterns &#8230;</li></ul><p>JPA et ses implémentations (telle qu&#8217;Hibernate) restent une technologie difficile à maitriser, et ces articles vous aideront à prendre des décisions techniques importantes pour vos projets.</p><h4><a
name="HadoopDBunhybrideentreMapReduc"></a>HadoopDB : un hybride entre MapReduce et DBMS</h4><p>Daniel Abadi <a
href="http://dbmsmusings.blogspot.com/2009/07/announcing-release-of-hadoopdb-longer.html" title="a présenté" >a présenté</a> <a
href="http://db.cs.yale.edu/hadoopdb/hadoopdb.html" title="HadoopDB" >HadoopDB</a>, un projet issu des universités de Yale et de Brown, qu&#8217;il qualifie d&#8217;hybride entre MapReduce et DBMS classique. Il s&#8217;agit d&#8217;une extension pour <a
href="http://hadoop.apache.org/" title="Hadoop" >Hadoop</a> et <a
href="http://wiki.apache.org/hadoop/Hive" title="Hive" >Hive</a> qui permet d&#8217;utiliser une base de données en remplacement de HDFS, le <em>file system</em> distribué utilisé par Hadoop.</p><p>Concrètement chaque nœud Hadoop embarque son propre serveur de base de données. HadoopDB reçoit des requêtes SQL qu&#8217;il analyse, traduit en tâches MapReduce qui seront envoyées sur chacun des nœuds du <em>cluster</em> Hadoop, puis retraduites en SQL pour être finalement exécutées par la base de données sous-jacente <em>(SQL to MapReduce to SQL Planner)</em>.</p><p>L&#8217;ensemble du projet est décrit dans la <a
href="http://db.cs.yale.edu/hadoopdb/hadoopdb.pdf" title="publication qui lui est consacrée" >publication qui lui est consacrée</a>. Celle-ci présente en détail les réflexions qui ont accompagné la conception d&#8217;HadoopDB et les performances obtenues faces à des DBMS parallèles dédiés à l&#8217;analyse de données tels que <a
href="http://www.vertica.com/" title="Vertica" >Vertica</a>. Si les performances mesurées d&#8217;HadoopDB sont en léger retrait face à Vertica, l&#8217;auteur met en avant que sa solution repose uniquement sur des technologies Open Source et qu&#8217;une base de données relationnelle (PostgreSQL) a été utilisée : il espère de meilleurs résultats en utilisant une <a
href="http://en.wikipedia.org/wiki/Column-oriented_DBMS" title="base de donnes oriente colonnes" >base de données orientée colonnes</a>.</p><h4><a
name="GaelykouGroovysurAppEngine"></a>Gaelyk ou Groovy sur AppEngine</h4><p>Parmi les sujets traités régulièrement sur notre blog, on retrouve <a
href="http://blog.xebia.fr/?s=groovy" title="Groovy" >Groovy</a> et <a
href="http://blog.xebia.fr/?s=appengine" title="Google AppEngine (GAE)" >Google AppEngine (GAE)</a>. Qu&#8217;obtient-on en mélangeant ? Et bien le dernier projet de <a
href="http://marceloverdijk.blogspot.com/" title="Marcel Overdijk" >Marcel Overdijk</a> et de <a
href="http://glaforge.free.fr/blog/groovy" title="Guillaume Laforge" >Guillaume Laforge</a> à savoir <a
href="http://gaelyk.appspot.com/" title="Gaelyk" >Gaelyk</a> (<a
href="http://www.gg3721.com/list/49/436662.html" title="annonce" >annonce</a>).</p><p>Le toolkit s&#8217;appuie sur <a
href="http://groovy.codehaus.org/Groovlets" title="Groovlets" >Groovlets</a> et <a
href="http://groovy.codehaus.org/Groovy+Templates" title="Groovy Template" >Groovy Template</a>, et permet de déployer rapidement de petites applications sur GAE. Les auteurs rappellent en effet que pour de plus grosses applications, il vaut mieux se tourner vers <a
href="http://www.grails.org/" title="Grails" >Grails</a>.</p><p>Le <a
href="http://gaelyk.appspot.com/tutorial/" title="tutoriel" >tutoriel</a> très complet permet de faire un rapide tour d&#8217;horizon de Gaelyk.<br
/> Celui-ci décrit l&#8217;arborescence d&#8217;un projet Gaelyk, la configuration du <code>web.xml</code> et du <code>appengine-web.xml</code>.<br
/> La partie <em>vues et contrôleurs</em> s&#8217;intéresse :</p><ul><li>aux variables implicites mises en place par la servlet principale (<code>eager</code> avec <code>request, response, context, session</code>&#8230; et <code>lazy</code> avec <code>out, html...</code>),</li><li>aux Groovy Templates, avec plusieurs exemples de <code>gtpl</code>, gestion des <code>incude</code> et <code>redirect</code>,</li><li>aux Groovlets, avec là aussi plusieurs exemples de scripts.</li></ul><p>Enfin, une dernière partie détaille les ajouts de syntaxes/méthodes spécifiques à Google AppEngine (envoi de mails, <code>Entity</code>, <code>withTransaction()</code>&#8230;) et explique comment déployer son application.<br
/> Un exemple d&#8217;application qui utilise Gaelyk est la <a
href="http://groovyconsole.appspot.com/" title="Groovy Web Console" >Groovy Web Console</a>, ou l&#8217;écriture de code Groovy <em>live</em>. Alors, un petit <a
href="http://gaelyk.appspot.com/download/" title="HelloWorld" >HelloWorld</a> ?</p><h4><a
name="PostGISleSIGOpenSourcequimonte"></a>PostGIS, le SIG Open Source qui monte</h4><p>Les <a
href="http://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27information_g%C3%A9ographique" title="SIG (Systèmes d'Information Géographique)" >SIG (Systèmes d&#8217;Information Géographique)</a> prennent de nos jours une nouvelle dimension avec la généralisation progressive de terminaux mobiles connectés à Internet et capables de se géolocaliser ou encore avec les sites Web riches proposant des cartes, des calculs d&#8217;itinéraires ou des recherches du plus proche point de vente. A travers cette évolution, un plus grand nombre d&#8217;entreprises peut potentiellement être intéressé par les SIG.</p><p>Alors que pendant un temps les principaux acteurs sur ce marché étaient des produits commerciaux, <a
href="http://en.wikipedia.org/wiki/List_of_GIS_software" title="on trouve désormais une offre Open Source" >on trouve désormais une offre Open Source</a> : <a
href="http://forge.mysql.com/wiki/GIS_Functions" title="MySQL Spacial" >MySQL Spacial</a>, <a
href="http://geosysin.iict.ch/irstv-trac/wiki/H2spatial/Download" title="H2Spacial" >H2Spacial</a>, <a
href="http://www.gaia-gis.it/spatialite-2.0/index.html" title="SpacialLite" >SpacialLite</a> et <a
href="http://postgis.refractions.net/" title="PostGIS" >PostGIS</a>.<br
/> Au sein de cette offre, <a
href="http://postgis.refractions.net/" title="PostGIS" >PostGIS</a>, une extension de <a
href="http://www.postgresql.org/" title="PostgreSQL" >PostgreSQL</a> qui a fait son apparition il y a 4 ans, se distingue par sa maturité et sa popularité. Ainsi, l&#8217;éditeur Manning a récemment annoncé <a
href="http://manning.com/obe/" title="un ouvrage qui lui sera consacr" >un ouvrage qui lui sera consacré</a> pour début 2010.</p><p>Le site du projet <a
href="http://postgis.refractions.net/news/20090724/" title="vient d'annoncer la disponibilité" >vient d&#8217;annoncer la disponibilité</a> de la version 1.4 de PostGIS apportant son lot d&#8217;améliorations et de corrections. Le driver JDBC dédié, composé principalement d&#8217;extensions à l&#8217;API JDBC standard, est lui aussi mis à jour, on le trouve dans <a
href="http://postgis.refractions.net/download/" title="la mme archive que PostGIS" >la même archive que PostGIS</a>.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="EnquteJavaEE"></a>Enquête JavaEE 6</h4><p>Sun, <a
href="http://www.theserverside.com/news/thread.tss?thread_id=55247" title="via TheServerSide" >via TheServerSide</a>, relance la communauté Java pour <a
href="http://www.sun.com/training/ee6_jtasurvey.html" title="ses cinq enqutes  thme auprs des dveloppeurs JavaEE6" >ses cinq enquêtes à thème auprès des développeurs JavaEE6</a>. Ces enquêtes doivent servir à optimiser les cours et les certifications JavaEE 6. Si vous êtes prêts à donner cinq minutes de votre temps à l&#8217;amélioration de la formation Java, n&#8217;attendez plus, vous avez jusqu&#8217;au 31 juillet.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/</link> <comments>http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#comments</comments> <pubDate>Mon, 20 Jul 2009 16:20:01 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[CEP]]></category> <category><![CDATA[Cloud Computing]]></category> <category><![CDATA[Complex Event Processing]]></category> <category><![CDATA[EDA]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Flex Monkey]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JavaRebel]]></category> <category><![CDATA[OpenDS]]></category> <category><![CDATA[REST]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SOA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2567</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Les standards du Cloud Computing en préparation Fin de JavaRebel, place à &#8230; RIA GWT 1.7 pour les nouveaux navigateurs ! Flex Monkey 1.0 SOA La base de données dans une Event Driven Architecture REST et les abus de langage [...]]]></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ée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#LesstandardsduCloudComputingen">Les standards du Cloud Computing en préparation</a></li><li><a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#FindeJavaRebelplace">Fin de JavaRebel, place à &#8230;</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#GWTpourlesnouveauxnavigateurs">GWT 1.7 pour les nouveaux navigateurs !</a></li><li><a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#FlexMonkey">Flex Monkey 1.0</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#LabasededonnesdansuneEventDriv">La base de données dans une <em>Event Driven Architecture</em></a></li><li><a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#RESTetlesabusdelangage">REST et les abus de langage</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#OpenDSpasseenversion">OpenDS passe en version 2.0</a></li><li><a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#bonnesraisonsdechercherlesucce">10 bonnes raisons de chercher le successeur de Java</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/07/20/revue-de-presse-xebia-118/#SoireTontonsFlexeurs">Soirée Tontons Flexeurs</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="LesstandardsduCloudComputingen"></a>Les standards du Cloud Computing en préparation</h4><p>Comme pour tout marché émergeant, le Cloud Computing s&#8217;est développé autour de technologies propriétaires mises au point par différents éditeurs et fournisseurs. Une <a
href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#RetoursurleCloudCamp" title="session ddie aux problmatiques dintgration" >session dédiée aux problématiques d&#8217;intégration</a> lors du CloudCamp Paris avait conclu qu&#8217;aucun standard adapté n&#8217;était disponible pour permettre le transfert d&#8217;informations entre les différents fournisseurs et technologies du Cloud Computing.</p><p>Le monde du Cloud Computing montant en puissance mois après mois, la problématique de standardisation se fait de plus en plus pressante. C&#8217;est donc sans surprise qu&#8217;on a assisté à la constitution d&#8217;organismes de standardisation et de groupes de travail afin d&#8217;établir les standards à venir. Afin de donner une visibilité à l&#8217;ensemble de ces efforts, l&#8217;Open Grid Forum (OGF) annonce la création d&#8217;un site commun ou chaque organisme est invité à présenter ses travaux en cours : <a
href="http://cloud-standards.org" title="cloud-standards.org" >http://cloud-standards.org</a>. On notera particulièrement deux spécifications prometteuses :</p><ul><li><a
href="http://www.dmtf.org/" title="Open Virtualization Format (OVF)" >Open Virtualization Format (OVF)</a> : Format de <em>packaging</em> d&#8217;application permettant la distribution et le déploiement simplifié sur environnement virtualisé.</li><li><a
href="http://www.occi-wg.org/" title="Open Cloud Computing Interface (OCCI)" >Open Cloud Computing Interface (OCCI)</a> : API standardisée permettant la définition, le <em>provisioning</em> et le <em>monitoring</em> d&#8217;infrastructures exposées en tant que services sur un Cloud (IaaS).</li></ul><p>Par ailleurs, l&#8217;<a
href="http://www.opencloudconsortium.org/" title="Open Cloud Consortium (OCC)" >Open Cloud Consortium (OCC)</a> explique travailler sur des <em>frameworks</em> d&#8217;interopérabilité entre Clouds et l&#8217;<a
href="http://www.oasis-open.org" title="OASIS" >OASIS</a> expose quant à elle sa vision selon laquelle le Cloud Computing est une extension naturelle des concepts SOA, et que, par conséquent, de nombreux standards qu&#8217;elle développe actuellement intègrent cette problématique.</p><h4><a
name="FindeJavaRebelplace"></a>Fin de JavaRebel, place à &#8230;</h4><p>Zeroturnaround, l&#8217;éditeur de <a
href="http://blog.xebia.fr/2008/11/14/javarebel/" title="JavaRebel" >JavaRebel</a>, doit faire face à un joli défi : pour avoir fait une entorse à la marque déposée Java, il doit modifier le nom de son produit, sans pour autant perdre la notoriété d&#8217;ores et déjà acquise. Pour faire d&#8217;une pierre deux coups (modifier effectivement ce nom mais aussi s&#8217;offrir un joli coup de pub), l&#8217;éditeur soumet ce renommage <a
href="http://www.zeroturnaround.com/blog/renaming-javarebel/" title=" un concours" >à un concours</a>. En jeu, une licence <strike>JavaRebel</strike> à vie&#8230;</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="GWTpourlesnouveauxnavigateurs"></a>GWT 1.7 pour les nouveaux navigateurs !</h4><p>Les dernières <em>releases</em> de GWT étaient plutôt espacées dans le temps (1 an entre 1.4/1.5 et 8 mois entre 1.5/1.6) mais il n&#8217;aura fallu attendre que 3 mois pour voir débarquer la version <strike>1.6.5</strike> <a
href="http://groups.google.com/group/Google-Web-Toolkit-Contributors/browse_thread/thread/a0d35938d940d32d?pli=1" title="17 de GWT" >1.7 de GWT</a>.</p><p>Cette dernière version (définie comme mise à jour mineure / <em>bugfix release</em>) apporte un meilleur support des derniers navigateurs à savoir Internet Explorer 8, FireFox 3.5 et Safari 4 (meilleur support d&#8217;IE8 = <a
href="http://ajaxian.com/archives/the-slow-death-of-ie-6-support-youtube-and-browser-placement" title="disparition dIE6" >disparition d&#8217;IE6</a> ? <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ).</p><p>L&#8217;ajout du <code>user.agent ie8</code>, qui peut potentiellement impacter certains projets, a fait pencher la balance vers un numéro de version de type majeure (1.7) pour forcer les développeurs à être attentif sur ce point important (une version de type 1.6.5 n&#8217;aurait pas eu le même impact).</p><p>Une simple recompilation suffit pour être compatible avec ces navigateurs, aucune modification de code n&#8217;est requise. Disponible comme toujours dans la section <a
href="http://code.google.com/p/google-web-toolkit/downloads/list?can=1&#038;q=GWT+1.7.0" title="tlchargement" >téléchargement</a> du Google Code.</p><h4><a
name="FlexMonkey"></a>Flex Monkey 1.0</h4><p>Plus de 7 mois après la sortie de la version 0.5 (<a
href="http://blog.xebia.fr/2008/12/01/revue-de-presse-xebia-85/#FlexMonkey" title="précédente revue de presse" >précédente revue de presse</a>), <a
href="http://flexmonkey.gorillalogic.com/gl/stuff.flexmonkey.html" title="FlexMonkey" >FlexMonkey</a>, le framework de tests automatisés pour applications Flex et Air, se met à jour et passe ainsi en version 1.0 (par <a
href="http://www.infoq.com/news/2009/07/flex-monkey-1.0-released" title="InfoQ" >InfoQ</a>).</p><p>Au menu : réorganisation de l&#8217;interface utilisateur, support direct d&#8217;applications Air (la console FlexMonkey devenant d&#8217;ailleurs une application Air) et tests générés pour Fluint (qui pourront aussi être lancés par FlexUnit 4).</p><p>Plusieurs tutoriels/exemples sont déjà disponibles sur la toile, on retiendra plus particulièrement le <a
href="http://www.adobe.com/devnet/flex/articles/flexmonkey.html" title="Getting Started" >Getting Started</a> d&#8217;Eric Owens <em>(Gorilla Logic)</em> et l&#8217;article très complet de Stuart Stern (CEO de <em>Gorilla Logic</em> et <a
href="http://stu-stern.blogspot.com/2009/07/monkey-has-landed.html" title="créateur de FlexMonkey" >créateur de FlexMonkey</a>) sur <a
href="http://www.infoq.com/articles/flexmonkey-ui-unit-testing" title="InfoQ" >InfoQ</a>.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="LabasededonnesdansuneEventDriv"></a>La base de données dans une <em>Event Driven Architecture</em></h4><p>Sur son blog dédié aux traitements des évènements dans les systèmes d&#8217;informations, Tibco <a
href="http://tibcoblogs.com/cep/2009/07/14/exploiting-databases-in-an-event-based-infrastructure-just-got-easier/" title="a publi un billet" >a publié un billet</a> portant sur le positionnement d&#8217;une base de données dans une <em>Event Driven Architecture</em> (EDA).</p><p>Se trouvant à la base de nombreuses applications et services, elle constitue en effet une potentielle source d&#8217;évènements très intéressante. L&#8217;auteur met alors en avant la technologie <a
href="http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_cqn.htm" title="Continuous Query Notification (CQN)" ><em>Continuous Query Notification</em> (CQN)</a> intégrée à Oracle 11g, et qui permet aux clients d&#8217;une base de données de s&#8217;enregistrer pour recevoir des notifications lorsque les données d&#8217;une table ou le résultat d&#8217;une requête prédéfinie changent. On peut assimiler cette technologie à un mécanisme de <em>trigger</em> qui rappellerait des systèmes externes.</p><p>Cette possibilité permet ainsi d&#8217;enrichir les sources d&#8217;évènements disponibles au sein du système d&#8217;information : de par son positionnement, la base de données est capable d&#8217;offrir simplement des évènements qui seraient parfois complexes à générer au niveau applicatif. Dans une telle configuration, le <a
href="http://en.wikipedia.org/wiki/Complex_Event_Processing" title="Complex Event Processing (CEP)" ><em>Complex Event Processing</em> (CEP)</a> permettra alors de manipuler le volume important d&#8217;évènements ainsi créés afin d&#8217;en extraire des informations métiers utiles.</p><h4><a
name="RESTetlesabusdelangage"></a>REST et les abus de langage</h4><p>Ryan McDonough, contributeur au projet <a
href="http://www.jboss.org/resteasy/" title="RESTEasy" >RESTEasy</a>, <a
href="http://www.damnhandy.com/2009/07/19/you-cant-do-anything-over-rest/" title="a publi un billet" >a publié un billet</a> dans lequel il fait un parallèle entre les abus de langages liés à REST et les mauvaises pratiques qui en découlent.</p><p>Parmi les erreurs de compréhension qu&#8217;il met en avant, on retrouve l&#8217;assimilation de REST à un protocole, la définition de REST en tant que synonyme de HTTP, ou encore l&#8217;utilisation abusive du qualificatif RESTful.</p><p>Il est souvent question lorsque l&#8217;on parle de REST de définition d&#8217;URLs, de représentations multiples d&#8217;une ressource, ou, plus couramment encore, d&#8217;opposition à SOAP. Loin de ces problématiques, Ryan McDonough met ici en avant le fait que REST est dans la réalité trop souvent utilisé pour justifier à tort tout type d&#8217;utilisation douteuse de JSON ou XML sur HTTP&#8230;</p><p>A ce titre, le <a
href="http://oreilly.com/catalog/9780596529260/" title="livre RESTful WebServices" >livre RESTful WebServices</a> de Leonard Richardson et Sam Ruby permet de comprendre en détail toutes les nuances de ce modèle d&#8217;architecture qui sont parfois délicates à appréhender.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="OpenDSpasseenversion"></a>OpenDS passe en version 2.0</h4><p>La version 2.0 du projet <a
href="http://www.opends.org/" title="OpenDS" >OpenDS</a> est disponible. Il s&#8217;agit d&#8217;un serveur LDAP implémenté entièrement en Java et soutenu par Sun ; ces caractéristiques le positionne donc directement face à <a
href="http://directory.apache.org/" title="Apache Directory Server" >Apache Directory Server</a>, son équivalent développé par la fondation Apache.</p><p>Ludovic Poitou <a
href="http://blogs.sun.com/Ludo/entry/opends_2_0_is_here" title="prsente les principales nouveauts" >présente les principales nouveautés</a> de cette version :</p><ul><li>Ajout d&#8217;un <em>control panel</em> graphique, en remplacement du <em>status-panel</em> de la version précédente, permettant d&#8217;administrer le serveur et ses données</li><li>Amélioration de la réplication <em>multi-master</em><li>Support de connections sécurisées SASL</li><li>Affinement du système de contrôle d&#8217;accès</li><li>Amélioration des performances. On notera sur ce point la collaboration avec l&#8217;équipe du <em>garbage collector</em> G1 qui avait <a
href="http://blogs.sun.com/mattswift/entry/garbage_first_the_g1_garbage" title="t expose il y a 2 mois" >été exposée il y a 2 mois</a></li></ul><p>Au delà de l&#8217;ajout de fonctionnalités, la question du positionnement reste entière pour OpenDS tout comme pour son rival ApacheDS. En effet, l&#8217;annuaire est en général une ressource critique du système d&#8217;information pour laquelle on préfèrera généralement une implémentation native plus mature. Dès lors, OpenDS se destinera principalement au poste de développement, aux tests, et aux applications embarquant directement leur propre annuaire comme mécanisme de persistance.</p><h4><a
name="bonnesraisonsdechercherlesucce"></a>10 bonnes raisons de chercher le successeur de Java</h4><p>Dans la droite ligne d&#8217;un certain nombre de keynotes récentes, <a
href="http://www.theserverside.com/news/thread.tss?thread_id=55185" title="Mario Fusco expose sur TheServerSide" >Mario Fusco expose, sur TheServerSide</a>, 10 bonnes raisons de chercher un héritier à Java. Ces &#8216;manques&#8217; de Java sont souvent évoqués, parfois partiellement comblés par les futures spécifications. Il nous a semblé malgré tout intéressant de les reprendre ici, ne serait ce pour que ces limitation soient bien comprises de tous.</p><ul><li>Absence de Closures, et son corollaire, l&#8217;absence de pointeur sur les fonctions (<a
href="http://www.joelonsoftware.com/items/2006/08/01.html" title="firstclass function" ><em>first-class function</em></a>).</li><li>L&#8217;existence de types primitifs (le langage n&#8217;est pas 100 % objet), et un autoboxing pas toujours performant (sur la gestion des null par exemple).</li><li>La faiblesse des Génériques : impossible de découvrir leur type au Runtime.</li><li>L&#8217;impossibilité de supprimer certains warnings concernant les génériques.</li><li>Impossible de passer un paramètre <em>void</em> à une méthode.</li><li>Le pattern <em>proxy</em> n&#8217;est pas implémenté de manière native sur les classes concrètes.</li><li>Le switch&#8230;case est très faible</li><li>La présence des exceptions <em>Checked</em> qui obligent à de douloureux <code>try...catch</code> ou à d&#8217;illisibles <code>throws</code></li></ul><p>Mario Fusco a l&#8217;honnêteté de reconnaitre que nombre de ces défauts font partie des péchés originels de Java et qu&#8217;il est quasiment impossible de les remettre en cause sans gravement compromettre la compatibilité ascendante du language, qui en est une des pierres angulaires. C&#8217;est pour cette raison qu&#8217;il se met en quête du <em>next gen language</em></p><p>Vous ne manquerez pas de remarquer que, comme tout article qui parle de succéder à Java, ce billet est richement (parfois de manière assez virulente) commenté.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SoireTontonsFlexeurs"></a>Soirée Tontons Flexeurs</h4><p>Demain (mardi 21 Juillet) de 18h à 20h se déroulera une nouvelle soirée des <a
href="http://groups.adobe.com/groups/193bcaff5f/summary" title="Tontons Flexeurs" >Tontons Flexeurs</a> dont le sujet est un retour d&#8217;expériences sur la mise en place d&#8217;applications Flex en entreprise dans le monde Java (tests unitaires/fonctionnels, intégration continue&#8230;).<br
/> L&#8217;événement étant déjà <a
href="http://reunion-ttfx-juillet-2009.eventbrite.com/" title="complet" >complet</a>, il ne vous reste plus qu&#8217;à bookmarker leur <a
href="http://groups.adobe.com/resources/8a214877ac/summary" title="calendrier" >calendrier</a> pour être informé des prochaines réunions <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/</link> <comments>http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#comments</comments> <pubDate>Mon, 13 Jul 2009 15:53:20 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[ESB]]></category> <category><![CDATA[GChart]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[jBPM]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2541</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. RIA GChart 2.5 pour GWT SOA jBPM 4.0 est disponible Avez-vous besoin d&#8217;un ESB ? Le coin de la technique Making Good Software, bonnes pratiques du développement logiciel Evènements de notre communauté en France et à l&#8217;étranger Sun fait évoluer sa certification programmer RIA [...]]]></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ée par Xebia.</em></p><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#GChartpourGWT">GChart 2.5 pour GWT</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#jBPMestdisponible">jBPM 4.0 est disponible</a></li><li><a
href="http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#AvezvousbesoindunESB">Avez-vous besoin d&#8217;un ESB ?</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/#MakingGoodSoftwarebonnespratiq">Making Good Software, bonnes pratiques du développement logiciel</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/07/13/revue-de-presse-xebia-117/#Sunfaitvoluersacertificationpr">Sun fait évoluer sa certification <em>programmer</em></a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="GChartpourGWT"></a>GChart 2.5 pour GWT</h4><p>Afficher des résultats sous forme d&#8217;histogramme ou de camembert se résume pour  bon nombre de projets Java à l&#8217;import de <a
href="http://www.jfree.org/jfreechart/" title="JFreeChart" >JFreeChart</a>, la librairie de référence pour faire des diagrammes en Java (<a
href="http://www.jfree.org/jfreechart/jfreechart-1.0.13-demo.jnlp" title="dmo" >démo</a>).</p><p>Pour les projets GWT, une autre API fait beaucoup parler d&#8217;elle en ce moment (entre autres sur <a
href="http://ajaxian.com/archives/gchart-25-faster-sharper-canvas-rendered-pie-line-and-area-charts" title="Ajaxian" >Ajaxian</a> et <a
href="http://www.ongwt.com/post/2009/07/03/Client-side-GChart-25" title="onGWT" >onGWT</a>) et cette API est <a
href="http://code.google.com/p/gchart/" title="GChart 25" >GChart 2.5</a>. Son objectif est simple : réaliser rapidement de beaux graphiques.</p><p>Une <a
href="http://gchart.googlecode.com/svn/trunk/live-demo/v2_5/com.googlecode.gchart.gchartdemoapp.GChartDemoApp/GChartDemoApp.html" title="démo" >démo</a> nous montre les capacités de l&#8217;outil en termes de rapidité d&#8217;affichage. Le code source de chaque exemple est aussi disponible (<a
href="http://gchart.googlecode.com/svn/trunk/live-demo/v2_5/com.googlecode.gchart.gchartdemoapp.GChartDemoApp/GChartExample11.txt" title="source" >source</a> du graphique <em>Estimated Future Oil Prices</em>).</p><p>Pour la release note technique (plus de compatibilité GWT 1.4, navigateurs testés, objets et méthodes dépréciés, bugfix&#8230;), tout se trouve sur cette <a
href="http://gchart.googlecode.com/svn/trunk/doc/com/googlecode/gchart/client/doc-files/gchart2p5features.html" title="page" >page</a>. Il ne reste plus qu&#8217;à <a
href="http://code.google.com/p/gchart/downloads/list" title="tester" >tester</a> ! Les retours d&#8217;expériences sont bienvenus dans les commentaires.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="jBPMestdisponible"></a>jBPM 4.0 est disponible</h4><p>Tom Baeyens <a
href="http://processdevelopments.blogspot.com/2009/07/jbpm-40-is-out.html" title="annonce sur son blog" >annonce sur son blog</a> la disponibilité de la version finale de jBPM 4.0 respectant ainsi le <a
href="http://blog.xebia.fr/2009/04/06/revue-de-presse-xebia-103/#LecalendrierseconfirmepourjBPM" title="calendrier prvu" >calendrier prévu</a>.</p><p>jBPM n&#8217;avait pas connu d&#8217;évolution majeure depuis 2005, cette nouvelle version constitue donc un évènement majeur pour les utilisateurs de jBPM. Les nouveautés apportées sont importantes :</p><ul><li>Nouvelle version du plugin Eclipse (GPD) permettant la définition graphique de processus suivant la notation <a
href="http://fr.wikipedia.org/wiki/Business_Process_Modeling_Notation" title="BPMN" >BPMN</a></li><li>Introduction de <a
href="http://docs.jboss.com/jbpm/pvm/article/" title="JBoss PVM" >JBoss PVM</a> (Process Virtual Machine), un moteur de <em>workflow</em> générique utilisé par jBPM pour l&#8217;implémentation des différents langages de définition de processus qu&#8217;il propose (jPDL, BPEL et Pageflow)</li><li>Refonte des schémas de base de données utilisés pour les rendre plus évolutifs</li><li>Intégration native à Spring</li><li>Amélioration des performances</li><li>Simplification de l&#8217;installation</li></ul><p>Cette nouvelle version est d&#8217;ores et déjà disponible sur le <a
href="http://repository.jboss.com/maven2/org/jbpm/jbpm4/" title="repository Maven de JBoss" ><em>repository</em> Maven de JBoss</a>. Par ailleurs, l&#8217;ensemble des apports de jBPM 4 seront passés en revue lors du <a
href="http://www.jbossworld.com/" title="JBoss World 2009" >JBoss World 2009</a> en septembre prochain, ainsi qu&#8217;à <a
href="http://www.devoxx.com/display/DV09/jBPM4+in+Action" title="Devoxx 09" >Devoxx 09</a> en novembre.</p><h4><a
name="AvezvousbesoindunESB"></a>Avez-vous besoin d&#8217;un ESB ?</h4><p>Ross Mason, <a
href="http://www.mulesource.org/display/COMMUNITY/Home" title="fondateur de MuleSource" >fondateur de MuleSource</a> a publié sur son blog <a
href="http://blog.mulesource.org/2009/07/to-esb-or-not-to-esb" title="une liste de points à vérifier avant de mettre en place un ESB" >une liste de points à vérifier avant de mettre en place un ESB</a>. L&#8217;article, au titre plutôt racoleur (To ESB or not to ESB), à fait du bruit sur Twitter. D&#8217;ailleurs, en aparté, pour avoir nous-mêmes fait circuler ce lien, nous avons été surpris d&#8217;avoir été répondu par un certain <a
href="http://twitter.com/shakesp/status/2454701331" title="shakesp" >@shakesp</a>.</p><p>Pour en revenir au cœur du sujet, les points qui nous semblent intéressants sont simples à retenir :</p><ul><li>Commencez à penser à un ESB pour intégrer 3 applications, à plusieurs ESB si vous en avez plus que 10</li><li>Avez-vous absolument besoin de plusieurs protocoles de communications ?</li><li>Avez-vous de réels besoins d&#8217;intégration ? Découpage, routing, agrégation de messages &#8230;</li></ul><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="MakingGoodSoftwarebonnespratiq"></a>Making Good Software, bonnes pratiques du développement logiciel</h4><p>Une fois n&#8217;est pas coutume, nous vous proposons cette semaine la découverte d&#8217;un blog tout récemment ajouté dans nos RSS : <a
href="http://www.makinggoodsoftware.com" title="Making Good Software" >Making Good Software</a>. Ce blog établit des listes de bonnes (et mauvaises) pratiques du développement logiciel. Non pas que son contenu soit extraordinaire, puisque vous en connaissez probablement déjà les plus gros points, mais il a le mérite de les rappeler : toute ressemblance avec personnes existantes ou ayant existé ne suivant pas ces règles ne saurait être que fortuite <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Dans un premier article, une liste des <a
href="http://www.makinggoodsoftware.com/2009/07/07/5-top-non-technical-mistakes-made-by-programmers/" title="5 erreurs non techniques" >5 erreurs non techniques</a> les plus répandues chez les développeurs, dont nos 2 préférés qui vous feront probablement penser à quelqu&#8217;un de votre open-space:</p><ul><li>Ego surdimensionné : &nbsp;&raquo; je suis le meilleur développeur au monde, et ça me permet d&#8217;avoir toujours raison &nbsp;&raquo; (ou la fameuse conversation à sens unique)</li><li>Manque de discipline : &nbsp;&raquo; j&#8217;essaye de tout faire en même temps, mais je ne termine jamais rien &nbsp;&raquo; (définition de <em>done</em> plus que douteuse)</li></ul><p>Un autre article vous donne une liste de <a
href="http://www.makinggoodsoftware.com/2009/06/04/10-commandments-for-creating-good-code/" title="10 points  suivre pour crire du bon code" >10 points à suivre pour écrire du bon code</a> :</p><ul><li>Factorisez votre code, pour simplifier la correction d&#8217;anomalies et le refactoring</li><li>Ecrivez des méthodes les plus courtes possibles</li><li>Travaillez le nom des vos objets, variables et méthodes, il s&#8217;agit de la meilleure des documentations</li><li>Une seule responsabilité par classe,</li><li>Travaillez l&#8217;organisation de votre code, par groupes physiques de fichiers et groupes logiques de fonctions</li><li>Faites des tests unitaires, quand vous aurez fini, faites-en encore plus <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></li><li>Refactorez le plus tôt et le plus souvent possible</li><li>Auto-documentez votre code</li><li>Privilégiez le code par interface</li><li>Faites des revues de code régulières</li></ul><p>Dans un autre article l&#8217;auteur décrit une matrice permettant de <a
href="http://www.makinggoodsoftware.com/2009/06/30/types-of-code-how-to-rate-your-code-from-a-to-f/" title="noter votre code" >noter votre code</a> en fonction de sa simplicité et de son extensibilité.</p><p>Et pour finir, histoire de ne pas commenter l&#8217;ensemble des billets du blog, les <a
href="http://www.makinggoodsoftware.com/2009/06/14/7-steps-to-fix-an-error/" title="7 tapes pour corriger un bug" >7 étapes pour corriger un bug</a> : de la recherche de l&#8217;erreur, à l&#8217;analyse des dommages collatéraux.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="Sunfaitvoluersacertificationpr"></a>Sun fait évoluer sa certification <em>programmer</em></h4><p>Sun  teste  une nouvelle version de sa certification SCJP (Sun Certified Java Programmer). La grosse nouveauté de cette révision : l&#8217;examen contiendra dorénavant une partie programmation. Cette certification, que certains appellent &#8216;pensez comme un compilateur Java&#8217; évolue donc pour adopter une approche plus pragmatique.</p><ul><li>Les demandes d&#8217; <a
href="https://dct.sun.com/dct/forms/reg_us_2206_429_0.jsp" title="inscription (gratuites) aux examens <em>beta</em> sont ouvertes&nbsp;&raquo; >inscription (gratuites) aux examens <em>beta</em> sont ouvertes</a> pour cette nouvelle certification , Sun Java Programmer Plus Certification de son petit nom, la sélection des candidats aura lieu ce 22 juillet</li><li>Discussions sur Java Ranch : <a
href="http://www.coderanch.com/t/452870/Programmer-Certification-SCJP/certification/New-Sun-Java-Programmer-Plus" title="New Sun Java Programmer Plus Certification" >New Sun Java Programmer Plus Certification</a>, <a
href="http://www.coderanch.com/t/452410/Programmer-Certification-SCJP/certification/Sun-Java-Programmer-Plus-Certification" title="SCJP vs SJPPC" >SCJP vs SJPPC</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/07/13/revue-de-presse-xebia-117/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/</link> <comments>http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#comments</comments> <pubDate>Mon, 06 Jul 2009 17:33:30 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Jetty]]></category> <category><![CDATA[JUG]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[Oracle Middleware 11g]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Selenium]]></category> <category><![CDATA[Servlet 3.0]]></category> <category><![CDATA[XWT]]></category> <category><![CDATA[ZK]]></category> <category><![CDATA[ZKGrails]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2529</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Oracle annonce Oracle Middleware 11g RIA ZK et ZKGrails Le coin de la technique La transition de Jetty vers Servlet 3.0 XWT pour Eclipse E4 Se donner de la visibilité lors d&#8217;un échec Selenium Evènements de notre communauté en France [...]]]></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ée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#OracleannonceOracleMiddlewareg">Oracle annonce Oracle Middleware 11g</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#ZKetZKGrails">ZK et ZKGrails</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#LatransitiondeJettyversServlet">La transition de Jetty vers Servlet 3.0</a></li><li><a
href="http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#XWTpourEclipseE">XWT pour Eclipse E4</a></li><li><a
href="http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#Sedonnerdelavisibilitlorsdunch">Se donner de la visibilité lors d&#8217;un échec Selenium</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/07/06/revue-de-presse-xebia-116/#SoirerivieraJUG">Soirèe riviera JUG</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="OracleannonceOracleMiddlewareg"></a>Oracle annonce Oracle Middleware 11g</h4><p>Le 1er Juillet, Oracle a présenté sa nouvelle offre autour du middleware: <a
href="http://www.oracle.com/products/middleware/index.html" title="Oracle Middleware 11g" >Oracle Middleware 11g</a> et en particulier son offre SOA, <a
href="http://www.oracle.com/technology/products/soa/soasuite/index.html" title="Oracle SOA Suite" >Oracle SOA Suite</a>.<br
/> Oracle propose un ensemble de produits qui utilisés conjointement permettent de concevoir, développer et superviser une application SOA.<br
/> Cette offre s&#8217;articule principalement autour de:</p><ul><li>JDeveloper pour le développement avec toujours un support soutenu de <a
href=" http://blog.xebia.fr/2007/04/11/introduction-a-sca-service-component-architecture/" title="SCA" >SCA</a> et SDO</li><li>Oracle Data Integration Suite, une offre de connecteurs (Messaging, Database,&#8230;)</li><li>Oracle Service Bus 11g pour le routage, la transformation. Les principales nouveautés sont la possibilité d&#8217;appeler du code Java (seuls les appels vers des WebServices et des EJB étaient proposés), d&#8217;initier des transactions (XA) depuis le bus et de mettre en cache des résultats via Oracle Coherence 3.5 .</li><li>Oracle BPEL Process Manager orchestre l&#8217;ensemble des processus métiers</li><li>Oracle Business Rules offre l&#8217;externalisation des règles métiers</li><li>Oracle Complex Event Processing (CEP) permet le traitement temps réel d&#8217;évènements métiers complexes.</li><li>Oracle Business Activity Monitoring et Oracle Enterprise Manager Fusion Middleware Control se chargent de la supervision technique et métier de l&#8217;application</li><li>Oracle Weblogic Server 11g (10.3.1). Cette version mineure de Weblogic Server remplace Kodo par TopLink, côté JMX, offre la possibilité d&#8217;inscrire des &#8216;CustomMBeans&#8217; dans le Domain Runtime MBean Server et d&#8217;y accéder par WLST et, côté sécurité, deux nouveaux providers pour Oracle Internet Directory  et Oracle Virtual Directory. Le support de Spring Framework semble également un peu plus <a
href="http://download.oracle.com/docs/cd/E12839_01/web.1111/e14453/toc.htm" title="poussé" >poussé</a>. Le plugin Eclipse est également mis à jour <a
href="http://www.oracle.com/technology/products/enterprise-pack-for-eclipse/index.html" title="Oracle Enterprise Pack for Eclipse 11g" >Oracle Enterprise Pack for Eclipse 11g</a></li><li>Oracle Application Grid Coherence 3.5, composé de Weblogic Server, JRockit, Coherence 3.5, offre la technologie pour créer des applications &#8216;Data grid&#8217;.</li></ul><p>Cette nouvelle version des produits étiquetés &#8216;Middleware&#8217; présente (enfin) l&#8217;aboutissement de l&#8217;intégration des produits Oracle et BEA en une suite unifiée. Chaque domaine de l&#8217;application (développement, BPM, routage, intégration, supervision, &#8230;) est maintenant clairement associé à un produit (qui est parfois un regroupement de produits). Pas de nouveaux produits, seulement des versions mineures : serait-ce la version de la maturité ?</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="ZKetZKGrails"></a>ZK et ZKGrails</h4><p>Des nouvelles du projet <a
href="http://www.zkoss.org/product/zk.dsp" title="ZK" >ZK</a> (<a
href="http://www.zkoss.org/DirectRIA/" title="Direct RIA" >Direct RIA</a>) avec la sortie de la version <a
href="http://www.zkoss.org/release/rn-3.6.2.dsp" title="3.6.2" >3.6.2</a> (par <a
href="http://www.theserverside.com/news/thread.tss?thread_id=55026" title="The Server Side" >The Server Side</a>)</p><p>Pour rappel, ZK est un framework open source Ajax permettant de développer des interfaces riches. Il embarque de nombreux composants graphiques qui vont de la date avec calendrier, de fenêtres et popups mais aussi des menus, des grilles&#8230; La définition de l&#8217;UI se fait à l&#8217;aide de <code>ZUML</code> (ZK User Interface Markup Language).</p><p>Cette version apporte d&#8217;importantes <a
href="http://docs.zkoss.org/wiki/New_Features_of_ZK_3.6.2" title="nouvelles fonctionnalits" >nouvelles fonctionnalités</a> :</p><ul><li>Support de Google App Engine</li><li><a
href="http://docs.zkoss.org/wiki/New_Features_of_ZK_3.6.2#Performance" title="Amlioration des performances" >Amélioration des performances</a></li><li>Nouveaux modes (<em>include</em>, <em>instant</em>, <em>auto</em>&#8230;)</li><li>Mise à jour de composants (XUL et HTML)</li></ul><p>Au total, c&#8217;est <a
href="http://www.zkoss.org/release/rn-3.6.2.dsp#New" title="48 bugs corrigés et 16 nouvelles fonctionnalités" >48 bugs corrigés et 16 nouvelles fonctionnalités</a> pour cette nouvelle mouture de ZK (qui se télécharge sur cette <a
href="http://www.zkoss.org/download/zk.dsp" title="page" >page</a>).</p><p>A noter que dans la foulée, le projet <a
href="http://code.google.com/p/zkgrails/" title="ZKGrails" >ZKGrails</a> (intégration du framework ZK dans Grails) a été <a
href="http://zkgrails.blogspot.com/2009/06/zkgrails-074-has-been-released.html" title="mis à jour" >mis à jour</a> et embarque désormais ZK en version 3.6.2 (et toujours <a
href="http://www.grails.org/1.1.1+Release+Notes" title="Grails en 111" >Grails en 1.1.1</a>).</p><p>Cette version 0.7.4 de ZKGrails se récupère dans l&#8217;onglet <a
href="http://code.google.com/p/zkgrails/downloads/list" title="tlchargements" >téléchargements</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="LatransitiondeJettyversServlet"></a>La transition de Jetty vers Servlet 3.0</h4><p>Jetty propose, depuis sa version 6, une <a
href="http://docs.codehaus.org/display/JETTY/Continuations" title="API" >API</a> de <a
href="http://en.wikipedia.org/wiki/Continuation" title="continuation" >continuation</a> qui permet de suspendre et restituer l&#8217;exécution d&#8217;une requête. Cette fonctionnalité est particulièrement utile dans le cadre d&#8217;une application <a
href="http://en.wikipedia.org/wiki/Comet_(programming)" title="Comet" >Comet</a>.</p><p>Or, cette fonctionnalité est directement adressée par <a
href="http://today.java.net/pub/a/today/2008/10/14/introduction-to-servlet-3.html" title="Servlet 3.0" >Servlet 3.0</a> dont la finalisation est imminente et qui sera implémentée <a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#Jettydvoilesaroadmap" title="partiellement par Jetty 7 et entirement par Jetty 8" >partiellement par Jetty 7 et entièrement par Jetty 8</a>. Un temps destiné à être dépréciée après l&#8217;arrivée des Servlet 3.0, l&#8217;API de continuation de Jetty perdurera parallèlement.</p><p>Greg Wilkins en <a
href="http://blogs.webtide.com/gregw/entry/continuations_to_continue" title="explique les raisons" >explique les raisons</a> : il souhaite offrir un compromis intermédiaire à la complexité de l&#8217;API asynchrone de Servlet 3.0. La compatibilité serait quant à elle assurée dans tous les conteneurs Jetty 6, 7 et 8.<br
/> L&#8217;API Servlet 3.0 apporte un certain nombre de changements majeurs. On peut donc s&#8217;attendre à ce que ce type d&#8217;initiatives visant à assurer une transition en douceur des applications se multiplient d&#8217;ici la finalisation de la spécification et de ses implémentations.</p><h4><a
name="XWTpourEclipseE"></a>XWT pour Eclipse E4</h4><p><a
href="http://wiki.eclipse.org/E4" title="Eclipse E4" >Eclipse E4</a> est la prochaine version majeure d&#8217;eclipse.</p><p>Un des objectifs principaux d&#8217;e4 est de simplifier les APIs existantes d&#8217;eclipse.<br
/> Ce refactoring touche entre autres l&#8217;UI d&#8217;eclipse et son modèle de composants.</p><p>Cette <a
href="http://dev.eclipse.org/blogs/yvesyang/2009/07/05/xwt-getting-started-ii/" title="vido" >vidéo</a>, de type <em>XWT in action</em>, nous montre à la fois le code (descripteur XML du modèle&#8230;) mais aussi l&#8217;outillage avec une vue éditeur splittée <em>source</em> / <em>design</em> et une palette de composants SWT (qui sont tous gérés par XWT) et JFace.<br
/> A noter aussi ce <a
href="http://www.vogella.de/articles/EclipseE4/article.html#eclipsexwt" title="tutoriel" >tutoriel</a> de type <em>HelloWorld</em> qui nous montre vers la <a
href="http://www.vogella.de/articles/EclipseE4/article.html#eclipsecss" title="fin" >fin</a> la possibilité de styler ses composants avec une feuille CSS.</p><p>Pour celles et ceux qui sont déjà conquis ou qui souhaitent tester ces nouvelles fonctionnalités, l&#8217;installation d&#8217;E4 sur un eclipse existant est résumée sur cette <a
href="http://wiki.eclipse.org/E4/Install" title="page" >page</a>.</p><h4><a
name="Sedonnerdelavisibilitlorsdunch"></a>Se donner de la visibilité lors d&#8217;un échec Selenium</h4><p>Dans la série <em>trucs et astuces</em>,  Daniel Wellman partage sur <a
href="http://blogs.stickyminds.com/Blogs/tabid/91/EntryId/96/Dont-Debug-Selenium-Test-Failures-Blindly.aspx" title="le blog de stickymindscom" >le blog de stickyminds.com</a> deux moyens de se donner de la visibilité lorsqu&#8217;un test Selenium échoue.</p><ul><li>Faire une capture d&#8217;écran lors de l&#8217;échec : l&#8217;idée peut sembler triviale, mais faire une capture d&#8217;écran devrait permettre d&#8217;éliminer rapidement un certain nombre de cas (une erreur de navigation par exemple). L&#8217;interface <code>com.thoughtworks.selenium .Selenium</code> (et son implémentation par défaut) de SeleniumRC offre une méthode (<code>captureScreenshot(String)</code>) pour réaliser cette capture.</li><li>Enregistrer le DOM HTML : là encore, l&#8217;interface <code>Selenium</code> offre une solution toute faite pour enregistrer l&#8217;intégralité du source dans un fichier texte : <code>getHtmlSource()</code></li></ul><p>Ne reste plus qu&#8217;à factoriser l&#8217;appel de ces méthodes à chaque fois qu&#8217;un test échoue, et vous aurez à votre disposition pour débugger une erreur d&#8217;assertion, une StackTrace, une copie d&#8217;écran et un arbre DOM. Cela devrait faire gagner quelques précieuses minutes, surtout quand les scénarii Selenium sont longs à rejouer.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SoirerivieraJUG"></a>Soirèe riviera JUG</h4><p>Le riviera JUG organise sa 4ème  rencontre le 15 juillet prochain. Au menu cette soirée estivale,  vous pourrez déguster une présentation sur la méthode SCRUM en plat de résistance et une présentation sur Groovy en dessert.</p><p>Soyez nombreux ! Et n&#8217;oubliez pas de vous inscrire <a
href="http://www.rivierajug.org/xwiki/bin/view/Main/200907XX|Riviera JUG" title="ici" >ici</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/</link> <comments>http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#comments</comments> <pubDate>Mon, 22 Jun 2009 16:19:03 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[GAE]]></category> <category><![CDATA[Gilead]]></category> <category><![CDATA[Hibernate]]></category> <category><![CDATA[Hibernate Shards]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[Jigsaw]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Vaadin]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2304</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. RIA Vaadin 6 Adaptateur Gilead pour GAE Une série d&#8217;annonces chez Adobe Le coin de la technique Scalabilité avec Hibernate et Shards Jigsaw vs OSGi Pourquoi utiliser un portail ? Embarquer le Web dans Java avec JWebPane Evènements de notre communauté en France et [...]]]></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ée par Xebia.</em></p><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#Vaadin">Vaadin 6</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#AdaptateurGileadpourGAE">Adaptateur Gilead pour GAE</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#UnesriedannonceschezAdobe">Une série d&#8217;annonces chez Adobe</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#ScalabilitavecHibernateetShard">Scalabilité avec Hibernate et Shards</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#JigsawvsOSGi">Jigsaw vs OSGi</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#Pourquoiutiliserunportail">Pourquoi utiliser un portail ?</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#EmbarquerleWebdansJavaavecJWeb">Embarquer le Web dans Java avec JWebPane</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/06/22/en-route-pour-jazoon-09/">Xebia @ Jazoon 09</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="Vaadin"></a>Vaadin 6</h4><p>Au revoir <a
href="http://www.itmill.com/" title="IT Mill Toolkit" >IT Mill Toolkit</a> et bienvenue à <a
href="http://vaadin.com/home" title="Vaadin" >Vaadin</a> (vu sur leur <a
href="http://vaadin.com/blog/-/blogs/vaadin-6-server-driven-ria-framework-announced-the-next-generation-of-it-mill-toolkit" title="blog" >blog</a>) !</p><p>Pour ceux qui ne le connaissent pas encore, Vaadin (anciennement IT Mill Toolkit) est un framework de développement d&#8217;applications RIA qui s&#8217;appuie sur GWT. Sa particularité est d&#8217;être <em>runtime</em> donc aucune compilation spécifique n&#8217;est demandée avant de packager la webapp (à l&#8217;inverse de GWT).</p><p>Simple changement de nom ? En tout cas très peu de changement côté API selon les auteurs du framework. Il faut plutôt se tourner vers l&#8217;outillage pour voir quelques nouveautés : un <a
href="http://vaadin.com/eclipse" title="plugin eclipse" >plugin eclipse</a> (création de projets, de composants UI, de thèmes&#8230;) et, inclus dans le plugin, un <a
href="http://vaadin.com/image/image_gallery?uuid=93600d15-df24-4299-b3d1-77a91d17624c&#038;groupId=10904&#038;t=1241865010814" title="diteur WYSIWYG" >éditeur WYSIWYG</a>.</p><p>Côté liens utiles, l&#8217;habituel <a
href="http://demo.vaadin.com/sampler/" title="showcase" >showcase</a>, le <a
href="http://vaadin.com/book" title="livre" >livre</a> et la <a
href="http://vaadin.com/comparison" title="comparaison maison" >comparaison maison</a> avec les autres frameworks du marché (et la concurrence est rude dans le monde du RIA).</p><p>A noter que <a
href="http://vaadin.com/blog/-/blogs/vaadin-at-jazoon-09?_33_redirect=%2Fhome" title="Vaadin" >Vaadin</a> sera présent à <a
href="http://jazoon.com/" title="Jazoon" >Jazoon</a> pour une conférence sur <a
href="http://jazoon.com/en/conference/presentationdetails.html?type=sid&#038;detail=8360" title="RIA Security" >RIA Security</a> le mardi 23 juin à 15h (slides, projet et autres sur <a
href="http://vaadin.com/web/joonas/wiki/-/wiki/Main/RIA+Security" title="cette page" >cette page</a>).</p><h4><a
name="AdaptateurGileadpourGAE"></a>Adaptateur Gilead pour GAE</h4><p>Vous connaissez <a
href="http://blog.xebia.fr/2009/01/23/gwt-galaxy/" title="GWT" >GWT</a>, <a
href="http://blog.xebia.fr/2008/12/17/integrer-hibernate-avec-gwt-sans-douleur/" title="Gilead" >Gilead</a>, et <a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#GoogleAppEnginepourJavaetGroov" title="Google App Engine" >Google App Engine</a> ? Et bien il ne reste plus qu&#8217;à mélanger tout ça et on obtient le <a
href="http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/69d5ccd01240a59c" title="Gilead GWT adapter for Google AppEngine" >Gilead GWT adapter for Google AppEngine</a> (vu sur le <a
href="http://googlewebtoolkit.blogspot.com/2009/06/gwt-community-updates.html" title="GWT Blog" >GWT Blog</a>).</p><p>Tout démarre d&#8217;un <a
href="http://groups.google.com/group/Google-Web-Toolkit-Contributors/browse_thread/thread/3c768d8d33bfb1dc" title="thread google groups" >thread google groups</a> avec comme point de départ la <em>serialization exception</em> lancée par les entités persistantes transférées vers GWT. Évidemment, la solution qui ressort <a
href="http://groups.google.com/group/Google-Web-Toolkit-Contributors/msg/c4e6d22860a7df3d" title="très rapidement" >très rapidement</a>, outre l&#8217;utilisation de DTOs, est de passer par <a
href="http://noon.gilead.free.fr/gilead/index.php?page=presentation" title="Gilead" >Gilead</a> pour transformer nos entités persistantes en POJOs. Il suffit d&#8217;ajouter le jar <code>adapter4appengine</code> et de remplacer la classe <code>PersistentRemoteService</code> par <code>EngineRemoteService</code> dans vos remotes services. Dès lors, il sera possible d&#8217;envoyer ses entités persistantes vers le client GWT sans exceptions de sérialisation sur <a
href="http://code.google.com/intl/fr/appengine/" title="GAE" >GAE</a>.</p><p>1.0 M2 téléchargeable à cette <a
href="http://sourceforge.net/project/downloading.php?group_id=239931&#038;filename=adapter4appengine-1.0M2.jar&#038;a=91098275" title="url" >url</a>, documentation <a
href="http://noon.gilead.free.fr/gilead/index.php?page=adapter4appengine" title="par ici" >par ici</a>. Attention toutefois, cette version n&#8217;est pas production ready.</p><h4><a
name="UnesriedannonceschezAdobe"></a>Une série d&#8217;annonces chez Adobe</h4><p>Après l&#8217;annonce de la sortie de la plateforme Flash il y a quelques semaines, voici une nouvelle série d&#8217;annonce de la part d&#8217;Adobe.</p><p>Pour commencer, deux news relayées par Andrew Twice dans <a
href="http://www.insideria.com/2009/06/its-an-active-news-day-from-ad.html" title="InsideRIA" >InsideRIA</a>.<br
/> La première concerne la sortie d&#8217;<a
href="http://labs.adobe.com/technologies/tables/" title="Adobe Table" >Adobe Table</a> en version bêta. Cet outil permet de créer des feuilles de calcul, des plannings ou encore des listes de tâches en ligne:</p><ul><li>Les utilisateurs peuvent ajouter des données en même temps: les données sont mises à jour en temps réel pour tout le monde.</li><li>Possibilité de savoir qui travaille sur Adobe Table.</li><li>Création d&#8217;écrans communs et privés : les utilisateurs peuvent travailler de manière coopérative, et/ou créer des espaces privés pour ne garder que les informations importantes.</li><li>Filtrage : les utilisateurs peuvent filtrer leurs données en temps réel.</li><li>Tri.</li></ul><p>Similaire à <a
href="http://www.google.com/google-d-s/intl/fr/tour1.html" title="Google Document" >Google Document</a>, cet outil a été développé sur la plateforme Flash et va continuer <a
href="http://blogs.adobe.com/acom/2009/06/shared_tables_for_shared_data_1.html" title="à évoluer" >à évoluer</a>. La <a
href="https://labs1.acrobat.com" title="démo" >démo</a> se passe <a
href="https://labs1.acrobat.com" title="ici" >ici</a>, la seule contrainte : avoir un compte Adobe.</p><p>La deuxième annonce concerne l&#8217;ouverture de la spécification de Real-Time Messaging Protocol (RTMP). Comme nous en avions parlé <a
href="http://blog.xebia.fr/2009/01/26/revue-de-presse-xebia-93/#Adobecontinuelouverturedeseste" title="ici" >ici</a>, la spécification a été publiée lundi dernier.</p><p>Enfin, Michael Chaize parle de la <a
href="http://codemoiunmouton.wordpress.com/2009/06/18/livecycle-data-services-3/" title="sortie de LiveCycle Data Services 3" >sortie de LiveCycle Data Services 3</a> en bêta. Disponible sur le <a
href="http://labs.adobe.com/technologies/livecycle_dataservices3/" title="labs d'Abobe" >labs d&#8217;Abobe</a>, cette nouvelle version propose une meilleure qualité de service pour des applications dont la fiabilité est primordiale telles que les applications bancaires par exemple. Venant compléter la plateforme Flash (avec Flex 4 et Flash Builder 4), Adobe incite la communauté à faire ses retours sur le <a
href="http://forums.adobe.com/community/labs" title="forum" >forum</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="ScalabilitavecHibernateetShard"></a>Scalabilité avec Hibernate et Shards</h4><p>Une <a
href="http://www.infoq.com/presentations/Scaling-Hibernate-Emmanuel-Bernard-Max-Ross" title="session de QCon 2008" >session de QCon 2008</a>, traitant de la scalabilité d&#8217;Hibernate, vient d&#8217;être mise en ligne. Présentée par Emmanuel Bernard, <em>project lead</em> d&#8217;Hibernate Search, et Max Ross, <em>project lead</em> d&#8217;Hibernate Shards, cette présentation offre une approche peu courante sur un problème pourtant récurrent.</p><p>Outre les classiques solutions permettant d&#8217;éviter certaines pertes de performance avec l&#8217;augmentation du volume traité, telles que la bonne gestion du cache, et les optimisations SQL, il a été question d&#8217;utiliser Hibernate Search et Hibernate Shards.</p><p><a
href="https://www.hibernate.org/410.html" title="Hibernate Search" >Hibernate Search</a> est connu pour sa capacité à simplifier les recherches dans un ensemble d&#8217;entités grâce à l&#8217;utilisation de <a
href="http://lucene.apache.org/" title="Lucene" >Lucene</a> conjointement à la base de données. Emmanuel Bernard proposait ici de déléguer à Search certaines recherches qui s&#8217;avèrent très coûteuses à effectuer en base. Lucene étant placé sur une machine séparée, et pouvant même fonctionner en maître / esclave, il est ainsi possible d&#8217;obtenir une intéressante répartition de la charge.</p><p><a
href="https://www.hibernate.org/414.html" title="Hibernate Shards" >Hibernate Shards</a>, bien que plus ancien, est moins répandu du fait qu&#8217;aucune version finale n&#8217;a encore été produite. Il s&#8217;agit d&#8217;un module additionnel pour Hibernate permettant à une application de manipuler des données partitionnées sur plusieurs BDD. Le but étant d&#8217;encapsuler la conscience du partitionnement des données au sein de la couche Hibernate afin que l&#8217;application n&#8217;ait pas à gérer cette problématique. Les possibilités du framework sont intéressantes :</p><ul><li>La gestion correcte des Criterias sur des données partitionnées grâce à <a
href="http://docs.jboss.org/hibernate/stable/shards/api/org/hibernate/shards/criteria/ShardedCriteria.html" title="ShardedCriteria" ><code>ShardedCriteria</code></a>.</li><li><a
href="http://docs.jboss.org/hibernate/stable/shards/reference/en/html_single/#shards-resharding-virtual" title="Virtual Shards" >Virtual Shards</a> permettant de faire la distinction entre <em>shard</em> logique et <em>shard</em> physique et ainsi d&#8217;augmenter le nombre d&#8217;instances de base de données au fur et à mesure de l&#8217;augmentation des besoins.</li><li><a
href="http://docs.jboss.org/hibernate/stable/shards/reference/en/html_single/#shards-strategy-idgen" title="Generation dIDs" >Generation d&#8217;IDs</a> compatibles avec l&#8217;utilisation sous-jacente de plusieurs BDDs grâce à l&#8217;utilisation d&#8217;UUIDs.</li><li>Gestion correcte de BDDs hétérogènes.</li></ul><p>Ce sont finalement les fonctionnalités manquantes qui permettent de comprendre pourquoi Shards est toujours en version bêta. Max Ross s&#8217;est expliqué il y a plusieurs mois sur les problématiques rencontrées, de manière succincte <a
href="http://groups.google.com/group/hibernate-shards-dev/browse_thread/thread/74c14afd6d341afa#" title="sur un forum" >sur un forum</a> et plus longuement <a
href="http://www.javaworld.com/podcasts/jtech/2008/072408jtech.html" title="dans une interview" >dans une interview</a>. De nombreux défis restent ainsi à relever concernant la gestion correcte des agrégations dans les <a
href="http://docs.jboss.org/hibernate/stable/shards/api/" title="ShardedQuery" ><code>ShardedQuery</code></a> et la fourniture d&#8217;outils d&#8217;aide au partitionnement et repartitionnement des données.<br
/> Max Ross est employé par Google et non par JBoss, tout comme les deux autres <em>committers</em> du projet (le code ayant été donné à JBoss par Google), et affirme ne disposer que de 20 % de son temps pour Shards. Ceci n&#8217;explique que partiellement <a
href="http://fisheye.jboss.com/browse/Hibernate/shards/" title="le peu de commits" >le peu de commits</a> sur le projet et ne nous rassure guère quant à sa finalisation prochaine.</p><h4><a
name="JigsawvsOSGi"></a>Jigsaw vs OSGi</h4><p>Sept mois après le démarrage du projet <a
href="http://openjdk.java.net/projects/jigsaw" title="Jigsaw" >Jigsaw</a>, sa légitimité n&#8217;est toujours pas reconnue face à OSGi qu&#8217;il est venu défier sur son propre terrain.</p><p>La semaine dernière <a
href="http://javaposse.com/index.php?post_id=492239" title="JavaPosse diffusait une interview" >JavaPosse diffusait une interview</a> de Mark Reinhold et Alex Buckley, où ils ont pu présenter plus en détail leur vision de Jigsaw :</p><ul><li>Il a été conçu pour modulariser le JDK et est intégré au langage.</li><li>Il ne repose pas sur une spécification car cela n&#8217;était pas possible compte tenu du calendrier de JDK 7. Il est donc à considérer comme un &laquo;&nbsp;détail d&#8217;implémentation&nbsp;&raquo; tout comme la gestion du classpath l&#8217;était dans les JVMs précédentes.</li><li>Il n&#8217;est pas supposé entrer en concurrence avec OSGi, des outils permettant l&#8217;intégration entre modules Jigsaw et <em>bundles</em> OSGi étant prévus, mais non prioritaires.</li></ul><p>Dans le même temps, Eric Newcomer (<em>Co-Chair</em>, <em>Enterprise Expert Group</em> de l&#8217;OSGi Alliance), postait <a
href="http://modualrit.blogspot.com/2009/06/osgi-standard-questions.html" title="une série" >une série</a> <a
href="http://modualrit.blogspot.com/2009/06/kill-project-jigsaw-now-please.html" title="de billets" >de billets</a> très virulents à l&#8217;égard du projet Jigsaw, reprochant principalement que Sun n&#8217;ait pas voulu se tourner vers OSGi, ne cherchant pas à combler les manques qu&#8217;il y trouvait, se tournant immédiatement vers une nouvelle technologie et ignorant donc les 10 années d&#8217;expérience acquises par OSGi.</p><p>En fait, il semble n&#8217;y avoir aucune justification technique permettant d&#8217;expliquer l&#8217;orientation de Sun vers Jigsaw plutôt que vers OSGi ou vers une évolution d&#8217;OSGi intégrée au langage. La véritable raison serait alors à chercher sur le plan politique : la modularisation est un concept important qui manque à Java actuellement et Sun ne pouvait probablement pas se permettre, pour l&#8217;ajout d&#8217;un tel concept, de s&#8217;appuyer sur une spécification émise en dehors du JCP sur lequel il a la gouvernance.</p><h4><a
name="Pourquoiutiliserunportail"></a>Pourquoi utiliser un portail ?</h4><p>Le <a
href="http://lescastcodeurs.com/2009/06/les-cast-codeurs-podcast-episode-6-portal-ma/" title="dernier podcast des Cast Codeurs" >dernier podcast des Cast Codeurs</a> était l&#8217;occasion d&#8217;une interview de Thomas Heute et Julien Viet sur les portails d&#8217;entreprise et sur le partenariat entre eXo et JBoss <a
href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#JBosseteXofusionnentleurssolut" title="dont nous vous parlions" >dont nous vous parlions</a> la semaine dernière.</p><p>Les détails liés au partenariat ont déjà été largement couverts par la blogosphère, et c&#8217;est surtout le tour d&#8217;horizon du concept même de portail que l&#8217;on retiendra. Celui-ci reste en effet souvent un élément ambigu au sein de l&#8217;écosystème JEE.</p><p>Le rôle du portail est d&#8217;agréger plusieurs applications au sein d&#8217;une unique application Web. Ce besoin technique peut être atteint à plusieurs niveaux de l&#8217;architecture de l&#8217;application :</p><ul><li>Au niveau back-end, par agrégation de Web Service, se conformant ainsi à l&#8217;un des préceptes des SOAs.</li><li>Au niveau applicatif, par l&#8217;utilisation d&#8217;un portail, ou d&#8217;une solution spécifique.</li><li>Au niveau du navigateur Web, par l&#8217;utilisation de gadgets, en suivant le principe des <a
href="http://fr.wikipedia.org/wiki/Application_composite" title="Mashups" >Mashups</a>.</li></ul><p>En outre, il a également été question des problématiques d&#8217;intégration des frameworks Web aux portlets, de complexité éventuelle, et d&#8217;adaptation des technologies Web aux portlets. Déterminer si un portail doit être utilisé dans une architecture dépend alors du niveau de tolérance à ces problématiques.</p><h4><a
name="EmbarquerleWebdansJavaavecJWeb"></a>Embarquer le Web dans Java avec JWebPane</h4><p>Depuis plusieurs années, lorsque l&#8217;on veut afficher une page Web au sein d&#8217;une application Swing, il faut se tourner vers le composant <a
href="https://jdic.dev.java.net/documentation/Specification.html" title="Browser" >Browser</a> de la librairie <a
href="https://jdic.dev.java.net/" title="Jdic" >Jdic</a>. Ce composant utilise <a
href="http://www.mozilla.org/projects/embedding/" title="Embeddable Mozilla" >Embeddable Mozilla</a>, et se présente sous la forme de code natif décliné pour chaque OS et d&#8217;un <em>wrapper</em> Java. Outre la nécessité de fournir une version spécifique à chaque OS, ce composant présente également l&#8217;inconvénient de mal s&#8217;intégrer aux applications Swing du fait de sa nature <em>heavyweight</em>. Pour rappel, un composant est dit <em>heavyweight</em> lorsqu&#8217;il est dessiné par l&#8217;environnement graphique du système d&#8217;exploitation ; à l&#8217;opposé il devient <em>lightweight</em> s&#8217;il est dessiné par l&#8217;application,  ce qui est le cas de l&#8217;ensemble des composants Swing. Or, faire cohabiter les deux types de composants est délicat car n&#8217;étant pas dessinés au même moment, leur superposition est confuse et des chevauchements non contrôlables apparaissent.</p><p>Lors de JavaOne, Alexey Ushakov a fait la démonstration du composant JWebPane sur lequel il travaille actuellement et vient de poster <a
href="http://weblogs.java.net/blog/alex2d/archive/2009/06/jwebpane_bof_sc.html" title="des captures d'écrans" >des captures d&#8217;écrans</a>. Contrairement à Jdic Browser, JWebPane se base sur le moteur <a
href="http://webkit.org/" title="WebKit" >WebKit</a> pour effectuer le rendu HTML. Or celui-ci se caractérise par sa nature <em>lightweight</em> s&#8217;intégrant agréablement à Swing. La <a
href="http://weblogs.java.net/blog/alex2d/archive/JWebPaneJ1.pdf" title="prsentation dAlex Ushakov" >présentation d&#8217;Alex Ushakov</a> permet également de constater que son composant est particulièrement riche en possibilité d&#8217;interactions et apporte un support pour d&#8217;éventuels plugins tels que Flash.</p><p>On ne peut qu&#8217;apprécier le choix de Sun de créer un composant pour Swing, réutilisable dans JavaFX, plutôt que de privilégier uniquement JavaFX comme cela est souvent le cas depuis son arrivée. L&#8217;intégration de JWebPane au JDK 7 est maintenant indispensable pour rendre ce composant réellement exploitable : se basant sur WebKit, il repose donc sur des librairies natives qu&#8217;il sera nécessaire de livrer avec les applications Java et seul l&#8217;intégration au JDK permettrait de l&#8217;éviter. Or, malgré <a
href="http://www.jroller.com/dmdevito/entry/about_swing_future_and_jwebpane" title="les appels" >les appels</a> de la communauté, JWebPane reste pour le moment absent de la <a
href="http://openjdk.java.net/projects/jdk7/features/" title="liste des features" >liste des <em>features</em></a> du JDK 7 et il est uniquement question d&#8217;une <a
href="http://weblogs.java.net/blog/alex2d/archive/2008/12/jwebpane_projec.html" title="mise  disposition sur Javanet" >mise à disposition sur Java.net</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/</link> <comments>http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#comments</comments> <pubDate>Mon, 15 Jun 2009 16:07:13 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[AjaxSwing]]></category> <category><![CDATA[Cloud Computing]]></category> <category><![CDATA[Coherence]]></category> <category><![CDATA[eXo]]></category> <category><![CDATA[Gigaspace]]></category> <category><![CDATA[Hadoop]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JBoss Messaging]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SoapUI]]></category> <category><![CDATA[Yahoo!]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2214</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Yahoo! distribue Hadoop JBoss et eXo fusionnent leurs solutions de Portlets Refonte de JBoss Messaging RIA AjaxSwing 2.4 Le coin de la technique SoapUI 3.0 se prépare Comparaison Gigaspace &#8211; Coherence L&#8217;invocation dynamique pour Java se concrétise Evènements de notre [...]]]></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’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/06/15/revue-de-presse-xebia-113/#YahoodistribueHadoop">Yahoo! distribue Hadoop</a></li><li><a
href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#JBosseteXofusionnentleurssolut">JBoss et eXo fusionnent leurs solutions de Portlets</a></li><li><a
href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#RefontedeJBossMessaging">Refonte de JBoss Messaging</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#AjaxSwing">AjaxSwing 2.4</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#SoapUIseprpare">SoapUI 3.0 se prépare</a></li><li><a
href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#ComparaisonGigaspaceCoherence">Comparaison Gigaspace &#8211; Coherence</a></li><li><a
href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#LinvocationdynamiquepourJavase">L&#8217;invocation dynamique pour Java se concrétise</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/06/15/revue-de-presse-xebia-113/#RetoursurleCloudCamp">Retour sur le CloudCamp</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="YahoodistribueHadoop"></a>Yahoo! distribue Hadoop</h4><p>Yahoo! <a
title="a annoncé" href="http://finance.yahoo.com/news/Yahoo-Raises-Commitment-to-bw-15490453.html?.v=1">a annoncé</a> la disponibilité de <a
title="leur propre distribution du projet Hadoop" href="http://developer.yahoo.net/hadoop/">leur propre distribution du projet Hadoop</a>. Répondant à une demande de la communauté qui souhaitait avoir accès aux modifications effectuées par Yahoo! en interne, cette distribution est basée sur la dernière version du <a
title="projet Hadoop" href="http://hadoop.apache.org">projet Hadoop</a> disponible auprès de la fondation Apache.</p><p>Avec <a
title="13 committers sur les 22" href="http://hadoop.apache.org/core/credits.html">13 <em>committers</em> sur les 22</a> que compte au total Hadoop, Yahoo! porte largement ce projet dont <a
title="la popularit crot rapidement" href="http://blog.xebia.fr/2009/04/06/revue-de-presse-xebia-103/#AmazonlancesonserviceElasticMa">la popularité croît rapidement</a>. Dans un contexte où Google, son concurrent direct, affirme fortement sa présence dans le domaine du calcul distribué et sur le très convoité bien qu&#8217;émergeant marché du Cloud Computing, le projet Hadoop constitue une belle vitrine technologique pour Yahoo!.</p><p>Souhaitant couper court aux inévitables accusations de tentative de <em>fork</em> ou de prise de contrôle du projet <a
title="qui nont pas tardes  arriver" href="http://themindstorms.blogspot.com/2009/06/is-it-apache-hadoop-or-yahoo-hadoop.html">qui n&#8217;ont pas tardées à arriver</a>, Yahoo! précise sur la page d&#8217;accueil de sa distribution que l&#8217;ensemble des patchs apportés par cette dernière ont déjà été contribués à Apache mais ne sont pas encore apparus dans une version stable.</p><h4><a
name="JBosseteXofusionnentleurssolut"></a>JBoss et eXo fusionnent leurs solutions de Portlets</h4><p>JBoss <a
title="a annonc" href="http://press.redhat.com/2009/06/10/jboss-org-community-grows/">a annoncé</a> la constitution d&#8217;un partenariat avec eXo qui va donner lieu à la fusion de leur solutions de Portlets respectives : JBoss Portal et eXo Portal. C&#8217;est assez logiquement la solution de JBoss qui survivra à cette fusion.</p><p>En pratique, le portail résultant proposera les spécificités suivantes aux utilisateurs :</p><ul><li>L&#8217;expertise de JBoss sur son moteur de Portlet qui était plus abouti que la solution d&#8217;eXo en terme de performance et de modularité.</li><li>L&#8217;interface utilisateur d&#8217;eXo Portal ainsi que les possibilités d&#8217;administration confortables qu&#8217;il apportait.</li><li>Le support des Portlets 2.0 telles que définies par la <a
title="JSR286" href="http://www.jcp.org/en/jsr/detail?id=286">JSR-286</a>. Les deux portails supportaient déjà cette spécification finalisée il y a un an.</li><li>Les deux entreprises seront a priori à même de proposer du support sur JBoss Portal</li></ul><p>Cette information a été relayée par le <a
title="Touilleur" href="http://www.touilleur-express.fr/2009/06/10/le-portail-dexoplatform-et-jboss-portal-fusionnent/">Touilleur</a>, et <a
title="Janus Boye propose une analyse des impacts" href="http://www.jboye.com/blogpost/exo-portal-and-jboss-portal-join-forces/">Janus Boye propose une analyse des impacts</a> de cette fusion pour les clients actuels de l&#8217;une des deux solutions existantes.</p><h4><a
name="RefontedeJBossMessaging"></a>Refonte de JBoss Messaging</h4><p>JBoss Messaging est une brique importante de la plate-forme entreprise de JBoss. Après avoir entrepris une ambitieuse refonte de son serveur d&#8217;application, l&#8217;éditeur réitère l&#8217;opération avec son middleware de messages. JBoss Messaging 2.0 vient en effet d&#8217;être <a
title="mis à disposition en version beta" href="http://www.jboss.org/jbossmessaging/downloads/">mis à disposition en version beta</a>. Tim Fox, <em>project lead</em> de Messaging, <a
title="prcise" href="http://www.theserverside.com/news/thread.tss?thread_id=54886#309853">précise</a> que cette nouvelle version ne réutilise que 5 % du code de son prédécesseur. Parmi les nouveautés, on notera en particulier :</p><ul><li>Embarquable dans n&#8217;importe quel type d&#8217;application et intégrable facilement à JBoss MicroContainer ou à d&#8217;autre framework d&#8217;injection de dépendances (Spring ?)</li><li>Stockage performant des informations de journalisation</li><li>Stockage JDBC s&#8217;appuyant sur Hibernate</li><li>Support des messages de grosse taille</li><li>Moteur NIO supportant TCP, SSL, HTTP et APR</li></ul><p>Il est intéressant de noter que JBoss Messaging 2.0 s&#8217;appuiera sur un moteur NIO basé sur <a
title="Apache Mina" href="http://mina.apache.org/">Apache Mina</a>. Ce choix est inattendu, dans le mesure où JBoss publie <a
title="Netty" href="http://www.jboss.org/netty/">Netty</a>, un framework concurrent de Mina créé il y a un an par Trustin Lee, alors <em>committer</em> sur le projet Mina. Le framework NIO d&#8217;Apache bénéficiant d&#8217;une plus grande maturité et d&#8217;un support APR aura probablement eu raison du corporatisme.</p><p>Par ailleurs, le support d&#8217;AMQP, STOMP et REST devrait arriver d&#8217;ici la version finale 2.0 selon Tim Fox. Ces technologies de transports constituent un attrait stratégique important : <a
title="AMQP dispose d'un fort potentiel" href="http://blog.xebia.fr/2008/08/19/revue-de-presse-xebia-70/#AMQPlavenirdesMiddlewareOrient">AMQP dispose d&#8217;un fort potentiel</a> en tant que protocole standard de transport de messages M2M, <a
title="STOMP" href="http://en.wikipedia.org/wiki/Streaming_Text_Orientated_Messaging_Protocol">STOMP</a> assure la compatibilité avec d&#8217;autres <em>middlewares</em> de messages, et REST permet de <a
title="s'aligner sur ActiveMQ" href="http://activemq.apache.org/restful-queue.html">s&#8217;aligner sur ActiveMQ</a> et d&#8217;offrir un accès Web Service au MOM non sans rappeler <a
title="Amazon Simple Queue Service" href="http://aws.amazon.com/sqs/">Amazon Simple Queue Service</a>.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="AjaxSwing"></a>AjaxSwing 2.4</h4><p>Un projet qui fait beaucoup de bruit en ce moment, avec entre autres une présentation / démo à <a
title="Java One" href="http://eclipsesource.com/blogs/2009/06/01/java-one-good-looking-apps-with-rap/?dzref=188895">Java One</a>, c&#8217;est <a
title="Eclipse RAP" href="http://www.eclipse.org/rap/">Eclipse RAP</a>. Pour résumer, un projet de type RAP sera très similaire à un projet RCP, à la grosse différence que la cible ne sera pas le <em>desktop</em> mais le <em>browser</em>. Cela veut dire que l&#8217;on continue à développer en SWT like (RWT) avec toutes les compétences acquises pour le développement d&#8217;un client lourd mais qu&#8217;on obtiendra au final un client léger.</p><p>Mais qu&#8217;en est-il pour <a
title="Swing" href="http://fr.wikipedia.org/wiki/Swing_(Java)">Swing</a> ? C&#8217;est du côté de chez <a
title="TSS" href="http://www.theserverside.com/news/thread.tss?thread_id=54844">TSS</a> que l&#8217;on apprend la release 2.4 d&#8217;un projet faisant le pont entre Swing et HTML : <a
title="AjaxSwing" href="http://www.creamtec.com/products/ajaxswing/solutions/convert_swing_to_ajax.html">AjaxSwing</a>.</p><p>L&#8217;outil convertira votre application Swing en application HTML / Javascript au <em>runtime</em> (à l&#8217;inverse de GWT qui le fait à la compilation). Aucune modification spécifique ni connaissance particulière n&#8217;est demandée par AjaxSwing : le code est en pur Java / Swing. Que du bonheur <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Reste maintenant à voir sur un projet d&#8217;envergure si tout se fait réellement sans coup de tournevis particulier&#8230;</p><p>Pour les nouveautés de cette 2.4, on note :</p><ul><li>Amélioration mémoire (vidage du buffer entre les requêtes)</li><li>Meilleur support des <em>mouse listeners</em></li><li>Amélioration de composants (<code>FileOpenDialog</code>, <code>JTable cells</code>&#8230;)</li><li>Meilleures performances (<code>regexp</code>, communication serveur&#8230;)</li><li>Plusieurs corrections de bugs</li></ul><p>Plusieurs démos sont <a
title="disponibles" href="http://www.creamtec.com/products/ajaxswing/demos.html">disponibles</a> avec des applications en Java Web Start et les mêmes en Ajax. Et bien sûr un lien vers les pages incontournables : <a
title="licences" href="http://www.creamtec.com/products/ajaxswing/prices.html">licences</a> et <a
title="tlchargement" href="http://www.creamtec.com/products/ajaxswing/install/index.html">téléchargement</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SoapUIseprpare"></a>SoapUI 3.0 se prépare</h4><p>Eviware relaie via <a
title="The ServerSide" href="http://www.theserverside.com/news/thread.tss?thread_id=54726">The ServerSide</a>, l&#8217;annonce de la sortie en version 3.0beta de SoapUi, l&#8217;outil graphique pour manipuler des WebServices.<br
/> Après l&#8217;ajout  de la gestion de services REST, ce nouvel opus continue sur la même voie pour faciliter encore leurs manipulations :</p><ul><li>A partir des différentes requêtes et réponses, l&#8217;outil génère un schéma XML de validation/<a
title="WADL" href="http://en.wikipedia.org/wiki/Web_Application_Description_Language">WADL</a> des flux et ce même si le contenu échangé n&#8217;est pas du XML (par exemple JSON ou HTML)</li><li>Ajout du support des opérations OPTIONS et TRACE</li><li>Montée de version de la spécification WADL.</li><li>Comme pour le taux de couverture de test des opérations d&#8217;un WSDL, il est maintenant possible d&#8217;avoir le même calcul sur les ressources, méthodes et paramètres REST (accessible seulement pour la version pro).</li></ul><p>De plus, cette nouvelle version comporte entre autres les fonctionnalités suivantes :</p><ul><li>Support de JavaScript : dorénavant, en plus de groovy, il possible d&#8217;utiliser du JavaScript comme langage de script</li><li>L&#8217;outil WS-I utilisé pour calculer son niveau de conformité WS-I Basic Profile est maintenant packagé avec SoapUI</li><li>Le navigateur de composant est amélioré pour permettre la vision de réponse HTML et REST au contenu complexe (ex : FLASH, SVG, Images&#8230;)</li></ul><p>A ceci s&#8217;ajoute la correction de bugs (voir <a
title="la realease note complte" href="http://www.soapui.org/new_and_noteworthy_3_0.html">la realease note complète</a>). SoapUi se positionne encore plus comme l&#8217;outil incontournable pour manipuler WebServices et Services REST.<br
/> Bientôt sur notre blog une série d&#8217;article présentant les principales fonctionnalités de l&#8217;outil.</p><h4><a
name="ComparaisonGigaspaceCoherence"></a>Comparaison Gigaspace &#8211; Coherence</h4><p>Gojko Adzic (<a
title="via TheServerSide" href="http://www.theserverside.com/news/thread.tss?thread_id=54903">via TheServerSide</a>) propose sur <a
title="son blog une intressante comparaison" href="http://gojko.net/2009/06/01/oracle-coherence-vs-gigaspaces-xap/">son blog une intéressante comparaison</a> entre deux des produits phares du DataGrid, Oracle Coherence et Gigaspace XAP (dommage d&#8217;avoir laissé de coté IBM eXtrem Scale).<br
/> Cette comparaison porte sur cinq points :</p><ul><li>Cache de données : match nul, les fonctionnalités des deux produits sont quasi identiques.</li><li>Processing : Gigaspace possède un modèle de processing <em>orienté évènements</em> et offre un bonne intégration de Spring Transaction. Coherence est plus limité.</li><li>Déploiement : Gigaspace se positionne en remplacement des serveurs d&#8217;applications, et possède donc des mécanismes de déploiement comparables, ce que Coherence ne propose pas. D&#8217;un autre coté, le produit d&#8217;Oracle offre un mécanisme de sérialisation qui autorise plusieurs version d&#8217;une même classe à être déployées sur une grille.</li><li>Scaling : Coherence offre un scaling dynamique (à la hausse comme à la baisse) là où Gigaspace ne fonctionne qu&#8217;avec un nombre de nœuds données.</li><li>Persistance : là encore, les fonctionnalités offertes sont très comparables</li></ul><p>Et comme d&#8217;habitude dans ce genre de comparaison, pas de vainqueur, pas de vaincu, seulement deux produits qui répondent à des besoins différents :</p><ul><li><strong>Gigaspace XAP</strong>, plus apte à remplacer des serveurs d&#8217;applications et réaliser du calcul distribué. Le modèle de processing est plus flexible et plus riche que celui de Coherence</li><li><strong>Coherence</strong>, très performant dans les grilles passives (lecture seulement), car il scale dynamiquement, offre une topologie de données flexible et possède de riches librairies clientes.</li></ul><p>Pour résumer, cet article propose une très bonne grille d&#8217;aide à la décision.</p><h4><a
name="LinvocationdynamiquepourJavase"></a>L&#8217;invocation dynamique pour Java se concrétise</h4><p>Rémi Forax, l&#8217;un des 4 <em>committers</em> d&#8217;<a
title="ASM" href="http://asm.ow2.org">ASM</a>, un framework de manipulation de bytecode <a
title="largement utilisé dans le monde Java" href="http://asm.ow2.org/users.html">largement utilisé dans le monde Java</a>, vient <a
title="dannoncer" href="http://weblogs.java.net/blog/forax/archive/2009/06/asm_now_support_1.html">d&#8217;annoncer</a> que leur dernière version supportait l&#8217;instruction <code>invokedynamic</code>.</p><p>Cette instruction est définie par la <a
title="JSR-292" href="http://www.jcp.org/en/jsr/detail?id=292">JSR-292</a> et vise à simplifier l&#8217;invocation de méthodes non connues lors de la compilation, ce qui constitue une des principales capacités des langages dynamiques tels que Groovy. Un gain significatif de performance est donc attendu pour ces langages, puisqu&#8217;ils n&#8217;auront alors plus à s&#8217;appuyer sur un coûteux mécanisme d&#8217;introspection ou de <a
title="gnration dynamique de bytecode dinvocation" href="http://groovy.codehaus.org/Groovy+Method+Invokation">génération dynamique de bytecode d&#8217;invocation</a>.</p><p>Au delà des langages dynamiques qui sont les premiers destinataires de cette JSR, de nombreux frameworks pourront également profiter de cette possibilité. En effet, la manipulation de JavaBeans et d&#8217;annotations, deux concepts majeurs dans le monde JEE actuel, induisent de nombreuses invocations de méthodes découvertes au <em>runtime</em>. Dans de larges projets, cela conduit actuellement à la génération massive de bytecode pour éviter de très lentes introspections, induisant une forte consommation de la <em>PermGen</em> des JVMs.</p><p>Le support de l&#8217;instruction <code>invokedynamic</code> par ASM, combiné au fait que le <em>draft</em> actuel de la JSR-292 est d&#8217;ores et déjà implémenté et <a
title="disponible dans la preview de lOpenJDK 7" href="http://download.java.net/jdk7/binaries/">disponible dans la preview de l&#8217;OpenJDK 7</a> depuis la b59, permet d&#8217;être optimiste quant à la finalisation prochaine de cette JSR.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="RetoursurleCloudCamp"></a>Retour sur le CloudCamp</h4><p>Un <a
title="CloudCamp" href="http://www.cloudcamp.com/?page_id=748">CloudCamp</a> s&#8217;est tenu à Paris le 11 juin, réunissant un certain nombre d&#8217;acteurs du Cloud Computing. Les CloudCamps ont été initiés par Reuven Cohen et Dave Nielsen et visent a partager la connaissance et les expériences sur ce secteur émergeant.</p><p>Ce CloudCamp s&#8217;est révélé bien plus commercial dans son contenu que les <a
title="JavaCamps" href="http://www.barcamp.org/JavaCampParis">JavaCamps</a> : de nombreux partenaires ont ainsi présenté leurs solutions pendant environ une heure avant que les réelles sessions (au nombre de quatre, se déroulant en parallèle) ne commencent. De chacune d&#8217;entre elles, on retiendra :</p><ul><li><strong>Architecture du Cloud</strong> : une solution de Cloud Computing doit apporter abstraction, elasticité et automatisation. Si les deux premiers points sont d&#8217;ores et déjà couverts par les solutions actuelles, l&#8217;automatisation n&#8217;est en revanche pas encore une réalité. Ce point constituera un élément déterminant pour l&#8217;adoption du Cloud Computing.</li><li><strong>Cloud et Sécurité</strong> : les problèmes de sécurité que l&#8217;on connaît aujourd&#8217;hui dans les SI demeurent avec le Cloud Computing, mais de nouveaux défis s&#8217;annoncent dans le cas de <em>clouds</em> accessibles publiquement et répartis à travers Internet sans forcément passer par un VPN dédié.</li><li><strong>Cloud et Intégration</strong> : le constat est sombre. Les projets lancés par les différents éditeurs et fournisseurs surfant sur la vague du Cloud Computing ne suivent aucune standardisation. Changer de fournisseur ou de solution sur un projet constitue actuellement une modification majeure.</li><li><strong>Aspects business du Cloud</strong> : l&#8217;émergence du Cloud Computing draine la création de nouveaux besoins à pourvoir. Les 3 niveaux d&#8217;abstraction du Cloud Computing que sont SaaS (<em>Software As A Service</em>), Paas (<em>Platform As A Service</em>) et IaaS (<em>Infrastructure As A Service</em>) apportent chacun leurs spécificités en termes de monétisation et d&#8217;opportunités.</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> </channel> </rss>
