<?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; Flex</title> <atom:link href="http://blog.xebia.fr/tag/flex/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 Xebia</title><link>http://blog.xebia.fr/2011/11/22/revue-de-presse-xebia-238/</link> <comments>http://blog.xebia.fr/2011/11/22/revue-de-presse-xebia-238/#comments</comments> <pubDate>Tue, 22 Nov 2011 09:09:31 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Fowler]]></category> <category><![CDATA[Geronimo]]></category> <category><![CDATA[Google Eclipse Plugin]]></category> <category><![CDATA[JQuery Mobile]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[Persistance Polyglotte]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=9294</guid> <description><![CDATA[La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia. Actualité éditeurs / SSII Adobe met Flex en Open source Geronimo 3 se prépare: certifié full Profile et utilise OSGI Google Eclipse Plugin est maintenant open source RIA Sortie de JQuery Mobile 1.0 Le coin de la technique Persistance Polyglotte Actualité éditeurs / SSII [...]]]></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 hebdomadaire des écosystèmes Java/JEE proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/11/22/revue-de-presse-xebia-238/#AdobemetFlexenOpensource">Adobe met Flex en Open source</a></li><li><a
href="http://blog.xebia.fr/2011/11/22/revue-de-presse-xebia-238/#GeronimoseprparecertififullPro">Geronimo 3 se prépare: certifié full Profile et utilise OSGI</a></li><li><a
href="http://blog.xebia.fr/2011/11/22/revue-de-presse-xebia-238/#GoogleEclipsePluginestmaintena">Google Eclipse Plugin est maintenant open source</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/11/22/revue-de-presse-xebia-238/#SortiedeJQueryMobile">Sortie de JQuery Mobile 1.0</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/11/22/revue-de-presse-xebia-238/#PersistancePolyglotte">Persistance Polyglotte</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="AdobemetFlexenOpensource"></a>Adobe met Flex en Open source</h4><p>Adobe a annoncé que <a
title="Flex allait être donné à une fondation open source" href="http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html">Flex allait être donné à une fondation open source</a>. Les réactions à l&#8217;annonce ont été plus que mitigées, certains <a
title="parlant dabandon" href="http://www.infoq.com/news/2011/11/flex-adandoned">parlant d&#8217;abandon</a>. Adobe a alors apporté des précisions:</p><ul><li>d&#8217;une part, la fondation envisagée est la Apache Software Foundation.</li><li>les développements en cours, dont le nouveau compilateur et plusieurs widgets, seront inclus dans le transfert.</li><li>enfin, Adobe va continuer à s&#8217;investir dans le développement de Flex, promettant une équipe de développement qui contribuera au projet open source à temps plein.</li></ul><h4><a
name="GeronimoseprparecertififullPro"></a>Geronimo 3 se prépare: certifié full Profile et utilise OSGI</h4><p>Géronimo, le serveur EE Open-source d&#8217;Apache prépare sa nouvelle version. Comme nous le rapporte <a
title="The H" href="http://www.h-online.com/open/news/item/Apache-Geronimo-fully-certified-for-Java-EE-6-1378384.html">The H</a>, la béta 1 vient de sortir. Certes, la release finale est sans doutes loin, mais le serveur a tout de même passé avec succès les certifications Full et Web-Profile de Java EE 6.<br
/> A noter que 2 versions du serveur existent. La première, avec Tomcat 7 et Axis 2, est celle qui a été validée. La seconde repose sur Jetty 8 et CXF. Par ailleurs, cette version est basée sur OSGI 4.3 et promet donc, en plus des applications EE, des facilités pour le déploiement d&#8217;applications OSGI.<br
/> L&#8217;<a
title="annonce officielle" href="http://geronimo.apache.org/2011/11/16/apache-geronimo-v30-beta-1-released.html">annonce officielle</a> est disponible sur le site du projet et la release note est <a
title="ici" href="http://mirrors.ukfast.co.uk/sites/ftp.apache.org/geronimo/3.0-beta-1/RELEASE_NOTES-3.0-beta-1.txt">ici</a>.</p><h4><a
name="GoogleEclipsePluginestmaintena"></a>Google Eclipse Plugin est maintenant open source</h4><p>La semaine dernière, Google <a
title="a annonc" href="http://googlewebtoolkit.blogspot.com/2011/11/google-plugin-for-eclipse-gpe-is-now.html">a annoncé</a> que son célèbre Google Plugin for Eclipse (GPE) est maintenant open source. Pour rappel, GPE regroupe un ensemble d’outils de développement qui facilitent la conception, la construction et le déploiement d’applications qui utilisent GWT, SpeedTracer, App Engine et d’autres services du cloud de Google.</p><p>La communauté a réagit de manière positive suite à l’annonce. Max Andersen de Red Hat a souligné : “[...] suite à la mise à disposition du code source du plugin, nous envisageons de travailler plus étroitement avec Google et la communauté pour rendre l’expérience des développeurs plus productive et plus intégrée à la plate-forme Eclipse. Nous sommes particulièrement intéressés par les possibilités de déploiement sur des serveurs multiples, telles que la plateforme JBoss Enterprise Application et Google App Engine de façon uniforme [...]”</p><p>Le projet GWT Designer, qui s&#8217;appuie sur le projet de <a
title="WindowBuilder" href="http://eclipse.org/windowbuilder/">WindowBuilder</a>, est également <a
title="disponible sur Google Code" href="http://code.google.com/p/gwt-designer/">disponible sur Google Code</a> sous la licence Eclipse Public License. De cette manière, Google espère que les contributions apportées par la communauté permettront l’amélioration et l’évolution du GPE.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="SortiedeJQueryMobile"></a>Sortie de JQuery Mobile 1.0</h4><p>Après un an de développement, <a
title="JQuery Mobile" href="http://www.infoq.com/news/2011/11/jquery-mobile-1">JQuery Mobile</a> sort enfin en version 1.0 finale. Basé sur les frameworks javascript JQuery et JQuery UI, cet outil va permettre de concevoir des interfaces graphiques en HTML5, Ajax et CSS 3 compatible sur un nombre impressionnant de mobiles et tablettes (iOS, Android, Blackberry, Bada, Windows Phone, webOS, Symbian, Meego, etc.)</p><p>Au menu, l&#8217;équipe met en avant les spécificités suivantes de JQuery Mobile:</p><ul><li>Une compatibilité avec de nombreux périphériques,</li><li>Une dégradation progressive des composants en fonction des capacités de chaque périphérique,</li><li>Des layouts et composants graphiques optimisés pour le tactile, avec auto-adaptation au périphérique,</li><li>De grand efforts au niveau des performances (transition, scrolling) et du toucher sur les différentes plateformes mobiles,</li><li>L&#8217;apparition d&#8217;un outil pour customiser ses propres thèmes graphiques avec <a
title="ThemeRoller for Mobile" href="http://jquerymobile.com/themeroller/">ThemeRoller for Mobile</a>,</li><li>La possibilité d&#8217;intégrer JQuery Mobile avec <a
title="PhoneGap" href="http://phonegap.com/">PhoneGap</a>, un outil très puissant pour déployer ses applications web sur de nombreuses plateformes,</li><li>Une communauté très active, avec ses nombreux blogs, ressources et plugins.</li></ul><p>JQuery Mobile utilise la version 1.6.4 de JQuery, et n&#8217;est donc pas compatible avec <a
title="la rcente 17" href="http://blog.xebia.fr/2011/11/15/revue-de-presse-xebia-237/#SortiedeJQuery">la récente 1.7</a>, qui a introduit des évolutions non rétro-compatibles avec les précédentes version. Ainsi, il faudra attendre la prochaine version 1.1 de JQuery Mobile.</p><p>L&#8217;accueil de JQuery Mobile a été quelque peu <a
title="mitig" href="http://www.reddit.com/r/programming/comments/mfv22/jquery_mobile_10_released/">mitigé</a>. Les performances et la réactivité du toucher semblent très inégales selon le périphérique utilisé.<br
/> Malgré la compatibilité avec une large gamme de périphériques, de nombreux développeurs semblent privilégier pour le moment le framework <a
title="Sencha Touch" href="http://www.sencha.com/products/touch">Sencha Touch</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="PersistancePolyglotte"></a>Persistance Polyglotte</h4><p>Vous avez sans doute déjà entendu parler de la programmation polyglotte: il peut être intéressant d&#8217;introduire plusieurs langages dans un projet de façon à disposer d&#8217;outils bien adaptés à chaque problématique.</p><p>Dans la lignée de la programmation polyglotte, Martin Fowler formalise la notion de persistance polyglotte avec une approche identique. Aujourd&#8217;hui tout le monde utilise la base de donnée relationnelle pour la persistance mais tous les problèmes de persistance ne sont pas adaptés au modèle relationnel. <a
title="Larticle en anglais" href="http://martinfowler.com/bliki/PolyglotPersistence.html">L&#8217;article en anglais</a> offre une réflexion approfondie et quelques exemples sur le sujet.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/11/22/revue-de-presse-xebia-238/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <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>La marmite &#8211; Développez une application mobile avec Flex</title><link>http://blog.xebia.fr/2011/10/24/la-marmite-developpez-une-application-mobile-avec-flex/</link> <comments>http://blog.xebia.fr/2011/10/24/la-marmite-developpez-une-application-mobile-avec-flex/#comments</comments> <pubDate>Mon, 24 Oct 2011 08:35:09 +0000</pubDate> <dc:creator>Ellène Dijoux</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[JDuchess]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=8889</guid> <description><![CDATA[Cette semaine aura lieu dans les locaux de Xebia la 4e marmite des Duchess. Ce mois-ci, nous vous invitons à découvrir Flex pour le développement d&#8217;applications mobiles. Ce Hands-On, animé par moi même, sera l&#8217;occasion de découvrir, en binôme et par la pratique, les outils mis à disposition du développeur pour réaliser une application mobile. Les détenteurs [...]]]></description> <content:encoded><![CDATA[<p><span
style="float: right"><img
src="http://blog.xebia.fr/wp-content/uploads/2011/06/logo-marmite.png" width="200" style="border: 0px solid black" /></span><br
/> Cette semaine aura lieu dans les locaux de Xebia la <a
href="http://jduchess.org/duchess-france/blog/la-marmite-4-flex/" rel="nofollow">4e marmite</a> des <a
href="http://jduchess.org/duchess-france/" rel="nofollow">Duchess</a>. Ce mois-ci, nous vous invitons à découvrir Flex pour le développement d&#8217;applications mobiles. Ce <em>Hands-On</em>, animé par moi même, sera l&#8217;occasion de découvrir, en binôme et par la pratique, les outils mis à disposition du développeur pour réaliser une application mobile. Les détenteurs de smartphone ou tablette Android pourront même tester leur travail sur leur <em>device</em>.</p><p>Quelques informations pratiques sur la soirée :</p><ul><li><b>Où ?</b> Chez Xebia au 156 boulevard Haussmann à Paris.</li><li><b>Quand ?</b> Le 26 Octobre 2011 à partir de 19h.</li><li><b>Comment s&#8217;inscrire ?</b> En réservant votre place sur <a
href="http://lamarmite-flex-inside.eventbrite.com/" rel="nofollow">Event Brite</a>.</li></ul><p>Vous trouverez toutes les informations sur le blog <a
href="http://jduchess.org/duchess-france/blog/la-marmite-4-flex/" rel="nofollow">Duchess France</a>. Si l&#8217;évènement vous intéresse, dépêchez-vous de vous inscrire car il reste peu de places !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/10/24/la-marmite-developpez-une-application-mobile-avec-flex/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2011/05/04/revue-de-presse-xebia-209/</link> <comments>http://blog.xebia.fr/2011/05/04/revue-de-presse-xebia-209/#comments</comments> <pubDate>Wed, 04 May 2011 08:00:11 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Ceylon]]></category> <category><![CDATA[closures]]></category> <category><![CDATA[DSL]]></category> <category><![CDATA[Flash Builder]]></category> <category><![CDATA[Flash Catalyst]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[JSon]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=7626</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Sortie de la version 1.8 de Groovy RIA Flex 4.5 SDK, Flash Builder 4.5 et Flash Catalyst CS 5.5 enfin disponibles Le coin de la technique Gavin King persiste et signe&#8230; 9 billets sur Ceylon Actualité éditeurs / SSII Sortie [...]]]></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/2011/05/04/revue-de-presse-xebia-209/#SortiedelaversiondeGroovy">Sortie de la version 1.8 de Groovy</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/05/04/revue-de-presse-xebia-209/#FlexSDKFlashBuilderetFlashCata">Flex 4.5 SDK, Flash Builder 4.5 et Flash Catalyst CS 5.5 enfin disponibles</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/05/04/revue-de-presse-xebia-209/#GavinKingpersisteetsignebillet">Gavin King persiste et signe&#8230; 9 billets sur Ceylon</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="SortiedelaversiondeGroovy"></a>Sortie de la version 1.8 de Groovy</h4><p>Guillaume Laforge, le chef de projet de Groovy, vient d&#8217;annoncer sur <a
href="http://glaforge.free.fr/weblog/index.php?itemid=299" title="son blog" >son blog</a> la sortie de la version 1.8 du célèbre langage de scripting pour la JVM.</p><p>Le millésime semble de qualité avec de nombreuses fonctionnalités nouvelles et améliorations – certaines fonctionnalités très populaires ont d&#8217;ailleurs été backportées sur la version 1.7. A noter également que, comme le signale Burt Beckwith <a
href="http://burtbeckwith.com/blog/" title="sur son blog" >sur son blog</a>, Grails 1.4 a été mis à jour pour supporter cette nouvelle version.</p><p>Nous vous proposons ici un bref aperçu des principales nouveautés; les exemples sont tirés ou inspirés des <a
href="http://docs.codehaus.org/display/GROOVY/Groovy+1.8+release+notes" title="notes de version" >notes de version</a>, très complètes. Signalons encore une série d&#8217;articles publiés très récemment par Mr. Haki <a
href="http://mrhaki.blogspot.com/search/label/Groovy%201.8" title="sur son blog" >sur son blog</a> et qui donnent une description encore plus détaillée de certaines nouveautés de Groovy 1.8.</p><h5>Support de JSON</h5><p>De même que pour l&#8217;XML, Groovy supporte désormais nativement le langage <a
href="http://fr.wikipedia.org/wiki/JavaScript_Object_Notation" title="JSON" >JSON</a>. Il est ainsi possible, grâce à la classe <code>JsonSlurper</code>, de parser un contenu JSON, de même qu&#8217;il est possible d&#8217;écrire du code JSON grâce à la classe <code>JsonBuilder</code>:</p><pre class="brush: java; title: ; notranslate">
import groovy.json.*
def json = new JsonBuilder()
json.person {
    name &quot;Guillaume&quot;
    age 33
    pets &quot;Hector&quot;, &quot;Felix&quot;
}
println json.toString()
</pre><p>Ce code produit en effet la sortie JSON suivante:</p><pre class="brush: jscript; title: ; notranslate">
{&quot;person&quot;:{&quot;name&quot;:&quot;Guillaume&quot;,&quot;age&quot;:33,&quot;pets&quot;:[&quot;Hector&quot;,&quot;Felix&quot;]}}
</pre><h5>Processus de compilation et transformations de l&#8217;Arbre Syntaxique Abstrait</h5><p>Tout d&#8217;abord, une nouveauté prometteuse nous est offerte sous la forme des <em>compilation optimizers</em>: ces &laquo;&nbsp;optimiseurs de compilation&nbsp;&raquo; permettent de modifier – de façon globale – le comportement du compilateur Groovy; plus précisement, il est possible d&#8217;agir sur les niveaux suivants:</p><ol><li><code>ImportCustomizer</code>: ajouter des imports &laquo;&nbsp;par défaut&nbsp;&raquo;;</li><li><code>SecureASTCustomizer</code>: filtrage par classe afin d&#8217;autoriser ou de prohiber l&#8217;utilisation de certaines classes, ce qui permet de sécuriser le code à compiler;</li><li><code>ASTTransformationCustomizer</code>: appliquer des transformations AST sur toutes les classes à compiler.</li></ol><p>D&#8217;autre part, de nouvelles transformations de l&#8217;<a
href="http://fr.wikipedia.org/wiki/Arbre_syntaxique_abstrait" title="AST" >AST</a> sont disponbiles. En voici quelques-unes:</p><ul><li>Il est possible d&#8217;injecter un <em>logger</em> dans une classe grâce aux annotations <code>@Log</code> (pour <code>java.util.logging</code>), <code>@Commons</code> (pour <code>commons-logging</code>, <code>@Log4j</code> (pour <code>Log4J</code>) et <code>@Slf4j</code> (pour SLF4J).</li><li>Les annotations <code>@ToString</code> et <code>@EqualsAndHashCode</code> permettent de générer facilement des implémentations de <code>toString()</code>, <code>equals()</code> et <code>hashCode()</code>.</li><li>L&#8217;annotation <code>@AutoClone</code> permet quant à elle de générer une redéfinition de la méthode <code>clone()</code> et de rendre la classe annotée <code>Cloneable</code>. Différentes stratégies d&#8217;implémentation sont possibles: appel de <code>super.clone()</code>, clonage des propriétés de l&#8217;objet, appel d&#8217;un constructeur par copie, ou encore sérialisation (si l&#8217;objet implémente <code>Serializable</code>).</li><li>Les annotations <code>@ThreadInterrupt</code>, <code>@TimedInterrupt</code> et <code>@ConditionalInterrupt</code> permettent respectivement de vérifier qu&#8217;un thread a été interrompu, d&#8217;interrompre un thread au bout d&#8217;un laps de temps et de l&#8217;interrompre sous condition.</li><li>Les annotations <code>@WithReadLock</code> et <code>@WithWriteLock</code> permettent de gérer l&#8217;accès à une ressource partagée avec une granularité plus fine que celle proposée par la transformation <code>@Synchronized</code>, en utilisant un moniteur de type <code>java.util.concurrent.locks.ReentrantReadWriteLock</code>.</li></ul><p>Des descriptions plus détaillées de ces nouvelles transformations sont disponibles <a
href="http://prystash.blogspot.com/2011/04/groovy-18-playing-with-new-canonical.html" title="ici" >ici</a> et <a
href="http://www.jroller.com/melix/entry/upcoming_groovy_goodness_automatic_thread" title="ici" >ici</a>.</p><h5>APIs pour la programmation concurrente</h5><p>Groovy est désormais packagé avec <a
href="http://gpars.codehaus.org/" title="GPars" >GPars</a>, une puissante et flexible librairie – elle-même en Groovy – proposant de nombreuses APIs pour l&#8217;exécution concurrente, asynchrone et/ou distribuée de tâches écrites en Java ou en Groovy. Tous les patterns les plus connus, du <a
href="http://download.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html" title="Fork/Join" >Fork/Join</a> au <a
href="http://fr.wikipedia.org/wiki/MapReduce" title="Map/Reduce" >Map/Reduce</a> en passant par les <a
href="http://fr.wikipedia.org/wiki/Agents" title="Agents" >Agents</a> et <a
href="http://en.wikipedia.org/wiki/Actor_model" title="Actors" >Actors</a>, sont désormais à la disposition du développeur Groovy.</p><h5>Ecriture de langages dédiés</h5><p>L&#8217;écriture de <a
href="http://fr.wikipedia.org/wiki/Domain-specific_programming_language" title="langages ddis" >langages dédiés</a> ou DSLs (<em>Domain Specific Languages</em>) avec Groovy gagnera en lisibilité grâce à la possibilité de supprimer les parenthèses et les points lors d&#8217;un chaînage d&#8217;appels de méthodes. Il devient possible d&#8217;écrire dans un style fluide très proche du langage naturel; l&#8217;exemple suivant est particulièrement frappant:</p><pre class="brush: java; title: ; notranslate">
show = { println it }
square_root = { Math.sqrt(it) }
def please(action) {
  [the: { what -&gt;
    [of: { n -&gt; action(what(n)) }]
  }]
}
//version allégée
please show the square_root of 100
//version classique
please(show).the(square_root).of(100)
</pre><p>Dans <a
href="http://www.springone2gx.com/blog/guillaume_laforge/2010/08/nicer_dsls_in_groovy_1_8_thanks_to_extended_command_expressions" title="un autre post" >un autre post</a>, Guillaume Laforge s&#8217;offre même le luxe de concocter une recette de cuisine plutôt lisible:</p><pre class="brush: java; title: ; notranslate">
Recipe.instructions {
   take medium_bowl
   combine soy_sauce, vinegar, chili_powder, garlic
   place chicken into sauce
   turn once to coat
   marinate 30.minutes at room_temperature
}
</pre><h5>Closures</h5><p>Rien de révolutionnaire, mais quelques améliorations notables:</p><ul><li>Il est désormais possible de spécifier des closures comme arguments d&#8217;annotations. Ceci ouvre des perpectives intéressantes notamment dans le cadre d&#8217;une programmation par contrat, qui pourrait tirer parti de cette nouvelle fonctionnalité pour spécifier sous forme d&#8217;annotations des invariants de classe, des pré et post-conditions, etc. Ce genre d&#8217;artifice ressemblerait à ceci:</li></ul><pre class="brush: java; title: ; notranslate">
//invariant
@Retention(RetentionPolicy.RUNTIME)
@interface Invariant {
    Class value() // stocke la closure
}
//utilisation de l'invariant
@Invariant({ number &gt;= 0 })
class Distance {
    float number
    String unit
}
</pre><p>L&#8217;annotation <code>@Invariant</code>, définie par l&#8217;utilisateur, utilise une closure pour spécifier de façon élégante et concise un invariant de classe.</p><p>Lorsqu&#8217;il s&#8217;agit de vérifier l&#8217;invariant, cependant, on peut regretter que le code ne soit pas tout aussi trivial, en raison –&nbsp;apparemment&nbsp;– de problèmes de compatibilité:</p><pre class="brush: java; title: ; notranslate">
def d = new Distance(number: 10, unit: &quot;meters&quot;)
def anno = Distance.getAnnotation(Invariant)
def check = anno.value().newInstance(d, d)
assert check(d)
</pre><ul><li>Les nouveaux opérateurs <code>>></code> et <code><<</code> permettent d'alléger l'écriture des closures composées:</li></ul><pre class="brush: java; title: ; notranslate">
def plus2  = { it + 2 }
def fois3 = { it &lt;strong&gt; 3 }
//version longue
fois3plus2 = { x -&gt; plus2(fois3(x)) }
//version courte
fois3plus2 = plus2 &lt;&lt; fois3
</pre><ul><li>L'utilisation du <a
href="http://en.wikipedia.org/wiki/Tail_call#Through_trampolining" title="<em>trampolining</em>" ><em>trampolining</em></a> permet d'éviter les dépassements de pile (<em>stack overflows</em>) en transformant la <a
href="http://fr.wikipedia.org/wiki/R%C3%A9cursion_terminale" title="rcursion terminale" >récursion terminale</a> de certains algorithmes en code itératif. Alors que le code suivant produit un dépassement de pile à l'exécution:</li></ul><pre class="brush: java; title: ; notranslate">
​def factorial
factorial = { int n, BigInteger accu = 1G -&gt;
    if (n &lt; 2) return accu
    factorial(n - 1, n &lt;/strong&gt; accu)
}
println factorial(1000) ​//java.lang.StackOverflowError
​</pre><p>La version "en trampoline" du même algorithme s'exécute sans problème:</p><pre class="brush: java; title: ; notranslate">
def factorial
factorial = { int n, BigInteger accu = 1G -&gt;
    if (n &lt; 2) return accu
    factorial.trampoline(n - 1, n * accu)
}
factorial = factorial.trampoline()
println factorial(1000)
</pre><p>Grâce à l'appel de la méthode <code>trampoline()</code> qui enveloppe les appels récursifs dans des <em>wrappers</em> de type <code>TrampolineClosure</code>, tant que le "trampoline" appelant reçoit en retour des instances de <code>TrampolineClosure</code>, il continue d'invoquer itérativement la fonction sous-jacente, ne s'arrêtant que lorsque l'objet de retour n'est plus un trampoline. La pile d'appels ne grossit donc pas de façon incontrôlée.</p><ul><li>Le support de la <a
href="http://fr.wikipedia.org/wiki/M%C3%A9moization" title="mmoization" >mémoization</a> permet désormais aux closures effectuant de lourds calculs de mettre en cache le résultat des appels en fonction des arguments en entrée.</li></ul><ul><li>La <a
href="http://fr.wikipedia.org/wiki/Curryfication" title="curryfication" >curryfication</a> est désormais possible aussi en partant de la droite, voire même en désignant de façon arbitraire un argument par sa position dans la liste d'arguments.</li></ul><h5>Autres sucres syntaxiques</h5><ul><li>Support du <a
href="http://download.oracle.com/javase/tutorial/java/generics/gentypes.html#diamond" title="diamond operator" ><em>diamond operator</em></a> de Java 7:</li></ul><pre class="brush: java; title: ; notranslate">
List&lt;List&lt;String&gt;&gt; list1 = new ArrayList&lt;&gt;()
</pre><ul><li>Nouvelles méthodes DGM (<em>Default Groovy Methods</em>), toujours pratiques, par exemple <code>countBy</code> qui, dans l'exemple suivant, compte le nombre d'occurrences de nombres pairs et impairs dans une liste d'entiers:</li></ul><pre class="brush: java; title: ; notranslate">
assert [0:2, 1:3] == [1,2,3,4,5].countBy{ it % 2 }
</pre><ul><li>Les <a
href="http://groovy.codehaus.org/Strings+and+GString" title="slashy strings" ><em>slashy strings</em></a> sont désormais multilignes:</li></ul><pre class="brush: java; title: ; notranslate">
def poem = /
to be
or
not to be
/
</pre><ul><li>Une nouvelle variante des <em>slashy strings</em> appelée <em>dollar slashy string</em> permet de définir une GString multiligne dans laquelle il n'est pas nécessaire d'échapper le <em>backslash</em>; pratique pour noter du XML ou bien des chemins de fichiers Windows:</li></ul><pre class="brush: java; title: ; notranslate">
def dir = $/C:temp/$
</pre><h5>Performances</h5><p>Enfin, il faut noter que la version 1.8 de Groovy inaugure des chantiers sur les performances du langage. Avec deux améliorations profitables :</p><ul><li>Sur les opérations basiques sur les entiers (additions, soustractions, multiplications, divisions, incréments, décréments et comparaisons). Il faut cependant se rappeler que les optimisations de cette version ne s'appliquent que sur des opérations d'un type unique. Si vous mixez, par exemple, additions et soustractions dans une même ligne de code, vous n'en profiterez pas.</li></ul><ul><li>Sur les appels de méthodes directs. Si un appel de méthode est lancé sur <code>this</code> et que le prototype correspond à une méthode présente (aux types près), Groovy passera outre ses mécanismes de réfléxion standard. Là aussi, faites bien attention aux <a
href="http://groovy.codehaus.org/Groovy+1.8+release+notes#Groovy1.8releasenotes-Performanceimprovements" title="restrictions" >restrictions</a> pour en tirer parti.</li></ul><p>Cela peut paraître maigre mais ce n'est que le début de plus gros chantiers de performances qui auront lieu au cours de la vie de la branche 1.8. Peut-être la fin de la politique "fast enough" de Groovy ?</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="FlexSDKFlashBuilderetFlashCata"></a>Flex 4.5 SDK, Flash Builder 4.5 et Flash Catalyst CS 5.5 enfin disponibles</h4><p><a
href="http://blogs.adobe.com/flex/2011/05/flex-4-5-sdk-flash-builder-4-5-and-flash-catalyst-cs-5-5-now-available.html" title="Bonne nouvelle pour la communauté Flex" >Bonne nouvelle pour la communauté Flex</a>: aujourd'hui, sort officiellement <a
href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+4.5" title="Flex 4.5 SDK" >Flex 4.5 SDK</a> , <a
href="http://www.adobe.com/products/flash-builder.html" title="Flash Builder 4.5" >Flash Builder 4.5</a> et <a
href="http://www.adobe.com/products/flashcatalyst.html" title="Flash Catalyst CS 5.5" >Flash Catalyst CS 5.5</a>. Après quelques mois en <a
href="http://www.flex-tutorial.fr/2011/03/11/participez-a-la-pre-release-flex-sdk-et-flash-builder-4-5/" title="prrelease disponible en tlchargement priv" >pré-release, disponible en téléchargement privé</a>,  la team Flex a profité des retours des utilisateurs qui ont testé les produits. Plus axées sur le développement mobile, ces nouvelles versions permettent de développer des applications riches autant pour le web que pour le desktop ou pour d'autres supports comme les mobiles et les tablettes.</p><p>Dans cette nouvelle version de Flash Builder, seul le déploiement sur Android est prévu. Mais une nouvelle version disponible en juin vous permettra de déployer vos applications sur iOS et Blackberry Tablet OS.  Parmi les autres nouveautés : un Flash Builder permettant de développer plus rapidement et un workflow amélioré entre Flash Builder et Flash Catalyst : vous pourrez maintenant passer du premier au second sans difficulté pour retravailler le design.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="GavinKingpersisteetsignebillet"></a>Gavin King persiste et signe... 9 billets sur Ceylon</h4><p>Il y a à peine deux semaines on évoquait <a
href="http://blog.xebia.fr/2011/04/19/revue-de-presse-xebia-207/#RedHatprpareCeylonunnouveaulan" title="icimme" >ici-même</a> la présentation qu'avait faite Gavin King du nouveau langage Ceylon, et de l'accueil plutôt mitigé que la communauté lui avait réservé.</p><p>Sans doute piqué au vif, Gavin King a publié cette semaine une <a
href="http://in.relation.to/tag/Introduction+to+Ceylon" title="srie de neuf articles" >série de neuf articles</a> (d'autres sont peut-être encore à venir) où il présente le langage avec beaucoup plus de détails et de finesse.</p><p>A travers notamment les commentaires des lecteurs, on remarque au fil des billets un certain regain d'intérêt pour ce langage, au fur et à mesure que les contours s'en précisent et que certaines questions trouvent leur réponse. Malgré tout, le langage semble encore souffrir d'un caractère quelque peu confidentiel, et les échanges tournent parfois au débat d'experts. Il faut également noter que la volonté affichée de réécrire un SDK complet pour Ceylon semble laisser certains observateurs sceptiques.</p><p>Sans revenir sur les caractéristiques du langage lui-même – nous laissons à nos lecteurs le soin de parcourir ces billets – nous avons concocté un résumé des échanges entre Gavin et ses lecteurs sous la forme de questions-réponses:</p><h5>Qui travaille dans le projet Ceylon?</h5><p>S'il admet être le seul à y travailler à temps complet, Gavin révèle tout de même que l'équipe Ceylon compte parmi ses membres quelques blogueurs de <a
href="http://in.relation.to" title="In Relation To" >In Relation To</a>, parmi lesquels Emmanuel Bernard, Aleš Justin, Jason Greene, Max Handersen et Pete Muir – nous sommes donc bien dans la mouvance Hibernate - Red Hat - JBoss. Toujours d'après Gavin, certains membres de l'équipe OpenJDK (Andrew Haley et Gary Benson) y travailleraient aussi, et enfin, quelques personnes de chez Red Hat (Andrew Dinn, David LLoyd et surtout Mark Little).</p><h5>Quel est l'état d'avancement du projet?</h5><p>Gavin admet que l'écriture du parseur ANTLR ne fut pas une partie de plaisir et lui a demandé des mois de travail; cependant, le parsing et la génération de l'AST sont d'après lui terminés et il travaille désormais sur le compilateur: le <em>typechecker</em> est en bon état d'avancement, mais la génération du bytecode aurait pris du retard.</p><h5>Quel degré d’interopérabilité avec Java?</h5><p>Il y aura une certaine interopérabilité, mais celle-ci sera mise à mal en raison de l'inexistence de <em>wildcard types</em> et de surcharge de méthodes en Ceylon. Concernant la surcharge, Gavin envisage d'utiliser le principe des GADT (<a
href="http://en.wikipedia.org/wiki/Generalized_algebraic_data_type" title="Generalized Algebraic Data Types" ><em>Generalized Algebraic Data Types</em></a>), inspirés d'Haskell, pour "unifier" les surcharges de méthodes.</p><p>Mais plutôt que parler de portage de frameworks Java en Ceylon, Gavin préfère tabler sur l'apparition spontanée de nouveaux frameworks en Ceylon qui viendraient remplacer les frameworks Java à la mode. L'ambition de Ceylon à cet égard semble en effet un point marquant du nouveau langage. Gavin est formel: "nous avons comme but explicite de créer un nouveau SDK (et par là nous entendons vraiment une série de modules que nous allons écrire nous-mêmes)".</p><p>Et Gavin de lister les modules sur lesquels il souhaite se concentrer dans l'immédiat:</p><ul><li><code>ceylon.language</code> - types de base pour le support des fonctionnalités inhérentes au langage</li><li><code>ceylon.module</code> - le runtime assurant la modularité (basé sur JBoss Modules)</li><li><code>ceylon.collection</code> - le framework de collections (l'implémentation sous-jacente serait fournie par le framework Java équivalent)</li><li><code>ceylon.datetime</code> - support des dates et heures (probablement basé sur la JSR-310)</li><li><code>ceylon.security</code> - API sécurité</li><li><code>ceylon.io</code> - Utilitaires d'entrée-sortie (implémentés en utilisant java.io)</li><li><code>ceylon.concurrent</code> - API pour la programmation concurrente "de bas niveau" (basée sur JSR-166)</li><li><code>ceylon.http</code> - client et serveur HTTP (peut-être fondé sur Netty)</li><li><code>ceylon.html</code> - le "Kit de construction" HTML</li></ul><p>Par ailleurs, Gavin précise que le compilateur Ceylon est conçu pour s'intégrer avec OpenJDK et pour pouvoir compiler simultanément du code Java et du code Ceylon. Cependant la version initiale (alpha) du compilateur ne contiendra que les modules du langage lui-même.</p><h5>La modularité</h5><p>Gavin confirme que la notion de module – une sorte de "super package" avec ses propres portées de visibilité – sera bâtie au sein du langage. Mais il ne s'arrête pas là: il envisage également une entité plus large encore que le module, qu'il baptise <em>assembly</em>. Ceci porte à trois le nombre de niveaux de modularité:</p><ol><li>package</li><li>module, matérialisé notamment par une archive dans un format précis, éventuellement déployable sur un dépôt de modules</li><li>assembly: agrégation de différents modules</li></ol><p>Le compilateur ne produirait d'ailleurs pas de fichiers ".class", mais plutôt des archives déployables sur un dépôt local ou distant. De même, il saurait retrouver des dépendances requises depuis ces dépôts.</p><p>Quant au runtime, il s'agirait bien de JBoss Modules. Celui-ci saurait gérer les archives et les problématiques de <em>class loading</em> et aussi rechercher et exécuter les modules définis dans sa configuration.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/05/04/revue-de-presse-xebia-209/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Rétrospective de notre XKE d&#8217;avril</title><link>http://blog.xebia.fr/2011/04/08/retrospective-de-notre-xke-d-avril/</link> <comments>http://blog.xebia.fr/2011/04/08/retrospective-de-notre-xke-d-avril/#comments</comments> <pubDate>Fri, 08 Apr 2011 19:27:32 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Divers]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[cryptographie]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Flex Mobile]]></category> <category><![CDATA[iOS]]></category> <category><![CDATA[iPhone]]></category> <category><![CDATA[JQuery Mobile]]></category> <category><![CDATA[PKI]]></category> <category><![CDATA[urbanisation]]></category> <category><![CDATA[XKE]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=7392</guid> <description><![CDATA[Comme chaque premier jeudi du mois, les consultants Xebia se sont réunis hier pour le XKE (Xebia Knowledge Exchange). Cette journée fut dédiée au développement mobile. Après un échange sur l&#8217;actualité, 4 groupes se sont formés autour de thèmes forts : Android, animé par Steve Klouvi Iphone, animé par Amin Fathallah Flex Mobile, animé par Julien [...]]]></description> <content:encoded><![CDATA[<p>Comme chaque premier jeudi du mois, les consultants Xebia se sont réunis hier pour le XKE (Xebia Knowledge Exchange).</p><p>Cette journée fut dédiée au développement mobile. Après un échange sur l&#8217;actualité, 4 groupes se sont formés autour de thèmes forts :</p><ul><li><strong>Android</strong>, animé par <a
href="http://blog.xebia.fr/author/sklouvi/">Steve Klouvi</a></li><li><strong>Iphone</strong>, animé par <a
href="http://blog.xebia.fr/author/afathallah/">Amin Fathallah</a></li><li><strong>Flex Mobile</strong>, animé par Julien Buret</li><li><strong>JQuery Mobile</strong>, animé par <a
href="http://blog.xebia.fr/author/akinsella/">Alexis Kinsella</a></li></ul><p>Suite à une brève introduction aux différentes technologies challengées, les xebians ont développé une application mobile en <em>Pair Programming</em> à l&#8217;aide de l&#8217;api JSON du blog de Xebia, proposant des fonctionnalités de listing des auteurs, des categories et des articles, ainsi que des fonctionnalités telles que la recherche. Certaines solutions telles que Windows Phone 7, Palm OS, BlackBerry ou encore BKRender n&#8217;ont pu être défendues lors de cette journée faute de participants pour ces challengers, ce qui n&#8217;est que partie remise.</p><p>Une restitution, suivie d&#8217;un débat a permis aux xebians de faire le point sur les différentes solutions testées, et de mettre en avant les forces et faiblesses de chacune des technologies. </p><p>La journée s&#8217;est achevée sur deux sessions parallèles :</p><ul><li><strong><a
href="http://blog.xebia.fr/2008/04/10/urbanisation-pour-les-nuls/" title="L'urbanisation" >L&#8217;urbanisation</a></strong> présenté par <a
href="http://blog.xebia.fr/author/njozwiak/">Nicolas Jozwiak</a>.</li><li><strong>Les bases de la cryptographie et des infrastructures à clés publiques</strong> présenté par <a
href="http://blog.xebia.fr/author/dgalichet/">David Galichet</a>.</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/04/08/retrospective-de-notre-xke-d-avril/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172/</link> <comments>http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172/#comments</comments> <pubDate>Tue, 17 Aug 2010 05:47:32 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[GraniteDS]]></category> <category><![CDATA[JQuery Mobile]]></category> <category><![CDATA[livre]]></category> <category><![CDATA[Nasa]]></category> <category><![CDATA[Nebula]]></category> <category><![CDATA[Oracle]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5203</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Oracle poursuit Google pour violation de brevets RIA Bean Validation pour Flex. Annonce de jQuery Mobile SOA La NASA ouvre les sources de son cloud privé Le coin de la technique Continuous Delivery, le livre le plus important de 2010 [...]]]></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" /></p><p><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/2010/08/17/revue-de-presse-xebia-172#OraclepoursuitGooglepourviolat">Oracle poursuit Google pour violation de brevets</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172#BeanValidationpourFlex">Bean Validation pour Flex.</a></li><li><a
href="http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172#AnnoncedeJQueryMobile">Annonce de jQuery Mobile</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172#LaNASAouvrelessourcesdesonclou">La NASA ouvre les sources de son cloud privé</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172#ContinuousDeliverylelivreleplu">Continuous Delivery, le livre le plus important de 2010 ?</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="OraclepoursuitGooglepourviolat"></a>Oracle poursuit Google pour violation de brevets</h4><p>Jeudi dernier, Oracle a lancé une action en justice contre Google pour violation de brevets quant à l&#8217;utilisation de Java pour la plateforme Android. L&#8217;information a rapidement fait le tour du web et de la twitosphère provoquant à l&#8217;encontre d&#8217;Oracle son lot de commentaires indignés, notamment dans les communautés Java et libristes (<em>On retiendra le billet peu amène de <a
title="James Gosling  The shit finally hits the fan" href="http://nighthacks.com/roller/jag/entry/the_shit_finally_hits_the">James Gosling : &laquo;&nbsp;The shit finally hits the fan&#8230;.&nbsp;&raquo;</a></em>).</p><p>Dans sa <a
title="plainte" href="http://i.i.com.com/cnwk.1d/i/ne/pdfs/FINAL_Complaint.pdf?tag=mncol;txt">plainte</a>, Oracle précise que <em>&laquo;&nbsp;Android [...] et les appareils qui utilisent Android violent un ou plusieurs brevets parmi les suivants: 6,125,447; 6,192,476; 5,966,702; 7,426,720; RE38,104; 6,910,205; et 6,061,520&#8243;</em>. Les brevets en question portent sur l&#8217;implémentation de machines virtuelles, l&#8217;outillage et les compilateurs.<br
/> Google, certainement pour garder les coudées franches, a fait le choix d&#8217;implémenter sa machine virtuelle Dalvik sans utiliser OpenJDK <em>(la version GPL2 de Java)</em>. Cette implémentation n&#8217;est pas pleinement compatible Java et est exécutée sur des terminaux mobiles. Or, lorsque Sun avait <em>&laquo;&nbsp;open sourcé une partie de Java&nbsp;&raquo;</em> au travers d&#8217;OpenJDK, les garanties d&#8217;être à l&#8217;abri d&#8217;attaques pour violation de brevet ne protégeaient que les implémentations pleinement compatibles Java pour desktop et serveur uniquement <em>(pas les implémentations pour terminaux mobiles)</em>.<br
/> Pour étayer son accusation selon laquelle Google a sciemment violé les brevets relatifs à Java, Oracle avance que Google était, de longue date, au courant des brevets détenus par Sun. Eric Schmidt (CEO de Google) et Urs Hölzle (Senior VP of operations chez Google) ont en effet joué un rôle significatif dans le développement de la technologie Java lorsqu&#8217;ils étaient chez Sun.<br
/> La réponse de Google à l&#8217;attaque d&#8217;Oracle <em>(au travers d&#8217;un communiqué de presse)</em> est sans surprise : Google estime que la plainte est sans fondement. D&#8217;autre part, Google considère qu&#8217;avec cette plainte, Oracle n&#8217;attaque pas seulement Google, mais aussi la communauté Open Source Java.</p><p>A priori, l&#8217;objectif d&#8217;Oracle n&#8217;est pas de &laquo;&nbsp;tuer&nbsp;&raquo; Android mais de profiter de son succès en imposant à Google de lui reverser une part des revenus de la plateforme. En effet, Java ME est une source non négligeable de revenus pour Sun <em>(Oracle)</em> puisque cette technologie équipe de très nombreux terminaux. Mais le succès fulgurant d&#8217;Android sur le marché des smartphones est sur le point de tarir cette source de revenus.<br
/> D&#8217;autre part, Oracle souhaite sans doute envoyer un message clair quant à sa conception de l&#8217;utilisation de la technologie Java là où le silence de Sun vis à vis d&#8217;Android pouvait être perçu comme un blanc seing.</p><p>Ce genre d&#8217;affaire est généralement synonyme de feuilleton judiciaire à rallonge <em>(comme dans le cas emblématique de <a
title="SCO vs Linux" href="http://en.wikipedia.org/wiki/SCO-Linux_controversies">SCO vs. Linux</a>)</em>. Il y a donc peu de chances que le cas Google / Oracle se règle rapidement. La complexité du dossier <em>(notamment en ce qui concerne les tenants et aboutissants techniques)</em> laisse présager de longs débats. Même si l&#8217;issu d&#8217;un procès reste incertaine Google était certainement préparé à une telle attaque <em>(et est de taille à y faire face)</em> et sa défense sera bien préparée.<br
/> Tant que l&#8217;affaire ne sera pas réglée, l&#8217;ensemble de l&#8217;écosystème Android <em>(constructeurs, développeurs, utilisateurs, &#8230;)</em> va retenir son souffle, mais l&#8217;engouement pour la plateforme Android ne devrait pas trop en pâtir. D&#8217;une part, Google continuera de développer la technologie Android. D&#8217;autre part, gageons que Google prendra ses responsabilités sur le sujet de la propriété intellectuelle et jouera son rôle de pare feux vis à vis des constructeurs équipant leurs terminaux de l&#8217;OS Android.</p><p>La fin d&#8217;Android est très peu probable. Oracle n&#8217;y a aucun intérêt et ce pour plusieurs raisons. D&#8217;abord parce qu&#8217;Oracle a tout intérêt à ce que Java soit présent sur le marché des smartphones. Or cette présence passe par Android, pas par Java ME et Oracle n&#8217;a, aujourd&#8217;hui, ni la volonté, ni la capacité d&#8217;innover dans ce sens. Ensuite parce que l&#8217;essor des smartphones sous Android favorise le développement d&#8217;applications utilisant des <em>backend</em> <em>(serveurs)</em> mettant en œuvre des serveurs d&#8217;applications Java et des bases de données, augmentant ainsi la taille d&#8217;un marché sur lequel Oracle se taille la part du lion. Enfin parce qu&#8217;Android réunit une large communauté Java.<br
/> Il semble donc que cette affaire ne puisse avoir que deux issues :</p><ul><li>Google sera contraint à verser une partie des revenus d&#8217;Android à Oracle. Soit parce qu&#8217;Oracle aura gagné un procès, soit parce que Google aura préféré négocier un accord à l&#8217;amiable.</li><li>Ce sera le status quo. Soit parce qu&#8217;Oracle aura perdu un procès, soit parce qu&#8217;Oracle retirera sa plainte suite aux négociations qui vont s&#8217;entamer <em>(au cours desquels Google pourrait commencer à utiliser ses brevets comme arme de dissuasion)</em>.</li></ul><p>Ce qui est sûr, c&#8217;est que l&#8217;image de Java ne sortira pas grandie de l&#8217;initiative d&#8217;Oracle <em>(qui semble d&#8217;ores et déjà avoir perdu la bataille de l&#8217;image)</em>.</p><p>Pour ceux qui souhaitent approfondir le sujet, l&#8217;excellent billet de Charles Nutter <a
title="My Thoughts on Oracle v Google" href="http://blog.headius.com/2010/08/my-thoughts-on-oracle-v-google.html">&laquo;&nbsp;My Thoughts on Oracle v Google&nbsp;&raquo;</a> fait longuement le tour de la question et propose des perspectives très intéressantes.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="BeanValidationpourFlex"></a>Bean Validation pour Flex.</h4><p>Le framework <a
title="GraniteDS" href="http://www.graniteds.org/confluence/pages/viewpage.action?pageId=229378">GraniteDS</a> continue à offrir des fonctionnalités riches pour Flex, en parallèle des offres de Adobe, BlazeDs (open source) et LifeCycle ES (commercial).<br
/> La <a
title="version 2.2 (actuellement en bêta publique)" href="http://tech.groups.yahoo.com/group/graniteds/message/7122">version 2.2 (actuellement en bêta publique)</a> ne faillit pas à la règle et amène une rafraichissante innovation : l&#8217;implémentation de la JSR 303 (BeanValidation) pour Flex. Toutes les contraintes standard de la JSR sont implémentées via des annotations AS3 et le générateur de code maison (GAS3) permet la conversions des annotations des beans Java.<br
/> La validation s&#8217;appuie sur une nouvelle fonctionnalité de réflexion.<br
/> Autre avancées, peut être moins spectaculaire, la prise en compte des types &#8216;big numbers&#8217; de Java dans les sérialisations offertes par le framework.<br
/> GraniteDs, dont certains avait décrété la mort à la publication de BlazeDs, est toujours bien vivant et comble, en open source,  certains manques laissés par Adobe.</p><h4><a
name="AnnoncedeJQueryMobile"></a>Annonce de jQuery Mobile</h4><p>C&#8217;est une nouvelle qui va à coup sûr faire du bruit dans un monde du développement mobile déjà bouillonnant, puisque vient d&#8217;être annoncée la sortie pour la fin d&#8217;année de la version mobile du framework <a
title="jQuery" href="http://jquerymobile.com/">jQuery</a>. Et ce n&#8217;est pas par la petite porte que le célèbre framework web souhaite faire son entrée, puisque contrairement à ses concurrents déclarés, tels que <a
title="jQTouch" href="http://www.jqtouch.com/">jQTouch</a> ou bien <a
title="Sensha Touch" href="http://www.sencha.com/products/touch/">Sensha Touch</a>, jQuery Mobile se veut être un framework JavaScript ciblant la quasi totalité des <a
title="plateformes mobiles" href="http://jquerymobile.com/gbs/">plateformes mobiles</a> web actuelles (Blackberry, Windows Mobile, iOS pour l&#8217;iPhone et l&#8217;iPad, Android, Symbian, Bada, &#8230;), et permettant de développer des interfaces riches capables de faire rougir bon nombre d&#8217;interfaces graphiques natives.</p><p>Avec l&#8217;avènement d&#8217;HTML5 (WebStorage, WebSockets, Vidéo, Géolocalisation, &#8230;), du CSS3, et des navigateurs mobiles dernière génération proposant des moteurs JavaScripts performants, la guerre du web semble se trouver un nouveau terrain de bataille, et le web mobile aura sous peu toutes les armes nécessaires pour déstabiliser le business modèle à peine naissant des Markets, tel que l&#8217;iTunes App Store ou bien l&#8217;Android Market. Le marché des applications mobiles semble donc suivre la voie de son grand frère, celui des applications PC, et proposera à terme de nombreuses applications riches directement par le web.</p><p>L&#8217;annonce parue sur le site de jQuery Mobile indique que l&#8217;un des objectifs du framework est de pouvoir développer une application unique pour toutes les plateformes mobiles. Ce concept, ne semble pas nouveau puisque l&#8217;objectif de J2ME sorti il y a 10 ans déjà était bien de développer une solution unique, rappelez-vous: &laquo;&nbsp;Write Once, Run everywhere&nbsp;&raquo;. Le slogan semble être ici: &laquo;&nbsp;Write Less, Do More&nbsp;&raquo;, mais l&#8217;objectif de fond est bien le même.</p><p>Palm avec sa plateforme WebOS et Firefox sont déjà sponsors du projet. Bien qu&#8217;encore en développement intense, la première sortie est prévue pour fin 2010. Ce framework pourrait bien être une des grandes surprises mobile de 2010 et devenir très rapidement un incontournable pour le développement web d&#8217;applications riches pour mobile.</p><p>Pour en apprendre plus sur cette déclinaison de jQuery, vous pouvez suivre les liens suivants et apprécier les designs présentés :</p><ul><li><a
title="Site officiel de jQuery Mobile" href="http://jquerymobile.com/">Site officiel de jQuery Mobile</a></li><li><a
title="La device support grid de jQuery Mobile" href="http://jquerymobile.com/gbs/">La device support grid de jQuery Mobile</a></li><li><a
title="Les designs concepts" href="http://jquerymobile.com/designs/">Les designs concepts</a></li></ul><h3><a
name="SOA"></a>SOA</h3><h4><a
name="LaNASAouvrelessourcesdesonclou"></a>La NASA ouvre les sources de son cloud privé</h4><p>La NASA a récemment <a
title="annoncé" href=" http://www.dailyfinance.com/story/company-news/nasa-rackspace-open-source-cloud-computing/19562733/">annoncé</a> son intention d&#8217;offrir le code de son <em>cloud</em> privé Nebula au projet <a
title="OpenStack" href=" http://openstack.org/index.php">OpenStack</a> en partenariat avec <a
title="Rackspace" href=" http://www.rackspace.com/index.php">Rackspace</a>. Il s&#8217;agit d&#8217;une implémentation d&#8217;une IaaS orientée vers le calcul scientifique et le stockage de données. Par ailleurs OpenStack est un projet actuellement supporté par plus de 25 firmes, dont Dell et Intel. Il offre une pile logicielle ouverte permettant de créer et exploiter un <em>cloud</em> privé sur la base d&#8217;infrastructures matérielles standards. Il est disponible sous la licence Apache 2.0. D&#8217;après la présentation du projet, la création d&#8217;un nouveau Framework ouvert pour le cloud est motivée par deux raisons principales :</p><ul><li>Le paysage du <em>cloud</em> est actuellement composé d&#8217;offres propriétaires, incompatibles entre elles et manquant de transparence, freinant ainsi l&#8217;expansion de cette nouvelle industrie. La création d&#8217;un framework Open Source permettrait donc une adoption plus massive.</li><li>La plupart des autres projets Open Source existant ne pouvaient satisfaire les énormes besoins de scalabilité exprimés par Rackspace. Seule Nebula, semblait correspondre au besoin.</li></ul><p>Pour l&#8217;instant le projet est disponible en &laquo;&nbsp;Developer preview&nbsp;&raquo;. Une première <em>release</em> sera disponible respectivement mi-septembre pour &laquo;&nbsp;OS Compute&nbsp;&raquo; et mi-octobre pour &laquo;&nbsp;OS Storage&nbsp;&raquo;.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="ContinuousDeliverylelivreleplu"></a>Continuous Delivery, le livre le plus important de 2010 ?</h4><p>Continuous Delivery, le livre de Jez Humble et David Farley, est disponible en version finale, en édition papier ou électronique (chez vos revendeurs habituels). Il traite d&#8217;un sujet qui tient à cœur de plus en plus d&#8217;acteurs de l&#8217;écosystème JEE : comment améliorer et dédramatiser les processus de build, de livraison et de déploiement d&#8217;un produit. Ce livre recueille déjà de nombreux lauriers. Dont ceux de Martin Fowler (directeur de la collection, donc forcément un peu partial), <a
title="qui en fait le livre technique le plus important de 2010" href="http://martinfowler.com/snips/201007301801.html">qui en fait le livre technique le plus important de 2010</a>.</p><p>De ce que nous avons pu en lire (<a
title="par exemple en RoughCuts ici" href="http://my.safaribooksonline.com/9780321670250">par exemple, en RoughCuts ici</a>), ces louanges sont justifiées : ce livre traite de tous les problèmes qui devraient animer n&#8217;importe quel consultant au démarrage d&#8217;un projet. Collaborer entre équipes, développer de manière incrémentale, tester, automatiser, déployer, tout cela dans un seul but, maximiser la qualité du produit délivré.</p><p>Ce livre donnera lieu a un grand <a
title="nombre de prsentations en confrence" href="http://continuousdelivery.com/2010/06/continuous-delivery-talks-2010/">nombre de présentations en conférence</a>, qui, si ce n&#8217;est déjà fait, devrait vous donner envie d&#8217;en faire votre livre de chevet avant la rentrée littéraire.</p><p>Pour en savoir plus, consultez le blog <a
title="Continuous Delivery" href="http://continuousdelivery.com/">Continuous Delivery</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172/feed/</wfw:commentRss> <slash:comments>0</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>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>Devoxx &#8211; Jour 1 &#8211; Adobe University</title><link>http://blog.xebia.fr/2009/11/17/devoxx-jour-1-adobe-university/</link> <comments>http://blog.xebia.fr/2009/11/17/devoxx-jour-1-adobe-university/#comments</comments> <pubDate>Tue, 17 Nov 2009 12:53:51 +0000</pubDate> <dc:creator>Ellène Dijoux</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[BlazeDS]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[Flash]]></category> <category><![CDATA[Flash Catalyst]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Spring]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3149</guid> <description><![CDATA[La première journée de Devoxx fut l&#8217;occasion pour Adobe de présenter lors de leur université leur nouvelle plateforme Flash. Pour cette présentation, quatre évangélistes Flex se sont relayés pour nous présenter ces différents produits Adobe : - Christophe Coenraets - Chet Haase qui travaillait anciennement sur JavaFX - Serge Jespers - Maarten Arten La plateforme [...]]]></description> <content:encoded><![CDATA[<p>La première journée de Devoxx fut l&#8217;occasion pour Adobe de présenter lors de leur université leur nouvelle plateforme Flash. Pour cette présentation, quatre évangélistes Flex se sont relayés pour nous présenter ces différents produits Adobe :<br
/> - <a
href="http://coenraets.org/" title="Christophe Coenraets" >Christophe Coenraets</a><br
/> - <a
href="http://graphics-geek.blogspot.com/" title="Chet Haase" >Chet Haase</a> qui travaillait anciennement sur JavaFX<br
/> - <a
href="http://www.webkitchen.be/" title="Serge Jespers" >Serge Jespers</a><br
/> - <a
href="http://blog.arten.fr" title="Maarten Arten" >Maarten Arten</a></p><p><img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/DSC_1351.jpg" alt="DSC_1351" title="DSC_1351" width="680" height="300" class="alignnone size-full wp-image-3150" /></p><h3><a
name="LaplateformeFlashquestcequeces"></a>La plateforme Flash : qu&#8217;est ce que c&#8217;est ?</h3><p>Cette plateforme Flash est composée de :</p><ul><li>La gamme Creative Suite <em>(avec Fireworks, Photoshop et Illustrator)</em> destinée au designer.</li><li>Flash Catalyst qui permettra de générer une application Flex à partir des maquettes réalisées avec les outils précédents.</li><li>Flash Builder 4 pour le développement du reste de l&#8217;application et de son backend.</li></ul><h3><a
name="FlashCatalyst"></a>Flash Catalyst</h3><p>Pour rappel Flash Catalyst est un outil permettant à partir d&#8217;un dessin réalisé avec les outils de la gamme Creative Suite de générer une véritable application Flex sans toucher à une ligne de code. Cet outil est capable de générer tous les composants graphiques disponibles dans Flex 4 et gèrent également les <code>itemrenderer</code>. Les effets et les transitions peuvent être également gérés avec cet outil. Lors de la session Tools In Action, une démonstration bluffante d&#8217;environ 30 minutes a été effectuée avec cet outil. Il y a cependant quelques conditions pour que la génération s&#8217;effectue au mieux :</p><ul><li>Penser à bien séparer ses filtres et à les nommer proprement. Ceci afin que l&#8217;intégrateur puisse plus aisément les récupérer et les convertir en composant Flex.</li><li>L&#8217;intégrateur doit aussi bien nommer les composants une fois créés afin que le développeur puisse les exploiter plus facilement.</li></ul><p>À la fin de cette courte session, nous avons pu voir le résultat : une application Flex reprenant la maquette de départ.</p><h3><a
name="Flex"></a>Flex 4</h3><p>Cette nouvelle plateforme ne peut être utilisée qu&#8217;avec Flex 4. En effet, la nouvelle librairie de composants graphiques spark qui vient remplacer l&#8217;ancienne <em>(que l&#8217;on nomme halo ou mx aussi)</em> proposent de séparer l&#8217;aspect du composant de son comportement. Un billet a <a
href="http://blog.xebia.fr/2009/08/19/les-nouveautes-de-flex-4/" title="dj t crit  ce sujet" >déjà été écrit à ce sujet</a>. C&#8217;est ce qui permettra à Catalyst de générer l&#8217;aspect des composants. Le développeur quant à lui ne se préoccupera plus que des comportements du bouton tels que le traitement des données, la gestion des événements et le traitement avec le backend. Les composants peuvent également supporter les formes primitives <em>(rectangles, ronds, carrés)</em>, les bitmaps, les textes riches et les vidéos. Autre nouveauté dans ce nouveau SDK, une nouvelle structure du code : les déclarations des <code>HTTPService</code> et autres <code>RemoteObject</code> s&#8217;effectuent dans les balises <code>&lt;fx:Declaration&gt;</code>.</p><h3><a
name="SpringBlazeDSIntegration"></a>Spring BlazeDS Integration</h3><p>Parmi les nouveautés, nous noterons la présentation de Spring BlazeDS Integration. Avec moins de configuration que BlazeDS, il est possible de mettre en place plus facilement un backend utilisant Spring. Grâce à des annotations, il est maintenant plus simple d&#8217;exposer ses services à la partie cliente.</p><p>Exemple :</p><pre class="brush: java; title: ; notranslate">
@Service(&quot;contactService&quot;)
@RemotingDestination
public class ContactDao {
...
</pre><p>On expose <code>contactService</code> à la partie cliente. Côté Flex, il n&#8217;y aura plus qu&#8217;à simplement appeler ce service grâce au <code>RemoteObject</code>. Concernant le lien client-serveur, Christophe Coenraets soulève un point intéressant : actuellement il est impossible pour le compilateur Flex de reconnaître les services exposés côté serveur. Effectivement, à ce niveau là le compilateur doit croire le développeur et ne possède aucune réelle visibilité. C&#8217;est pour cela que dans Flash Builder 4 a été ajoutée la possibilité de réaliser de l&#8217;introspection sur les services exposés côté serveur. Fonctionnant avec BlazeDS, LiveCycle Data Service ES et AMF PHP, Flash Builder est donc maintenant capable de reconnaître ses services et de les importer côté client.</p><h3><a
name="ModelDrivenDevelopmentdansFlas"></a>Model Driven Development dans FlashBuilder</h3><p>Une autre nouveauté dans FlashBuilder 4 est une nouvelle vue nommée Data Models permettant de réaliser des modèles de données et de les générer autant côté client que côté Serveur. Cette partie sera davantage détaillée dans la session de Jeudi : <a
href="http://devoxx.com/display/DV09/Model-Driven+Development+Using+Adobe+Flash+Builder+4+and+LiveCycle+Data+Services+ES" title="Model Driven Development using Adobe Flash Builder 4 and LiveCycle Data Services ES" >Model Driven Development using Adobe Flash Builder 4 and LiveCycle Data Services ES</a>.</p><p>La présentation était réussie et les démonstrations très bluffantes. Flash Catalyst semble mature et Flash Builder 4 répond mieux aux besoins des développeurs <em>(il est enfin possible de faire un Generate getter/setter sur une propriété !)</em>. Mais on attend toujours la release qui est maintenant prévue pour mi-2010 voire même un peu après.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/17/devoxx-jour-1-adobe-university/feed/</wfw:commentRss> <slash:comments>1</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</title><link>http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/</link> <comments>http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#comments</comments> <pubDate>Mon, 21 Sep 2009 17:35:00 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[ibeans]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[JVM]]></category> <category><![CDATA[memcached]]></category> <category><![CDATA[Mule]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[Noop]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[REST]]></category> <category><![CDATA[Saros]]></category> <category><![CDATA[scala]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2869</guid> <description><![CDATA[La revue de presse de l’actualitéava/J2EE hebdomadaire proposépar Xebia. Actualité éditeurs / SSII Google lance son langage pour la JVM iBeans : la solution d&#8217;intégration pour applications Web de MuleSoft Agilité Pair programming à distance sous Eclipse avec Saros SOA L&#8217;initiative REST-* fait débat Le coin de la technique OSGi 4.2 Scala OSGi-fié Astuces de [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualitéava/J2EE hebdomadaire proposépar Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#GooglelancesonlangagepourlaJVM">Google lance son langage pour la JVM</a></li><li><a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#iBeanslasolutiondintgrationpou">iBeans : la solution d&#8217;intégration pour applications Web de MuleSoft</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#PairprogrammingdistancesousEcl">Pair programming à distance sous Eclipse avec Saros</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#LinitiativeRESTfaitdbat">L&#8217;initiative REST-* fait débat</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#OSGi">OSGi 4.2</a></li><li><a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#ScalaOSGifi">Scala OSGi-fié</a></li><li><a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#AstucesdeperformancepourMySQL">Astuces de performance pour MySQL</a></li><li><a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#Enqutesurlestempsderedmarraged">Enquête sur les temps de redémarrage des serveurs JEE</a></li><li><a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#Premierspasavecmemcached">Premiers pas avec memcached</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/21/revue-de-presse-xebia-127/#SoireTontonsFlexeursleSeptembr">Soirée Tontons Flexeurs le 24 Septembre</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="GooglelancesonlangagepourlaJVM"></a>Google lance son langage pour la JVM</h4><p>Lors du <a
href="http://openjdk.java.net/projects/mlvm/jvmlangsummit/" title="JVM Language Summit" >JVM Language Summit</a> de la semaine dernière, Google a présenté son nouveau langage pour la JVM appelé <a
href="http://code.google.com/p/noop/" title="Noop" >Noop</a>. Le <a
href="http://code.google.com/p/noop/w/list" title="Wiki du projet" >Wiki du projet</a> et sa <a
href="http://wiki.jvmlangsummit.com/Noop_Language_-W-" title="prsentation" >présentation</a> permettent de faire le tour des spécificités de ce langage :</p><ul><li>Syntaxe prévue pour être facilement compréhensible par un développeur Java ou C++</li><li>Pas de types primitifs, pas de classes ou méthodes statiques, variables non mutables par défaut, pas de syntaxe optionnelle, exceptions uniquement de type <em>unchecked</em></li><li>Librairie standard s&#8217;appuyant sur <a
href="http://joda-time.sourceforge.net/" title="JodaTime" >JodaTime</a>, util.concurrent et <a
href="http://code.google.com/p/google-collections/" title="Google Collections" >Google Collections</a></li><li>Support natif du concept d&#8217;injection de dépendances offert par <a
href="http://code.google.com/p/google-guice/" title="Guice" >Guice</a> ou <a
href="http://www.picocontainer.org/" title="PicoContainer" >PicoContainer</a>, un type est alors soit <em>newable</em> soit <em>injectable</em></li><li>Support natif des tests unitaires qui ont leur structure dédiée sans classes ni méthodes</li></ul><p>Les réactions qui ont suivies cette annonce montrent en général un intérêt couplé à une réserve légitime due à l&#8217;état embryonnaire du projet. Ainsi <a
href="http://www.jroller.com/dmdevito/entry/reviewing_noop_language_from_google" title="l'analyse de Dominique de Vito" >l&#8217;analyse de Dominique de Vito</a> s&#8217;inscrit dans ce schéma, tandis qu&#8217;Alexis Moussine-Pouchkine, Sun, <a
href="http://pro.01net.com/editorial/506291/google-veut-moderniser-java-avec-noop/" title="explique  01net" >explique à 01net</a> qu&#8217;il trouve enrichissant la profusion de nouvelles idées mais que, selon lui, le langage Java restera malgré tout omniprésent pendant encore des années.</p><p>Reste que là où de nombreux nouveaux langages justifient leur existence par une syntaxe plus compacte, une nature dynamique ou encore des concepts élaborés, Noop semble adopter une approche plus pragmatique et plus proche des besoins quotidiens rencontrés en informatique de gestion. L&#8217;avenir nous dira si les apports de ce langage sont suffisants pour convaincre des équipes de le préférer à Java pour leurs développements.</p><h4><a
name="iBeanslasolutiondintgrationpou"></a>iBeans : la solution d&#8217;intégration pour applications Web de MuleSoft</h4><p>MuleSource, récemment renommé en MuleSoft lors du lancement de leur offre <a
href="http://www.mulesoft.com/tcat-server-enterprise-tomcat-application-server" title="Tcat Server" >Tcat Server</a> a récemment diffusé une première beta public d&#8217;un nouveau produit : <a
href="http://www.mulesoft.org/display/IBEANS" title="Mule iBeans" >Mule iBeans</a>. Il s&#8217;agit d&#8217;une nouvelle solution d&#8217;intégration s&#8217;attaquant à un marché différent des ESB traditionnels. MuleSoft part en effet du constat que de nombreuses applications Web doivent s&#8217;intégrer avec diverses ressources distantes, mais ne peuvent s&#8217;appuyer sur un ESB qui constituerait une solution trop lourde. iBeans se positionne ainsi en tant que solution d&#8217;intégration pour applications Web. La nuance est légère par rapport aux ESB mais on constate clairement cette orientation dans la pratique : annotations, composants iBeans, injection de services type IoC avec un contexte <em>request</em>, &#8230;</p><p>La particularité principale du projet est son modèle de composant iBeans. Il s&#8217;agit de composants similaires aux Beans Spring ou aux Session Beans EJB mais spécialisés dans l&#8217;accès à un service à distance. Ces composants utilisent certaines annotations de la récente <a
href="http://jcp.org/en/jsr/detail?id=330" title="JSR-330 (Dependency injection for Java)" >JSR-330 (Dependency injection for Java)</a> et peuvent s&#8217;intégrer facilement avec Spring, Struts et JSF.</p><p>MuleSoft propose parallèlement un projet nommé <a
href="http://www.mulesoft.org/display/IBEANSCONTRIB/Home" title="Community iBeans Proposals" >Community iBeans Proposals</a> visant à regrouper les iBeans de la communauté pour intégrer les ressources les plus fréquentes.</p><p>iBeans répond à un besoin courant des applications Web. La réponse proposée par MuleSoft est élégante mais on pourra regretter l&#8217;apparition d&#8217;un modèle de composant supplémentaire disposant de son propre cycle de vie. Actuellement l&#8217;éditeur n&#8217;a pas communiqué sur son projet naissant en dehors de la <a
href="http://www.mulesoft.org/display/IBEANS/Documentation" title="page Wiki dédiée" >page Wiki dédiée</a>. Une recherche Google montre rapidement que la communication autour de ce projet est quasi inexistante. Toutefois, une <a
href="http://www.devoxx.com/display/DV09/iBeans+-+dead+simple+integration+for+the+Web" title="session ddie au sujet" >session dédiée au sujet</a> prévue pour Devoxx 2009 tend à nous faire penser que la célèbre conférence européenne pourrait bien servir de rampe de lancement au nouveau projet de MuleSoft.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="PairprogrammingdistancesousEcl"></a>Pair programming à distance sous Eclipse avec Saros</h4><p>L&#8217;<a
href="https://www.inf.fu-berlin.de/" title="université de Berlin" >université de Berlin</a> propose depuis quelques temps un plugin Eclipse nommé <a
href="https://www.inf.fu-berlin.de/w/SE/DPP" title="Saros" >Saros</a>, offrant des fonctionnalités permettant le <em>pair programming</em> à distance grâce au <a
href="http://fr.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol" title="protocole XMPP" >protocole XMPP</a>. Concrètement les possibilités sont :</p><ul><li>Reproduction ou synchronisation d&#8217;un projet Eclipse à distance via une connexion XMPP.</li><li>Visualisation dans l&#8217;environnement de l&#8217;<em>observer</em> des classes ouvertes et de la classe en cours d&#8217;édition par le <em>driver</em>.</li><li>Affichage en temps réel des modifications du code, et de la position du curseur et du texte sélectionné.</li><li>Gestion expérimentale d&#8217;un mode <em>multi-driver</em> permettant de modifier le code à deux simultanément.</li><li>Chat via une vue dédiée dans Eclipse</li></ul><p>Un <a
href="https://www.inf.fu-berlin.de/w/SE/DPPDemoVideo" title="screencast" >screencast</a> est proposé sur le site du projet, celui-ci permet de se rendre compte des capacités du plugin.</p><p>Idéalement complété d&#8217;une conversation Skype, ce plugin trouvera sa place dans de nombreux scenarii allant du <em>distributed pair programming</em> à l&#8217;assistance d&#8217;un collègue situé à un autre étage.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="LinitiativeRESTfaitdbat"></a>L&#8217;initiative REST-* fait débat</h4><p>JBoss vient de lancer le site <a
href="http://www.jboss.org/reststar" title="RESTorg" >REST-*.org</a> hébergeant son initiative de standardisation de plusieurs services <em>middleware</em> traditionnels sur le modèle REST.</p><p>Actuellement deux <em>drafts</em> sont en cours de rédaction, l&#8217;un porte sur <a
href="http://www.jboss.org/reststar/specifications/messaging.html" title="RESTful Messaging" >RESTful Messaging</a>, l&#8217;autre sur <a
href="http://www.jboss.org/reststar/specifications/transactions.html" title="RESTful Transactions" >RESTful Transactions</a>. Ces deux spécifications visent à définir un ensemble d&#8217;URIs standards sur le modèle REST permettant d&#8217;exposer une ressource transactionnelle ou un <em>broker</em> de messages.</p><p>Très rapidement, de vives réactions sont apparues au sein de la communauté, principalement pour faire part de leur scepticisme quant à cette initiative, régulièrement comparée à la très lourde collections de spécifications WS-*, qui pourrait mettre à mal la simplicité unanimement reconnue du modèle REST. C&#8217;est ainsi le cas <a
href="http://apsblog.burtongroup.com/2009/09/rest-ive-got-a-bad-feeling-about-this.html" title="d'Anne Thomas Manes" >d&#8217;Anne Thomas Manes</a> qui revient également sur les critiques de Bill Burke à l&#8217;égart de l&#8217;initiative <a
href="http://www.restms.org/" title="RestMS" >RestMS</a> qui existait déjà et qui pariait plutôt sur Atom et AMQP.</p><p>Bill Burke de son coté publie sur <a
href="http://bill.burkecentral.com/" title="son blog" >son blog</a> un billet par jour depuis la publication sur le site REST-*.org, pour justifier ses choix et la légitimité du projet qu&#8217;il porte. Ses arguments portent principalement sur le fait qu&#8217;il existe une demande très forte de la communauté pour gérer les services de <em>messaging</em> et les transactions avec REST.</p><p>Le débat est compréhensible : la volonté d&#8217;exposer certaines ressources transactionnelles ou services de <em>messaging</em> s&#8217;inscrit dans les besoins courants des entreprises, tout comme les craintes de voir se reproduire les erreurs du passé sont légitimes. L&#8217;apport de cette initiative est donc probablement de porter sur le devant de la scène une réflexion sur un problème pourtant courant et déjà exposé par Leonard Richardson et Sam Ruby, il y a deux ans, dans leur livre majeur <a
href="http://oreilly.com/catalog/9780596529260/" title="RESTful Web Services" >RESTful Web Services</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="OSGi"></a>OSGi 4.2</h4><p>OSGi est sur le devant de la scène, d&#8217;<a
href="http://www.infoq.com/news/2009/09/osgi-4-2-released" title="InfoQ" >InfoQ</a> à <a
href="http://osgithoughts.blogspot.com/2009/09/osgi-42-core-and-compendium-specs.html" title="OSGi Thoughts" >OSGi Thoughts</a> en passant par <a
href="http://blog.bjhargrave.com/2009/09/osgi-42-specs-are-now-available.html" title="The Programming Delusion" >The Programming Delusion</a> (BJ Hargrave, CTO de l&#8217;OSGi Alliance), depuis une petite semaine et pour cause : l&#8217;<a
href="http://www.osgi.org/News/20090916" title="OSGi Alliance" >OSGi Alliance</a> a sorti et mis à disposition le 16 septembre dernier les spécifications finales de la version 4.2 (téléchargeables <a
href="http://www.osgi.org/Specifications/HomePage" title="ici" >ici</a>).</p><p><a
href="http://alblue.blogspot.com/2009/09/osgi-42-released.html" title="Alex Blewitt" >Alex Blewitt</a> nous résume la situation sur <a
href="http://www.infoq.com/news/2009/09/osgi-4-2-released" title="InfoQ" >InfoQ</a>. On retiendra qu&#8217;<a
href="http://www.eclipse.org/equinox" title="Equinox" >Equinox</a> et <a
href="http://felix.apache.org/" title="Flix" >Félix</a> ont déjà commencé leur travail de compatibilité avec OSGi 4.2. Les spécifications étant désormais <em>released</em>, ce n&#8217;est qu&#8217;une question de temps avant que les projets affichent fièrement leur label <em>OSGi 4.2 compliant</em>.<br
/> On notera aussi une nouvelle méthode de lancement du runtime OSGi, le nouveau nom des Distributed OSGi qui deviennent les Remote Services (connexion de VMs OSGi), les Blueprint Services qui seront des services <em>wired</em> à la Spring, le concept de Bundle Tracker ou bien encore le mécanisme de permission sur une opération dans un bundle.</p><p>Pour la petite piqure de rappel, on pourra se tourner vers <a
href="http://java.dzone.com/" title="JavaLobby" >JavaLobby</a> qui nous propose depuis quelques jours 2 tutoriaux HelloWorld sur OSGi, le premier avec <a
href="http://java.dzone.com/articles/plugable-swing-%E2%80%93-hello-world" title="Swing" >Swing</a> et le second avec <a
href="http://java.dzone.com/articles/plugable-spring-rc-osgi-spring" title="Spring RC" >Spring RC</a>.<br
/> Et pour les plus nostalgiques, le Paris JUG sur OSGi, <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20081014" title="c'était (déjà) il y a 1 an" >c&#8217;était (déjà) il y a 1 an</a>&#8230;</p><h4><a
name="ScalaOSGifi"></a>Scala OSGi-fié</h4><p>On reste dans les news OSGi avec un projet qui propose Scala 2.7.6 en version OSGi-fiée (vu <a
href="http://heikoseeberger.blogspot.com/2009/09/osgi-fied-scala-libraries-updated-to.html" title="ici" >ici</a>).</p><p>Comme expliqué sur le GitHub du projet, <a
href="http://www.scala-lang.org/" title="Scala" >Scala</a> n&#8217;est pas (encore) packagé en bundle OSGi. Certes, le plugin Eclipse <a
href="http://www.scala-lang.org/node/94" title="Scala IDE" >Scala IDE</a> utilise un bundle OSGi qui embarque Scala mais celui-ci ne peut pas être utilisé de manière générale (manifest spécifique et toutes les librairies dans un seul jar).</p><p><a
href="http://github.com/hseeberger/scala-lang-osgi" title="scala-lang-osgi" >scala-lang-osgi</a> répond à ce besoin et fournit un bundle OSGi pour chaque librairie Scala. Le tout est disponible sur le repository maven <a
href="http://scala-tools.org/repo-releases/org/scala-lang-osgi/" title="scalatoolsorg" >scala-tools.org</a>.</p><h4><a
name="AstucesdeperformancepourMySQL"></a>Astuces de performance pour MySQL</h4><p>Même si nos ORMs préférés génèrent des requêtes optimisées à notre place, il arrive parfois que, pour des raisons de performances ou autres, l&#8217;on doive écrire certaines requêtes directement en SQL.<br
/> Le site <a
href="http://www.debianadmin.com/" title="Debian Admin" >Debian Admin</a> (par <a
href="http://www.code-purity.com/top_87_mysql_performance_tips/|http://www.debianadmin.com/top-84-mysql-performance-tips." title="Code Purity" >Code Purity</a>) référence à cette fin <a
href="http://www.debianadmin.com/top-84-mysql-performance-tips.html" title="84 astuces doptimisations de performances pour MySQL" >84 astuces d&#8217;optimisations de performances pour MySQL</a>.<br
/> Certes, la plupart des astuces de configuration de MySQL sont peut-être/certainement déjà mises en place par nos chers DBA. Mais on trouvera aussi une pléiade d&#8217;astuces concernant la requête elle-même : cela passe de la non utilisation du gourmand <code>SELECT *</code>, d&#8217;éviter au possible l&#8217;utilisation de <code>DISTINCT</code> (très consommateur), d&#8217;utiliser pour l&#8217;insertion des <code>BATCH INSERT</code> et <code>REPLACE</code> ou bien encore l&#8217;utilisation <code>INET_ATON</code> et <code>INET_NTOA</code> au lieu de <code>CHAR</code> et <code>VARCHAR</code> pour les adresses IP.<br
/> Pour le détail complet, rendez-vous directement sur le <a
href="http://www.debianadmin.com/top-84-mysql-performance-tips.html" title="site de Debian Admin" >site de Debian Admin</a>.</p><h4><a
name="Enqutesurlestempsderedmarraged"></a>Enquête sur les temps de redémarrage des serveurs JEE</h4><p>ZeroTurnAround, l&#8217;éditeur de JRebel, a mené (et continue même à collecter des données) <a
href="http://www.zeroturnaround.com/blog/java-ee-container-heaven-hell-survey-results/" title="une tude sur les temps de redmarrage  redploiement des serveurs dapplications" >une étude sur les temps de redémarrage / redéploiement des serveurs d&#8217;applications</a> auprès des lecteurs de son blog (environ 700 personnes ont répondu).<br
/> Tout d&#8217;abord, passons sur la conclusion évidente de l&#8217;étude, <em>vous avez besoin de JRebel</em>, pour tenter de voir au delà de cette évidence marketing. On évitera aussi la polémique sur le rapprochement Conteneurs de Servlets / Serveurs d&#8217;applications.<br
/> On constate tout d&#8217;abord que la population fréquentant le blog de ZeroTurnAround (on a donc dès le début une information en partie biaisée) a une forte tendance à confier ses applications à une plate-forme basée sur Tomcat (JBoss + Tomcat), plutôt qu&#8217;aux historiques IBM et <strike>BEA</strike> Oracle. Là encore, étant donné la notoriété naissante de JRebel, au sein d&#8217;une communauté plutôt tournée vers l&#8217;open source, rien d&#8217;étonnant.</p><p>En revanche, il est intéressant de constater que les temps de redéploiement deviennent assez rapidement délirants, avec des serveurs qui en moyenne mettent entre 2 et 5 minutes à redémarrer, la palme de la lenteur revenant, on le savait déjà par expérience, aux <em>gros serveurs monolithiques commerciaux</em>. Alors, au-delà du constat qu&#8217;un développeur passe aujourd&#8217;hui une grande partie de son temps à attendre que son application se mette à jour sur son serveur d&#8217;applications, au-delà du fait que JRebel est une des manières d&#8217;adresser ce problème, nous nous posons la question suivante : est-il normal, pour un serveur d&#8217;applications, de mettre cinq minutes à redémarrer ?</p><p>L&#8217;actualité de cette revue de presse met en avant OSGI, qui sera certainement une des réponses apportées à cette explosion des temps de démarrage. Ce sont d&#8217;ailleurs les absents de cette étude qui porteront la première estocade : GlassFish 3.x et dmServer.</p><h4><a
name="Premierspasavecmemcached"></a>Premiers pas avec memcached</h4><p>Dans le but de proposer une implémentation d&#8217;un système de cache pour Grails, <a
href="http://www.ibm.com/developerworks/java/library/j-memcached1/?S_TACT=105AGX01&#038;S_CMP=HP&#038;ca=drs-" title="James Goodwill, sur DeveloperWorks" >James Goodwill, sur DeveloperWorks</a>, propose, dans un premier temps, une découverte du système de cache distribué <a
href="http://www.danga.com/memcached/" title="memcached" >memcached</a>.<br
/> Une mise en bouche qui permet de découvrir les bases de ce produit, avant de combiner ce cache avec Grails dans une seconde partie, qui, on l&#8217;espère, permettra d&#8217;optimiser les performances du plus célèbre des frameworks haute productivité.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SoireTontonsFlexeursleSeptembr"></a>Soirée Tontons Flexeurs le 24 Septembre</h4><p>Suite des <a
href="http://groups.adobe.com/groups/193bcaff5f/summary" title="Tontons Flexeurs" >Tontons Flexeurs</a>, après la très bonne soirée <a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#SoireTontonsFlexeurs" title="Flex et Java en entreprise" >Flex et Java en entreprise</a>, avec une <a
href="http://groups.adobe.com/posts/8cb9375182" title="nouvelle session" >nouvelle session</a> ce jeudi 24 septembre. 2 invités de marque : <a
href="http://www.mikechambers.com/blog/" title="Mike Chambers" >Mike Chambers</a> et <a
href="http://theflashblog.com/" title="Lee Brimelow" >Lee Brimelow</a> qui nous feront une présentation d&#8217;Adobe AIR (techniques avancées de synchronisation de données, de manipulation de fichiers, possibilités d&#8217;intégration à la plateforme hôte&#8230;) et des nouvelles fonctionnalités des prochaines versions de AIR.</p><p>A l&#8217;heure où nous écrivons ces lignes, il reste encore quelques places disponibles donc rendez-vous sur le <a
href="http://chambers-et-brimelow-ttfx-2009.eventbrite.com/" title="formulaire dinscription de lvnement" >formulaire d&#8217;inscription de l&#8217;évènement</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Revue de presse</title><link>http://blog.xebia.fr/2009/09/14/revue-de-presse-126/</link> <comments>http://blog.xebia.fr/2009/09/14/revue-de-presse-126/#comments</comments> <pubDate>Mon, 14 Sep 2009 18:17:08 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[AMF]]></category> <category><![CDATA[citcon]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[JavaRebel]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[Paris JUG]]></category> <category><![CDATA[proto]]></category> <category><![CDATA[PrototypeJs]]></category> <category><![CDATA[SoapUI]]></category> <category><![CDATA[Vaadin]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2840</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII JavaRebel et Eclipse RCP deviennent&#8230; Agilité Les clés d&#8217;une rétrospective réussie RIA Prototype 1.6.1, une version pas si mineure Tester vos services AMF avec soapUI Vaadin 6.1.0 Le coin de la technique Ces classes que vous en avez assez de [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#JavaRebeletEclipseRCPdeviennen">JavaRebel et Eclipse RCP deviennent&#8230;</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#Lesclsdunertrospectiverussie">Les clés d&#8217;une rétrospective réussie</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#Prototypeuneversionpassimineur">Prototype 1.6.1, une version pas si mineure</a></li><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#TestervosservicesAMFavecsoapUI">Tester vos services AMF avec soapUI</a></li><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#Vaadin">Vaadin 6.1.0</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#Cesclassesquevousenavezassezde">Ces classes que vous en avez assez de réécrire</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/14/revue-de-presse-126#SoirequalitdulogicielauParisJU">Soirée qualité du logiciel au Paris JUG</a></li><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#ConfrenceCITCONleetseptembre">Conférence CITCON le 18 et 19 septembre</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="JavaRebeletEclipseRCPdeviennen"></a>JavaRebel et Eclipse RCP deviennent&#8230;</h4><p>Des nouvelles de <a
href="http://www.zeroturnaround.com/javarebel/" title="JavaRebel" >JavaRebel</a> et d&#8217;<a
href="http://wiki.eclipse.org/index.php/Rich_Client_Platform" title="Eclipse RCP" >Eclipse RCP</a> dont nous évoquions le processus de changement de nom dans de précédentes revues de presse (<a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#FindeJavaRebelplace" title="ici" >ici</a> et <a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#FindEclipseRCPplace" title="l" >là</a>).</p><p>Nous avons donc (roulement de tambour) JavaRebel qui devient&#8230; <a
href="http://www.zeroturnaround.com/blog/community-renames-javarebel-to-jrebel/" title="JRebel" >JRebel</a> ! Il rejoint donc la longue liste des J* tel que JFreeChart, JUnit&#8230;</p><p>En ce qui concerne Eclipse RCP, les <a
href="http://www.surveymonkey.com/sr.aspx?sm=L5Jap6ce_2fcdXYFsJVUxZhS_2fq23Twd7n_2bwrQHHUpMOvQ_3d" title="votes" >votes</a> nous donnent comme gagnant&#8230; <a
href="http://www.modumind.com/2009/09/09/renaming-eclipse-rcp-final-results/" title="Eclipse RCP" >Eclipse RCP</a> ! Statu quo donc avec 38% des votants pour conserver le nom actuel, suivi d&#8217;Eclipse Platform, Aurora, Corona et Tangram.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Lesclsdunertrospectiverussie"></a>Les clés d&#8217;une rétrospective réussie</h4><p>La rétrospective est l&#8217;un des outils les plus connus et plus utilisés dans le processus d&#8217;amélioration continue. Pour obtenir de meilleurs résultats, quelques principes simples doivent être respectés. Cette semaine, un <a
href="http://www.infoq.com/news/2009/09/key-elements-agile-retrospective" title="article publi sur InfoQ" >article publié sur InfoQ</a> revient sur les éléments clés d&#8217;une rétrospective agile réussie :</p><ul><li><strong>La préparation</strong> : la majorité des gens ont peur de donner leur position à l&#8217;oral et en public, c&#8217;est pourquoi il est important d&#8217;expliquer a priori les règles du jeu et <strong>expliciter</strong> les attentes et les enjeux de ce genre de réunion. L&#8217;efficacité de ce genre de réunion est proportionnelle au taux de participation : il faut tout faire pour éviter les monologues de quelques-uns</li><li><strong>La participation</strong> : il faut absolument éviter que cette séance ne devienne une routine, faire une rétrospective pour faire une rétrospective ne sert à rien : non aux retros théâtrales! C&#8217;est pourquoi il est important d&#8217;en sortir des <strong>actions concrètes</strong> et réalisables. Celles-ci permettent de mesurer leur efficacité et de donner une dynamique positive et concrète au processus d&#8217;amélioration continue.</li></ul><p>Vous pouvez ajouter à ces deux points clés ces quelques conseils de communication :</p><ul><li>N&#8217;hésitez pas à ouvrir le débat et à  poser la question : « Quelqu&#8217;un a t-il d&#8217;autres points à aborder ? »</li><li>Demandez aux participants des pistes d&#8217;amélioration pour la rétrospective elle-même</li><li>Dites merci !</li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="Prototypeuneversionpassimineur"></a>Prototype 1.6.1, une version pas si mineure</h4><p>Parce qu&#8217;il n&#8217;y a pas que <a
href="http://www.jquery.com" title="jQuery" >jQuery</a> dans la vie, voici quelques nouvelles de Prototype qui sort en version <a
href="http://prototypejs.org/2009/9/1/prototype-1-6-1-released" title="1.6.1" >1.6.1</a> (par <a
href="http://ajaxian.com/archives/prototype-161-speed-up-clean-up-and-team-up" title="Ajaxian" >Ajaxian</a>)</p><p>Outre le changement de co-leads, les principales nouveautés portent sur :</p><ul><li>Compatibilité avec les navigateurs et particulièrement le support complet de Chrome 1.0+ et IE8</li><li>Sauvegarde de données sur un élément DOM (la fonction <code>data</code> de jQuery)</li><li>Nouveaux évènements souris <code>mouseenter</code> et <code>mouseleave</code> disponibles pour tous les navigateurs (et plus seulement IE)</li><li>Performances générales : méthodes plus rapides, <code>clean up</code> plus efficaces&#8230;</li><li>Utilisation de <a
href="http://getsprockets.org/" title="Sprockets" >Sprockets</a> pour la gestion de dépendances</li><li>Documentation <a
href="http://api.prototypejs.org/" title="en ligne" >en ligne</a> avec <a
href="http://pdoc.org/" title="PDoc" >PDoc</a></li></ul><p>De nombreux changements donc, à la fois au coeur de la librairie mais aussi au niveau des fonctionnalités, de la documentation&#8230;<br
/> Le téléchargement se passe par <a
href="http://prototypejs.org/assets/2009/8/31/prototype.js" title="ici" >ici</a>.</p><h4><a
name="TestervosservicesAMFavecsoapUI"></a>Tester vos services AMF avec soapUI</h4><p>Dans <a
href="http://www.eviware.com/blogs/oleblog/?p=861" title="cet article" >cet article</a>, nous apprenons qu&#8217;il est possible de tester les applications Flex utilisant le protocole AMF avec soapUI. Pour rappel, AMF (Action Message Format) est un protocole binaire de transfert de données entre le client et le serveur, permettant l&#8217;accès à des objets sur ce dernier (Java par exemple).<br
/> Avec une configuration relativement simple et quelques astuces, il devient très aisé de tester votre flux AMF : avec un simple script Groovy ainsi que les librairies <a
href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/" title="BlazeDS" >BlazeDS</a> et <a
href="http://xstream.codehaus.org/download.html" title="XStream" >XStream</a>, un flux ASObject est généré au format XML, permettant d&#8217;effectuer les tests.<br
/> Cerise sur le gâteau, des tests de charge peuvent être exécutés et démontrent encore une fois les bonnes performances de ce protocole.<br
/> Pour finir, nous apprenons également que la prochaine version de soapUI (3.5) intégrera le support de nouveaux protocoles, dont AMF ! A surveiller.</p><h4><a
name="Vaadin"></a>Vaadin 6.1.0</h4><p><a
href="http://vaadin.com/home" title="Vaadin" >Vaadin</a> continue son petit bonhomme de chemin et sort, fin de semaine dernière, en version <a
href="http://vaadin.com/downloading" title="6.1.0" >6.1.0</a> (par <a
href="http://www.theserverside.com/news/thread.tss?thread_id=57838" title="The Server Side" >The Server Side</a>).</p><p>Après la release majeure de <a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#Vaadin" title="juin dernier" >juin dernier</a>, qui a vu notamment le renommage du produit, le plugin eclipse et l&#8217;éditeur WYSIWYG, cette nouvelle version nous apporte entre autres (<a
href="http://vaadin.com/download/release/6.1/6.1.0/release-notes.html" title="release notes complte" >release notes complète</a>) :</p><ul><li>Disponibilité du produit sur le repository central de Maven</li><li>Support de Google App Engine (le build et le déploiement se font par leur plugin eclipse)</li><li>Correction de <a
href="http://vaadin.com/download/release/6.1/6.1.0/release-notes.html#changelog" title="87 Jiras" >87 Jiras</a></li></ul><p>Le téléchargement se passe par <a
href="http://vaadin.com/downloading" title="ici" >ici</a> et n&#8217;oubliez pas le <a
href="http://vaadin.com/book" title="book of Vaddin" >book of Vaddin</a> qui parcourt le produit de a à z (installation, initialisation d&#8217;un projet, tutoriels&#8230;).</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Cesclassesquevousenavezassezde"></a>Ces classes que vous en avez assez de réécrire</h4><p>Dans le cadre de la sortie du JDK 7, Joe Darcy, de Sun, a demandé à <a
href="http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-September/002572.html" title="un groupe de discussion" >un groupe de discussion</a> de l&#8217;OpenJdk de réfléchir aux méthodes qui pourraient voir le jour dans la classe <code>java.util.Objects</code>. Cette classe (comme son nom ne l&#8217;indique hélas pas du tout) est destinée à regrouper des méthodes utilitaires fréquemment réécrites et utilisées.<br
/> Dans son message initial, il expose sans surprise un <code>equals(arg1, arg2)</code> tolérant la nullité. Un peu plus surprenant, il propose un <code>compareTo(arg1, arg2)</code> pour les primitifs.</p><p>Au premier abord, on sent l&#8217;idée de réintégrer dans le JDK des classes utilitaires déjà présentes dans nos frameworks (<a
href="http://commons.apache.org/lang/api/org/apache/commons/lang/ObjectUtils.html" title="Apache Commons Lang ObjectUtils" >Apache Commons Lang ObjectUtils</a> et <a
href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/util/ObjectUtils.html" title="Spring ObjectUtils" >Spring ObjectUtils</a>) comme on l&#8217;a connu avec succès dans le Collections Framework mais aussi avec des flops comme <code>java.util.logging</code> qui n&#8217;a pas réussi à remplacer log4j ni à innover comme slf4j.</p><p>Si l&#8217;on continue la réflexion, on retrouve cette idée de protection contre les <code>NullPointerException</code> qui nous font tant souffrir comme le rappelle Tony Hoare dans <a
href="http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare" title="Null References The-Billion Dollar Mistake" >Null References The-Billion Dollar Mistake</a>. Sous cet angle de vue, l&#8217;idée de Joe Dary nous ramène à deux autres tentatives pour <em>colmater</em> les nulls en java avec <a
href="http://jcp.org/en/jsr/detail?id=305" title="JSR 305: Annotations for Software Defect Detection" >JSR 305: Annotations for Software Defect Detection</a> et <a
href="http://jcp.org/en/jsr/detail?id=303" title="JSR 303 Bean Validation" >JSR 303: Bean Validation</a> qui proposent respectivement <code>@NonNull</code> et <code>@NotNull</code> !</p><p>Ces efforts pour lutter contre les <code>NullPointerException</code> en Java sont louables mais ils laissent un goût de contournement d&#8217;une limitation structurelle alors que d&#8217;autres langages sont intrinsèquement mieux armés (_safe operators_ à la Groovy, etc). Et nous entrons là dans un débat plus vaste : &laquo;&nbsp;Est-il trop tard pour améliorer le langage java lui-même quitte à perdre en compatibilité ?&nbsp;&raquo;.</p><p><a
href="http://www.infoq.com/news/2009/09/jdk7-java-utils-object" title="Via InfoQ" >Via InfoQ</a></p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SoirequalitdulogicielauParisJU"></a>Soirée qualité du logiciel au Paris JUG</h4><p>Le Paris JUG fait sa rentrée mardi prochain sous le signe de la qualité. Au programme de cette soirée, le JUG nous propose pas moins de quatre présentations:</p><ul><li>Les frameworks opensource (Quels frameworks utiliser ? Quand ? Comment ?)</li><li>Sonar, venez découvrir les 7 péchés capitaux du développeur et les chasser avec Sonar.</li><li>SonarJ community edition, pour contrôler l&#8217;architecture et la qualité technique du code source.</li><li>Squale, la plate-forme open-source de qualimétrie extensible.</li></ul><p><a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20090915" title="Plus dinformation sur lvnement " >Plus d&#8217;information sur l&#8217;évènement &#8230;</a><br
/> <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/Next" title="Le programme des prochaines soire " >Le programme des prochaines soirées &#8230;</a></p><h4><a
name="ConfrenceCITCONleetseptembre"></a>Conférence CITCON le 18 et 19 septembre</h4><p>Comme un echo au Paris JUG, la conférence CITCON (Continuous Integration Testing CONference) a lieu à Paris, dans les locaux de l&#8217;ISEP.<br
/> Les sessions, type Open Space, seront organisées vendredi soir pour se dérouler toute la journée du samedi.<br
/> Vous pouvez retrouver les infos utiles sur le <a
href="http://citconf.com/paris2009" title="site de la confrence" >site de la conférence</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/09/14/revue-de-presse-126/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/09/07/revue-de-presse-xebia-125/</link> <comments>http://blog.xebia.fr/2009/09/07/revue-de-presse-xebia-125/#comments</comments> <pubDate>Mon, 07 Sep 2009 18:02:17 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[liferay]]></category> <category><![CDATA[MDA]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[PMD]]></category> <category><![CDATA[portail]]></category> <category><![CDATA[SCRUM]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2812</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII 11 technologies Apache qui ont changé l&#8217;informatique &#8230; et celles qui changeront notre futur Informatica acquiert Agent Logic Agilité Dix tuyaux pour devenir un bon coach Agile RIA Analysez votre code Flex avec FlexPMD Le coin de la technique Sortie [...]]]></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/09/07/revue-de-presse-xebia-125/#technologiesApachequiontchangl">11 technologies Apache qui ont changé l&#8217;informatique &#8230; et celles qui changeront notre futur</a></li><li><a
href="http://blog.xebia.fr/2009/09/07/revue-de-presse-xebia-125/#InformaticaacquireAgentLogic">Informatica acquiert Agent Logic</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/07/revue-de-presse-xebia-125/#Dixtuyauxpourdevenirunboncoach">Dix tuyaux pour devenir un bon coach Agile</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/07/revue-de-presse-xebia-125/#AnalysezvotrecodeFlexavecFlexP">Analysez votre code Flex avec FlexPMD</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/07/revue-de-presse-xebia-125/#SortiedOpenXava">Sortie d&#8217;OpenXava 3.1.4</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="technologiesApachequiontchangl"></a>11 technologies Apache qui ont changé l&#8217;informatique &#8230; et celles qui changeront notre futur</h4><p>Le magazine EWeek nous présente <a
title="Application Development 11 Apache Technologies that Have Changed Computing in the Last 10 Years" href="http://www.eweek.com/c/a/Application-Development/11-Apache-Technologies-that-Have-Changed-Computing-in-the-Last-10-Years-469693/">Application Development: 11 Apache Technologies that Have Changed Computing in the Last 10 Years</a>.</p><p>Les lauréats sont <a
title="Apache Web Server" href="http://httpd.apache.org/">Apache Web Server</a>, <a
title="Tomcat" href="http://tomcat.apache.org/">Tomcat</a>, le moteur de recherche <a
title="Lucene" href="http://lucene.apache.org/">Lucene</a>, le framework MVC <a
title="Struts" href="http://struts.apache.org/">Struts</a>, <a
title="Geronimo" href="http://geronimo.apache.org/">Geronimo</a>, l&#8217;outil de build <a
title="Ant" href="http://ant.apache.org/">Ant</a>, le framework de présentation XML/XSL <a
title="Cocoon" href="http://cocoon.apache.org/">Cocoon</a>, le détecteur de spam <a
title="SpamAssassin" href="http://spamassassin.apache.org/">SpamAssassin</a>, le framework SOAP <a
title="Axis" href="http://ws.apache.org/axis/">Axis</a>, le framework de log <a
title="Log4j" href="http://logging.apache.org/log4j/">Log4j</a> et le projet ombrelle <a
title="Commons" href="http://commons.apache.org/">Commons</a> qui héberge une kyrielle d&#8217;utilitaires.</p><p>Après les victoires, EWeek s&#8217;est essayé aux pronostiques avec les projets Apache qui changeront l&#8217;informatique de demain : <a
title="Hadoop" href="http://hadoop.apache.org/">Hadoop</a>, <a
title="CouchDB" href="http://couchdb.apache.org/">CouchDB</a>, l&#8217;annuaire LDAP <a
title="Directory Server" href="http://directory.apache.org/">Directory Server</a>, l&#8217;outil de build <a
title="Maven" href="http://maven.apache.org/">Maven</a>, la base de contenu <a
title="Jackrabbit" href="http://jackrabbit.apache.org/">Jackrabbit</a>, la JVM open source <a
title="Harmony" href="http://harmony.apache.org/">Harmony</a>, l&#8217;ESB <a
title="ServiceMix" href="http://servicemix.apache.org/">ServiceMix</a>, le framework de protocole réseau <a
title="Mina" href="http://mina.apache.org/">Mina</a>, le serveur de blog <a
title="Roller" href="http://roller.apache.org/">Roller</a> et le gestionnaire de contenu <a
title="Sling" href="http://sling.apache.org/">Sling</a>.</p><p>Qu&#8217;importe le débat polémique sur la portée réelle de tel ou tel projet ; nous retiendrons que de nombreux projets de la Fondation Apache sont devenus des standards de facto.</p><p>Au delà de ces projets pris indépendamment les uns des autres, la Fondation Apache a changé la place de l&#8217;Open Source dans l&#8217;informatique. La culture de plus en plus Open Source du Java Community Process dont la Fondation Apache a été un des moteurs a fait tâche d&#8217;huile. On ne compte plus aujourd&#8217;hui les organismes de standardisation qui utilisent le mode Open Source pour les Technology Compatibility Kits (TCK) et les implémentations de références (RI).</p><p>Et pour finir sur des fleurs, la Fondation Apache après s&#8217;être vue décerner le titre de meilleur participant au Java Community Process en <a
title="2008" href="http://jcp.org/en/press/news/awards/2008award_nominees">2008</a>, <a
title="2007" href="http://jcp.org/en/press/news/awards/2007award_nominees">2007</a> et <a
title="2005" href="http://jcp.org/en/press/news/awards/2005award_nominees">2005</a> est à nouveau nominée pour l&#8217;année <a
title="2009" href="http://jcp.org/en/press/news/awards/2009award_nominees">2009</a>.</p><h4><a
name="InformaticaacquireAgentLogic"></a>Informatica acquiert Agent Logic</h4><p>L&#8217;éditeur américain de solutions d&#8217;intégration de données, Informatica, <a
title="annonce lacquisition" href="http://www.informatica.com/news_events/press_releases/Pages/09022009_agent_logic.aspx">annonce l&#8217;acquisition</a> d&#8217;Agent Logic, un autre éditeur spécialisé pour sa part dans le <em>Complex Event Processing</em>.</p><p>Pour rappel, la solution d&#8217;Agent Logic se base sur trois composants &#8211; RulePoint, RuleCast et Real-Time Alert Manager &#8211; l&#8217;ensemble constituant un moteur CEP orienté règles complet.</p><p>Chris Boorman, <em>Chief Marketing Officer</em> d&#8217;Informatica, <a
title="explique les raisons" href="http://blogs.informatica.com/perspectives/index.php/2009/09/02/why-did-informatica-acquire-agent-logic/">explique les raisons</a> de cette acquisition : il s&#8217;agit de fournir une réponse aux besoins croissants de certaines entreprises à traiter les données et évènements en temps réel afin de permettre des prises de décision immédiates.</p><p>Cette acquisition montre une fois de plus l&#8217;intérêt des grands éditeurs de solutions d&#8217;entreprises pour le <em>Complex Event Processing</em> et de son potentiel pour leurs clients.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Dixtuyauxpourdevenirunboncoach"></a>Dix tuyaux pour devenir un bon coach Agile</h4><p>InfoQ rapporte dans <a
title="cet article" href="http://www.infoq.com/news/2009/09/agile-coach-tips">cet article</a> les principaux enseignements d&#8217;un atelier tenu dans le cadre de la conférence Agile 2009 en février. Rachel Davies et Liz Sedley, co-auteurs du livre <a
title="Agile Coaching" href="http://www.amazon.com/Agile-Coaching-Rachel-Davies/dp/1934356433">Agile Coaching</a>, ont exposé les 10 points suivants :</p><ul><li>Présentez vous : la moindre des choses lorsque l&#8217;on rejoint une équipe, surtout en tant que coach (événement confiant parfois au traumatisme pour certains), c&#8217;est de présenter son parcours professionnel et ses objectifs pour le projet.</li><li>Agile n&#8217;est pas une religion : vous n&#8217;êtes pas forcément en terrain conquis, le but d&#8217;une équipe étant avant tout de réaliser son métier. C&#8217;est donc au coach de montrer qu&#8217;un fonctionnement agile va aider les membres de l&#8217;équipe dans leur tâche quotidienne, grâce à une écoute de tous les instants.</li><li>Soyez respectueux : prenez le temps de connaître et de comprendre l&#8217;historique du projet et de l&#8217;équipe, plutôt que d&#8217;arriver avec des solutions <em>autoritaires</em></li><li>Prenez du recul : ne restez pas bloqué sur les problèmes exposés par l&#8217;équipe, mais essayez de les voir sous une vision plus globale, dans le contexte de l&#8217;entreprise.</li><li>&#8230; et le temps de la réflexion : comme le dit le proverbe, la nuit porte conseil. Sortez régulièrement la tête du guidon, pour aborder les problématiques sur un mode plus détendu.</li><li>Posez des questions, exposez vos idées : creusez les problématiques avec votre équipe en utilisant <em>quoi</em> et <em>comment</em>. Evitez <em>pourquoi</em>, qui entraine trop souvent une réaction de défense. Et quand vous avez une idée à exposer, évitez de la tourner en interrogation, vous serez plus convainquant.</li><li>Mettez les pieds dans le plat : n&#8217;ayez pas peur des remises en cause de grande échelle ou d&#8217;aborder des problèmes majeurs. En revanche, ne poussez pas votre équipe à appliquer une décision à laquelle elle n&#8217;adhère pas.</li><li>Expérimentez le changement : le changement est parfois effrayant. Proposez à votre équipe d&#8217;aborder les changements sur le thème de l&#8217;expérimentation (&#8216;Et si nous changions tel paramètre&#8230;&#8217;). Cela encouragera l&#8217;implication personnelle et ancrera l&#8217;habitude de réaliser des ajustements réguliers. La rétrospective est un moment idéal pour exposer ces expérimentations.</li><li>Avancez avec l&#8217;énergie de l&#8217;équipe : utilisez votre équipe pour résoudre en premier lieu des challenges <em>mineurs</em>. Elle accumulera ainsi de la confiance et connaitra la joie d&#8217;un projet qui avance. Cette énergie emmagasinée vous permettra de relever ensuite les challenges les plus ardus.</li><li>Ayez le courage de vos opinions : il est fréquent qu&#8217;une équipe remette en cause les décisions de son coach. Ayez le courage de défendre vos points de vue, mais faites malgré tout preuve de patience et de diplomatie.</li></ul><p>En plus de cet exposé, les participants à l&#8217;atelier ont ajouté quelques points assez bien vus :</p><ul><li>Parfois, le meilleur choix est de ne rien faire</li><li>Autorisez vous des absences, afin que votre équipe prenne la main</li><li>Appropriez vous le langage client</li><li>Laissez à l&#8217;équipe le temps de digérer vos propositions, ne vous entêtez pas</li><li>Positivez, chaque avancée est une petit victoire</li><li>N&#8217;exposez pas un membre de votre équipe à l&#8217;opprobre publique</li><li>Gérez un backlog de sujets de coaching</li></ul><p>Nous avons aimé cet article, car bien qu&#8217;il énonce un certain nombre de vérités qui peuvent sembler banales, voir ici réunis tous ces points qui permettent de retrouver certaines bases dont les coaches désabusés (ça arrive à tout le monde) s&#8217;éloignent parfois.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="AnalysezvotrecodeFlexavecFlexP"></a>Analysez votre code Flex avec FlexPMD !</h4><p>Flex Tutorial nous parle dans <a
title="cet article" href="http://www.flex-tutorial.fr/2009/09/03/flexpmd-un-outil-pour-faire-laudit-de-vos-projets-flex-as3-air/">cet article</a> de la sortie de FlexPMD. Enfin un outil d&#8217;analyse de code disponible pour Flex.<br
/> Ce projet a été développé par <a
title="Xavier Agnetti d'Adobe" href="http://blogs.adobe.com/xagnetti/">Xavier Agnetti d&#8217;Adobe</a>, pour faire de l&#8217;audit de code. Il fournit maintenant 84 règles comme la détection des variables non utilisées ou encore le calcul de la complexité cyclomatique. Pour plus de détails ça se passe <a
title="ici" href="http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD">ici</a>.<br
/> Il est utilisable avec Maven, Ant ou en simple ligne de commande.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SortiedOpenXava"></a>Sortie d&#8217;OpenXava 3.1.4</h4><p><a
title="OpenXava 3.1.4" href="http://www.gestion400.com/web/guest/home">OpenXava 3.1.4</a> est sortie. OpenXava est un framework <a
title="MDA" href="http://fr.wikipedia.org/wiki/Model_driven_architecture">MDA</a> qui permet de générer des applications <a
title="CRUD" href="http://fr.wikipedia.org/wiki/CRUD">CRUD</a> Java à partir d&#8217;un modèle de données (POJOs annotés en JPA).</p><p>OpenXava intègre des fonctionnalités avancées comme : la génération des rapports, l&#8217;export Excel, les formulaires de recherche, le tri, la validation des données, l&#8217;impression &#8230;</p><p>Ce framework permet aussi de créer des applications sophistiquées avec une logique complexe et des IHM avancées.</p><p>OpenXava s&#8217;intègre facilement avec des portails Java comme <a
title="Liferay" href="http://www.liferay.com/web/guest/home">Liferay</a>, <a
title="WebSphere Portal" href="http://www-01.ibm.com/software/websphere/portal/">WebSphere Portal</a>, et <a
title="JetSpeed" href="http://portals.apache.org/jetspeed-1/">JetSpeed</a>.</p><p>Les principales nouveautés de cette version :</p><ul><li>L&#8217;annotation @Formula pour les modes liste et détail.</li><li>Des formateurs des données pour le mode liste.</li><li>Support des langues : serbe et suédois</li><li>Support de Liferay 5.2.3 avec Apache Tomcat 6.</li></ul><p>Plusieurs <a
title="dmos" href="http://www.gestion400.com/web/guest/demos">démos</a> sont disponibles.</p><p>Le projet est fourni sous licence LGPL.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/09/07/revue-de-presse-xebia-125/feed/</wfw:commentRss> <slash:comments>0</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>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/06/02/revue-de-presse-xebia-111/</link> <comments>http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#comments</comments> <pubDate>Tue, 02 Jun 2009 10:52:21 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[Flash]]></category> <category><![CDATA[Flash Catalyst]]></category> <category><![CDATA[FlashBuilder]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[FlexUnit]]></category> <category><![CDATA[G1]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Google IO]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[Jetty]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SmartGWT]]></category> <category><![CDATA[Tellerium]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2094</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. RIA Sortie de SmartGWT 1.1 FlashBuilder 4 supportera FlexUnit 4 JavaFX 1.2 est arrivé Le coin de la technique G1 Payant ! Oracle sonne-t-il le glas des machines virtuelles Java gratuites ? Jetty dévoile sa roadmap Sortie de Tellerium 0.6.0 RC1 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>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#SortiedeSmartGWT">Sortie de SmartGWT 1.1</a></li><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#FlashBuildersupporteraFlexUnit">FlashBuilder 4 supportera FlexUnit 4</a></li><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#JavaFXestarriv">JavaFX 1.2 est arrivé</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#GPayantOraclesonnetilleglasdes">G1 Payant ! Oracle sonne-t-il le glas des machines virtuelles Java gratuites ?</a></li><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#Jettydvoilesaroadmap">Jetty dévoile sa roadmap</a></li><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#SortiedeTelleriumRC">Sortie de Tellerium 0.6.0 RC1</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/02/revue-de-presse-xebia-111/#ConfrenceGoogleIO">Conférence Google  IO 2009</a></li><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#AdobeprsenteFlashCatalystParis">Adobe présente Flash Catalyst à Paris</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="SortiedeSmartGWT"></a>Sortie de SmartGWT 1.1</h4><p>Il aura fallu attendre près de 6 mois pour pouvoir apprécier la nouvelle version de <a
href="http://code.google.com/p/smartgwt/" title="SmartGWT" >SmartGWT</a>, le wrapper GWT de <a
href="http://www.smartclient.com/" title="SmartClient" >SmartClient</a> par <a
href="http://www.jroller.com/sjivan/" title="Sanjiv Jivan" >Sanjiv Jivan</a> (<a
href="http://blog.xebia.fr/2008/12/01/revue-de-presse-xebia-85/#SortiedeSmartGWT" title="sortie de la version 1.0 lors d'une précédente revue de presse" >sortie de la version 1.0 lors d&#8217;une précédente revue de presse</a>), information relayée par l&#8217;<a
href="http://www.jroller.com/sjivan/entry/smartgwt_out_of_beta_v1" title="auteur" >auteur</a> et par <a
href="http://www.theserverside.com/news/thread.tss?thread_id=54747" title="The Server Side" >The Server Side</a>.</p><p>Cette version 1.1 apporte de nombreuses nouveautés (liste exhaustive sur la <a
href="http://www.smartclient.com/smartgwt/release_notes.html" title="release note" >release note</a>) :</p><ul><li>Correction de <a
href="http://code.google.com/p/smartgwt/issues/list?can=1&#038;q=label:SmartGWT-1.0b3" title="plus de 50 bugs" >plus de 50 bugs</a>.</li><li>Amélioration générale des performances des composants et des skins.</li><li>Champs de <a
href=" http://www.smartclient.com/smartgwt/showcase/#grid_formula_sumamry_builder_new_category" title="formules et rsums" >formules et résumés</a> (wizards, bindable avec des DataBoundComponent&#8230;).</li><li>Support du <em>GWT-RPC DataSource</em> avec les <em>DataBoundComponent</em> (tableaux, arbres, menus&#8230;).</li><li>Nombreuses documentations <em>Javadoc</em> (le gros défaut de <a
href="http://code.google.com/p/gwt-ext/" title="GWTExt" >GWT-Ext</a>).</li><li>API de récupération d&#8217;état de la vue depuis le serveur (pour de nombreux composants).</li><li>Nouveaux exemples dans le <a
href="http://www.smartclient.com/smartgwt/showcase" title="Showcase" >Showcase</a> au niveau de <em>New Samples</em>.</li><li>Un projet <em>Helloworld</em> pour SmartGWT avec GWT 1.6 &#8230;</li></ul><p>Une librairie open source <em>gratuite dans son intégralité</em> (<a
href="http://www.smartclient.com/product/index.jsp" title="licence LGPL" >licence LGPL</a>), <a
href="http://www.smartclient.com/product/download.jsp" title="ça ne se refuse pas" >ça ne se refuse pas</a> ou au moins <a
href="http://www.smartclient.com/smartgwt/showcase/#grid_grouping_custom_new_category" title="a se teste" >ça se teste</a> !</p><h4><a
name="FlashBuildersupporteraFlexUnit"></a>FlashBuilder 4 supportera FlexUnit 4</h4><p>Bonne nouvelle pour les développeurs Flex, nous apprenons par <a
href="http://www.insideria.com/2009/05/flashbuilder4-will-support-fle.html" title="InsideRIA" >InsideRIA</a> que FlexUnit 4 pourra être utilisé sur -FlexBuilder 4- <a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#FlexBuilderdevientFlashBuilder" title="FlashBuilder 4" >FlashBuilder 4</a>.<br
/> Dans cet article, l&#8217;auteur nous présente les nouvelles fonctionnalités que propose FlexUnit 4 telles que :</p><ul><li>Création simplifiée de suites de tests.</li><li>Création et intégration facile de test runner à d&#8217;autres frameworks.</li><li>Utilisation de l&#8217;intégration continue grâce à une automatisation de l&#8217;intégration.</li><li>Meilleure gestion des tests asynchrones.</li><li>Meilleure gestion des exceptions.</li><li>Comme les annotations en Junit 4, les tests peuvent être gérés par les <a
href="http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_3.html" title="Metadata" >Metadata</a>.</li></ul><p>La prochaine étape maintenant est d&#8217;intégrer le projet à FlashBuilder 4. Il est d&#8217;ailleurs possible de <a
href="http://bugs.adobe.com/jira/browse/FB-18873" title="voter pour ce projet" >voter pour ce projet</a>. Si cela vous intéresse n&#8217;hésitez pas à voter vous aussi.</p><h4><a
name="JavaFXestarriv"></a>JavaFX 1.2 est arrivé</h4><p>En accord avec le planning annoncé dès décembre dernier lors de <a
href="http://devoxx.com/" title="Devoxx" >Devoxx</a>, une nouvelle version de JavaFX vient d&#8217;être <a
href="http://javafx.com/" title="mise à disposition" >mise à disposition</a>. Les apports sont nombreux et comblent certains manques de la version 1.1. Le site de JavaFX propose <a
href="http://javafx.com/docs/articles/javafx1-2.jsp" title="un tour d'horizon" >un tour d&#8217;horizon</a> très complet des nouveautés et Stephen Chin en présente <a
href="http://steveonjava.com/2009/05/31/javafx-1-2-top-10/" title="un rsum accompagn dun guide de migration" >un résumé accompagné d&#8217;un guide de migration</a>. On retiendra :</p><ul><li>Ajout de <em>widgets</em> propres à JavaFX, <em>skinnables</em> et disponibles sur toute les plate-formes. Il n&#8217;est donc plus nécessaire de faire appel à des composants Swing (qui étaient inaccessibles sur mobile). L&#8217;ensemble des composants simples sont disponibles (bouton, checkbox, &#8230;), par contre la <code>ListView</code> est le seul composant de haut niveau à être fourni, pas de <em>table</em>, ni de <em>tree</em>.</li><li>Ajout de composants dédiés à la création de graphiques de type <em>Area, Bar, Bubble, Line, Pie, Scatter</em> et <em>X/Y</em>.</li><li>Ajout de <a
href="http://java.sun.com/developer/technicalArticles/javafx/v1_2_newlayouts/" title="nouveaux layouts " >nouveaux <em>layouts</em> </a> en supplément des <code>VBox</code> et <code>HBox</code> déjà disponibles.</li><li>Support de Linux et Solaris.</li></ul><p>La compatibilité des binaires générés par JavaFX n&#8217;est pas assurée entre cette nouvelle version 1.2 et ses prédécesseurs. Il sera donc nécessaire de recompiler les applications pour assurer la migration.</p><p>Le nouveau JavaFX sera donc sorti dans les temps pour être le sujet de nombreuses présentations et annonces lors de <a
href="http://java.sun.com/javaone/" title="JavaOne" >JavaOne</a> qui débute aujourd&#8217;hui même à San Fransisco. Comme <a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#JavaFXinformationsetcontrovers" title="nous vous en parlions" >nous vous en parlions</a> il y a quelques semaines, le support des TVs <em>pourrait</em> y faire l&#8217;objet d&#8217;une démonstration.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="GPayantOraclesonnetilleglasdes"></a>G1 Payant ! Oracle sonne-t-il le glas des machines virtuelles Java gratuites ?</h4><p>Oracle va-t-il rendre Java payant ? Cette question que tous posaient après l&#8217;annonce du rachat de Sun revient aujourd&#8217;hui au premier plan avec une phrase sibylline de l&#8217;annonce de la <a
href="http://java.sun.com/javase/6/webnotes/6u14.html" title="version 6 update 14 de la JVM de Sun" >version 6 update 14 de la JVM de Sun</a> :<br
/> <quote><br
/> <em>&laquo;&nbsp;Although G1 is available for use in this release, note that <strong>production use of G1 is only permitted where a Java support contract has been purchased</strong>&#8230;&nbsp;&raquo;</em><br
/> </quote><br
/> En théorie, la fonctionnalité concernée est encore expérimentale et le rachat de Sun par Oracle n&#8217;est pas clos : Oracle n&#8217;a pas à s&#8217;immiscer dans la gestion au quotidien de Sun  ; il n&#8217;y aurait donc pas de raison que Sun change de stratégie sur la JVM.<br
/> Cependant, on n&#8217;a jamais vu de telles limitations contractuelles sur la JVM de Sun. Si les JVM mobile et temps réel ont toujours été payantes chez Sun comme IBM et BEA/Oracle, les JVMs serveur et poste de travail étaient traditionnellement gratuites &#8230;  à un détails près : la JVM JRockit de BEA était devenue payante dès le rachat par Oracle ; on avait alors invoqué des considérations contractuelles qui empêchaient Oracle de distribuer gratuitement une JVM.</p><p>C&#8217;est aujourd&#8217;hui la très répandue JVM de Sun qui est menacée ; une fois de plus à la suite d&#8217;un rachat par Oracle. Faut-il craindre la fin des JVM gratuites ? Pour le poste de travail, cela parait très improbable faute de modèle économique crédible mais pour les serveurs, un revirement d&#8217;Oracle semble possible et dans la lignée de la nouvelle politique de JRockit. Il resterait alors disponibles gratuitement les JVM <a
href="http://www.ibm.com/developerworks/java/jdk/index.html" title="IBM J9" >IBM J9</a> et <a
href="http://openjdk.java.net/" title="Open JDK" >Open JDK</a>, le projet Open Source dont la gouvernance par Sun a été sujette à polémique ces derniers mois. Nous noterons au passage que G1 sera inclus dans la <a
href="http://openjdk.java.net/projects/jdk7/features/#f230" title="version 7 dOpen JDK" >version 7 d&#8217;Open JDK</a>.</p><p>Pour revenir sur les nouveautés de la JVM 6 update 14, nous retiendrons : la compression des pointeurs (<code>-XX:+UseCompressedOops</code>) pour les JVM 64 bits (cf. <a
href="http://blog.xebia.fr/2008/05/26/revue-de-presse-xebia-58/#Javabitspassisouventunebonneid" title="Java 64 bits, pas si souvent une bonne idée" >Java 64 bits, pas si souvent une bonne idée</a>), l&#8217;optimisation des accès aux variables utilisées sur un seul thread ( <code>-XX:+DoEscapeAnalysis</code> ) et ce <a
href="http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/" title="Garbage First (G1) Garbage Collector" >Garbage First (G1) Garbage Collector</a> optimisé pour la gestion de grands volumes de mémoire mais réservé en production aux souscripteurs d&#8217;un contrat de support.</p><h4><a
name="Jettydvoilesaroadmap"></a>Jetty dévoile sa roadmap</h4><p>Comme tous les conteneurs Servlet / JSP du marché, <a
href="http://www.eclipse.org/jetty/" title="Jetty" >Jetty</a> se prépare à l&#8217;arrivée de la <a
href="http://www.jcp.org/en/jsr/detail?id=315" title="JSR-315 (Servlet 3.0)" >JSR-315 (Servlet 3.0)</a> prévue pour cet été. Par ailleurs, il opère également divers changements dûs à sa récente <a
href="http://www.eclipse.org/proposals/jetty/" title="intgration  la fondation Eclipse" >intégration à la fondation Eclipse</a>.</p><p>Greg Wilkins a présenté <a
href="http://blogs.webtide.com/gregw/entry/jetty_6_jetty_7_and" title="une roadmap dtaille" >une roadmap détaillée</a> des fonctionnalités qui seront présentes dans les futures versions de Jetty.</p><p><strong>Jetty 6</strong> reste la version stable en attendant l&#8217;arrivée de son successeur.</p><p><strong>Jetty 7</strong> est la branche de développement que Greg Wilkins conseille d&#8217;adopter pour les projets débutant actuellement. Elle marquera la migration vers le package <code>org.eclipse.jetty</code>, et apportera une remodularisation accompagnée d&#8217;un packaging en bundle OSGi en supplément des artifacts Maven, et une préparation à Servlet 3.0 dont il proposera une <em>preview</em>.</p><p><strong>Jetty 8</strong> ne différera guère de son prédécesseur, il s&#8217;agira avant tout d&#8217;un <em>rebuild</em> en Java 1.6 exclusivement, accompagné d&#8217;une conformance stricte à Servlet 3.0 dont la spécification sera alors finalisée.</p><p>Aucune date précise n&#8217;est indiquée par l&#8217;auteur, mais il semble que la finalisation de la spécification Servlet 3.0 constituera le principal régulateur du calendrier de Jetty.</p><h4><a
name="SortiedeTelleriumRC"></a>Sortie de Tellerium 0.6.0 RC1</h4><p><a
href="http://code.google.com/p/aost/" title="Tellerium" >Tellerium</a> est un framework de tests unitaires d&#8217;interface utilisateur. Le projet s&#8217;appuie sur <a
href="http://seleniumhq.org/" title="Selenium" >Selenium</a>, est compatible avec JUnit et TestNG et permet d&#8217;écrire les tests en Java, Groovy ou par un DSL.</p><p>Les nouvelles fonctionnalités entre la version 0.5.0 et cette 0.6.0 sont <a
href="http://code.google.com/p/aost/wiki/WhatsNewInTellurium_0_6_0#New_Features" title="plutt nombreuses" >plutôt nombreuses</a>, on notera ainsi :</p><ul><li>Ajout du sélecteur <a
href="http://jquery.com/" title="jQuery" >jQuery</a> (et du jQuery Cache).</li><li>Support de Selenium 1.0 Beta 2 et Groovy 1.6.</li><li>Core (<em>Include</em>, <em>setCustomConfig</em>, <em>Dump method</em> &#8230;).</li><li>Selenium Grid (tests en parallèle).</li><li>Archetype Maven (JUnit et TestNG) &#8230;</li></ul><p>Plusieurs nouvelles fonctionnalités donc mais surtout de nombreuses optimisations de performances, des tests plus rapides et plus faciles à écrire, le tout utilisant les versions les plus récentes des projets dont il dépend. A noter aussi le plugin pour FireFox <a
href="http://code.google.com/p/aost/wiki/announcements#Tellurium_UI_Model_Plugin_(TrUMP)_0.1.0_is_released" title="TrUMP" >TrUMP</a> (Tellerium UI Model Plugin) permettant d&#8217;écrire plus rapidement les tests (enregistrement des clicks, validation et customisation, export Groovy&#8230;).</p><p>Le téléchargement se passe <a
href="http://code.google.com/p/aost/downloads/list" title="par ici" >par ici</a>, et pour les <em>pom</em> ça se passe <a
href="http://code.google.com/p/aost/wiki/announcements#Tellurium_0.6.0_RC1_is_out" title="en bas de page par l" >en bas de page par là</a>.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="ConfrenceGoogleIO"></a>Conférence Google  IO 2009</h4><p><a
href="http://code.google.com/events/io/" title="Google IO 2009" >Google I/O 2009</a> s&#8217;est tenu la semaine dernière à San Francisco. Il s&#8217;agit d&#8217;une des conférences destinées aux développeurs utilisateurs des applications et des API de Google. L&#8217;actualité autour de cette conférence étant relativement importante, nous avons décidé de traiter celle-ci dans un article séparé.</p><p>En voici les grandes lignes de ce qui s&#8217;est vu à Google I/O :</p><ul><li>Le futur du Web, avec les premières <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#HTMLlepremierwhaoueffect" title="dmonstrations moustillantes Html 5" >démonstrations émoustillantes Html 5</a>.</li><li><a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#GoogleWavelagrosseannoncedelac" title="Google Wave" >Google Wave</a>, le prochain outil de communication et collaboration made in Google.</li><li>La <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#GWTaucurdelastratgieGoogle" title="rconciliation de Google avec GWT" >réconciliation de Google avec GWT</a>, sortie de <strong>Gwt Query</strong>.</li><li>Le futur d&#8217;Android, avec l&#8217;annonce de la branche <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#AndroidDonutrecherchesetfiltre" title="Android 20  Donut" >Android 2.0 : Donut</a>.</li><li><a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#JavasurGoogleAppEngineouvertto" title="Java et Google App Engine" >Java et Google App Engine</a> en GA.</li><li><a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#GoogleWebElementswidgetspourvo" title="Google Web Elements" >Google Web Elements</a>, comment intégrer les services Google dans vos pages web.</li><li>Les macros dans Google Document, avec <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#GoogleAppsScriptscriptezvosGoo" title="Google Apps Script" >Google Apps Script</a>.</li><li>Arrivée des <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#Chromearrivedesextensions" title="extensions dans Chrome" >extensions dans Chrome</a>.</li></ul><p>Pour en savoir plus, vous pouvez lire <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/" title="notre billet ddi" >notre billet dédié</a> au sujet.</p><h4><a
name="AdobeprsenteFlashCatalystParis"></a>Adobe présente Flash Catalyst à Paris</h4><p>Mercredi 3 Juin 2009 à 16h, Adobe propose une présentation de Flash Catalyst. Cet outil destiné aux designers permet de concevoir des composants graphiques riches sans programmation. Ces créations peuvent ensuite être fournies à un développeur Flex pour que ce dernier se charge de la programmation intelligente.<br
/> Cette présentation va se diviser en deux sessions sous formes de conférences et d&#8217;ateliers :</p><ul><li>Une session développeur.</li><li>Une session designer.</li></ul><p>Elle se clôtura par un cocktail à 19h30.<br
/> Pour plus d&#8217;informations ou pour vous inscrire ça se passe <a
href="http://events.adobe.co.uk/cgi-bin/event.cgi?country=fr&#038;eventid=8236" title="ici" >ici</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/</link> <comments>http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#comments</comments> <pubDate>Mon, 25 May 2009 16:50:06 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Flash]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[IntelliJ IDEA]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JDO]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2041</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Sun veut créer un Java App Store MySQL forké par son fondateur RIA FlexBuilder devient FlashBuilder Le coin de la technique Nos IDEs se corrigent Les nouveautés de JDO 2.3 Evènements de notre communauté en France et à l&#8217;étranger Retour [...]]]></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/05/25/revue-de-presse-xebia-110/#SunveutcrerunJavaAppStore">Sun veut créer un Java App Store</a></li><li><a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#MySQLforkparsonfondateur">MySQL forké par son fondateur</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#FlexBuilderdevientFlashBuilder">FlexBuilder devient FlashBuilder</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#NosIDEssecorrigent">Nos IDEs se corrigent</a></li><li><a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#LesnouveautsdeJDO">Les nouveautés de JDO 2.3</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/05/25/revue-de-presse-xebia-110/#RetoursurlaGrlaConfrenceGroovy">Retour sur la Gr8, la Conférence Groovy</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="SunveutcrerunJavaAppStore"></a>Sun veut créer un Java App Store</h4><p>Jonathan Schwartz, CEO de Sun Microsystems, <a
href="http://blogs.sun.com/jonathan/entry/will_java_be_the_world" title="vient dannoncer sur son blog" >vient d&#8217;annoncer sur son blog</a> son intention de créer un Java App Store sur le même modèle que l&#8217;iPhone App Store. Aucun détail précis n&#8217;est fourni au-delà de l&#8217;annonce.</p><p><a
href="http://arstechnica.com/open-source/news/2009/05/sun-hopes-to-cash-in-on-java-install-base-with-new-app-store.ars" title="Ryan Paul fait une analyse raliste" >Ryan Paul fait une analyse réaliste</a> de ce projet en rappelant qu&#8217;il n&#8217;existe pas, selon lui, en dehors d&#8217;Azureus et Eclipse, d&#8217;applications Java pour PC très populaires et doute, par conséquent, du marché qui s&#8217;ouvrirait à cet App Store.</p><p>Reste qu&#8217;il s&#8217;agirait là d&#8217;un modèle de distribution d&#8217;application inédit sur PC qui pourrait séduire certains utilisateurs souhaitant obtenir facilement et rapidement des applications dont le niveau de qualité serait garanti par Sun, alors qu&#8217;actuellement les filières Open Source restent le principal vecteur de diffusion d&#8217;applications Java.</p><h4><a
name="MySQLforkparsonfondateur"></a>MySQL forké par son fondateur</h4><p><a
href="http://askmonty.org/wiki/index.php/Main_Page" title="Monty Program Ab" >Monty Program Ab</a> est une société créé par Michael Widenius, le fondateur de MySQL. Son but est de maintenir le projet <a
href="http://askmonty.org/wiki/index.php/MariaDB" title="MariaDB" >MariaDB</a>, un fork de MySQL estampillé &#8216;Open&#8217; et &#8216;Libre&#8217;, et d&#8217;offrir des services autour de ce projet. En collaboration avec Percona, une autre entreprise offrant de l&#8217;expertise MySQL, ils viennent de créer l&#8217;<a
href="http://opendatabasealliance.com/" title="Open Database Alliance" >Open Database Alliance</a> afin de former une entité unique derrière l&#8217;ensemble des développements MySQL libres.</p><p>Plusieurs réactions et analyses ont suivi l&#8217;annonce :</p><ul><li><a
href="http://it.toolbox.com/blogs/database-soup/monty-declares-open-database-alliance-31633" title="Josh Berkus met lhypothse" >Josh Berkus émet l&#8217;hypothèse</a> que l&#8217;équipe MySQL actuellement chez Sun soit embauchée par Monty Program Ab.</li><li><a
href="http://blogs.the451group.com/opensource/2009/05/21/are-closed-source-mysql-storage-engines-compatible-with-mariadb/" title="Matthew Aslett sinquite" >Matthew Aslett s&#8217;inquiète</a> des limitations qu&#8217;imposeront la licence GPL de MariaDB quant à l&#8217;inclusion d&#8217;un éventuel <em>storage engine</em> qui ne suivrait pas cette licence.</li><li><a
href="http://arstechnica.com/open-source/news/2009/05/open-database-alliance-hedges-against-oracle-plans-for-mysql.ars" title="Ryan Paul met en avant" >Ryan Paul met en avant</a> l&#8217;ambiguïté de cette annonce en raison de l&#8217;absence de définition du type de relation entre l&#8217;Alliance et Sun / Oracle.</li></ul><p>Dès lors, comme sur de nombreux autres sujets, il sera nécessaire d&#8217;attendre de connaître le positionnement d&#8217;Oracle sur la question MySQL pour pouvoir établir des certitudes quant à l&#8217;avenir de ce SGBDR.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="FlexBuilderdevientFlashBuilder"></a>FlexBuilder devient FlashBuilder</h4><p>Une nouvelle qui fait réagir la communauté <em>Flex</em> depuis plus d&#8217;une semaine est l&#8217;annonce du nouveau nom de l&#8217;IDE <em>FlexBuilder</em> qui, dans sa version 4, se nommera désormais <em>FlashBuilder</em>.</p><p>Les <em>flasheurs / flexeurs</em>, que l&#8217;on pourra lire sur <a
href="http://theflashblog.com/?p=993" title="The Flash Blog" >The Flash Blog</a>, <a
href="http://www.flex-tutorial.fr/2009/05/18/flash-builder-4-sera-le-nom-du-prochain-flex-builder/" title="Adobe Flex Tutorial" >Adobe Flex Tutorial</a> ou bien <a
href="http://codemoiunmouton.wordpress.com/2009/05/16/flex-builder-devient-flash-builder/" title="Code moi un mouton" >Code moi un mouton</a>, se réjouissent de la standardisation du terme Flash (il faut rappeler qu&#8217;au final, une application <em>Flex</em> est compilé en <em>SWF</em> donc du <em>Flash</em> lisible par <em>Flash Player</em>). Toutefois, quelques craintes subsistent chez certains concernant ce nouveau terme <em>Flash</em>, qui selon eux ferrait moins <em>professionnel / entreprise</em>. Au moins, maintenant tout est clair : avec <em>FlashBuilder</em>, vous allez créer des applications <em>Flash</em> pour <em>Flash Player</em> !</p><p>Pour le reste, rien ne change. <em>Flex</em>, c&#8217;est un framework <em>Actionscript</em> qui s&#8217;appuiera sur le <em>Flex SDK</em>. Le plugin sera toujours un plugin Eclipse. Et le développeur <em>Flex</em> restera un développeur <em>Flex</em> ! Et vous, que pensez-vous de ce changement de nom ?</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="NosIDEssecorrigent"></a>Nos IDEs se corrigent</h4><p>C&#8217;est le mot d&#8217;ordre actuel. Peu, voir pas de nouvelles fonctionnalités mais de nombreuses corrections de bugs pour <a
href="http://www.eclipse.org/downloads/" title="Eclipse IDE" >Eclipse IDE</a> et <a
href="http://www.jetbrains.com/idea/download/index.html" title="IntelliJ IDEA" >IntelliJ IDEA</a>.</p><p>Ainsi, Eclipse nous annonce fièrement la <a
href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&#038;short_desc_type=allwordssubstr&#038;short_desc=&#038;classification=Eclipse&#038;classification=RT&#038;product=Equinox&#038;product=JDT&#038;product=PDE&#038;product=Platform&#038;target_milestone=3.5+RC1&#038;long_desc_type=allwordssubstr&#038;long_desc=&#038;bug_file_loc_type=allwordssubstr&#038;bug_file_loc=&#038;status_whiteboard_type=allwordssubstr&#038;status_whiteboard=&#038;keywords_type=allwords&#038;keywords=&#038;bug_status=RESOLVED&#038;bug_status=VERIFIED&#038;bug_status=CLOSED&#038;resolution=FIXED&#038;emailtype1=substring&#038;email1=&#038;emailtype2=substring&#038;email2=&#038;bugidtype=include&#038;bug_id=&#038;votes=&#038;chfieldfrom=&#038;chfieldto=Now&#038;chfieldvalue=&#038;cmdtype=doit&#038;order=Reuse+same+sort+as+last+time&#038;field0-0-0=noop&#038;type0-0-0=noop&#038;value0-0-0=" title="correction de 341 bugs" >correction de 341 bugs</a> (rien que ça !) pour son IDE en version 3.5 RC1, mais pas de nouvelles fonctionnalités. Du côté de chez IntelliJ, c&#8217;est plus d&#8217;une cinquantaine de <a
href="http://www.jetbrains.com/idea/features/release_notes812.html" title="bugs et exceptions corrigés" >bugs et exceptions corrigés</a> pour la version IDEA 8.1.2, avec quelques optimisations de performance (<a
href="http://www.jetbrains.com/idea/features/release_notes812.html#Performance_Problem" title="éditeurs de fichiers Java et SQL" >éditeurs de fichiers Java et SQL</a>) et 2 nouvelles fonctionnalités (au niveau du <a
href="http://www.jetbrains.com/idea/features/release_notes812.html#New_Feature" title="debugger et des raccourcis" >debugger et des raccourcis</a>).</p><p>Le téléchargement d&#8217;Eclipse 3.5 RC1 se passe <a
href=" http://download.eclipse.org/eclipse/downloads/drops/S-3.5RC1-200905151143/index.php" title="par ici" >par ici</a> et pour IntelliJ IDEA 8.1.2 c&#8217;est par <a
href="http://www.jetbrains.com/idea/download/" title="l" >là</a>.</p><h4><a
name="LesnouveautsdeJDO"></a>Les nouveautés de JDO 2.3</h4><p><a
href="http://java.sun.com/jdo/index.jsp" title="JDO (Java Data Objects)" >JDO (Java Data Objects)</a>, longtemps délaissé au profit d&#8217;Hibernate, puis de JPA, a été récemment remis en avant par <a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#GoogleAppEnginepourJavaetGroov" title="le support Java de Google App Engine" >le support Java de Google App Engine</a> qui préconise l&#8217;utilisation de cette API pour assurer la persistance des données dans les applications qu&#8217;il héberge.</p><p>Andy Jefferson, co-fondateur du projet <a
href="http://www.datanucleus.org/" title="DataNucleus" >DataNucleus</a>, vient de poster un <a
href="http://java.dzone.com/articles/whats-new-jdo-23" title="tour d'horizon des nouveautés de JDO 2.3" >tour d&#8217;horizon des nouveautés de JDO 2.3</a> dont l&#8217;API est actuellement disponible en <a
href="http://db.apache.org/jdo/releases/release-2.3-ea.cgi" title="early access" ><em>early access</em></a>. Ces nouveautés sont :</p><ul><li><strong>Metadata API</strong> : la définition des classes à persister pouvait jusqu&#8217;alors se faire par XML ou par annotations. Cette JDO 2.3 vient ajouter une troisième possibilité avec cette API permettant de définir dynamiquement des classes persistables.</li><li><strong>Enhancer API</strong> : cette API vient en complément de la précédente. En effet dans la mesure où les implémentations de JDO s&#8217;appuient sur du <em>bytecode enhancement</em> des classes persistables, il est nécessaire d&#8217;offrir aux développeurs un moyen d&#8217;invoquer <em>l&#8217;enhancer</em> après avoir déclaré dynamiquement une nouvelle classes via la Metadata API.</li><li><strong>Timeout et annulation de requêtes</strong> : dans le monde JPA, ces deux fonctionnalités ne sont pas supportées par la spécification mais seulement en tant qu&#8217;extensions propriétaires.</li><li><strong>Contrôle des verrous en lecture des objets</strong> : permet un contrôle fin des objets qui doivent être verrouillés automatiquement lors de la lecture, évitant ainsi d&#8217;opérer un verrouillage global.</li></ul><p>Répondant à des besoins modernes, ces changements devraient être appréciés par les développeurs. Reste que l&#8217;avenir de JDO est flou : ne pouvant rivaliser avec la popularité de JPA, JDO pourrait se maintenir dans des cas d&#8217;utilisation particuliers et ainsi perdurer dans les années à venir tout en restant marginal.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="RetoursurlaGrlaConfrenceGroovy"></a>Retour sur la Gr8, la Conférence Groovy</h4><p>La première édition de la <a
href="http://www.gr8conf.org/" title="Gr8 Conference" >Gr8 Conference</a> vient de se terminer. Il s&#8217;agit d&#8217;une conférence entièrement dédiée au langage <a
href="http://groovy.codehaus.org/" title="Groovy" >Groovy</a> et aux frameworks gravitant autour. On trouve de nombreux compte rendu sur Internet, <a
href="http://gettinggroovy.wordpress.com/" title="Peter Bell en signe le plus complet" >Peter Bell en signe le plus complet</a>. Parmi les points les plus intéressants on compte :</p><ul><li>Jim Shingler qui a présenté une introduction à Griffon, un framework Groovy visant à faciliter la production de clients lourds en Swing</li><li>Une session portant sur la création de plugins pour Grails</li><li>Graeme Rocher qui a fait une présentation au titre très explicite &#8216;Building a Twitter Clone in Grails&#8217;</li></ul><p>Par ailleurs les cas d&#8217;utilisation de Groovy ont été passés en revue par Dierk Konig :</p><ul><li>Utilisation en tant que glue et création d&#8217;infrastructure des applications</li><li>Ecriture des règles métiers complexes évoluant régulièrement</li><li>Utilisation pour les <em>hot fixes</em>, en s&#8217;appuyant sur le fait que Groovy peut être utilisé de manière interprété</li><li>Définition de fichiers de configuration basés sur la syntaxe Groovy</li><li>Utilisation de Groovy comme unique langage sur un projet de taille réduite ou moyenne</li><li>Utilisation de Groovy comme langage de script pour les tâches courantes (automatisation, installation, déploiement).</li></ul><p>Les organisateurs ont annoncé que l&#8217;ensemble des sessions de cette conférence seront disponibles sur <a
href="http://www.parleys.com" title="Parleys" >Parleys</a> dès que possible.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Ecrire son validateur Flex</title><link>http://blog.xebia.fr/2009/05/20/ecrire-son-validateur-flex/</link> <comments>http://blog.xebia.fr/2009/05/20/ecrire-son-validateur-flex/#comments</comments> <pubDate>Wed, 20 May 2009 11:56:32 +0000</pubDate> <dc:creator>Nicolas Jozwiak</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Flex]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2021</guid> <description><![CDATA[Pour les besoins de l&#8217;un de nos développements Flex, nous avons utilisé les validateurs Flex. De base, le framework nous fournit un ensemble de validateurs (StringValidator, EmailValidator&#8230;), mais il se trouve qu&#8217;ils ne répondaient pas tous à l&#8217;ensemble de nos besoins. En effet, nous avions besoin de valider la longueur d&#8217;une suite de chiffres, mais [...]]]></description> <content:encoded><![CDATA[<p>Pour les besoins de l&#8217;un de nos développements Flex, nous avons utilisé les validateurs Flex. De base, le framework nous fournit un ensemble de validateurs (<code>StringValidator</code>, <code>EmailValidator</code>&#8230;), mais il se trouve qu&#8217;ils ne répondaient pas tous à l&#8217;ensemble de nos besoins. En effet, nous avions besoin de valider la longueur d&#8217;une suite de chiffres, mais le <code>NumberValidator</code> ne permet pas de valider la longueur&#8230; De plus, nous avions aussi besoin d&#8217;une longueur minimale&#8230;</p><p>Heureusement, il est possible d&#8217;écrire votre validateur : il suffit de coder une classe <code>ActionScript</code> qui hérite de <code>mx.validators.Validator</code> et de surcharger la méthode <code>doValidation()</code>. Voici notre validateur permettant de contrôler qu&#8217;une suite de chiffres doit être comprise entre une longueur minimale et une longueur maximale.</p><h4><a
name="Ecritureduvalidateur"></a>Ecriture du validateur</h4><p><code>CustomNumberValidator.as</code></p><pre class="brush: xml; title: ; notranslate">
package validation
{
    import mx.validators.NumberValidator;
    import mx.validators.ValidationResult;
    public class CustomNumberValidator extends NumberValidator {
          public var minLength:Number;
          public var maxLength:Number;
	  public var lengthFieldError:String;
	  public function CustomNumberValidator() {
		super();
	  }
	  override protected function doValidation(value:Object):Array {
          	var results:Array = super.doValidation(value);
		var val:String = value ? String(value) : &quot;&quot;;
		// value has to be between minLength and maxLength
		if ((val.length &gt;= minLength &amp;&amp; val.length &lt;= maxLength) || ((val.length == 0) &amp;&amp; !required)) {
			return results;
		} else {
			return checkForLength(value);
		}
    	   }
	   public function checkForLength(value:Object):Array {
		var results:Array = [];
		results.push(new ValidationResult(
				 true, null, &quot;invalidChar&quot;,
				 lengthFieldError));
		return results;
	   }
    }
}
</pre><p>Tout d&#8217;abord, nous définissons des variables:</p><pre class="brush: xml; title: ; notranslate">
public var minLength:Number; //la longueur minimale de la suite de chiffres
public var maxLength:Number; //la longueur maximale de la suite de chiffres
public var lengthFieldError:String; //message d'erreur si la longueur n'est pas comprise entre minLength et maxLength
</pre><p>Ces 3 variables sont paramétrables lors de la définition du <code>Validator</code> dans le fichier MXML que nous verrons plus loin.</p><p>Comme vous pouvez le voir, dans la méthode <code>doValidation()</code> nous récupérons une chaîne (la suite de chiffres), et nous testons si cette dernière est bien comprise entre <code>minLength</code> et <code>maxLength</code>. Si la validation se passe mal, la méthode retournera un tableau de <code>ValidationResult</code> avec le message d&#8217;erreur que nous avons défini (<code>lengthFieldError</code>), sinon elle renverra un tableau vide.</p><p>Voici le fichier MXML utilisant ce <code>Validator</code>:</p><p><code>XebiaValidator1.mxml</code></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;
                xmlns:validation=&quot;validation.*&quot;
                layout=&quot;absolute&quot;
                width=&quot;520&quot; height=&quot;242&quot;&gt;
    &lt;mx:StringValidator id=&quot;userNameValidator&quot;
		        source=&quot;{userName}&quot;
		        property=&quot;text&quot;
		        requiredFieldError=&quot;User Name can not be empty !&quot;/&gt;
    &lt;validation:CustomNumberValidator id=&quot;commandValidator&quot;
        source=&quot;{commandeId}&quot;
        property=&quot;text&quot;
        minLength=&quot;4&quot;
        maxLength=&quot;20&quot;
        domain=&quot;int&quot;
        required=&quot;true&quot;
        lengthFieldError=&quot;Number command has to be between 4 and 20 digits&quot;/&gt;
    &lt;mx:Panel title=&quot;Command management&quot; x=&quot;86&quot; y=&quot;31&quot;&gt;
    	   &lt;mx:Form defaultButton=&quot;{valideButton}&quot; verticalGap=&quot;20&quot;&gt;
    	        &lt;mx:FormItem label=&quot;User Name&quot;&gt;
    	            &lt;mx:TextInput id=&quot;userName&quot; styleName=&quot;textLogin&quot; width=&quot;172&quot;/&gt;
    	        &lt;/mx:FormItem&gt;
    	        &lt;mx:FormItem label=&quot;Command Number&quot;&gt;
    	            &lt;mx:TextInput id=&quot;commandeId&quot; width=&quot;172&quot;/&gt;
    	        &lt;/mx:FormItem&gt;
    	        &lt;mx:FormItem horizontalAlign=&quot;right&quot; width=&quot;100%&quot;&gt;
    	            &lt;mx:Button id=&quot;valideButton&quot; label=&quot;Validate&quot;/&gt;
    	        &lt;/mx:FormItem&gt;
    	    &lt;/mx:Form&gt;
    &lt;/mx:Panel&gt;
&lt;/mx:Application&gt;
</pre><p>Le résultat:</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/05/xebiavalidator1.swf" width="520" height="242" type="application/x-shockwave-flash" ><param
name="data" value="http://blog.xebia.fr/wp-content/uploads/2009/05/xebiavalidator1.swf" /><param
name="loop" value="false" /><param
name="menu" value="false" /><param
name="movie" value="http://blog.xebia.fr/wp-content/uploads/2009/05/xebiavalidator1.swf" /><param
name="quality" value="high" /><param
name="scale" value="exactfit" /><param
name="src" value="http://blog.xebia.fr/wp-content/uploads/2009/05/xebiavalidator1.swf" /><param
name="type" value="application/x-shockwave-flash" /><embed
width="520" height="242" quality="high" pluginspage="https://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash" src="http://blog.xebia.fr/wp-content/uploads/2009/05/xebiavalidator1.swf"/><br
/> </object></div><p>Dans cet exemple, nous utilisons 2 validateurs (<code>StringValidator</code> et <code>CustomNumberValidator</code>). Au passage, afin d&#8217;utiliser notre validateur nous avons défini un namespace (<code>xmlns:validation="validation.*"</code>)<br
/> En ce qui concerne notre validateur, nous retrouvons nos attributs (<code>minLength</code>, <code>maxLength</code> et <code>lengthFieldError</code>) que nous avons renseignés.</p><h4><a
name="Amliorationdelavalidation"></a>Amélioration de la validation</h4><p>Améliorons notre processus de validation. En effet, pour le moment nous avons les messages d&#8217;erreurs lors du remplissage des champs du formulaire (un Tooltip s&#8217;affiche en cas d&#8217;erreur). Nous allons faire en sorte d&#8217;avoir également ces messages lors du click sur le bouton « Validate ».</p><p><code>XebiaValidator2.mxml</code></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;
                xmlns:validation=&quot;validation.*&quot;
                layout=&quot;absolute&quot;
                width=&quot;520&quot; height=&quot;242&quot;
                initialize=&quot;this.fillValidators()&quot;&gt;
    &lt;mx:Script&gt;
        &lt;![CDATA[
            import mx.events.ValidationResultEvent;
            import mx.controls.Alert;
            import mx.core.Application;
            import mx.validators.Validator;
            public var validatorsList:Array;
            public function fillValidators() : void {
                this.validatorsList = new Array();
                this.validatorsList.push(
                userNameValidator,
                commandValidator);
            }
           public function validateForm():void {
            	var validationErrors:Array = Validator.validateAll(this.validatorsList);
                var isValidForm:Boolean = (validationErrors.length == 0);
                if (isValidForm) {
                    Alert.show(&quot;Validation OK&quot;);
                } else {
                	this.onValidationErrors(validationErrors);
                }
            }
            public function onValidationErrors(errors:Array):void  {
            	var error:ValidationResultEvent;
                var messages:Array = [];
                for each (error in errors) {
                    messages.push(error.message);
                }
                Alert.show(messages.join(&quot;n&quot;),
                		   &quot;ERROR&quot;,
                		   Alert.OK);
            }
        ]]&gt;
    &lt;/mx:Script&gt;
    &lt;mx:StringValidator id=&quot;userNameValidator&quot;
		        source=&quot;{userName}&quot;
		        property=&quot;text&quot;
		        requiredFieldError=&quot;User Name can not be empty !&quot;/&gt;
    &lt;validation:CustomNumberValidator id=&quot;commandValidator&quot;
        source=&quot;{commandeId}&quot;
        property=&quot;text&quot;
        minLength=&quot;4&quot;
        maxLength=&quot;20&quot;
        domain=&quot;int&quot;
        required=&quot;true&quot;
        lengthFieldError=&quot;Number command has to be between 4 and 20 digits&quot;/&gt;
    &lt;mx:Panel title=&quot;Command management&quot; x=&quot;86&quot; y=&quot;31&quot;&gt;
    	   &lt;mx:Form defaultButton=&quot;{valideButton}&quot; verticalGap=&quot;20&quot;&gt;
    	        &lt;mx:FormItem label=&quot;User Name&quot;&gt;
    	            &lt;mx:TextInput id=&quot;userName&quot; styleName=&quot;textLogin&quot; width=&quot;172&quot;/&gt;
    	        &lt;/mx:FormItem&gt;
    	        &lt;mx:FormItem label=&quot;Command Number&quot;&gt;
    	            &lt;mx:TextInput id=&quot;commandeId&quot; width=&quot;172&quot;/&gt;
    	        &lt;/mx:FormItem&gt;
    	        &lt;mx:FormItem horizontalAlign=&quot;right&quot; width=&quot;100%&quot;&gt;
    	            &lt;mx:Button id=&quot;valideButton&quot; label=&quot;Validate&quot; click=&quot;this.validateForm()&quot;/&gt;
    	        &lt;/mx:FormItem&gt;
    	    &lt;/mx:Form&gt;
    &lt;/mx:Panel&gt;
&lt;/mx:Application&gt;
</pre><p>Le résultat:</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/05/xebiavalidator2.swf" width="520" height="242" type="application/x-shockwave-flash" ><param
name="data" value="http://blog.xebia.fr/wp-content/uploads/2009/05/xebiavalidator2.swf" /><param
name="loop" value="false" /><param
name="menu" value="false" /><param
name="movie" value="http://blog.xebia.fr/wp-content/uploads/2009/05/xebiavalidator2.swf" /><param
name="quality" value="high" /><param
name="scale" value="exactfit" /><param
name="src" value="http://blog.xebia.fr/wp-content/uploads/2009/05/xebiavalidator2.swf" /><param
name="type" value="application/x-shockwave-flash" /><embed
width="520" height="242" quality="high" pluginspage="https://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash" src="http://blog.xebia.fr/wp-content/uploads/2009/05/xebiavalidator2.swf"/><br
/> </object></div><p>Dans ce fichier, du code <code>ActionScript</code> a fait son apparition. Dans un premier temps la méthode <code>fillValidators()</code>, appelée lors de l&#8217;initialisation du composant, remplit une liste composée des validateurs référencés par leurs id.</p><p>Par la suite, lors du clic sur « Validate », la méthode <code>validateForm()</code> est appelée. La classe <code>Validator</code> possède une méthode très pratique qui est <code>validateAll()</code>, prenant en paramètre une liste de validateurs. Cette méthode renvoie un tableau vide si la validation a réussi, et sinon il y aura des éléments de type <code>ValidationResultEvent</code> contenant le message que nous affichons. Dans notre exemple, en cas d&#8217;erreurs les messages apparaîtront dans une popup.</p><p>A travers ces deux exemples, nous voyons que le mécanisme de validation de Flex est assez simple, et écrire ses propres validateurs devient un jeu d&#8217;enfant !</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/05/20/ecrire-son-validateur-flex/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/04/27/revue-de-presse-xebia-106/</link> <comments>http://blog.xebia.fr/2009/04/27/revue-de-presse-xebia-106/#comments</comments> <pubDate>Mon, 27 Apr 2009 16:09:31 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[ActionScript]]></category> <category><![CDATA[Ajax]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Java EE 6]]></category> <category><![CDATA[JAX-RS]]></category> <category><![CDATA[Nebula]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[SpringOne]]></category> <category><![CDATA[TeamCity]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1844</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII La fondation Apache et JAX-RS RIA Comparatif de framework Ajax Des conseils d&#8217;optimisations pour Flex et ActionScript 3 SOA Vers l&#8217;émergence de Rule-driven process engines ? Le coin de la technique Sortie de TeamCity 4.5 Des nouvelles du projet Nebula [...]]]></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/04/27/revue-de-presse-xebia-106/#LafondationApacheetJAXRS">La fondation Apache et JAX-RS</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/04/27/revue-de-presse-xebia-106/#ComparatifdeframeworkAjax">Comparatif de framework Ajax</a></li><li><a
href="http://blog.xebia.fr/2009/04/27/revue-de-presse-xebia-106/#DesconseilsdoptimisationspourF">Des conseils d&#8217;optimisations pour Flex et ActionScript 3</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/04/27/revue-de-presse-xebia-106/#VerslmergencedeRuledrivenproce">Vers l&#8217;émergence de Rule-driven process engines ?</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/04/27/revue-de-presse-xebia-106/#SortiedeTeamCity">Sortie de TeamCity 4.5</a></li><li><a
href="http://blog.xebia.fr/2009/04/27/revue-de-presse-xebia-106/#DesnouvellesduprojetNebula">Des nouvelles du projet Nebula</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/04/27/revue-de-presse-xebia-106/#SpringOneannoncedelapremirejou">SpringOne : Annonces de la première journée</a></li><li><a
href="http://blog.xebia.fr/2009/04/27/revue-de-presse-xebia-106/#JavaEEnauraplusdesecretpourvou">Java EE 6 n&#8217;aura plus de secret pour vous &#8230;</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="LafondationApacheetJAXRS"></a>La fondation Apache et JAX-RS</h4><p>Une <em>proposal</em> pour l&#8217;intégration d&#8217;un nouveau projet dans l&#8217;Incubator de la fondation Apache <a
href="http://wiki.apache.org/incubator/WinkProposal" title="vient d'être publiée" >vient d&#8217;être publiée</a>. Le projet, dont le nom suggéré est Apache Wink, est une implémentation de JAX-RS (<a
href="http://www.jcp.org/en/jsr/detail?id=311" title="JSR311" >JSR-311</a>) dont le but est de simplifier l&#8217;implémentation de Web Services Restful. L&#8217;équipe est composée de développeurs provenant de HP et d&#8217;IBM. Quatre d&#8217;entre eux sont contributeurs au projet Axis2. Le code du projet est issu d&#8217;un <em>fork</em> de l&#8217;implémentation de JAX-RS du projet CXF.</p><p>La fondation Apache possède déjà une implémentation de JAX-RS au sein du projet CXF. Le projet Axis2, quant à lui, supporte Rest <a
href="http://marc.info/?l=incubator-general&#038;m=124043046431474&#038;w=2" title="mais pas JAXRS" >mais pas JAX-RS</a>. Dans ce contexte, une discussion s&#8217;est engagée autour de la légitimité du projet. On retiendra deux interventions notables :</p><ul><li>Daniel Kulp, du projet CXF, <a
href="http://marc.info/?l=incubator-general&#038;m=124042775326974&#038;w=2" title="intervient assez schement" >intervient assez sèchement</a>, en regrettant que l&#8217;équipe du projet Wink n&#8217;ait pas cherché à consulter l&#8217;équipe CXF sur le sujet. Il souligne par ailleurs le fait que puisque le projet est annoncé comme d&#8217;ores et déjà <em>compliant</em> avec le TCK de JAX-RS, il aura probablement du mal à trouver de nouveaux commiteurs.</li><li>Greg Truty, fondateur du projet Wink et affilié IBM, <a
href="http://marc.info/?l=incubator-general&#038;m=124043038831374&#038;w=2" title="explique" >explique</a> qu&#8217;IBM utilise Axis2 en tant qu&#8217;implémentation JAX-WS et ne peut se permettre de tirer CXF en tant que dépendance pour leur implémentation JAX-RS car il leur faut une librairie indépendante.</li></ul><p>L&#8217;approbation du projet reste incertaine, mais quel que soit le résultat final, le projet Apache Wink naîtra avec un manque certain de légitimité. Il n&#8217;aurait en effet comme seule justification que l&#8217;indépendance à CXF et devrait alors se démarquer face aux nombreuses autres implémentations de la JSR qui sont rapidement apparues et dont <a
href="https://jersey.dev.java.net/" title="Jersey" >Jersey</a> et <a
href="http://www.jboss.org/resteasy/" title="RestEasy" >RestEasy</a> sont déjà de dignes représentants.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="ComparatifdeframeworkAjax"></a>Comparatif de framework Ajax</h4><p>Matt Raible a publié sur son blog les <a
href="http://raibledesigns.com/rd/entry/ajax_framework_analysis_results" title="résultats d'un comparatif de frameworks Ajax" >résultats d&#8217;un comparatif de frameworks Ajax</a>. La liste des frameworks est assez restreinte : <a
href="http://extjs.com/products/extjs/" title="Ext JS" >Ext JS</a>, <a
href="http://dojotoolkit.org/" title="Dojo" >Dojo</a>, <a
href="http://developer.yahoo.com/yui/" title="YUI" >YUI</a> et <a
href="http://code.google.com/intl/nl/webtoolkit/" title="GWT" >GWT</a>. On peut entre autres regretter l&#8217;absence du framework Javascript <a
href="http://jquery.com/" title="JQuery" >JQuery</a>. Les résultats de l&#8217;analyse peuvent être étendus à d&#8217;autres frameworks car la <a
href="http://raibledesigns.com/rd/entry/choosing_an_ajax_framework" title="mthode de comparaison est explicitement dfinie" >méthode de comparaison est explicitement définie</a>. Cette évaluation repose sur 20 critères : richesse des composants, qualité de la documentation, productivité de développement, etc.</p><p>Ce qui est le plus intéressant dans cette étude est la méthode, et la grille d&#8217;évaluation avec ses critères. Cette méthode peut aussi être étendue à  différents contextes de développement d&#8217;applications Web.</p><p>On remarque que tous les frameworks reçoivent une bonne note, à l&#8217;exception de Ext JS.</p><h4><a
name="DesconseilsdoptimisationspourF"></a>Des conseils d&#8217;optimisations pour Flex et ActionScript 3</h4><p>Suite à son article présentant <a
href="http://www.adobe.com/devnet/flex/articles/best_practices_pt1.html" title="les bonnes pratiques Flex" >les bonnes pratiques Flex</a>, Sean Moore présente <a
href="http://www.adobe.com/devnet/flex/articles/best_practices_pt1.html" title="ici" >ici</a> quelques conseils d&#8217;optimisation pour Flex et ActionScript 3.<br
/> Voici quelques conseils intéressants à retenir :</p><p><strong>Les optimisations pour ActionScript 3 :</strong></p><ul><li>Au niveau des tableaux (Array) :</li><ul><li>Eviter les <em>new</em> et préférer [] à la place.</li></ul></ul><ul><li>Au niveau du code :</li><ul><li>Utilisation de <em>const</em> pour les constantes,</li><li>Privilégier dans la condition du <em>if</em> l&#8217;évènement qui se produit le plus,</li><li>Utiliser des entiers dans les boucles <em>for</em>,</li><li>Privilégier la multiplication plutôt que la division.</li></ul></ul><ul><li>L&#8217;auteur nous donne également quelques conseils sur les performances du code ; nous apprenons ainsi que :</li><ul><li>il n&#8217;y a pas de différence de performance entre le <em>if</em> et le <em>switch</em></li><li>la longueur du nom d&#8217;une méthode n&#8217;a pas d&#8217;incidence sur les performances</li></ul></ul><p><strong>Les optimisations pour MXML</strong></p><ul><li>Eviter les repeaters sur des données scrollables</li><li>Eviter l&#8217;utilisation excessive voire inutile de conteneurs (tels que VBox), cela impacte les performances de l&#8217;application</li><li>Lors de l&#8217;utilisation de repeaters, mettre la propriété <em>recycleChildren</em> à true pour que les éléments enfants ne soient pas créés à nouveau s&#8217;ils existent déjà</li><li>Mettre la propriété creationPolicy à &laquo;&nbsp;queued&nbsp;&raquo; pour différer la création de conteneur dans le cas de multiples vues.</li></ul><p>Bien que certaines informations puissent être applicables à tous les langages, certains points sont spécifiques au langage AS3/MXML, et peuvent rendre une application bien plus performante. Des informations bien utiles et à mettre en pratique sur tous projets Flex.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="VerslmergencedeRuledrivenproce"></a>Vers l&#8217;émergence de Rule-driven process engines ?</h4><p>Winston Dhanraj vient de terminer une série de deux articles (<a
href="http://community.zdnet.co.uk/blog/0,1000000567,10012337o-2000643352b,00.htm" title="partie 1" >partie 1</a> et <a
href="http://community.zdnet.co.uk/blog/0,1000000567,10012612o-2000643352b,00.htm" title="partie 2" >partie 2</a>) portant sur la convergence des technologies de BPM, en apportant une observation du marché actuel, principalement focalisée sur la séparation entre processus et règles. Il y oppose deux camps :</p><ul><li>La vision traditionnelle, représentée par les poids lourds du marché que sont IBM, Oracle, Microsoft et Tibco, qui se base sur un faible couplage entre le moteur de processus et le moteur de règles (éventuellement apporté par un éditeur tierce).</li><li>Une vision émergente, représentée par Pegasystems et sa solution <a
href="http://www.pega.com/Products/SmartBPM-5-4.asp" title="SmartBPM Suite" >SmartBPM Suite</a>, qui préconise un moteur unifié de processus et règles <em>(rule-driven process engine)</em>, rendant ainsi ces deux composants conscients l&#8217;un de l&#8217;autre.</li></ul><p>Bien que reconnaissant sa plus grande complexité, l&#8217;auteur expose clairement son intérêt pour la seconde solution en mettant en avant ses atouts par rapport aux BPMs traditionnels :</p><ul><li>La logique conditionnelle n&#8217;a plus à être intégrée au sein du processus (évitant ainsi de produire des processus surchargés) ni déléguée à un moteur de règles externe, forcément non conscient du contexte d&#8217;invocation</li><li>Les possibilités du moteur de règles peuvent être pleinement exploitées du fait de l&#8217;information contextuelle dont il dispose, évitant ainsi de le transformer en simple tableau de décision</li><li>La transition vers une nouvelle version d&#8217;un processus est simplifiée</li><li>Il n&#8217;est plus nécessaire de maintenir synchronisés les modèles métiers manipulés par le moteur de processus et de règles</li></ul><p>Ce concept de moteur unifié n&#8217;était présent jusqu&#8217;alors que dans le monde commercial, grâce à l&#8217;offre de Pegasystems. Un produit Open Source s&#8217;apprête toutefois à changer la donne : JBoss Drools 5 est attendu en version finale dans <a
href="https://jira.jboss.org/jira/browse/JBESB-2271" title="les semaines à venir" >les semaines à venir</a> (une <a
href="http://blog.athico.com/2009/03/drools-50-cr1-new-and-noteworthy.html" title="CR1 étant d'ores et déjà disponible" >CR1 étant d&#8217;ores et déjà disponible</a>). En effet, alors que Drools se limitait jusqu&#8217;alors à un moteur de règles, il évolue pour offrir maintenant un BPM unifié. On notera que la gestion de processus est apportée par un sous-projet nommé Drools Flow et non par jBPM ; Mark Proctor, <em>JBoss Drools Lead</em>, <a
href="http://lists.jboss.org/pipermail/rules-users/2008-November/007015.html" title="explique ce choix" >explique ce choix</a> par des points de vue divergents entre les équipes des deux projets, l&#8217;équipe jBPM préférant ne pas s&#8217;engager sur cette nouvelle vision qu&#8217;elle juge trop complexe.</p><p>L&#8217;arrivée d&#8217;un acteur majeur supplémentaire comme JBoss permettra sans nul doute de donner un crédit supplémentaire à cette nouvelle vision du BPM. Toutefois seule une adoption de cette évolution par les poids lourds du marché permettra de la démocratiser.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SortiedeTeamCity"></a>Sortie de TeamCity 4.5</h4><p><a
href="http://www.theserverside.com/news/thread.tss?thread_id=54381" title="The Server Side" >The Server Side</a> nous informe de la sortie de <a
href="http://www.jetbrains.com/teamcity/index.html" title="TeamCity" >TeamCity</a>, le serveur d&#8217;intégration continue de <a
href="http://www.jetbrains.com" title="JetBrains" >JetBrains</a>, dans sa version 4.5</p><p>Pas de révolution dans cette version mais de <a
href="http://www.jetbrains.com/teamcity/features/newfeatures.html" title="nouvelles fonctionnalités" >nouvelles fonctionnalités</a> font leur apparition (la <a
href="http://www.jetbrains.com/teamcity/features/index.html" title="liste complte" >liste complète</a> est plus que respectable). Parmi les plus intéressantes, on note:</p><ul><li>Une meilleure interface utilisateur,</li><li>Gestion de groupes d&#8217;utilisateurs,</li><li>Intégration LDAP,</li><li>Une meilleure intégration avec nos IDEs (Eclipse, Visual Studio et bien sûr IDEA),</li><li>Utilisation des résultats (format XML) de frameworks tels que JUnit, NUnit, Surefire, PMD ou FindBugs,</li><li>Support du framework MONO,</li><li>Assignation d&#8217;une responsabilité à un utilisateur,</li><li>Détection de crash JVM&#8230;</li></ul><p>À noter qu&#8217;il est possible que votre agent par défaut soit écrasé comme ça a été le cas chez <a
href="http://blog.developpez.com/java/p7527/4-edi-et-outils-java/sortie-de-teamcity-4-5/" title="Developpezcom" >Developpez.com</a> mais pas de panique au niveau des données (qui ont toutes été récupérées).</p><p>Une application à essayer d&#8217;urgence, rendez-vous est pris dans la section <a
href="http://www.jetbrains.com/teamcity/download/index.html" title="tlchargement" >téléchargement</a> !</p><h4><a
name="DesnouvellesduprojetNebula"></a>Des nouvelles du projet Nebula</h4><p><a
href="http://www.eclipse.org/projects/project_summary.php?projectid=technology.nebula" title="Nebula" >Nebula</a> est un projet <a
href="http://www.eclipse.org/" title="Eclipse" >Eclipse</a> à destination des développeurs <a
href="http://www.eclipse.org/home/categories/index.php?category=equinox" title="Eclipse RCP" >Eclipse RCP</a>. Son but est de fournir des composants SWT évolués.</p><p>En effet, les composants SWT fournis en standard <em>font le travail</em> mais restent de très bas niveau. Qui n&#8217;a jamais essayé de mettre une checkbox éditable dans une cellule de son tableau <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ? Il est bien sûr tout à fait possible de l&#8217;implémenter soi-même, mais l&#8217;idéal serait d&#8217;avoir un composant tiers qui gère nativement ce genre de fonctionnalités avancées (très appréciables !).</p><p>Actuellement tous en incubation, on trouve en <a
href="http://www.eclipse.org/nebula/downloads.php" title="tlchargement" >téléchargement</a> :</p><ul><li>la <a
href="http://www.eclipse.org/nebula/widgets/gallery/gallery.php" title="galerie" >galerie</a> (seul composant étiqueté <em>stable</em>),</li><li>le <a
href="http://www.eclipse.org/nebula/widgets/grid/grid.php" title="tableau" >tableau</a> (édition de cellule, colonnes groupées, entêtes multiples&#8230;),</li><li>le <a
href="http://www.eclipse.org/nebula/widgets/pgroup/pgroup.php" title="panel avanc" >panel avancé</a>,</li><li>l&#8217;<a
href="http://www.eclipse.org/nebula/widgets/pshelf/pshelf.php" title="accordon" >accordéon</a>,</li><li>des animations (non officielles).</li></ul><p>On note toutefois une communication sur de nouveaux composants, pas encore en téléchargement mais récupérables sur le <a
href="http://www.eclipse.org/nebula/source.php" title="CVS du projet" >CVS du projet</a> (<a
href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.nebula/?root=Technology_Project" title="Web browser" >Web browser</a>) :</p><ul><li>un <a
href="http://www.eclipse.org/nebula/widgets/calendarcombo/calendarcombo.php" title="calendrier avanc" >calendrier avancé</a>,</li><li>un <a
href="http://www.eclipse.org/nebula/widgets/cdatetime/cdatetime.php" title="datetime" >date/time</a>,</li><li>un <a
href="http://www.eclipse.org/nebula/widgets/collapsiblebuttons/collapsiblebuttons.php" title="accordonbouton avanc" >accordéon/bouton avancé</a>,</li><li>un <a
href="http://www.eclipse.org/nebula/widgets/formattedtext/formattedtext.php" title="texte format" >texte formaté</a>,</li><li>un <a
href="http://www.eclipse.org/nebula/widgets/ganttchart/ganttchart.php" title="diagramme de Gantt" >diagramme de Gantt</a>.</li></ul><p>Et, petite surprise, même si pour l&#8217;instant aucune communication n&#8217;a été faite, le <strike>jira</strike> bugzilla du projet semble indiquer l&#8217;arrivée possible d&#8217;autres composants tels que :</p><ul><li>un <a
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=267015" title="ruban type office" >ruban type office</a>,</li><li>un <a
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=255340" title="diteur de texte riche" >éditeur de texte riche</a>.</li></ul><p>Nebula propose toujours son <a
href="http://www.eclipse.org/downloads/download.php?file=/technology/nebula/examples/downloads/drops/latest/nebula-examples-ALL-incubation.zip" title="plugin eclipse dexemples" >plugin eclipse d&#8217;exemples</a> qui permet de faire un rapide tour d&#8217;horizon des composants.<br
/> Pour des exemples de code, ça se passe dans la section <a
href="http://www.eclipse.org/nebula/snippets.php" title="snippets" >snippets</a>.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SpringOneannoncedelapremirejou"></a>SpringOne : Annonces de la première journée</h4><p>Aujourd&#8217;hui se déroulait la <a
href=" http://blog.xebia.fr/2009/04/22/springone-2009/" title="premire journe de SpringOne Europe  Amsterdam" >première journée de SpringOne Europe à Amsterdam</a>. La conférence a débuté par une <em>keynote</em> théâtrale  menée par Rod Johnson en personne. Partant d&#8217;un point de départ plutôt piquant : <em>&laquo;&nbsp;l&#8217;acquisition de Sun par Oracle !&nbsp;&raquo;</em> et d&#8217;une phrase quelque peu cinglante <em>&laquo;&nbsp;Ce n&#8217;est pas avec Oracle que nous pouvons espérer les nouveautés du monde Java&nbsp;&raquo;</em> (nous lui laissons la paternité de ce propos peu amène), Rod a annoncé les nouvelles directions stratégiques prises par SpringSource :</p><ul><li>Phase 1, s&#8217;enfuir de Java EE !</li><li>Phase 2, améliorer la productivité des développeurs Java.</li></ul><p>Différentes annonces ont donc été faites dans ce sens durant cette keynote :</p><ul><li><strong>Sortie de tcServer  en GA</strong> : SpringSource espère toucher différents publics avec ce serveur : les utilisateurs de serveurs Java EE désirant migrer vers une solution plus simple et moins onéreuse, mais aussi les utilisateurs de Tomcat en recherche de console d&#8217;administration.</li><li><strong>Sortie du futur nouveau produit &#8216;Spring ROO&#8217;</strong> (vous pouvez <a
href="http://cloud.springsource.com/vote/" title="voter" >voter</a> pour son nom) que nous avions déjà évoqué à plusieurs reprises. Ce projet, décrit comme le Grails pour code Java, vise à augmenter la productivité des développements en proposant différents mécanismes de génération de code, et une intégration aux outils de développements <em>(Maven2, Eclipse &#8230;)</em>.</li><li><strong>SpringSource Tool Suite (STS)</strong> : Brique indispensable pour tirer la meilleur partie de Spring ROO, STS sera dorénavant diffusé gratuitement. Il contiendra, outre les plugins Spring, Mylyn et autres tutoriaux que nous connaissions déjà, une intégration directe avec la console Spring ROO.</li></ul><p>Continuez à suivre Spring One Europe <a
href="http://twitter.com/ealliaume" title="via twitter" >via twitter</a>.</p><h4><a
name="JavaEEnauraplusdesecretpourvou"></a>Java EE 6 n&#8217;aura plus de secret pour vous &#8230;</h4><p><a
href="http://agoncal.wordpress.com/2009/04/26/a-book-about-java-ee-6/" title="Antonio Goncalves" >Antonio Goncalves</a> vient de terminer l&#8217;écriture de son livre : <a
href="http://apress.com/book/view/9781430219545" title="Beginning Java EE 6 Platform with GlassFish 3: From Novice to Professional" >Beginning Java EE 6 Platform with GlassFish 3: From Novice to Professional</a>. Celui-ci est en cours de publication et devrait être disponible à la vente fin mai. Antonio, que vous connaissez probablement comme l&#8217;un des leaders du <a
href="http://www.parisjug.org/xwiki/bin/view/Main/WebHome" title="ParisJug" >ParisJug</a>, est également un membre du JCP et intervient sur les <a
href="http://www.jcp.org/en/jsr/detail?id=316" title="JSR-316" >JSR-316</a> (Java EE 6), <a
href="http://www.jcp.org/en/jsr/detail?id=317" title="JSR-317" >JSR-317</a> (JPA 2.0) et <a
href="http://www.jcp.org/en/jsr/detail?id=318" title="JSR318" >JSR-318</a> (EJB 3.1).</p><p>Félicitions pour ce nouvel ouvrage, nous avons hâte de le lire. Tu vas pouvoir souffler un peu avant Java EE 7 <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p><p>Pouvons-nous espérer une reprise de ton <a
href="http://www.editions-eyrolles.com/Livre/9782212123630/java-ee-5?xd=c81b7c01cdce121d12db9b0d2b1cbffe" title="ancien livre" >ancien livre</a> <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ?</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/04/27/revue-de-presse-xebia-106/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> <item><title>Flex, BlazeDS et Spring Security : The FlexSession is invalid</title><link>http://blog.xebia.fr/2009/03/12/flex-blazeds-et-spring-security-the-flexsession-is-invalid/</link> <comments>http://blog.xebia.fr/2009/03/12/flex-blazeds-et-spring-security-the-flexsession-is-invalid/#comments</comments> <pubDate>Thu, 12 Mar 2009 12:56:13 +0000</pubDate> <dc:creator>Nicolas Jozwiak</dc:creator> <category><![CDATA[RIA]]></category> <category><![CDATA[BlazeDS]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Spring Security]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1600</guid> <description><![CDATA[Lors du développement d&#8217;une application, j&#8217;ai été confronté à un problème avec l&#8217;intégration de BlazeDS et de Spring Security. En effet lorsque je me connectais, je pouvais accéder à l&#8217;application. Mais lorsque je fermais, ouvrais le navigateur puis me reconnectais, une erreur apparaissait : flex.messaging.LocalizedException: The FlexSession is invalid. at flex.messaging.FlexSession.checkValid(FlexSession.java:906) at flex.messaging.FlexSession.getUserPrincipal(FlexSession.java:225) at flex.messaging.HttpFlexSession.getUserPrincipal(HttpFlexSession.java:272) [...]]]></description> <content:encoded><![CDATA[<p>Lors du développement d&#8217;une application, j&#8217;ai été confronté à un problème avec l&#8217;intégration de <a
href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/">BlazeDS</a> et de <a
href="http://static.springframework.org/spring-security/site/">Spring Security</a>. En effet lorsque je me connectais, je pouvais accéder à l&#8217;application. Mais lorsque je fermais, ouvrais le navigateur puis me reconnectais, une erreur apparaissait :</p><pre class="brush: java; title: ; notranslate">
flex.messaging.LocalizedException: The FlexSession is invalid.
    at flex.messaging.FlexSession.checkValid(FlexSession.java:906)
    at flex.messaging.FlexSession.getUserPrincipal(FlexSession.java:225)
    at flex.messaging.HttpFlexSession.getUserPrincipal(HttpFlexSession.java:272)
    at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:327)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
    at com.wavecom.ui.util.AddToMDCFilter.doFilter(AddToMDCFilter.java:68)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
</pre><p>En se tournant vers la <a
href="http://livedocs.adobe.com/blazeds/1/blazeds_devguide/" title="documentation de BlazeDS" >documentation de <em>BlazeDS</em></a>, nous voyons que celui-ci n&#8217;est pas capable d&#8217;invalider lui-même des sessions <em>HTTP</em>. Il est cependant possible d&#8217;utiliser un paramètre dans les propriétés des <em>channels</em> afin d&#8217;invalider une session:</p><pre class="brush: xml; title: ; notranslate">
&lt;invalidate-session-on-disconnect&gt;true&lt;/invalidate-session-on-disconnect&gt;
</pre><p>Mais malgré cette option l&#8217;erreur restait présente&#8230; étrange.</p><p>Après quelques recherches plus poussées (merci Google), je suis tombé sur les problèmes liés aux <a
href="http://www.owasp.org/index.php/Session_Fixation" title="Session Fixation" >Session Fixation</a> et sur <a
href="http://www.blackpepper.co.uk/black-pepper-blog/printblog.html?index_php?view=article&#038;id=151&#038;tmpl=component&#038;print=1" title="cet article" >cet article</a>.<br
/> En effet, en creusant un peu plus, nous voyons dans la <a
href="http://static.springsource.org/spring-security/site/reference/html/ns-config.html" title="documentation de configuration de Spring" >documentation de configuration de <em>Spring</em></a> :</p><blockquote><p>&laquo;&nbsp;Session fixation attacks are a potential risk where it is possible for a malicious attacker to create a session by accessing a site, then persuade another user to log in with the same session (by sending them a link containing the session identifier as a parameter, for example).&nbsp;&raquo;</p></blockquote><p>Afin de contrer cela, <em>Spring</em> a pris le parti de créer une nouvelle session à chaque authentification d&#8217;un utilisateur.<br
/> Nous pouvons ainsi comprendre le problème. En effet, nous utilisons un channel <em>HTTP</em> et une instance de la classe <cod>HttpFlexSession</code> (<code>flex.messaging.HttpFlexSession</code>) contenant des attributs dont une <code>Map</code> de <code>flexSession</code>. Cette <code>Map</code> contient les id de session des utilisateurs. A la première connexion, cette instance récupère une requête avec un id session qui sera placé dans cette <code>Map</code>. Et lors de la deuxième connexion, la requête contiendra un autre id session. Le problème est que l'instance de <code>HttpFlexSession</code> va rechercher l'id session de la deuxième connexion dans la <code>Map</code> mais ne la trouvera pas, d'où l'exception citée ci-dessus.</p><p>Néanmoins, il existe une solution : mettre le paramètre <code>session-fixation-protection</code> à <code>none</code> dans votre fichier de configuration <em>Spring</em></p><pre class="brush: xml; title: ; notranslate">
&lt;security:http auto-config=&quot;true&quot; access-denied-page=&quot;/&quot; session-fixation-protection=&quot;none&quot;&gt;
</pre><p>Avec cette solution, la session ne sera pas systématiquement recréée et l'exception ne sera plus présente ! En espérant que cette solution puisse aider d'autres personnes !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/03/12/flex-blazeds-et-spring-security-the-flexsession-is-invalid/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/03/09/revue-de-presse-xebia-99/</link> <comments>http://blog.xebia.fr/2009/03/09/revue-de-presse-xebia-99/#comments</comments> <pubDate>Mon, 09 Mar 2009 18:00:10 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Hibernate]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[JSR-303]]></category> <category><![CDATA[RIA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1592</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Riena, la nouvelle plate-forme de la fondation Eclipse RIA Flight Framework : le nouveau framework MVC pour les applications Flex et ActionScript Le coin de la technique Hibernate Validator poursuit l&#8217;alignement avec la JSR-303 Le positionnement de JavaFX toujours en [...]]]></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><br
/> <strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/03/09/revue-de-presse-xebia-99/#Rienalanouvelleplateformedelaf">Riena, la nouvelle plate-forme de la fondation Eclipse</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/03/09/revue-de-presse-xebia-99/#FlightFrameworklenouveauframew">Flight Framework : le nouveau framework MVC pour les applications Flex et ActionScript</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/03/09/revue-de-presse-xebia-99/#HibernateValidatorpoursuitlali">Hibernate Validator poursuit l&#8217;alignement avec la JSR-303</a></li><li><a
href="http://blog.xebia.fr/2009/03/09/revue-de-presse-xebia-99/#LepositionnementdeJavaFXtoujou">Le positionnement de JavaFX toujours en question</a></li><li><a
href="http://blog.xebia.fr/2009/03/09/revue-de-presse-xebia-99/#Mettreenlignesesdveloppementsd">Mettre en ligne ses développements de BDD avec une application agile (tout au moins itérative).</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Rienalanouvelleplateformedelaf"></a>Riena, la nouvelle plate-forme de la fondation Eclipse</h4><p>La fondation Eclipse a <a
href="http://www.eclipse.org/org/press-release/20090302riena10.php" title="annonc" >annoncé</a> la disponibilité de sa nouvelle plate-forme &laquo;&nbsp;Eclipse Riena&nbsp;&raquo; en version 1.0. Le but de ce projet est de fournir un environnement client et serveur pour développer des applications multi-tiers avec clients riches. En soit, rien de très original. En fait, la vraie nouveauté se situe dans les possibilités offertes et dans les technologies utilisées. En effet, cette plate-forme est basée sur Eclipse RCP et Equinox et offre la possibilité de développer des services OSGi sans pré-supposer de leur localisation sur le client ou le serveur.</p><p>Autour de ce modèle d&#8217;architecture, Riena propose un ensemble de fonctionnalités :</p><ul><li>Possibilité de faire évoluer des composants Eclipse existants vers la plate-forme Riena</li><li>Gestion des mises à jour des clients pilotée par le serveur. Possibilité de procéder de manière incrémentale.</li><li>Gestion des authentifications et des autorisations basée sur <a
href="http://java.sun.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html" title="JAAS" >JAAS</a>.</li><li>Monitoring de l&#8217;état des clients. L&#8217;ensemble des logs et erreurs des clients peut être accédé depuis le serveur.</li></ul><p>On notera également que la partie serveur est assurée par un module <a
href="http://www.mortbay.org/jetty/" title="Jetty" >Jetty</a> et que le protocole <a
href="http://hessian.caucho.com/" title="Hessian" >Hessian</a> est utilisé pour la communication avec les clients. En outre Riena apporte des composants graphiques supplémentaires permettant de construire plus facilement des interfaces orientées processus métier ; Elias Volanakis <a
href="http://eclipsenuggets.blogspot.com/2008/07/riena-milestone-3-ships-new-ui-for-rcp.html" title="en avait propos" >en avait proposé</a> un exemple il y a quelques mois.</p><p>Là où Eclipse RCP ne traitait que du développement de la partie cliente des applications d&#8217;entreprise, Riena apporte une réponse intéressante également sur la partie serveur. A l&#8217;heure où la majorité des développements se tournent vers le Web et ses récentes technologies RIA, pour des raisons de simplicité de déploiement et de maintenance, le nouveau projet de la fondation Eclipse propose une solution bien plus flexible, tout en se basant sur des technologies matures.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="FlightFrameworklenouveauframew"></a>Flight Framework : le nouveau framework MVC pour les applications Flex et ActionScript</h4><p>Le framework Flight est un nouveau framework MVC pour le développement d&#8217;application Flex / ActionScript. Il vient rejoindre la liste déjà importante de frameworks MVC existants, comme Cairngorm, PureMVC, Mate &#8230; InfoQ s&#8217;intéresse <a
href="http://www.infoq.com/news/2009/03/flight-framework" title="dans cet article" >dans cet article</a> à ce nouveau venu.</p><p>Ce framework a été créé par Tyler Wright, Rob Taylor et Jacob Wright, pour faciliter le développement de leurs applications. Son principe est le suivant : modulariser en domaines logiques, rationaliser le développement en équipe. Minimaliste, il offre des solutions robustes, avec entre autres :</p><ul><li>un système de mémorisation de l&#8217;historique pour pouvoir mettre en place le <em>Annuler/Rétablir</em>.</li><li>la possibilité de configurer plus facilement le <a
href="http://www.xtyler.com/code/177" title="data binding" >data binding</a></li></ul><p>Pourquoi ce énième framework ? Tyler Wright répond à la question <a
href="http://www.xtyler.com/code/11" title="ici" >ici</a>. <a
href="http://cairngormdocs.org/" title="Cairngorm" >Cairngorm</a> étant très lourd à mettre en place, il lui fallait une solution plus efficace et répondant à son besoin. Pour le moment, le projet ne fournit que <a
href="http://www.flightxd.com/flightframework/2009/02/overview/" title="la liste des fonctionnalits" >la liste des fonctionnalités</a> et une version en beta release non documentée.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="HibernateValidatorpoursuitlali"></a>Hibernate Validator poursuit l&#8217;alignement avec la JSR-303</h4><p>Le développement de la version 4.0 d&#8217;Hibernate Validator <a
href="http://in.relation.to/10777.lace" title="est en cours" >est en cours</a> et poursuit son alignement avec la <a
href="http://www.jcp.org/en/jsr/detail?id=303" title="JSR-303 (Bean validation)" >JSR-303 (Bean validation)</a>. Cette JSR, actuellement en <a
href="http://in.relation.to/service/File/10774" title="version beta" >version beta</a>, est dirigée par Emmanuel Bernard, également <em>project lead</em> d&#8217;Hibernate Validator, qui sera l&#8217;implémentation de référence. Par rapport à ce framework, outre une adaptation globale de l&#8217;API, la spécification diffère principalement sur deux points :</p><ul><li>l&#8217;apport de la notion de groupe, permettant de spécifier un ensemble de contraintes, à inclure ou non dans une validation</li><li>la possibilité de spécifier la &laquo;&nbsp;traversabilité&nbsp;&raquo; des propriétés d&#8217;un objet. Ainsi, si une propriété ne doit pas être validée à un instant donné (pour cause de lazy loading par exemple), il sera possible de l&#8217;indiquer au framework.</li></ul><p>Ces apports, bien que minimes en apparence, sont réellement utiles. En effet, les scénarios de validation dans les applications d&#8217;entreprises sont souvent constitués de nombreuses règles de gestion, qu&#8217;il est délicat d&#8217;appréhender sans un framework offrant une grande flexibilité.</p><h4><a
name="LepositionnementdeJavaFXtoujou"></a>Le positionnement de JavaFX toujours en question</h4><p>Manque de communication de Sun ? Le positionnement de JavaFX par rapport à Swing fait toujours débat, 4 mois après la sortie de sa première version finale.</p><p>Ces derniers jours, deux interventions ont particulièrement entretenu le débat.</p><p>D&#8217;un coté, John O&#8217;Conner <a
href="http://weblogs.java.net/blog/joconner/archive/2009/03/is_the_swing_ap_1.html" title="soutient" >soutient</a> que la relance de la <a
href="http://www.jcp.org/en/jsr/detail?id=296" title="JSR-296 (Swing Application Framework)" >JSR-296 (Swing Application Framework)</a> est vaine et ne constitue qu&#8217;un investissement à court terme. Poursuivant dans cette vision d&#8217;un Swing obsolète, il conseille aux développeurs arrivant dans le monde des interfaces riches en Java de ne pas chercher à apprendre Swing mais de directement se tourner vers JavaFX.</p><p>De l&#8217;autre coté, Jan Erik Paulsen, <a
href="http://labs.teppefall.com/2009/03/sun_is_pulling_a_netscape_rewr.html" title="rejette avec force" >rejette avec force</a> JavaFX, tant comme concurrent de Flex / Silverlight, critiquant le manque de productivité offert par la solution de Sun pour les <em>designers</em>, que comme remplaçant de Swing, ne pouvant admettre le rejet de cette technologie mature et maîtrisée.</p><p>Au trouble existant sur l&#8217;évolution de Swing dont <a
href="http://blog.xebia.fr/2009/03/02/revue-de-presse-xebia-98/#LinitiativeSwingcritique" title="nous parlions" >nous parlions</a> la semaine dernière, s&#8217;ajoute donc ce positionnement ambiguë de JavaFX. S&#8217;il veut empêcher la fuite des javaistes vers les solutions concurrentes, Sun devra clarifier son discours dans les mois à venir et tenter de mettre un point final à ce genre de querelles (en apportant, lors de la prochaine release en Juin, un véritable gain de productivité grâce à un environnement de développement, à des composants graphiques de haut niveau, &#8230;).</p><h4><a
name="Mettreenlignesesdveloppementsd"></a>Mettre en ligne ses développements de BDD avec une application agile (tout au moins itérative).</h4><p>Pramod Sadalage, co-auteur, avec Scott Ambler en 2007 de <a
href="http://www.informit.com/store/product.aspx?isbn=0321293533" title="Refactoring Databases: Evolutionary Database Development" >Refactoring Databases: Evolutionary Database Development</a> et auteur de <a
href="http://www.informit.com/store/product.aspx?isbn=032150206X" title="Recipes for Continuous Database Integration" >Recipes for Continuous Database Integration</a>, expose, <a
href="http://www.infoq.com/presentations/refactoring-databases" title="dans une vido capte au QCon et relaye par infoQ" >dans une vidéo captée au QCon et relayée par infoQ</a>, les grands principes d&#8217;un <em>design</em> de base de données évolutif (qu&#8217;on pourrait sous titrer <em>&#8216;Comment attirer les DBA dans le monde itératif J2EE&#8217;</em>).<br
/> Pour ceux qui n&#8217;auraient pas le temps d&#8217;ingurgiter les quelques 500 pages de ces 2 ouvrages, cette vidéo, illustrée par des démonstrations pertinentes, constitue un bon point de départ.</p><p>Cependant, et comme c&#8217;est malheureusement souvent le cas, les grands principes exposés ici se heurteront rapidement aux <em>réalités projet</em> (il est bien difficile de &#8216;vendre&#8217; un <em>pair programming</em> développeur Java / DBA, de multiplier les environnements bac à sable&#8230;).<br
/> Malgré tout, il est facile d&#8217;extraire quelques trucs et astuces pleins de bon sens de cette présentation (automatisation, rôle de l&#8217;intégration continue, de la gestion de sources&#8230;).</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/03/09/revue-de-presse-xebia-99/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Les évènements dans des composants Flex réutilisables</title><link>http://blog.xebia.fr/2009/01/09/les-evenements-dans-des-composants-flex-reutilisables/</link> <comments>http://blog.xebia.fr/2009/01/09/les-evenements-dans-des-composants-flex-reutilisables/#comments</comments> <pubDate>Fri, 09 Jan 2009 15:10:18 +0000</pubDate> <dc:creator>Ellène Dijoux</dc:creator> <category><![CDATA[RIA]]></category> <category><![CDATA[Flex]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1277</guid> <description><![CDATA[Dans un précédent article, nous vous présentions comment créer des composants Flex réutilisables. Nous allons ici poursuivre la présentation en vous parlant de la gestion des évènements au sein de ces composants. En effet, il n&#8217;est pas évident de gérer les évènements lorsque ceux-ci sont dans des fichiers MXML différents. Alors comment faire ? Une [...]]]></description> <content:encoded><![CDATA[<p>Dans un <a
href="http://blog.xebia.fr/2008/11/20/creer-des-composants-flex-reutilisables/" title="prcdent article" >précédent article</a>, nous vous présentions comment créer des composants Flex réutilisables. Nous allons ici poursuivre la présentation en vous parlant de la <strong>gestion des évènements</strong> au sein de ces composants. En effet, il n&#8217;est pas évident de gérer les évènements lorsque ceux-ci sont dans des fichiers MXML différents. Alors comment faire ?</p><p>Une solution existe, utiliser les tags <code>Metadata</code> et plus précisemment le tag <code>Event</code>. Dans <a
href="http://blog.xebia.fr/2008/11/20/creer-des-composants-flex-reutilisables/" title="lexemple du billet prcdent" >l&#8217;exemple du billet précédent</a>, nous avons créé plusieurs composants pour mettre en place un formulaire. Nous allons effectuer le même exercice, avec une liste de contacts dans laquelle il est possible d&#8217;ajouter des utilisateurs. Nous verrons comment deux composants indépendants l&#8217;un de l&#8217;autre pourront <strong>communiquer</strong> et <strong>échanger des données</strong>.</p><p>Ce billet se découpe de la façon suivante :</p><ul><li>Nous commencerons par <a
href="http://blog.xebia.fr/2009/01/09/les-evenements-dans-des-composants-flex-reutilisables#Miseenplacedescomposantsrutili">mettre en place les composants réutilisables</a> qui formeront l&#8217;application</li><li>Nous expliquerons <a
href="http://blog.xebia.fr/2009/01/09/les-evenements-dans-des-composants-flex-reutilisables#QuestcequuntagMetadata">ce qu&#8217;est un tag <code>Metadata</code></a></li><li>Nous présenterons <a
href="http://blog.xebia.fr/2009/01/09/les-evenements-dans-des-composants-flex-reutilisables#Etconcrtement">comment les mettre en place</a> sur notre exemple</li><li>Et enfin, nous verrons <a
href="http://blog.xebia.fr/2009/01/09/les-evenements-dans-des-composants-flex-reutilisables#Rsultat">le résultat</a></li></ul><h3><a
name="Miseenplacedescomposantsrutili"></a>Mise en place des composants réutilisables</h3><p>Pour créer notre application, nous allons mettre en place :</p><ul><li><code>ContactListView</code> : une liste de contacts contenant une <code>Datagrid</code> et un bouton <em>Ajouter</em></li></ul><pre class="brush: xml; title: ; notranslate">
&lt;mx:VBox xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot;
	width=&quot;400&quot; height=&quot;300&quot;
	horizontalAlign=&quot;center&quot;&gt;
	&lt;mx: DataGrid width=&quot;100%&quot; height=&quot;100%&quot; dataProvider=&quot;{contacts}&quot;&gt;
		&lt;mx:columns&gt;
			&lt;mx: DataGridColumn headerText=&quot;Nom et prénoms&quot;/&gt;
		&lt;/mx:columns&gt;
	&lt;/mx: DataGrid&gt;
	&lt;mx:Button label=&quot;Ajouter&quot;/&gt;
&lt;/mx:VBox&gt;
</pre><ul><li><code>ContactFormView</code> : un formulaire contenant un champ texte nom, un autre prénom et deux boutons <em>Valider</em> et <em>Annuler</em></li></ul><pre class="brush: xml; title: ; notranslate">
&lt;mx:VBox xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;
	&lt;mx:Form width=&quot;100%&quot; height=&quot;100%&quot;&gt;
		&lt;mx:FormItem label=&quot;Nom&quot; width=&quot;100%&quot;&gt;
			&lt;mx:TextInput width=&quot;100%&quot; id=&quot;lastName&quot;/&gt;
		&lt;/mx:FormItem&gt;
		&lt;mx:FormItem label=&quot;Prénom&quot; width=&quot;100%&quot;&gt;
			&lt;mx:TextInput width=&quot;100%&quot; id=&quot;firstName&quot;/&gt;
		&lt;/mx:FormItem&gt;
		&lt;mx:FormItem width=&quot;100%&quot;&gt;
			&lt;mx:HBox width=&quot;100%&quot; horizontalAlign=&quot;right&quot;&gt;
				&lt;mx:Button label=&quot;Valider&quot;/&gt;
				&lt;mx:Button label=&quot;Annuler&quot;/&gt;
			&lt;/mx:HBox&gt;
		&lt;/mx:FormItem&gt;
	&lt;/mx:Form&gt;
&lt;/mx:VBox&gt;
</pre><p>Ils seront stockés dans une pile de vues ({{ViewStack}}). Le composant <code>ViewStack</code> contient des vues filles dans lesquelles il est possible de naviguer. Seule une vue fille peut être affichée à la fois grâce à la propriété <code>selectedItem</code> ou <code>selectedIndex</code>. En manipulant ce composant, nous allons tenter de passer d&#8217;une vue à l&#8217;autre en modifiant la valeur de <code>selectedIndex</code>.<br
/> - <code>selectedIndex = 0</code> : le <code>ViewStack</code> affiche <code>ContactListView</code><br
/> - <code>selectedIndex = 1</code> : le <code>ViewStack</code> affiche <code>ContactFormView</code></p><pre class="brush: xml; title: ; notranslate">
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot;&gt;
	&lt;mx:ViewStack id=&quot;viewStack&quot;&gt;
		&lt;view:ContactListView id=&quot;contactListView&quot;/&gt;
		&lt;view:ContactFormView id=&quot;contactFormView&quot;/&gt;
	&lt;/mx:ViewStack&gt;
&lt;/mx:Application&gt;
</pre><p>Lorsque l&#8217;utilisateur clique sur le bouton <em>Ajouter</em>, l&#8217;application change de vue pour passer sur le formulaire. Les boutons <em>Valider</em> et <em>Annuler</em> quant à eux permettent de revenir sur la première vue.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/01/shematestcontact.png" border="0" alt="" /></div><p>La partie graphique est en place mais comment signaler à la pile de vue de passer de l&#8217;une à l&#8217;autre ? Effectivement depuis une vue, comment peut-on signaler à son parent qu&#8217;il s&#8217;est passé quelque chose ?</p><p>C&#8217;est là que les tags <code>Metadata</code> viennent à notre secours.</p><h3><a
name="QuestcequuntagMetadata"></a>Qu&#8217;est ce qu&#8217;un tag <code>Metadata</code> ?</h3><p>Un tag <code>Metadata</code> fournit au compilateur des informations sur la façon dont le composant MXML est utilisé dans une application Flex. Il existe 12 tags <code>Metadata</code> documentés dont entre autres <code>Bindable</code>, <code>Embed</code>, <code>Effect</code> et celui que nous allons utilisé <code>Event</code>. Le tag <code>Event</code> permet de définir des évènements que le composant concerné peut déclencher, ce qui convient très bien à notre problème.</p><h3><a
name="Etconcrtement"></a>Et concrètement ?</h3><h4><a
name="Ctdclencheur"></a>Côté déclencheur</h4><p>Créons un tag <code>Event</code> dans notre vue <code>ContactListView</code>:</p><pre class="brush: xml; title: ; notranslate">
&lt;mx:Metadata&gt;
    [Event(name=&quot;addContact&quot;, type=&quot;flash.events.Event&quot;)]
&lt;/mx:Metadata&gt;
</pre><p>Lorsque l&#8217;utilisateur clique sur le bouton <em>Ajouter</em>, le composant déclenche l&#8217;évènement <code>addContact</code>.</p><pre class="brush: xml; title: ; notranslate">
&lt;mx:Script&gt;
	&lt;![CDATA[
        import mx.collections.ArrayCollection;
	[Bindable]
	private var contacts:ArrayCollection;
        private function onClick():void{
	        // on dispatche un nouvel évènement
	        // qui sera intercepté ici par le composant parent
	        dispatchEvent(new Event(&quot;addContact&quot;));
        }
	]]&gt;
&lt;/mx:Script&gt;
&lt;mx: DataGrid width=&quot;100%&quot; height=&quot;100%&quot; dataProvider=&quot;{contacts}&quot;&gt;
	&lt;mx:columns&gt;
		&lt;mx: DataGridColumn headerText=&quot;Nom et prénoms&quot;/&gt;
	&lt;/mx:columns&gt;
&lt;/mx: DataGrid&gt;
&lt;mx:Button label=&quot;Ajouter&quot; click=&quot;onClick()&quot;/&gt;
</pre><h4><a
name="Ctabonn"></a>Côté abonné</h4><p>Le parent de la vue, qui est ici l&#8217;application, ajoute un listener sur la vue pour attendre l&#8217;évènement <code>addContact</code>. Une fois l&#8217;évènement déclenché, nous changeons de vue.</p><pre class="brush: xml; title: ; notranslate">
&lt;mx:Script&gt;
	&lt;![CDATA[
		import mx.collections.ArrayCollection;
		private function onAddContact(event:Event):void{
			// passage de la vue contenant la liste de contacts
			// à la vue d'ajout de contacts.
			viewStack.selectedIndex = 1;
		}
        ]]&gt;
&lt;/mx:Script&gt;
&lt;mx:ViewStack id=&quot;viewStack&quot;&gt;
	&lt;view:ContactListView id=&quot;contactListView&quot; addContact=&quot;onAddContact(event)&quot;/&gt;
	&lt;view:ContactFormView id=&quot;contactFormView&quot;/&gt;
&lt;/mx:ViewStack&gt;
</pre><h3><a
name="Rsultat"></a>Résultat</h3><p>En faisant de même avec les boutons <em>Valider</em> et <em>Annuler</em>, nous arrivons au résultat 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/01/contacttest.swf" height="300" width="400" type="application/x-shockwave-flash" ><param
name="data" value="http://blog.xebia.fr/wp-content/uploads/2009/01/contacttest.swf" /><param
name="loop" value="false" /><param
name="menu" value="false" /><param
name="movie" value="http://blog.xebia.fr/wp-content/uploads/2009/01/contacttest.swf" /><param
name="quality" value="high" /><param
name="scale" value="exactfit" /><param
name="src" value="http://blog.xebia.fr/wp-content/uploads/2009/01/contacttest.swf" /><param
name="type" value="application/x-shockwave-flash" /><embed
height="300" 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/01/contacttest.swf" type="application/x-shockwave-flash" /><br
/> </object></div><p>Ce billet présente un exemple très simple d&#8217;utilisation du tag <code>Event</code> avec un évènement de type <code>flash.events.Event</code>. Mais vous pouvez créer vos propres classes d&#8217;évènements comme le montre le <a
href="http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_2.html" title="livedocs" >livedocs</a>. Le code source est disponible <a
href="http://code.google.com/p/xebia-france/source/browse/#svn/trunk/ContactTest" title="ici" >ici</a>, vous trouverez l&#8217;exemple complet avec la gestion de l&#8217;ajout d&#8217;un contact et le retour vers la liste.</p><h3><a
name="Rfrences"></a>Références</h3><p><a
href="http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_2.html" title="http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_2.html" >http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_2.html</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/01/09/les-evenements-dans-des-composants-flex-reutilisables/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
