<?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; OSGi</title> <atom:link href="http://blog.xebia.fr/tag/osgi/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 Xebia</title><link>http://blog.xebia.fr/2011/04/27/revue-de-presse-xebia-208/</link> <comments>http://blog.xebia.fr/2011/04/27/revue-de-presse-xebia-208/#comments</comments> <pubDate>Wed, 27 Apr 2011 08:31:25 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Amazon]]></category> <category><![CDATA[AWS]]></category> <category><![CDATA[Coherence]]></category> <category><![CDATA[CXF]]></category> <category><![CDATA[EC2]]></category> <category><![CDATA[Guice]]></category> <category><![CDATA[Hudson]]></category> <category><![CDATA[Jenkins]]></category> <category><![CDATA[OSGi]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=7550</guid> <description><![CDATA[La revue de presse de l’actualité Java/JEE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Indisponibilité d’Amazon EC2 Coherence 3.7 &#8211; Plus de problèmes de large heap Le coin de la technique Sortie de Hudson 2.0 CXF 2.4.0 est dans les bacs Actualité éditeurs / SSII Indisponibilité d’Amazon EC2 Jeudi dernier, Amazon a connu un [...]]]></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/JEE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité  éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/04/27/revue-de-presse-xebia-208/#IndisponibilitdAmazonEC">Indisponibilité d’Amazon EC2</a></li><li><a
href="http://blog.xebia.fr/2011/04/27/revue-de-presse-xebia-208/#CoherencePlusproblmesdelargehe">Coherence 3.7 &#8211; Plus de problèmes de <em>large heap</em></a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/04/27/revue-de-presse-xebia-208/#SortiedeHudson">Sortie de Hudson 2.0</a></li><li><a
href="http://blog.xebia.fr/2011/04/27/revue-de-presse-xebia-208/#CXFestdanslesbacs">CXF 2.4.0 est dans les bacs</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="IndisponibilitdAmazonEC"></a>Indisponibilité d’Amazon EC2</h4><p>Jeudi dernier, Amazon a connu un gros problème de disponibilité de ses serveurs situés dans certaines régions des Etats-unis, perturbant très fortement des sites connus comme Quora, FoursQuare ou Reddit. Cette annonce a déjà été beaucoup <a
href="http://highscalability.com/blog/2011/4/25/the-big-list-of-articles-on-the-amazon-outage.html" title="commentée" >commentée</a>, les sceptiques du modèle de <em>cloud computing</em> y voyant la preuve de la méfiance qu’il faut accorder à ces nouveaux services. Il est évident que ces perturbations laisseront des traces pendant longtemps. Que dire par exemple de l’<a
href="http://www.kinlane.com/2011/04/amazon-web-services-outage-impact" title="histoire" >histoire</a> de ce fournisseur d’accès qui, après avoir beaucoup hésité, a mis 6 mois pour migrer et qui a justement fini la migration la semaine dernière ?</p><p>On peut néanmoins affirmer qu’Amazon joue assez bien la transparence comme l’attestent les nombreux blogs sur le sujet ainsi que leur <a
href="http://status.aws.amazon.com/" title="page" >page</a> très bien faite sur les statuts de leurs services dans le monde entier. Par ailleurs un <a
href="http://ec2disabled.com/" title="autre site" >autre site</a> permet de voir le statut actualisé des sites impactés.</p><p>De plus, comme le souligne ce <a
href="http://www.webmonkey.com/2011/04/lessons-from-a-cloud-failure-its-not-amazon-its-you/" title="blog" >blog</a>, les torts sont partagés avec les clients d’Amazon qui n’ont pas toujours tenu compte des avertissements de la compagnie, comme le souligne <a
href="http://blog.everyblock.com/2011/apr/22/sitepostmortem/" title="un des responsables dEveryBlock" >un des responsables d’EveryBlock</a>:</p><p><em>While the acute problem originated with AWS, EveryBlock is not without blame for this downtime. Frankly, we screwed up. AWS explicitly advises that developers should design a site’s architecture so that it is resilient to occasional failures and outages such as what occurred yesterday, and we did not follow that advice.</em></p><p>Sans surprise ce sont les projets ayant le plus tenu compte des avertissements d’Amazon qui s’en sont le mieux sortis. Netflix en est un bel exemple et les <a
href="http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html" title="5 leons" >5 leçons</a> qu’ils ont tirées de leurs précédentes expériences sont à méditer. La 3ème leçon, entre autre, est savoureuse: <em>The best way to avoid failure is to fail constantly</em>. Pour cela ils ont mis en place un ensemble de scripts qu’ils ont nommé <em>Chaos Monkey</em> et qui consiste à tuer des instances au hasard afin d’éprouver leur système en permanence.</p><h4><a
name="CoherencePlusproblmesdelargehe"></a>Coherence 3.7 &#8211; Plus de problèmes de <em>large heap</em></h4><p>Coherence, la <em>In Memory Data Grid</em> d&#8217;Oracle, était comme beaucoup de ses consoeurs minée par le problème de la taille des JVMs.<br
/> Alors que les serveurs d&#8217;entrée de gamme embarquent 32 Go de RAM pour un prix dérisoire, nos grilles mémoires nous recommandaient laborieusement des <em>heap</em> de 1.5 Go à cause des problèmes de temps de pause du <em>garbage collector</em>. Coherence a pris le taureau par les cornes et suivi le même chemin que <a
href="http://www.terracotta.org/bigmemory" title="Terracotta Big Memory" >Terracotta Big Memory</a> pour ne citer qu&#8217;eux : implémenter un memory manager à l&#8217;intérieur de la <em>heap.</em> Schématiquement, Coherence alloue au démarrage de la JVM un gigantesque tableau de _byte_ et gère lui même cet espace de stockage. <strong>Coherence annonce que nous pourrons désormais utiliser des JVM de 30 Go au lieu des limitations à 2.5 &#8211; 2 Go actuelles</strong>. Les simplifications seront très nombreuses (nombre de processus et de fichiers de logs à monitorer, sizing des data source / connections JMS utilisées en &laquo;&nbsp;write-behind&nbsp;&raquo;, etc).</p><p>Autre innovation plus avant-gardiste qui ne concernera aujourd&#8217;hui que peu d&#8217;utilisateurs : le <strong>support de</strong> <strong><a
href="http://fr.wikipedia.org/wiki/Solid-state_drive" title="disques SSD" >disques SSD</a></strong>, principalement pour porter les replicas. Enfin une rencontre avec Cameron Purdy, directeur technique de Coherence, pour un projet pour une grande banque parisienne, nous a appris qu&#8217;il travaille au support d&#8217;<a
href="http://en.wikipedia.org/wiki/InfiniBand" title="Infiniband" >Infiniband</a> pour connecter les noeuds d&#8217;une grille. Un Coherence 4 à 100 Gbit/s réels ?</p><p>Revenons à des cas d&#8217;utilisation de la vraie vie, le support de large <em>heap</em> est une grande simplification de mise en oeuvre (plus visible du côté Ops que du côté Devs) et nous avons encore plein d&#8217;attentes :</p><ul><li>Des API plus simples et de plus haut niveau (similaires à <em>&laquo;&nbsp;JPA&nbsp;&raquo;</em>) pour les équipes informatiques &laquo;&nbsp;normales&nbsp;&raquo; qui ne sont pas composées que de &laquo;&nbsp;<em>geeks passionnés</em>&nbsp;&raquo; ; même si ces API seraient plus contraignantes que l&#8217;API Map &#038; POF actuelle,</li><li>réplication inter-grille avec API de reconciliation (au hasard Londres, New York ou Tokyo pour les banques <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ),</li><li>outillage de déploiement avec un modèle de packaging (similaire à nos .war) et un système de gestion centralisé de grille (déploiement, monitoring, etc).</li></ul><p>Tous les détails sur <a
href="http://www.infoq.com/news/2011/04/coherence-37" title="InfoQ  Oracle Coherence 37s Elastic Data Offers Transparent Overflow from Memory to Solid State Storage" >InfoQ &#8211; Oracle Coherence 3.7&#8242;s Elastic Data Offers Transparent Overflow from Memory to Solid State Storage</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="SortiedeHudson"></a>Sortie de Hudson 2.0</h4><p>Une nouvelle version majeure du serveur d&#8217;integration continu <a
href="http://hudson-ci.org/" title="Hudson" >Hudson</a> vient de <a
href="http://hudson-ci.org/docs/news.html#2.0" title="sortir" >sortir</a>. Cette nouvelle version <code>2.0.0</code> introduit un changement dans la numérotation, en suivant le schémas <code>majeur.mineur.patch</code>, notamment préconisé par le versioning dans <em>OSGi</em>. Il se démarque désormais de la notation en <code>1.x</code> ({{x}} étant le numéro de build), toujours utilisée par <a
href="http://jenkins-ci.org/" title="Jenkins" >Jenkins</a>.</p><p>Plusieurs nouveautés importantes accompagnent cette nouvelle version avec notamment une modification du système de plugin qui repose maintenant sur le conteneur <em>OSGi</em> <a
href="http://github.com/sonatype/sisu" title="Sisu" >Sisu</a>, utilisé dans <a
href="http://www.sonatype.com/nexus/" title="Nexus" >Nexus</a> et <a
href="http://maven.apache.org/" title="Maven3" >Maven3</a>. Ce framework reposant sur <a
href="http://code.google.com/p/google-guice/" title="Google Guice" >Google Guice</a>, il permet l&#8217;utilisation des annotations de la <em>JSR330</em> comme <code>@Inject</code> permettant l&#8217;injection de dépendances ou encore <code>@Singleton</code> assurant l&#8217;unicité d&#8217;une instance d&#8217;un bean. <em>Sisu</em> permet aussi l&#8217;injection de services <em>OSGi</em> sans avoir à écrire du code spécifique à <em>OSGi</em>.</p><p><em>Hudson</em> reposant principalement sur des plugins, l&#8217;utilisation d&#8217;<em>OSGi</em> pour les déployer paraît particulièrement pertinente.<br
/> Ce nouveau système de plugin reste rétro-compatible avec les plugins <em>Hudson</em> actuels, mais la migration des plugins vers le nouveau système est cependant encouragé.</p><p><em>Jenkins</em> devrait lui aussi supporter le <em>JSR330</em> dans un avenir proche, permettant ainsi de supporter les plugins migrés. Certaines parties de l&#8217;implémentation proviendront directement des développements d&#8217;<em>Hudson</em>.</p><p>Outre cette importante nouveauté, cette nouvelle mouture apporte quelques fonctionnalités supplémentaires :</p><ul><li>des boîtes de dialogue modales de confirmation,</li><li>la possibilité de nettoyer le <em>workspace</em> avant chaque build,</li><li>l&#8217;amélioration du support de maven,</li><li>la possibilité de publier les plugins <em>Hudson</em> dans un dépôt maven.</li></ul><p>Il semble donc que la communauté <em>Hudson</em> soit particulièrement active et qu&#8217;une saine concurrence soit installée entre <em>Jenkins</em> et <em>Hudson</em>.</p><h4><a
name="CXFestdanslesbacs"></a>CXF 2.4.0 est dans les bacs</h4><p>La version <code>2.4.0</code> de <a
href="http://mail-archives.apache.org/mod_mbox/cxf-users/201104.mbox/%3C201104181017.07780.dkulp@apache.org%3E" title="CXF" >CXF</a> vient de sortir.</p><p>Cette nouvelle version apporte de nouvelles fonctionnalités dont :</p><ul><li>des améliorations au niveau de <em>WS-Security</em> avec le support des tokens <a
href="http://coheigea.blogspot.com/2011/04/saml-support-in-cxf-240.html" title="SAML2" >SAML2</a>, de meilleures performances et un meilleur support de la partie sécurité du profile <em>WS-I Basic</em>,</li><li>databinding <em>JiBX</em>,</li><li>des améliorations pour la transformation des messages <em>XML</em> pour <em>JAX-RS</em>,</li><li>l&#8217;ajout d&#8217;une console permettant l&#8217;accès aux logs <em>CXF</em>,</li><li>l&#8217;amélioration du support <em>OSGi</em>, permettant le déploiement de <em>CXF</em> dans un conteneur <em>OSGi</em> comme <a
href="http://karaf.apache.org/" title="Apache Karaf" >Apache Karaf</a>,</li><li>une amélioration du temps de démarrage et de l&#8217;empreinte mémoire.</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/04/27/revue-de-presse-xebia-208/feed/</wfw:commentRss> <slash:comments>13</slash:comments> </item> <item><title>Utiliser Guice et Peaberry pour développer un plugin Eclipse</title><link>http://blog.xebia.fr/2010/12/29/utiliser-guice-et-peaberry-pour-developper-un-plugin-eclipse/</link> <comments>http://blog.xebia.fr/2010/12/29/utiliser-guice-et-peaberry-pour-developper-un-plugin-eclipse/#comments</comments> <pubDate>Wed, 29 Dec 2010 09:43:40 +0000</pubDate> <dc:creator>Nicolas Demengel</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Guice]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[Peaberry]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=6388</guid> <description><![CDATA[Sans travailler spécifiquement sur la plateforme Eclipse et sans être committeur sur un des projets liés, il n&#8217;est pas rare de devoir écrire un plugin pour l&#8217;IDE Eclipse. Les raisons peuvent être variées : intégrer le gestionnaire de tâches de votre entreprise, supporter le DSL que vous venez de créer, templater des parties récurrentes de [...]]]></description> <content:encoded><![CDATA[<p>Sans travailler spécifiquement sur la plateforme Eclipse et sans être committeur sur un des projets liés, il n&#8217;est pas rare de devoir écrire un plugin pour l&#8217;IDE Eclipse. Les raisons peuvent être variées : intégrer le gestionnaire de tâches de votre entreprise, supporter le DSL que vous venez de créer, templater des parties récurrentes de votre développement, etc&#8230;</p><p>Quand on découvre la plateforme, on peut être surpris par deux différences majeures par rapport au développement d&#8217;un projet Java « entreprise » :</p><ul><li>La manière de builder le projet : Eclipse propose ses propres conventions de structure de projet et fournit ses outils pour le builder. Certains points sont paramétrables mais on ne retrouve pas la richesse offerte par Ant, Maven ou encore Gradle. Cela fera éventuellement l&#8217;objet d&#8217;un autre article ;</li><li>Dans le code lui même : le passage des dépendances entre classes ou entre bundles est particulier, et c&#8217;est ce dernier point qui nous intéresse dans cet article. En effet le code d&#8217;un plugin Eclipse ressemble souvent à ça : <code>SomePlugin.getDefault().getSomeComponent().getSomeChild().doSomething()</code>.</li></ul><p>Les singletons sont omniprésents, principalement pour fournir un point d&#8217;accès aux différents bundles. Par ailleurs beaucoup d&#8217;actions ne sont accessibles que via des méthodes statiques.</p><p>Évidemment, le principal problème qui se pose est celui des tests unitaires. Eclipse propose de lancer votre plugin et d&#8217;exécuter des tests JUnit dessus, mais il s&#8217;agit là de tests d&#8217;intégration qui s&#8217;exécutent lentement et ne permettront pas de faire du TDD. Il est toujours possible de faire de l&#8217;injection de dépendances (DI) « à la main », mais on aurait tort de se priver de l&#8217;utilisation d&#8217;un framework dédié à cela, d&#8217;autant plus qu&#8217;on pourrait y gagner d&#8217;autres fonctionnalités : binding interface/implémentation, gestion de scopes (singleton, session…), AOP, etc…</p><p>En attendant Eclipse 4 &#8211; qui <a
href="http://www.eclipse.org/e4/resources/e4-whitepaper.php" title="proposera nativement des fonctionnalits de DI" >proposera nativement des fonctionnalités de DI</a> - je vous propose donc de mettre en place Guice et son extension Peaberry sur un projet-type de plugin pour Eclipse.</p><p>Note : pour ce qui est de l&#8217;appel de méthodes statiques, aucun framework de DI ne pourra changer la donne puisqu&#8217;on est alors dépendant d&#8217;une méthode, et non d&#8217;une classe. Il faudra donc déléguer ces appels à des classes « tampons » ou mocker ces appels lors des tests avec un framework spécifique tel que <a
href="http://code.google.com/p/jmockit/" title="JMockit" >JMockit</a>.</p><h3><a
name="Crerleprojetdedmonstration"></a>Créer le projet de démonstration</h3><p>Tout le code nécessaire à la démonstration est dans cet article, mais il est parfois abrégé pour des questions de lisibilité. Si vous ne désirez pas créer le projet de démonstration mais que vous voulez malgré tout avoir accès au code dans son intégralité, vous pouvez <a
href="https://github.com/ndemengel/guiceexample/" title="le trouver sur GitHub" >le trouver sur GitHub</a>.</p><p>Nul besoin de quelque chose de compliqué pour cet article, on se contentera du HelloWorld d&#8217;Eclipse :</p><ul><li>Créer un nouveau projet : &laquo;&nbsp;New&nbsp;&raquo; > &laquo;&nbsp;Project&nbsp;&raquo; > &laquo;&nbsp;Plug-in Development&nbsp;&raquo; > &laquo;&nbsp;Plug-in Project&nbsp;&raquo; ;</li><li>Lui donner un nom, pour notre exemple : fr.xebia.eclipse.guiceexample ;</li><li>Changer le nom par défaut de l&#8217;<code>Activator</code> afin qu&#8217;il représente mieux le fait que ce sera un point d&#8217;entrée au plugin, par exemple : <code>GuiceExamplePlugin</code> ;</li><li>Choisir le template &laquo;&nbsp;Hello, World&nbsp;&raquo; ;</li><li>Valider.</li></ul><p>A ce stade, vous pouvez lancer le plugin (&laquo;&nbsp;Run As&nbsp;&raquo; > &laquo;&nbsp;Eclipse Application&nbsp;&raquo;) et constater qu&#8217;il vous dit bonjour lorsque vous cliquez sur &laquo;&nbsp;Sample Menu&nbsp;&raquo; > &laquo;&nbsp;Sample Action&nbsp;&raquo;.</p><p>Afin d&#8217;avoir un peu de matière pour la suite, je vous propose deux ajouts :</p><ol><li>dans le message, afficher le thème graphique utilisé par la plateforme ;</li><li>dans la console, afficher, lors du démarrage, des statistiques sur les points d&#8217;extension utilisés ou fournis par le plugin.</li></ol><p>Le premier ajout se situe donc dans <code>SampleAction.run()</code> :</p><pre class="brush: java; title: ; notranslate">
public void run(IAction action) {
	String currentTheme = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getLabel();
	String message = &quot;Hello, Xebia world. &quot; + NL + &quot;The current theme is: &quot; + currentTheme;
	MessageDialog.openInformation(window.getShell(), &quot;Guice Example&quot;, message);
}
</pre><p>Pour le deuxième point, ajoutons le code suivant dans <code>GuiceExamplePlugin.start()</code> :</p><pre class="brush: java; title: ; notranslate">
public void start(BundleContext context) throws Exception {
	super.start(context);
	plugin = this;
	ExtensionStatistics stats = new ExtensionStatistics();
	String message = &quot;This plugin declares &quot; + stats.countDeclaredExtensions() + &quot; extensions and provides &quot;
			+ stats.countDeclaredExtensionPoints() + &quot; extension points&quot;;
	getLog().log(new Status(IStatus.INFO, PLUGIN_ID, message));
}
</pre><p>Le code de la classe <code>ExtensionStatistics</code> étant le suivant :</p><pre class="brush: java; title: ; notranslate">
public class ExtensionStatistics {
	public int countDeclaredExtensions() {
		return Platform.getExtensionRegistry().getExtensions(GuiceExamplePlugin.PLUGIN_ID).length;
	}
	public int countDeclaredExtensionPoints() {
		return Platform.getExtensionRegistry().getExtensionPoints(GuiceExamplePlugin.PLUGIN_ID).length;
	}
}
</pre><p>Enfin, afin que le plugin démarre en même temps qu&#8217;Eclipse, ajoutons cette ligne dans le fichier plugin.xml :</p><pre class="brush: xml; title: ; notranslate">
&lt;extension point=&quot;org.eclipse.ui.startup&quot; /&gt;
</pre><p>A présent, lors du lancement de l&#8217;application, on peut lire dans la console de l&#8217;instance Eclipse de développement :</p><pre class="brush: java; title: ; notranslate">
!ENTRY fr.xebia.eclipse.guiceexample 1 0 2010-12-18 16:47:33.848
!MESSAGE This plugin declares 2 extensions and provides 0 extension points
</pre><p>ou encore dans la vue &laquo;&nbsp;Error Log&nbsp;&raquo; de la nouvelle instance d&#8217;Eclipse :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/12/error-log.png" border="0" alt="" /></div><p>Et en cliquant sur &laquo;&nbsp;Sample Action&nbsp;&raquo; on obtient :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/12/hello-xebia-world.png" border="0" alt="" /></div><p>Voilà, la suite de cet article va consister à réécrire ces deux bouts de code pour qu&#8217;ils utilisent Guice, afin de s&#8217;affranchir des couplages forts entre nos classes et leurs dépendances. Mais commençons tout d&#8217;abord par l&#8217;importation de Guice dans la plateforme.</p><h3><a
name="ImporterGuice"></a>Importer Guice</h3><p>Vous trouverez la dernière version de Guice <a
href="http://code.google.com/p/google-guice/downloads/list?q=label:Featured" title="ici" >ici</a>. Deux JARs seulement nous intéressent dans l&#8217;archive ZIP : guice-2.0.jar et aopalliance.jar.</p><p>Eclipse propose deux manières d&#8217;importer des JARs dans la plateforme pour les utiliser avec votre plugin :</p><ol><li>inclure les JARs dans votre plugin ;</li><li>exposer les JARs en question comme des plugins, desquels dépendra votre plugin.</li></ol><p>Dans le premier cas, il vous faut :</p><ul><li>Placer les JARs dans votre projet (disons dans un répertoire &laquo;&nbsp;lib&nbsp;&raquo;) ;</li><li>Puis, au sein de l&#8217;éditeur du manifest de votre plugin, les ajouter dans la section &laquo;&nbsp;Classpath&nbsp;&raquo; de l&#8217;onglet &laquo;&nbsp;Runtime&nbsp;&raquo; ;</li><li>Créer aussi la library &laquo;&nbsp;.&nbsp;&raquo; pour que le plugin voit encore ses propres classes ;</li><li>Enfin, sauvegarder.</li></ul><p>La deuxième solution est à préférer si vous comptez utiliser vos dépendances au sein de plusieurs plugins. Les étapes sont les suivantes :</p><ul><li>Créer un nouveau projet : &laquo;&nbsp;New&nbsp;&raquo; > &laquo;&nbsp;Project&nbsp;&raquo; > &laquo;&nbsp;Plug-in Development&nbsp;&raquo; > &laquo;&nbsp;Plug-in from Existing JAR Archives&nbsp;&raquo; ;</li><li>Donner l&#8217;accès aux JARs à importer ;</li><li>Donner un nom au plugin : pour éviter toute collision, une bonne méthode consiste à utiliser le nom de votre organisation ou de votre plugin (selon la portée de votre dépendance), suivi du nom de la dépendance (ou de l&#8217;ensemble de dépendances) &#8211; dans notre exemple : fr.xebia.eclipse.guiceexample.guice ;</li><li>Décocher « Unzip the JAR archives into the project » (ça ne sert à rien) ;</li><li>Enfin, déclarer ce nouveau plugin comme dépendance de celui qui nous intéresse : là encore, utiliser l&#8217;éditeur du manifest &#8211; onglet &laquo;&nbsp;Dependencies&nbsp;&raquo; &#8211; et ajouter fr.xebia.eclipse.guiceexample.guice.</li></ul><p>On notera que ce nouveau plugin expose les JARs de la même manière qu&#8217;avec la première solution, mais au moins on n&#8217;a pas à le faire à la main.</p><h3><a
name="CrerunmoduleGuiceetuninjecteur"></a>Créer un module Guice et un injecteur</h3><p>En bref, Guice requiert un ou plusieurs modules définissant les bindings entre des types Java et leur(s) implémentation(s), ainsi qu&#8217;un ou plusieurs injecteurs permettant de construire le graphe d&#8217;objets à partir de ces définitions. Pour démarrer nous créerons donc un module principal pour notre plugin :</p><pre class="brush: java; title: ; notranslate">
package fr.xebia.eclipse.guiceexample;
import com.google.inject.AbstractModule;
public class CoreModule extends AbstractModule {
	@Override
	protected void configure() {
	}
}
</pre><p>ainsi qu&#8217;un injecteur, dans GuiceExamplePlugin :</p><pre class="brush: java; title: ; notranslate">
private Injector injector;
public void start(BundleContext context) throws Exception {
	super.start(context);
	plugin = this;
	injector = Guice.createInjector(new CoreModule());
	ExtensionStatistics stats = injector.getInstance(ExtensionStatistics.class);
	// ...
}
// méthode d'accès qui nous servira plus tard
public Injector getInjector() {
	return injector;
}
</pre><p>Dans le cas qui nous intéresse, nous voudrions nous passer de l&#8217;appel à <code>Platform.getExtensionRegistry()</code>. Il suffit de déclarer une méthode <code>@Provides</code> dans <code>CoreModule</code> pour que Guice sache comment nous le fournir :</p><pre class="brush: java; title: ; notranslate">
public class CoreModule extends AbstractModule {
	// configure(){} ...
	@Provides
	protected IExtensionRegistry provideExtensionRegistry() {
		return Platform.getExtensionRegistry();
	}
}
public class ExtensionStatistics {
	private final IExtensionRegistry extensionRegistry;
	@Inject
	public ExtensionStatistics(IExtensionRegistry extensionRegistry) {
		this.extensionRegistry = extensionRegistry;
	}
	public int countDeclaredExtensions() {
		return extensionRegistry.getExtensions(GuiceExamplePlugin.PLUGIN_ID).length;
	}
	// ...
}
</pre><p>Cela nous évite ainsi de créer notre propre factory. Vous l&#8217;aurez compris la suite ne relève que l&#8217;utilisation basique de Guice, déjà discutée sur ce blog <a
href="http://blog.xebia.fr/2009/06/19/google-guice-injection-avancee/" title="ici" >ici</a> et <a
href="http://blog.xebia.fr/2009/04/15/google-guice-les-bases-de-linjection-de-dependances/" title="l" >là</a>.</p><p>Seulement voilà : lors d&#8217;un développement pour Eclipse IDE, la plupart de nos classes est déclarée comme étant une extension à la plateforme (au sein du fichier plugin.xml) et est instanciée par Eclipse, comme c&#8217;est le cas pour <code>SampleAction</code>. Dans ce cas-là, comment faire pour s&#8217;éviter de devoir à nouveau récupérer par nous-même nos dépendances ?</p><h3><a
name="Injecterdesdpendancesdansuneex"></a>Injecter des dépendances dans une extension Eclipse</h3><h4><a
name="PeaberrysGuiceExtensionFactory"></a>Peaberry&#8217;s GuiceExtensionFactory</h4><p>Une première solution à notre problème est apportée par <a
href="http://code.google.com/p/peaberry/" title="Peaberry" >Peaberry</a>. Il s&#8217;agit d&#8217;une extension pour Guice qui a été développée alors qu&#8217;il ne fonctionnait pas encore en milieu OSGi. Cela est réparé depuis la version 2 de Guice, mais Peaberry n&#8217;en fournit pas moins un support beaucoup plus avancé d&#8217;OSGi en général, et d&#8217;Eclipse en particulier.</p><p>Avant toute chose, il faut importer Peaberry et Peaberry-Eclipse. La dernière version se récupère <a
href="http://code.google.com/p/peaberry/downloads/list?q=label:Featured" title="ici" >ici</a>, il s&#8217;agit alors de procéder comme précédemment pour inclure : <code>aopalliance-1.0.jar</code>, <code>guice-customloader-yyyymmdd.jar</code>, <code>peaberry-1.1.1.jar</code> et <code>peaberry.eclipse-1.1.1.jar</code>. C&#8217;est ce dernier JAR qui va nous apporter le support spécifique pour les extensions Eclipse.</p><p>Note : il semblerait que l&#8217;équipe de Peaberry ait eu un problème de packaging sur la version 1.1.1, perdant ainsi la déclaration du point d&#8217;extension décrit ci-après. La procédure pour corriger cela est fournie <a
href="http://blog.xebia.fr/2010/12/29/utiliser-guice-et-peaberry-pour-developper-un-plugin-eclipse/#AnnexeProcdurepourutiliserlepo" title="en fin darticle" >en fin d&#8217;article</a>.</p><p>Dans notre plugin (fichier plugin.xml), il est à présent possible de demander à Peaberry d&#8217;instancier nos extensions via sa factory :</p><pre class="brush: xml; title: ; notranslate">
&lt;extension point=&quot;org.eclipse.ui.actionSets&quot;&gt;
   &lt;!-- ... --&gt;
            class=&quot;org.ops4j.peaberry.eclipse.GuiceExtensionFactory:fr.xebia.eclipse.guiceexample.actions.SampleAction&quot;
   &lt;!-- ... --&gt;
&lt;/extension&gt;
</pre><p>Il faut alors lui préciser le module Guice à utiliser pour injecter les dépendances :</p><pre class="brush: xml; title: ; notranslate">
&lt;extension point=&quot;org.ops4j.peaberry.eclipse.modules&quot;&gt;
   &lt;module class=&quot;fr.xebia.eclipse.guiceexample.CoreModule&quot; /&gt;
&lt;/extension&gt;
</pre><p>Une autre syntaxe est possible, plus lisible, où le nom de la classe à instancier est en fait l&#8217;ID de l&#8217;extension (ce qui était déjà le cas dans notre exemple) :</p><pre class="brush: xml; title: ; notranslate">
&lt;!-- ... --&gt;
         class=&quot;org.ops4j.peaberry.eclipse.GuiceExtensionFactory&quot;
         id=&quot;fr.xebia.eclipse.guiceexample.actions.SampleAction&quot;
&lt;!-- ... --&gt;
</pre><p>On peut à présent modifier <code>CoreModule</code> et <code>SampleAction</code> comme suit :</p><pre class="brush: java; title: ; notranslate">
public class CoreModule extends AbstractModule {
	// ...
	@Provides
	protected IThemeManager provideThemeManager() {
		return PlatformUI.getWorkbench().getThemeManager();
	}
}
public class SampleAction implements IWorkbenchWindowActionDelegate {
	// ...
	private final IThemeManager themeManager;
	@Inject
	public SampleAction(IThemeManager themeManager) {
		this.themeManager = themeManager;
	}
	public void run(IAction action) {
		String currentTheme = themeManager.getCurrentTheme().getLabel();
		String message = &quot;Hello, Xebia world. &quot; + NL + &quot;The current theme is: &quot; + currentTheme;
		MessageDialog.openInformation(window.getShell(), &quot;Guice Example&quot;, message);
	}
}
</pre><p>On le voit, une fois le problème de l&#8217;import de Peaberry-Eclipse réglé, c&#8217;est assez simple à utiliser. Il reste malheureusement un problème potentiel : il est impossible de demander à la <code>GuiceExtensionFactory</code> d&#8217;utiliser un injecteur existant, elle va donc en créer un pour notre plugin. Si le contenu de plugin.xml est notre seul point d&#8217;entrée, tout va bien ; mais si on désire également mettre de la logique dans <code>GuiceExamplePlugin.start()</code> sur la base du même module Guice, une classe déclarée <code>@Singleton</code> pourra alors être instanciée deux fois…</p><p>Heureusement la solution est assez simple : écrire notre propre extension factory.</p><h4><a
name="Ecriresapropreextensionfactory"></a>Ecrire sa propre extension factory</h4><p><code>GuiceExtensionFactory</code> implémente l&#8217;interface <code>IExecutableExtensionFactory</code>, permettant de contrôler l&#8217;instantiation des extensions. L&#8217;idée est de créer une factory abstraite faisant le même travail à l&#8217;exception près que l&#8217;injecteur sera fourni par une sous-classe concrète. Voici le code de la factory abstraite (<a
href="https://github.com/ndemengel/guiceexample/blob/master/fr.xebia.eclipse.guiceexample.guice/src/fr/xebia/eclipse/guiceexample/guice/AbstractGuiceInjectorExtensionFactory.java" title="voir le code complet ici" >voir le code complet ici</a>) :</p><pre class="brush: java; title: ; notranslate">
public abstract class AbstractGuiceInjectorExtensionFactory implements IExecutableExtension, IExecutableExtensionFactory {
	// définition des champs ...
	public void setInitializationData(final IConfigurationElement config, final String name, final Object data) {
		configuration = config;
		contributor = config.getContributor();
		// si la classe n'est pas fournie dans le même attribut que la factory (i.e: class=&quot;factory:classe&quot;), on la récupère dans l'attribut &quot;id&quot;
		className = data instanceof String ? (String) data : config.getAttribute(&quot;id&quot;);
	}
	public Object create() throws CoreException {
		if (null == className) {
			throw newCoreException(&quot;Configuration is missing class information&quot;);
		}
		final Class&lt;?&gt; clazz;
		try {
			clazz = resolve(contributor).loadClass(className);
		} catch (final InvalidRegistryObjectException e) {
			throw newCoreException(e);
		} catch (final ClassNotFoundException e) {
			throw newCoreException(e);
		}
		final Object o = getInjector().getInstance(clazz);
		if (o instanceof IExecutableExtension) {
			((IExecutableExtension) o).setInitializationData(configuration, null, null);
		}
		return o;
	}
	abstract protected Injector getInjector();
	// newCoreException(){}...
}
</pre><p>On peut à présent créer une factory différente pour chaque besoin que l&#8217;on pourrait avoir. Dans le cas de cet exemple, le but était de partager l&#8217;injecteur défini dans <code>GuiceExamplePlugin</code> :</p><pre class="brush: java; title: ; notranslate">
public class GuiceExampleExtensionFactory extends AbstractGuiceInjectorExtensionFactory {
	@Override
	protected Injector getInjector() {
		return GuiceExamplePlugin.getDefault().getInjector();
	}
}
</pre><p>et voici le contenu de plugin.xml associé :</p><pre class="brush: xml; title: ; notranslate">
&lt;!-- on n'utilise plus le point d'extension déclarant CoreModule --&gt;
&lt;extension point=&quot;org.eclipse.ui.actionSets&quot;&gt;
   &lt;!-- ... --&gt;
            class=&quot;fr.xebia.eclipse.guiceexample.GuiceExampleExtensionFactory&quot;
            id=&quot;fr.xebia.eclipse.guiceexample.actions.SampleAction&quot;
   &lt;!-- ... --&gt;
&lt;/extension&gt;
</pre><p>Note : on pourrait tout à fait utiliser cette factory pour créer des contextes d&#8217;injection enfants, dédiés par exemple à un certain type d&#8217;extensions définies dans plugin.xml :</p><pre class="brush: java; title: ; notranslate">
public class ActionHandlerFactory extends AbstractGuiceInjectorExtensionFactory {
    private static Injector injector;
    @Override
    protected synchronized Injector getInjector() {
        if (injector == null) {
            injector = GuiceExamplePlugin.getDefault().getInjector().createChildInjector(new ActionHandlingModule());
        }
        return injector;
    }
    public static void cleanup() {
        injector = null;
    }
}
</pre><p>A ce stade, la plupart des besoins en injection de dépendances apparaissant lors du développement d&#8217;un plugin basique pour Eclipse sont couverts. On pourra même fournir notre contexte d&#8217;injection à des plugins autorisés en exposant une méthode <code>createChildInjector()</code> au niveau de notre plugin. Pourtant, quand le besoin arrive d&#8217;aller plus loin dans les intéractions entre bundles, il convient de s&#8217;intéresser aux services OSGi et aux points d&#8217;extension Eclipse.</p><h3><a
name="AllerplusloinavecPeaberry"></a>Aller plus loin avec Peaberry</h3><p>Eclipse est avant tout une plateforme OSGi, il est donc possible de publier et consommer des services. Là encore il serait intéressant de pouvoir les injecter automatiquement, voici donc deux grandes fonctionnalités proposées par Peaberry et Peaberry-Eclipse.</p><h4><a
name="InjecterdesservicesOSGi"></a>Injecter des services OSGi</h4><p>Voici un exemple montrant l&#8217;injection du service EnvironmentInfo d&#8217;Eclipse, afin d&#8217;afficher l&#8217;OS sur lequel tourne la plate-forme :</p><pre class="brush: java; title: ; notranslate">
public class CoreModule extends AbstractModule {
	@Override
	protected void configure() {
		// lors d'une injection, toute instance de EnvironmentInfo sera créée par un service déclarant cette interface
		bind(EnvironmentInfo.class).toProvider(Peaberry.service(EnvironmentInfo.class).single());
	}
}
public class GuiceExamplePlugin extends AbstractUIPlugin {
	// ...
	public void start(BundleContext context) throws Exception {
		// ...
		// ajout du support des services OSGi avec Peaberry.osgiModule()
		injector = Guice.createInjector(Peaberry.osgiModule(context), new CoreModule());
		// récupération du service
		EnvironmentInfo info = injector.getInstance(EnvironmentInfo.class);
		getLog().log(new Status(IStatus.INFO, PLUGIN_ID, &quot;This platform runs on &quot; + info.getOS()));
	}
	// ...
}
</pre><p>Note : il existe une solution plus simple pour récupérer cette information, mais là encore avec une méthode statique : <code>org.eclipse.core.runtime.Platform.getOS()</code>.</p><h4><a
name="Injecterdesextensionsclientes"></a>Injecter des extensions clientes</h4><p>Le système d&#8217;extensions d&#8217;Eclipse repose en fait aussi sur des services OSGi, Peaberry-Eclipse va donc nous permettre d&#8217;injecter de telles extensions.</p><p>Voici un dernier exemple dans lequel notre plugin propose un point d&#8217;extension à d&#8217;autres plugins pour qu&#8217;ils puissent aussi nous dire bonjour :</p><ul><li>Créer l&#8217;interface définissant le contrat à remplir par l&#8217;extension :</li></ul><pre class="brush: java; title: ; notranslate">
package fr.xebia.eclipse.guiceexample.extensionpoint;
public interface HelloWorldParticipant {
	String sayHello();
}
</pre><ul><li>Déclarer le point d&#8217;extension dans plugin.xml :</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;extension-point id=&quot;helloWorldParticipant&quot; name=&quot;&quot;Hello World&quot; Participant&quot; schema=&quot;schema/helloWorldParticipant.exsd&quot;/&gt;
</pre><ul><li>Le définir dans schema/helloWorldParticipant.exsd de la manière suivante :</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;?xml version='1.0' encoding='UTF-8'?&gt;
&lt;schema targetNamespace=&quot;fr.xebia.eclipse.guiceexample&quot; xmlns=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;
   &lt;element name=&quot;extension&quot;&gt;
      &lt;complexType&gt;
         &lt;choice minOccurs=&quot;1&quot; maxOccurs=&quot;unbounded&quot;&gt;
            &lt;element ref=&quot;client&quot;/&gt;
         &lt;/choice&gt;
         &lt;attribute name=&quot;point&quot; type=&quot;string&quot; use=&quot;required&quot; /&gt;
      &lt;/complexType&gt;
   &lt;/element&gt;
   &lt;element name=&quot;client&quot;&gt;
      &lt;complexType&gt;
         &lt;attribute name=&quot;class&quot; type=&quot;string&quot; use=&quot;required&quot;&gt;
            &lt;annotation&gt;
               &lt;appInfo&gt;
                  &lt;meta.attribute kind=&quot;java&quot; basedOn=&quot;:fr.xebia.eclipse.guiceexample.extension.HelloWorldParticipant&quot;/&gt;
               &lt;/appInfo&gt;
            &lt;/annotation&gt;
         &lt;/attribute&gt;
      &lt;/complexType&gt;
   &lt;/element&gt;
&lt;/schema&gt;
</pre><p>Enfin, pour les besoins de l&#8217;exemple, déclarons une extension sur ce point d&#8217;extension (dans le même plugin pour faire simple) :</p><ul><li>Créer l&#8217;extension :</li></ul><pre class="brush: java; title: ; notranslate">
package fr.xebia.eclipse.guiceexample.extension;
import fr.xebia.eclipse.guiceexample.extensionpoint.HelloWorldParticipant;
public class SampleHelloWorldParticipant implements HelloWorldParticipant {
	@Override
	public String sayHello() {
		return &quot;Sample Hello&quot;;
	}
}
</pre><ul><li>La déclarer dans plugin.xml :</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;extension point=&quot;fr.xebia.eclipse.guiceexample.helloWorldParticipant&quot;&gt;
   &lt;client class=&quot;fr.xebia.eclipse.guiceexample.extension.SampleHelloWorldParticipant&quot; /&gt;
&lt;/extension&gt;
</pre><p>Voici alors la manière « standard » de récupérer de telles extensions :</p><pre class="brush: java; title: ; notranslate">
public class SampleAction implements IWorkbenchWindowActionDelegate {
	// ...
	public void run(IAction action) {
		String currentTheme = themeManager.getCurrentTheme().getLabel();
		String message = &quot;Hello, Xebia world. &quot; + NL + &quot;The current theme is: &quot; + currentTheme;
		message += NL + getHellosFromParticipants();
		MessageDialog.openInformation(window.getShell(), &quot;Guice Example&quot;, message);
	}
	private String getHellosFromParticipants() {
		String extensionPoint = &quot;fr.xebia.eclipse.guiceexample.helloWorldParticipant&quot;;
		IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor(extensionPoint);
		final StringBuilder buffer = new StringBuilder();
		for (IConfigurationElement element : elements) {
			try {
				final Object extension = element.createExecutableExtension(&quot;class&quot;);
				if (!(extension instanceof HelloWorldParticipant))
					continue;
				appendParticipantHello(buffer, (HelloWorldParticipant) extension);
			} catch (CoreException e) {
				// ...
			}
		}
		return buffer.toString();
	}
	private void appendParticipantHello(final StringBuilder buffer, final HelloWorldParticipant participant) {
		SafeRunner.run(new ISafeRunnable() {
			public void run() throws Exception {
				if (buffer.length() == 0)
					buffer.append(NL).append(&quot;Other hellos:&quot;);
				buffer.append(NL).append(participant.sayHello());
			}
			public void handleException(Throwable throwable) {
				// ...
			}
		});
	}
}
</pre><p>On le voit, c&#8217;est plutôt indigeste. Peaberry-Eclipse nous permet de d&#8217;injecter ces extensions de la manière suivante :</p><pre class="brush: java; title: ; notranslate">
// annotation de l'interface de l'extension pour fournir l'ID du point d'extension
@ExtensionBean(&quot;fr.xebia.eclipse.guiceexample.helloWorldParticipant&quot;)
public interface HelloWorldParticipant {
	// ...
}
public class CoreModule extends AbstractModule {
	@Override
	protected void configure() {
		// toute instance de HelloWorldParticipant déclarée par un service (une extension) sera injectée
		// si un Iterable&lt;HelloWorldParticipant&gt; est demandé
		bind(TypeLiterals.iterable(HelloWorldParticipant.class)).toProvider(Peaberry.service(HelloWorldParticipant.class).multiple());
	}
}
public class GuiceExamplePlugin extends AbstractUIPlugin {
	// ...
	public void start(BundleContext context) throws Exception {
		// ...
		// ajout du support du registre des services-extensions d'Eclipse avec EclipseRegistry.eclipseRegistry()
		injector = Guice.createInjector(Peaberry.osgiModule(context, EclipseRegistry.eclipseRegistry()), new CoreModule());
	}
}
public class SampleAction implements IWorkbenchWindowActionDelegate {
	// ...
	private final Iterable&lt;HelloWorldParticipant&gt; participants;
	@Inject
	public SampleAction(IThemeManager themeManager, Iterable&lt;HelloWorldParticipant&gt; participants) {
		this.themeManager = themeManager;
		this.participants = participants;
	}
	// run(){}...
	private String getHellosFromParticipants() {
		final StringBuilder buffer = new StringBuilder();
		for (final HelloWorldParticipant participant : participants) {
			appendParticipantHello(buffer, participant);
		}
		return buffer.toString();
	}
}
</pre><p>Et voilà le résultat :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/12/hello-xebia-world-2.png" border="0" alt="" /></div><p>Dans le cas d&#8217;une extension « non-exécutable » (ne fournissant pas une classe à instancier mais des propriétés à récupérer) il est également possible de demander à Peaberry de <a
href="http://code.google.com/p/peaberry/wiki/EclipseRegistry#Binding_to_Eclipse_Extensions" title="mapper les proprits exposes" >mapper les propriétés exposées</a> à des méthodes de l&#8217;interface annotée avec <code>@ExtensionBean</code>.</p><p>Note : n&#8217;oubliez pas que les services OSGi sont par nature dynamiques et ne sont donc jamais une ressource acquise. Peaberry est assez sympathique dans le sens où il injecte des proxies dynamiques pour gérer cela automatiquement, mais pour toute utilisation avancée, je vous invite à vous renseigner en détail sur les <a
href="http://code.google.com/p/peaberry/wiki/UserGuide#Fluent_API_Examples" title="autres fonctionnalits de Peaberry en rapport avec OSGi" >autres fonctionnalités de Peaberry en rapport avec OSGi</a>.</p><h3><a
name="Conclusion"></a>Conclusion :</h3><p>Cet article nous a permis de voir qu&#8217;il est tout à fait possible d&#8217;utiliser un framework d&#8217;injection de dépendances lors d&#8217;un développement pour Eclipse. Pour les cas les plus basiques Guice seul suffira, de même que d&#8217;autres frameworks s&#8217;ils supportent le mécanisme de class-loading de OSGi (par exemple Spring). Mais il est possible d&#8217;aller plus loin dans le support d&#8217;OSGi grâce à Peaberry qui permet d&#8217;injecter des services (Spring Dynamic Modules fournit un support équivalent) mais surtout dans le support de la plate-forme Eclipse avec Peaberry-Eclipse qui simplifie grandement la récupération d&#8217;extensions clientes.</p><p>Les techniques décrites dans cet article me permettent actuellement d&#8217;améliorer grandement la lisibilité et la testabilité d&#8217;un plugin Eclipse au développement duquel je participe (<a
href="http://moreunit.sourceforge.net/" title="MoreUnit" >MoreUnit</a>). En attendant Eclipse 4, je ne peux donc que vous encourager à utiliser ces solutions.</p><h3><a
name="ressources">Ressources</a></h3><ul><li><a
href="http://code.google.com/p/peaberry/wiki/" title="La documentation de Peaberry" >La documentation de Peaberry</a>.</li><li>Martin Lippert&#8217;s SpringExtensionFactory : <a
href="http://martinlippert.blogspot.com/2008/05/dependency-injection-for-extensions.html" title="l'article" >l&#8217;article</a> et <a
href="https://github.com/martinlippert/spring-extension-factory" title="le code" >le code</a>.</li><li><a
href="https://github.com/ndemengel/guiceexample/" title="Le code de lexemple sur GitHub" >Le code de l&#8217;exemple sur GitHub</a>.</li></ul><h3><a
name="AnnexeProcdurepourutiliserlepo"></a>Annexe : Procédure pour utiliser le point d&#8217;extension org.ops4j.peaberry.eclipse.modules</h3><ul><li>Récupérer le fichier <a
href="http://peaberry.googlecode.com/svn-history/r831/trunk/extensions/eclipse/src/main/resources/schema/modules.exsd|http://peaberry.googlecode.com/svn-history/r831/trunk/extensions/eclipse/src/main/resources/schema/modules.exsd" title="modulesexsd" >modules.exsd</a>, il s&#8217;agit de la description d&#8217;un point d&#8217;extension ;</li><li>Le placer dans le plugin qui expose Peaberry, dans un dossier &laquo;&nbsp;schema&nbsp;&raquo; ;</li><li>Ajouter un fichier &laquo;&nbsp;plugin.xml&nbsp;&raquo; à la racine de ce même plugin (s&#8217;il n&#8217;existe pas déjà) ;</li><li>Dans l&#8217;éditeur de manifest, cocher &laquo;&nbsp;This plug-in is a singleton&nbsp;&raquo; (onglet &laquo;&nbsp;Overview&nbsp;&raquo;) ;</li><li>Dans ce même éditeur, ajouter une dépendance à &laquo;&nbsp;org.eclipse.core.runtime&nbsp;&raquo; (onglet &laquo;&nbsp;Dependencies&nbsp;&raquo;, section &laquo;&nbsp;Required plug-ins&nbsp;&raquo;) ;</li><li>Toujours dans l&#8217;éditeur, inclure &laquo;&nbsp;plugin.xml&nbsp;&raquo; au binard built (onglet &laquo;&nbsp;Build&nbsp;&raquo;, section &laquo;&nbsp;Binary Build&nbsp;&raquo;) ;</li><li>Enfin, à l&#8217;intérieur de plugin.xml, déclarer le point d&#8217;extension :</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;?eclipse version=&quot;3.4&quot;?&gt;
&lt;plugin&gt;
   &lt;extension-point id=&quot;org.ops4j.peaberry.eclipse.modules&quot; name=&quot;Guice binding modules&quot; schema=&quot;schema/modules.exsd&quot;/&gt;
&lt;/plugin&gt;
</pre>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/12/29/utiliser-guice-et-peaberry-pour-developper-un-plugin-eclipse/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/</link> <comments>http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#comments</comments> <pubDate>Mon, 04 Jan 2010 19:12:31 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[Camel]]></category> <category><![CDATA[Impala]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Spring Integration]]></category> <category><![CDATA[Spring ROO]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3702</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. SOA Spring Integration et Apache Camel : 2 ESB lightweight en action Le coin de la technique Impala, la modularité pour Spring sans OSGi La définition de DataSources dans JEE 6 Les google-collections sont finales ! Spring Roo en 1.0.0 pour terminer l&#8217;année SOA [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#SpringIntegrationetApacheCamel">Spring Integration et Apache Camel : 2 ESB <em>lightweight</em> en action</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#ImpalalamodularitpourSpringsan">Impala, la modularité pour Spring sans OSGi</a></li><li><a
href="http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#LadfinitiondeDataSourcesdansJE">La définition de <em>DataSources</em> dans JEE 6</a></li><li><a
href="http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#Lesgooglecollectionssontfinale">Les google-collections sont finales !</a></li><li><a
href="http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/#SpringRooenpourterminerlanne">Spring Roo en 1.0.0 pour terminer l&#8217;année</a></li></ul><h3><a
name="SOA"></a>SOA</h3><h4><a
name="SpringIntegrationetApacheCamel"></a>Spring Integration et Apache Camel : 2 ESB <em>lightweight</em> en action</h4><p>La mouvance SOA a amené un certain nombre de produits classifiés comme ESB (<em>Enterprise Service Bus</em>) dont le but est de répondre aux problématiques d&#8217;intégration courantes en entreprise. Dans un premier temps, ces produits prenaient la forme de <em>middlewares</em> très lourds dont la mise en œuvre devait être justifiée par des besoins importants. Il y a deux ans, <a
title="nous assistions  lavnement" href="http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/">nous assistions à l&#8217;avènement</a> d&#8217;ESB qualifiés de <em>lightweight</em> car ils prenaient la forme de <em>frameworks</em> moins gourmands en ressources et plus simples à utiliser. Spring Integration et Apache Camel sont les deux principales options à envisager en matière d&#8217;ESB léger.</p><p>C&#8217;est justement de l&#8217;utilisation de chacun de ces deux <em>frameworks</em> que discute <a
title="larticle que vient de publier Biju Kunjummen" href="http://java.dzone.com/articles/spring-integration-and-apache">l&#8217;article que vient de publier Biju Kunjummen</a>. Il y propose une problématique d&#8217;intégration qui consiste en l&#8217;exposition d&#8217;un service qui, lorsqu&#8217;il est invoqué, entraîne l&#8217;invocation multiple d&#8217;un même service de bas niveau via l&#8217;utilisation d&#8217;un pattern <em>splitter</em> sur la requête et d&#8217;un pattern <em>aggregator</em> sur la réponse. Les deux <em>frameworks</em> offrent nativement ce type d&#8217;EIP (<em>Enterprise Intergration Pattern</em>).</p><p>Aucun favori ne se démarque clairement dans la comparaison entre ces deux implémentations : Spring Integration vient s&#8217;intégrer naturellement à l&#8217;<em>Application Context</em> de Spring en reprenant le même type de structure de définition XML, tandis qu&#8217;Apache Camel, bien qu&#8217;offrant également la possibilité d&#8217;une configuration XML, sera surtout apprécié pour son DSL Java permettant la définition des routes d&#8217;intégration.</p><p>Le lecteur intéressé par ces deux <em>frameworks</em> pourra se tourner, au-delà des documentations respectives, vers les deux livres en préparation chez l&#8217;éditeur Manning, <a
title="Spring Integration in Action" href="http://manning.com/fisher/">Spring Integration in Action</a> et <a
title="Camel in Action" href="http://manning.com/ibsen/">Camel in Action</a>, prévus pour l&#8217;été prochain.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="ImpalalamodularitpourSpringsan"></a>Impala, la modularité pour Spring sans OSGi</h4><p>La modularité est un sujet porteur en ce moment, tant du côté du JDK avec Jigsaw, que du côté Java Entreprise avec OSGi dont le principal acteur actuellement est sans conteste SpringSource avec Spring Dynamic Modules et son serveur d&#8217;application associé Spring dm Server.</p><p>Phil Zoio <a
title="a été interviewé il y a peu" href="http://osgi.dzone.com/articles/impala-alternative-module">a été interviewé il y a peu</a> pour présenter le projet Open Source qu&#8217;il a fondé : <a
title="Impala" href="http://code.google.com/p/impala/">Impala</a>. Il s&#8217;agit d&#8217;une vision différente de la modularité pour applications d&#8217;entreprise. Ainsi, Impala repose sur Spring, tout comme Spring Dynamic Modules, mais contrairement à ce dernier, il n&#8217;utilise pas OSGi et adopte une stratégie radicalement différente : il constitue lui-même des modules encapsulant chacun un <em>application context</em> qui déclare un certain nombre de <em>beans</em>. La solution de modularité ainsi produite offre tout comme OSGi un fonctionnement dynamique permettant le chargement à chaud de nouveaux modules.</p><p>Dans un climat où beaucoup s&#8217;interrogent sur la potentielle lourdeur d&#8217;OSGi, ce type d&#8217;initiative proposant une solution alternative plus simple face au standard prend tout son sens et n&#8217;est pas sans rappeler l&#8217;offensive de <em>Spring Framework</em> lui-même, il y a quelques années, face au contesté standard EJB.</p><h4><a
name="LadfinitiondeDataSourcesdansJE"></a>La définition de <em>DataSources</em> dans Java EE 6</h4><p>Matt Corey <a
title="poste cette semaine un article" href="http://smokeandice.blogspot.com/2009/12/datasourcedefinition-hidden-gem-from.html">poste cette semaine un article</a> mettant en avant une facilité rarement (jamais ?) évoquée de Java EE 6 : la configuration des sources de données par annotation. En effet, si la nouvelle spécification de Sun est largement couverte depuis des mois, y compris sur notre blog, il est en général question des nouveautés qui retiennent le plus l&#8217;attention telles que les <em>beans</em> singletons d&#8217;EJB 3.1, l&#8217;API <em>query builder</em> de JPA 2.0 ou encore ses nouveaux modèles de composants.</p><p>En fait il s&#8217;agit d&#8217;une standardisation de la technique de configuration des sources de données dans les serveurs d&#8217;application Java EE. Cette définition était en effet jusqu&#8217;alors un détail d&#8217;implémentation des serveurs et n&#8217;était donc pas portable. Cette configuration peut donc maintenant se faire par l&#8217;annotation <a
title="DataSourceDefinition" href="http://java.sun.com/javaee/6/docs/api/javax/annotation/sql/DataSourceDefinition.html"><code>@DataSourceDefinition</code></a> ce qui évite ainsi l&#8217;utilisation de XML et va donc dans le sens de la logique initiée depuis Java EE 5. L&#8217;exemple suivant permet de mieux se rendre compte de son utilisation :</p><pre class="brush: java; title: ; notranslate">
@DataSourceDefinition (
className=&quot;org.apache.derby.jdbc.ClientDataSource&quot;,
name=&quot;java:global/jdbc/AppDB&quot;,
serverName=&quot;localhost&quot;,
portNumber=1527,
user=&quot;user&quot;,
password=&quot;password&quot;,
databaseName=&quot;dev-db&quot;
)
public class Config {
...
}
</pre><p>Si tout le monde n&#8217;appréciera pas forcément d&#8217;avoir recours à une annotation pour ce type de configuration, les projets souhaitant distribuer des <code>war</code> ou <code>ear</code> portables qui se connectent à une base de données embarquée ou locale devraient en revanche y trouver leur compte.</p><h4><a
name="Lesgooglecollectionssontfinale"></a>Les google-collections sont finales !</h4><p>Annoncée sur la <a
title="&lt;i&gt;users list&lt;/i&gt;" href="http://groups.google.com/group/google-collections-users/browse_thread/thread/8001013ee996b3c9?pli=1"><em>users list</em></a> du projet, l&#8217;API <a
title="google-collections" href="http://code.google.com/p/google-collections/">google-collections</a> passe en version <a
title="finale 10" href="http://code.google.com/p/google-collections/downloads/list">finale 1.0</a>.<br
/> Pour ceux qui ne connaissent pas encore cette API de collections <em>type-safe</em>, rendez-vous sur <a
title="cette page" href="http://bwinterberg.blogspot.com/2009/09/introduction-to-google-collections.html">cette page</a> pour une introduction à la librairie.</p><p>La finalisation de Google Collections constitue un changement majeur dans l&#8217;environnement des développeurs Java. En effet Apache Commons Collections constituait jusqu&#8217;alors le principal complément à l&#8217;API de base du JDK. Or, la librairie de la fondation Apache est vieillissante et ne propose toujours pas les <em>generics</em> de Java 5. Google Collection se positionne donc ni plus ni moins que comme un remplaçant.</p><p>La <a
title="FAQ" href="http://code.google.com/p/google-collections/wiki/Faq">FAQ</a> répondra à bon nombre de questions que l&#8217;on peut se poser sur cette API notamment sur les raisons qui ont poussé Google à créer sa propre API plutôt que de contribuer à Commons Collections.</p><p>Enfin on notera que Google Collections sera intégré à <a
href="http://code.google.com/p/guava-libraries/">Guava</a> sous peu pour constituer la librairie d&#8217;extension du JDK de Google.</p><p>De par la nature de ces APIs, Google Collections et Guava peuvent également constituer un premier pas vers la programmation <em>un peu</em> plus orientée fonctionnelle. A ce sujet, il est aussi possible de regarder du côté de <a
title="lambdaj" href="http://code.google.com/p/lambdaj/">lambdaj</a>, une API de parcours de collections sans boucle explicite. Et pour ceux qui souhaitent aller encore plus loin, rendez-vous sur <a
title="functionaljava" href="http://functionaljava.org/">functional.java</a> ou  tournez vous vers la préparation des <em>closures</em> dans Java.</p><h4><a
name="SpringRooenpourterminerlanne"></a>Spring Roo en 1.0.0 pour terminer l&#8217;année</h4><p>Encore une <em>release</em> pour Spring pour clôturer en beauté l&#8217;année 2009. Bravo!<br
/> <a
title="Spring Roo" href="http://www.springsource.org/roo">Spring Roo</a>, 8 mois après sa première version alpha, vient de sortir en <a
title="100" href="https://jira.springsource.org/browse/ROO#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel">1.0.0</a>. Roo, en quelques mots, permet de développer des applications plus rapidement en générant et maintenant, tout au long des développements, une partie importante du code source (du POJO à la JSP).<br
/> Un effort a été mis sur la documentation qui a intégré un tutoriel et les commandes. La seule partie encore en travaux est le chapitre 3, celle qui concerne le fonctionnement interne de ROO. Cette partie permet entre autres d&#8217;avoir les bases pour développer des extensions.<br
/> En standard, Roo propose déjà des extensions, comme par exemple les fonctionnalités de sécurité, basées sur Spring Security et des flows avec Spring Webflow.</p><p>Spring Roo présente un formidable intérêt pédagogique, car il s&#8217;appuie systématiquement sur les toutes dernières versions des jars de Spring et d&#8217;Hibernate.<br
/> On peut par contre trouver peu commode son mécanisme interne qui se base sur la technologie AspectJ. Son principe est de générer les méthodes de classe en se basant sur des fichiers d&#8217;aspects. Jusqu&#8217;à présent, notre expérience avec Spring Roo a montré que cela ne fonctionnait pas de manière complètement transparente pour le développeur, même avec l&#8217;Eclipse de SpringSource (<a
title="STS" href="http://www.springsource.com/products/sts">STS</a>). Cette limitation pourra donc dissuader certaines équipes de partir sur un projet avec ROO tout au long des développements.</p><p>Voici sur Slideshare, les deux présentations mises en ligne par le <em>leader</em> du projet, Ben Alex:</p><ul><li><a
title="Introduction To Spring Roo 100" href="http://www.slideshare.net/benalexau/introduction-to-spring-roo-100-2805183">Introduction To Spring Roo 1.0.0</a></li><li><a
title="Spring Roo 100 Technical Deep Dive" href="http://www.slideshare.net/benalexau/spring-roo-100-technical-deep-dive">Spring Roo 1.0.0 Technical Deep Dive</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/01/04/revue-de-presse-xebia-141/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/11/30/revue-de-presse-xebia-136/</link> <comments>http://blog.xebia.fr/2009/11/30/revue-de-presse-xebia-136/#comments</comments> <pubDate>Mon, 30 Nov 2009 17:30:44 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[closure]]></category> <category><![CDATA[Cloud / NoSQL]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Lucene]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[SpringSource]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3455</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII SpringSource et Oracle ensemble pour l&#8217;OSGi d&#8217;entreprise Le coin de la technique Lucene passe à Java 5 Mark Reinhold justifie l&#8217;introduction des closures Patterns NoSQL Evènements de notre communauté en France et à l&#8217;étranger Devoxx 2009 : le bilan Actualité [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/11/30/revue-de-presse-xebia-136/#SpringSourceetOracleensemblepo">SpringSource et Oracle ensemble pour l&#8217;OSGi d&#8217;entreprise</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/11/30/revue-de-presse-xebia-136/#LucenepasseJava">Lucene passe à Java 5</a></li><li><a
href="http://blog.xebia.fr/2009/11/30/revue-de-presse-xebia-136/#MarkReinholdjustifielintroduct">Mark Reinhold justifie l&#8217;introduction des <em>closures</em></a></li><li><a
href="http://blog.xebia.fr/2009/11/30/revue-de-presse-xebia-136/#PatternsNoSQL">Patterns NoSQL</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/30/revue-de-presse-xebia-136/#Devoxxlebilan">Devoxx 2009 : le bilan</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="SpringSourceetOracleensemblepo"></a>SpringSource et Oracle ensemble pour l&#8217;OSGi d&#8217;entreprise</h4><p>Adrian Colyer, SpringSource, <a
href="http://blog.springsource.com/2009/11/24/gemini-project-proposal-at-eclipse-org/" title="a annonc" >a annoncé</a> la création d&#8217;un nouveau projet au sein de la fondation Eclipse : Gemini. Il s&#8217;agit d&#8217;un sous-projet d&#8217;Eclipse Runtime qui a pour but de réunir l&#8217;ensemble des implémentations de référence des spécifications OSGi liées au monde de l&#8217;entreprise. Il s&#8217;agit d&#8217;un effort commun de SpringSource et d&#8217;Oracle.</p><p>Deux composants fondamentaux sont apportés par SpringSource :</p><ul><li>Gemini Web Container : il permet le fonctionnement d&#8217;un conteneur de Servlets dans un environnement OSGi. Cette implémentation est actuellement utilisée dans SpringSource dm Server et est donc prévue pour fonctionner sur Tomcat. Mike Keith, Oracle, <a
href="http://www.eclipse.org/forums/index.php?t=msg&#038;th=158265&#038;start=0&#038;S=f24c757f3b4f75d223bf59aad88061b0" title="assure" >assure</a> que l&#8217;adaptation pour Jetty arrivera par la suite grâce à une collaboration avec l&#8217;équipe de ce projet.</li><li>Gemini Blueprint Service : il s&#8217;agit de <a
href="http://www.springsource.org/osgi" title="Spring Dynamic Modules" >Spring Dynamic Modules</a>. Ce projet, qui a fortement inspiré la spécification du <em>Blueprint Service</em> intégré à OSGi 4.2, devient logiquement son implémentation de référence.</li></ul><p>Il est important de noter qu&#8217;Adryan Colyer explique que SpringSource continuera désormais le développement de ces deux projets directement au sein de la fondation Eclipse et non plus en interne.</p><p>Oracle, pour sa part, apporte plusieurs implémentations de référence pour des RFC supplémentaires <a
href="http://modualrit.blogspot.com/2009/08/purity-or-compromise.html" title="non intgres  la spcification OSGi 42" >non intégrées à la spécification OSGi 4.2</a> : RFC 98 (transactions), RFC 122 (database access), RFC 139 (JMX integration), RFC 142 (JNDI integration), RFC 143 (JPA integration), RFC 146 (JCA integration).<br
/> Mike Keith indique qu&#8217;EclipseLink est à même de fonctionner correctement avec OSGi depuis longtemps, mais qu&#8217;il n&#8217;implémentait pas JPA lorsque cette intégration a été mise en œuvre au sein du projet. Par conséquent, une adaptation est nécessaire pour passer à la RFC 143, afin d&#8217;assurer une intégration JPA standard.</p><p>Alors que la spécification 4.2 a été finalisée <a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#OSGi" title="il y a 2 mois" >il y a 2 mois</a>, les implémentations de référence étaient toujours attendues. Cette réunification des implémentations liées a l&#8217;OSGi d&#8217;entreprise au sein d&#8217;un même projet Eclipse est une excellente nouvelle : elle met en avant la standardisation dont on pourra désormais bénéficier pour les développements intégrant OSGi dans les applications JEE. Mais cela suffira-t-il à démocratiser OSGi en entreprise ?!</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="LucenepasseJava"></a>Lucene passe à Java 5</h4><p>L&#8217;équipe du projet Lucene <a
href="http://lucene.apache.org/java/docs/index.html#25+November+2009+-+Lucene+Java+3.0.0+available" title="annonce la sortie de Lucene 3.0" >annonce la sortie de Lucene 3.0</a>. Comme <a
href="http://blog.xebia.fr/2009/09/28/revue-de-presse-xebia-126/#Lucenevolueetprparelavenir" title="nous lexpliquions prcedemment" >nous l&#8217;expliquions précedemment</a>, cette version marque une évolution majeure puisqu&#8217;elle est la première a nécessiter Java 5.0 au minimum.</p><p>L&#8217;API bénéficie donc désormais de l&#8217;ensemble des améliorations du langage de Java 5.0 dont les <em>generics</em>, le <em>varargs</em>, les <em>enums</em> et l&#8217;<em>autoboxing</em>.</p><p>Tempérons cette annonce : l&#8217;API Lucene n&#8217;a pas été refondue, il ne s&#8217;agit que de quelques améliorations visant à la rendre <em>type-safe</em>. Citons par exemple :</p><ul><li>Apparition d&#8217;<em>enums</em> <code>BooleanClause.Occur</code>, <code>Field.Index</code>, <code>Field.Store</code> et <code>Field.TermVector</code> ; ces concepts étaient jusqu&#8217;alors représentées sous forme de constantes <em>type-safe</em>.</li><li>La méthode <code>getFields()</code> de la classe <code>Document</code> retourne désormais une <code>List&lt;Fieldable&gt;</code> alors qu&#8217;elle retournait une simple <code>List</code> jusqu&#8217;alors.</li><li>La classe <code>Term</code> implémente désormais <code>Comparable&lt;Term&gt;</code> et non plus simplement <code>Comparable</code>.</li></ul><p>Ces changements légers décevront peut-être certains utilisateurs lassés par l&#8217;API vieillissante de Lucene, mais on appréciera toutefois la facilité de migration, puisqu&#8217;il s&#8217;agira la plupart du temps de supprimer quelques <em>casts</em> (l&#8217;équipe Lucene cite <a
href="http://lucene.apache.org/java/3_0_0/changes/Changes.html" title="quelques cas  surveiller" >quelques cas à surveiller</a> lors de la migration).</p><p>Cette nouvelle version, qui apporte par ailleurs quelques modifications mineures, conclut donc un cycle d&#8217;évolutions importantes sur le projet Lucene.</p><h4><a
name="MarkReinholdjustifielintroduct"></a>Mark Reinhold justifie l&#8217;introduction des <em>closures</em></h4><p>C&#8217;était l&#8217;Annonce de cette édition de Devoxx, <a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#JDKJEEetMavenlesannoncesdeDevo" title="lapparition des closures en Java 7" >l&#8217;apparition des <em>closures</em> en Java 7</a>. Mark Reinhold revient, sur <a
href="http://blogs.sun.com/mr/entry/closures">son blog</a>, sur les raisons à l&#8217;origine de cette petite bombe.<br
/> Il justifie cette évolution majeure du langage par la nécessité pour Java de tirer partie des nouvelles générations de processeurs, multi-cœurs.<br
/> Jusqu&#8217;ici, pour exploiter cette puissance, il fallait utiliser des <em>Parallel Array</em> et tout le code inutile nécessaire à leur fonctionnement. Les <em>closures</em> permettent de supprimer ce code, et il est temps de les introduire en Java.<br
/> Java doit se concentrer sur deux fonctionnalités clés : la syntaxe littérale, et les fonctions typées. L&#8217;arrivée des <em>closures</em> requiert deux autres évolutions de Java : les conversions, et l&#8217;extensibilité des méthodes.<br
/> Il est temps pour Mark Reinhold d&#8217;oublier <a
href="http://www.javaworld.com/javaworld/jw-06-2008/jw-06-closures.html" title="les querelles" >les querelles</a>. Sun spécifiera et implémentera un premier jet des <em>closures</em> pour le JDK 7. Cela permettra une expérimentation à grande échelle, et si tout se passe bien, cela conduira à une JSR de modification du langage, qui pourra être incluse dans Java SE 7.<br
/> La tâche est immense et Mark Reinhold appelle bien évidement toutes les bonnes volontés à contribuer.</p><p>Bien au-delà de la manipulation du <em>multi-threading</em>, les <em>closures</em> pourraient permettre une simplification des APIs courantes. Cette perspective semble essentielle à Mark Reinhold qui ne pouvait attendre le JDK 8 pour une nouvelle tentative, dans 3 à 4 ans&#8230;</p><h4><a
name="PatternsNoSQL"></a>Patterns NoSQL</h4><p>Nous vous parlions récemment <a
href="http://blog.xebia.fr/2009/11/09/revue-de-presse-xebia-133/#LemouvementNoSQLdiviseetintrig" title="dans une revue de presse" >dans une revue de presse</a> et <a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-nosql-avec-hbase/" title="un article" >un article</a> du mouvement NoSQL, qui se caractérise par &laquo;&nbsp;une absence de requête et par un relâchement des caractéristiques ACID propres aux RDBMS&nbsp;&raquo;. Ricky Ho, architecte chez Adobe, <a
href="http://horicky.blogspot.com/2009/11/nosql-patterns.html" title="revient sur son blog" >revient sur son blog</a> sur les caractéristiques communes de plusieurs technologies permettant de &laquo;&nbsp;faire du NoSQL&nbsp;&raquo;, et extrait quelques patterns récurrents. Ne vous arrêtez pas à la mise en page étriquée de l&#8217;article, car la description est très complète. Ricky Ho y explore successivement:</p><ul><li>Les types de noeud possibles (physiques et virtuels) ainsi que leur fonctionnement.</li><li>Le partitionnement des données.</li><li>La réplication de ces données, ainsi que le maintien de leur consistance.</li><li>La gestion des pannes.</li></ul><p>On notera quand même que l&#8217;une des solutions retenue pour le stockage des données reste&#8230; une base de donnée relationnelle ! <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> Humour mis à part, une telle formalisation de patterns est vraiment bienvenue dans un environnement aussi émergeant.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="Devoxxlebilan"></a>Devoxx 2009 : le bilan</h4><p>Nous concluons aujourd&#8217;hui notre série de billets sur Devoxx 2009. Ces 5 jours passés à Anvers furent riches en informations et en rencontres et nous souhaitions vous les faire partager.</p><p>A l&#8217;heure du bilan, voici ce que nous retiendrons de cette édition :</p><ul><li><a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#JDKJEEetMavenlesannoncesdeDevo" title="Les annonces concernant JDK 7 JEE 6 et Maven 30" >Les annonces concernant JDK 7, JEE 6 et Maven 3.0</a>.</li><li>Le succès de JEE 6 : toutes les sessions sur le sujet ont fait salle comble.</li><li>La place réservée à la nouvelle plateforme Flash d&#8217;Adobe, présente au <em>keynote</em> et dans de nombreuses sessions ; il est intéressant de noter que cette place correspond exactement à celle occupée par JavaFX lors de la précédente édition.</li><li>L&#8217;omniprésence de Scala ; au-delà des sessions qui lui étaient consacrées, il était cité dans beaucoup d&#8217;autres présentations lorsqu&#8217;il était question de DSL par exemple.</li><li>L&#8217;intérêt persistant de la communauté pour le Cloud Computing. Ce nouveau concept a rencontré un large succès à Devoxx.</li></ul><p>Pour rentrer plus en détails dans les enseignements de cette conférence, vous pouvez désormais retrouver l&#8217;intégralité de nos billets Devoxx :</p><ul><li><a
href="http://blog.xebia.fr/2009/11/17/devoxx-jour-1-adobe-university/" title="Devoxx  Jour 1  Adobe University" >Devoxx &#8211; Jour 1 &#8211; Adobe University</a></li><li><a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-applications-robustes-avec-amazon-ec2/" title="Devoxx  Jour 1  Applications robustes avec Amazon EC2" >Devoxx &#8211; Jour 1 &#8211; Applications robustes avec Amazon EC2</a></li><li><a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-kanban-in-action/" title="Devoxx  Jour 1  Kanban in action" >Devoxx &#8211; Jour 1 &#8211; Kanban in action</a></li><li><a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-jsf-2/" title="Devoxx  Jour 1  JSF 2" >Devoxx &#8211; Jour 1 &#8211; JSF 2</a></li><li><a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-nosql-avec-hbase/" title="Devoxx  Jour 1  NoSQL avec HBase" >Devoxx &#8211; Jour 1 &#8211; NoSQL avec HBase</a></li><li><a
href="http://blog.xebia.fr/2009/11/19/devoxx-jour-2-google-app-engine/" title="Devoxx  Jour 2  Google App Engine" >Devoxx &#8211; Jour 2 &#8211; Google App Engine</a></li><li><a
href="http://blog.xebia.fr/2009/11/19/devoxx-jour-2-les-effets-avec-flex-4/" title="Devoxx  Jour 2  Les effets avec Flex 4" >Devoxx &#8211; Jour 2 &#8211; Les effets avec Flex 4</a></li><li><a
href="http://blog.xebia.fr/2009/11/23/devoxx-jour-2-hibernate-search/" title="Devoxx  Jour 2  Hibernate Search" >Devoxx &#8211; Jour 2 &#8211; Hibernate Search</a></li><li><a
href="http://blog.xebia.fr/2009/11/23/devoxx-jour-2-java-fx-the-developer-guide/" title="Devoxx  Jour 2  Java FX The developer guide" >Devoxx &#8211; Jour 2 &#8211; Java FX The developer guide</a></li><li><a
href="http://blog.xebia.fr/2009/11/23/devoxx-jour-2-soa-en-pratique/" title="Devoxx  Jour 2  SOA en pratique" >Devoxx &#8211; Jour 2 &#8211; SOA en pratique</a></li><li><a
href="http://blog.xebia.fr/2009/11/23/devoxx-jour-2-scala-actors/" title="Devoxx  Jour 2  Scala Actors" >Devoxx &#8211; Jour 2 &#8211; Scala Actors</a></li><li><a
href="http://blog.xebia.fr/2009/11/24/devoxx-jour-3-spring-actionscript/" title="Devoxx  Jour 3  Spring Actionscript" >Devoxx &#8211; Jour 3 &#8211; Spring Actionscript</a></li><li><a
href="http://blog.xebia.fr/2009/11/24/devoxx-jour-3-scalatest/" title="Devoxx  Jour 3  ScalaTest" >Devoxx &#8211; Jour 3 &#8211; ScalaTest</a></li><li><a
href="http://blog.xebia.fr/2009/11/24/devoxx-jour-3-la-keynote/" title="Devoxx  Jour 3  La keynote" >Devoxx &#8211; Jour 3 &#8211; La keynote</a></li><li><a
href="http://blog.xebia.fr/2009/11/25/devoxx-jour-3-jee6/" title="Devoxx  Jour 3  JEE6" >Devoxx &#8211; Jour 3 &#8211; JEE6</a></li><li><a
href="http://blog.xebia.fr/2009/11/27/devoxx-jour-4-maven-reloaded/" title="Devoxx  Jour 4  Maven Reloaded" >Devoxx &#8211; Jour 4 &#8211; Maven Reloaded</a></li><li><a
href="http://blog.xebia.fr/2009/11/27/devoxx-jour-4-java-performance-tuning/" title="Devoxx  Jour 4  Java Performance Tuning" >Devoxx &#8211; Jour 4 &#8211; Java Performance Tuning</a></li><li><a
href="http://blog.xebia.fr/2009/11/30/devoxx-jour-4-integration-pour-le-web-avec-ibeans/" title="Devoxx  Jour 4  Intgration pour le Web avec iBeans" >Devoxx &#8211; Jour 4 &#8211; Intégration pour le Web avec iBeans</a></li><li><a
href="http://blog.xebia.fr/2009/11/27/devoxx-jour-5-projet-lombok/" title="Devoxx  Jour 5  Projet Lombok" >Devoxx &#8211; Jour 5 &#8211; Projet Lombok</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/30/revue-de-presse-xebia-136/feed/</wfw:commentRss> <slash:comments>3</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 Xebia</title><link>http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/</link> <comments>http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#comments</comments> <pubDate>Mon, 22 Jun 2009 16:19:03 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[GAE]]></category> <category><![CDATA[Gilead]]></category> <category><![CDATA[Hibernate]]></category> <category><![CDATA[Hibernate Shards]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[Jigsaw]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Vaadin]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2304</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. RIA Vaadin 6 Adaptateur Gilead pour GAE Une série d&#8217;annonces chez Adobe Le coin de la technique Scalabilité avec Hibernate et Shards Jigsaw vs OSGi Pourquoi utiliser un portail ? Embarquer le Web dans Java avec JWebPane Evènements de notre communauté en France et [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#Vaadin">Vaadin 6</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#AdaptateurGileadpourGAE">Adaptateur Gilead pour GAE</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#UnesriedannonceschezAdobe">Une série d&#8217;annonces chez Adobe</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#ScalabilitavecHibernateetShard">Scalabilité avec Hibernate et Shards</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#JigsawvsOSGi">Jigsaw vs OSGi</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#Pourquoiutiliserunportail">Pourquoi utiliser un portail ?</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#EmbarquerleWebdansJavaavecJWeb">Embarquer le Web dans Java avec JWebPane</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/22/en-route-pour-jazoon-09/">Xebia @ Jazoon 09</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="Vaadin"></a>Vaadin 6</h4><p>Au revoir <a
href="http://www.itmill.com/" title="IT Mill Toolkit" >IT Mill Toolkit</a> et bienvenue à <a
href="http://vaadin.com/home" title="Vaadin" >Vaadin</a> (vu sur leur <a
href="http://vaadin.com/blog/-/blogs/vaadin-6-server-driven-ria-framework-announced-the-next-generation-of-it-mill-toolkit" title="blog" >blog</a>) !</p><p>Pour ceux qui ne le connaissent pas encore, Vaadin (anciennement IT Mill Toolkit) est un framework de développement d&#8217;applications RIA qui s&#8217;appuie sur GWT. Sa particularité est d&#8217;être <em>runtime</em> donc aucune compilation spécifique n&#8217;est demandée avant de packager la webapp (à l&#8217;inverse de GWT).</p><p>Simple changement de nom ? En tout cas très peu de changement côté API selon les auteurs du framework. Il faut plutôt se tourner vers l&#8217;outillage pour voir quelques nouveautés : un <a
href="http://vaadin.com/eclipse" title="plugin eclipse" >plugin eclipse</a> (création de projets, de composants UI, de thèmes&#8230;) et, inclus dans le plugin, un <a
href="http://vaadin.com/image/image_gallery?uuid=93600d15-df24-4299-b3d1-77a91d17624c&#038;groupId=10904&#038;t=1241865010814" title="diteur WYSIWYG" >éditeur WYSIWYG</a>.</p><p>Côté liens utiles, l&#8217;habituel <a
href="http://demo.vaadin.com/sampler/" title="showcase" >showcase</a>, le <a
href="http://vaadin.com/book" title="livre" >livre</a> et la <a
href="http://vaadin.com/comparison" title="comparaison maison" >comparaison maison</a> avec les autres frameworks du marché (et la concurrence est rude dans le monde du RIA).</p><p>A noter que <a
href="http://vaadin.com/blog/-/blogs/vaadin-at-jazoon-09?_33_redirect=%2Fhome" title="Vaadin" >Vaadin</a> sera présent à <a
href="http://jazoon.com/" title="Jazoon" >Jazoon</a> pour une conférence sur <a
href="http://jazoon.com/en/conference/presentationdetails.html?type=sid&#038;detail=8360" title="RIA Security" >RIA Security</a> le mardi 23 juin à 15h (slides, projet et autres sur <a
href="http://vaadin.com/web/joonas/wiki/-/wiki/Main/RIA+Security" title="cette page" >cette page</a>).</p><h4><a
name="AdaptateurGileadpourGAE"></a>Adaptateur Gilead pour GAE</h4><p>Vous connaissez <a
href="http://blog.xebia.fr/2009/01/23/gwt-galaxy/" title="GWT" >GWT</a>, <a
href="http://blog.xebia.fr/2008/12/17/integrer-hibernate-avec-gwt-sans-douleur/" title="Gilead" >Gilead</a>, et <a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#GoogleAppEnginepourJavaetGroov" title="Google App Engine" >Google App Engine</a> ? Et bien il ne reste plus qu&#8217;à mélanger tout ça et on obtient le <a
href="http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/69d5ccd01240a59c" title="Gilead GWT adapter for Google AppEngine" >Gilead GWT adapter for Google AppEngine</a> (vu sur le <a
href="http://googlewebtoolkit.blogspot.com/2009/06/gwt-community-updates.html" title="GWT Blog" >GWT Blog</a>).</p><p>Tout démarre d&#8217;un <a
href="http://groups.google.com/group/Google-Web-Toolkit-Contributors/browse_thread/thread/3c768d8d33bfb1dc" title="thread google groups" >thread google groups</a> avec comme point de départ la <em>serialization exception</em> lancée par les entités persistantes transférées vers GWT. Évidemment, la solution qui ressort <a
href="http://groups.google.com/group/Google-Web-Toolkit-Contributors/msg/c4e6d22860a7df3d" title="très rapidement" >très rapidement</a>, outre l&#8217;utilisation de DTOs, est de passer par <a
href="http://noon.gilead.free.fr/gilead/index.php?page=presentation" title="Gilead" >Gilead</a> pour transformer nos entités persistantes en POJOs. Il suffit d&#8217;ajouter le jar <code>adapter4appengine</code> et de remplacer la classe <code>PersistentRemoteService</code> par <code>EngineRemoteService</code> dans vos remotes services. Dès lors, il sera possible d&#8217;envoyer ses entités persistantes vers le client GWT sans exceptions de sérialisation sur <a
href="http://code.google.com/intl/fr/appengine/" title="GAE" >GAE</a>.</p><p>1.0 M2 téléchargeable à cette <a
href="http://sourceforge.net/project/downloading.php?group_id=239931&#038;filename=adapter4appengine-1.0M2.jar&#038;a=91098275" title="url" >url</a>, documentation <a
href="http://noon.gilead.free.fr/gilead/index.php?page=adapter4appengine" title="par ici" >par ici</a>. Attention toutefois, cette version n&#8217;est pas production ready.</p><h4><a
name="UnesriedannonceschezAdobe"></a>Une série d&#8217;annonces chez Adobe</h4><p>Après l&#8217;annonce de la sortie de la plateforme Flash il y a quelques semaines, voici une nouvelle série d&#8217;annonce de la part d&#8217;Adobe.</p><p>Pour commencer, deux news relayées par Andrew Twice dans <a
href="http://www.insideria.com/2009/06/its-an-active-news-day-from-ad.html" title="InsideRIA" >InsideRIA</a>.<br
/> La première concerne la sortie d&#8217;<a
href="http://labs.adobe.com/technologies/tables/" title="Adobe Table" >Adobe Table</a> en version bêta. Cet outil permet de créer des feuilles de calcul, des plannings ou encore des listes de tâches en ligne:</p><ul><li>Les utilisateurs peuvent ajouter des données en même temps: les données sont mises à jour en temps réel pour tout le monde.</li><li>Possibilité de savoir qui travaille sur Adobe Table.</li><li>Création d&#8217;écrans communs et privés : les utilisateurs peuvent travailler de manière coopérative, et/ou créer des espaces privés pour ne garder que les informations importantes.</li><li>Filtrage : les utilisateurs peuvent filtrer leurs données en temps réel.</li><li>Tri.</li></ul><p>Similaire à <a
href="http://www.google.com/google-d-s/intl/fr/tour1.html" title="Google Document" >Google Document</a>, cet outil a été développé sur la plateforme Flash et va continuer <a
href="http://blogs.adobe.com/acom/2009/06/shared_tables_for_shared_data_1.html" title="à évoluer" >à évoluer</a>. La <a
href="https://labs1.acrobat.com" title="démo" >démo</a> se passe <a
href="https://labs1.acrobat.com" title="ici" >ici</a>, la seule contrainte : avoir un compte Adobe.</p><p>La deuxième annonce concerne l&#8217;ouverture de la spécification de Real-Time Messaging Protocol (RTMP). Comme nous en avions parlé <a
href="http://blog.xebia.fr/2009/01/26/revue-de-presse-xebia-93/#Adobecontinuelouverturedeseste" title="ici" >ici</a>, la spécification a été publiée lundi dernier.</p><p>Enfin, Michael Chaize parle de la <a
href="http://codemoiunmouton.wordpress.com/2009/06/18/livecycle-data-services-3/" title="sortie de LiveCycle Data Services 3" >sortie de LiveCycle Data Services 3</a> en bêta. Disponible sur le <a
href="http://labs.adobe.com/technologies/livecycle_dataservices3/" title="labs d'Abobe" >labs d&#8217;Abobe</a>, cette nouvelle version propose une meilleure qualité de service pour des applications dont la fiabilité est primordiale telles que les applications bancaires par exemple. Venant compléter la plateforme Flash (avec Flex 4 et Flash Builder 4), Adobe incite la communauté à faire ses retours sur le <a
href="http://forums.adobe.com/community/labs" title="forum" >forum</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="ScalabilitavecHibernateetShard"></a>Scalabilité avec Hibernate et Shards</h4><p>Une <a
href="http://www.infoq.com/presentations/Scaling-Hibernate-Emmanuel-Bernard-Max-Ross" title="session de QCon 2008" >session de QCon 2008</a>, traitant de la scalabilité d&#8217;Hibernate, vient d&#8217;être mise en ligne. Présentée par Emmanuel Bernard, <em>project lead</em> d&#8217;Hibernate Search, et Max Ross, <em>project lead</em> d&#8217;Hibernate Shards, cette présentation offre une approche peu courante sur un problème pourtant récurrent.</p><p>Outre les classiques solutions permettant d&#8217;éviter certaines pertes de performance avec l&#8217;augmentation du volume traité, telles que la bonne gestion du cache, et les optimisations SQL, il a été question d&#8217;utiliser Hibernate Search et Hibernate Shards.</p><p><a
href="https://www.hibernate.org/410.html" title="Hibernate Search" >Hibernate Search</a> est connu pour sa capacité à simplifier les recherches dans un ensemble d&#8217;entités grâce à l&#8217;utilisation de <a
href="http://lucene.apache.org/" title="Lucene" >Lucene</a> conjointement à la base de données. Emmanuel Bernard proposait ici de déléguer à Search certaines recherches qui s&#8217;avèrent très coûteuses à effectuer en base. Lucene étant placé sur une machine séparée, et pouvant même fonctionner en maître / esclave, il est ainsi possible d&#8217;obtenir une intéressante répartition de la charge.</p><p><a
href="https://www.hibernate.org/414.html" title="Hibernate Shards" >Hibernate Shards</a>, bien que plus ancien, est moins répandu du fait qu&#8217;aucune version finale n&#8217;a encore été produite. Il s&#8217;agit d&#8217;un module additionnel pour Hibernate permettant à une application de manipuler des données partitionnées sur plusieurs BDD. Le but étant d&#8217;encapsuler la conscience du partitionnement des données au sein de la couche Hibernate afin que l&#8217;application n&#8217;ait pas à gérer cette problématique. Les possibilités du framework sont intéressantes :</p><ul><li>La gestion correcte des Criterias sur des données partitionnées grâce à <a
href="http://docs.jboss.org/hibernate/stable/shards/api/org/hibernate/shards/criteria/ShardedCriteria.html" title="ShardedCriteria" ><code>ShardedCriteria</code></a>.</li><li><a
href="http://docs.jboss.org/hibernate/stable/shards/reference/en/html_single/#shards-resharding-virtual" title="Virtual Shards" >Virtual Shards</a> permettant de faire la distinction entre <em>shard</em> logique et <em>shard</em> physique et ainsi d&#8217;augmenter le nombre d&#8217;instances de base de données au fur et à mesure de l&#8217;augmentation des besoins.</li><li><a
href="http://docs.jboss.org/hibernate/stable/shards/reference/en/html_single/#shards-strategy-idgen" title="Generation dIDs" >Generation d&#8217;IDs</a> compatibles avec l&#8217;utilisation sous-jacente de plusieurs BDDs grâce à l&#8217;utilisation d&#8217;UUIDs.</li><li>Gestion correcte de BDDs hétérogènes.</li></ul><p>Ce sont finalement les fonctionnalités manquantes qui permettent de comprendre pourquoi Shards est toujours en version bêta. Max Ross s&#8217;est expliqué il y a plusieurs mois sur les problématiques rencontrées, de manière succincte <a
href="http://groups.google.com/group/hibernate-shards-dev/browse_thread/thread/74c14afd6d341afa#" title="sur un forum" >sur un forum</a> et plus longuement <a
href="http://www.javaworld.com/podcasts/jtech/2008/072408jtech.html" title="dans une interview" >dans une interview</a>. De nombreux défis restent ainsi à relever concernant la gestion correcte des agrégations dans les <a
href="http://docs.jboss.org/hibernate/stable/shards/api/" title="ShardedQuery" ><code>ShardedQuery</code></a> et la fourniture d&#8217;outils d&#8217;aide au partitionnement et repartitionnement des données.<br
/> Max Ross est employé par Google et non par JBoss, tout comme les deux autres <em>committers</em> du projet (le code ayant été donné à JBoss par Google), et affirme ne disposer que de 20 % de son temps pour Shards. Ceci n&#8217;explique que partiellement <a
href="http://fisheye.jboss.com/browse/Hibernate/shards/" title="le peu de commits" >le peu de commits</a> sur le projet et ne nous rassure guère quant à sa finalisation prochaine.</p><h4><a
name="JigsawvsOSGi"></a>Jigsaw vs OSGi</h4><p>Sept mois après le démarrage du projet <a
href="http://openjdk.java.net/projects/jigsaw" title="Jigsaw" >Jigsaw</a>, sa légitimité n&#8217;est toujours pas reconnue face à OSGi qu&#8217;il est venu défier sur son propre terrain.</p><p>La semaine dernière <a
href="http://javaposse.com/index.php?post_id=492239" title="JavaPosse diffusait une interview" >JavaPosse diffusait une interview</a> de Mark Reinhold et Alex Buckley, où ils ont pu présenter plus en détail leur vision de Jigsaw :</p><ul><li>Il a été conçu pour modulariser le JDK et est intégré au langage.</li><li>Il ne repose pas sur une spécification car cela n&#8217;était pas possible compte tenu du calendrier de JDK 7. Il est donc à considérer comme un &laquo;&nbsp;détail d&#8217;implémentation&nbsp;&raquo; tout comme la gestion du classpath l&#8217;était dans les JVMs précédentes.</li><li>Il n&#8217;est pas supposé entrer en concurrence avec OSGi, des outils permettant l&#8217;intégration entre modules Jigsaw et <em>bundles</em> OSGi étant prévus, mais non prioritaires.</li></ul><p>Dans le même temps, Eric Newcomer (<em>Co-Chair</em>, <em>Enterprise Expert Group</em> de l&#8217;OSGi Alliance), postait <a
href="http://modualrit.blogspot.com/2009/06/osgi-standard-questions.html" title="une série" >une série</a> <a
href="http://modualrit.blogspot.com/2009/06/kill-project-jigsaw-now-please.html" title="de billets" >de billets</a> très virulents à l&#8217;égard du projet Jigsaw, reprochant principalement que Sun n&#8217;ait pas voulu se tourner vers OSGi, ne cherchant pas à combler les manques qu&#8217;il y trouvait, se tournant immédiatement vers une nouvelle technologie et ignorant donc les 10 années d&#8217;expérience acquises par OSGi.</p><p>En fait, il semble n&#8217;y avoir aucune justification technique permettant d&#8217;expliquer l&#8217;orientation de Sun vers Jigsaw plutôt que vers OSGi ou vers une évolution d&#8217;OSGi intégrée au langage. La véritable raison serait alors à chercher sur le plan politique : la modularisation est un concept important qui manque à Java actuellement et Sun ne pouvait probablement pas se permettre, pour l&#8217;ajout d&#8217;un tel concept, de s&#8217;appuyer sur une spécification émise en dehors du JCP sur lequel il a la gouvernance.</p><h4><a
name="Pourquoiutiliserunportail"></a>Pourquoi utiliser un portail ?</h4><p>Le <a
href="http://lescastcodeurs.com/2009/06/les-cast-codeurs-podcast-episode-6-portal-ma/" title="dernier podcast des Cast Codeurs" >dernier podcast des Cast Codeurs</a> était l&#8217;occasion d&#8217;une interview de Thomas Heute et Julien Viet sur les portails d&#8217;entreprise et sur le partenariat entre eXo et JBoss <a
href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#JBosseteXofusionnentleurssolut" title="dont nous vous parlions" >dont nous vous parlions</a> la semaine dernière.</p><p>Les détails liés au partenariat ont déjà été largement couverts par la blogosphère, et c&#8217;est surtout le tour d&#8217;horizon du concept même de portail que l&#8217;on retiendra. Celui-ci reste en effet souvent un élément ambigu au sein de l&#8217;écosystème JEE.</p><p>Le rôle du portail est d&#8217;agréger plusieurs applications au sein d&#8217;une unique application Web. Ce besoin technique peut être atteint à plusieurs niveaux de l&#8217;architecture de l&#8217;application :</p><ul><li>Au niveau back-end, par agrégation de Web Service, se conformant ainsi à l&#8217;un des préceptes des SOAs.</li><li>Au niveau applicatif, par l&#8217;utilisation d&#8217;un portail, ou d&#8217;une solution spécifique.</li><li>Au niveau du navigateur Web, par l&#8217;utilisation de gadgets, en suivant le principe des <a
href="http://fr.wikipedia.org/wiki/Application_composite" title="Mashups" >Mashups</a>.</li></ul><p>En outre, il a également été question des problématiques d&#8217;intégration des frameworks Web aux portlets, de complexité éventuelle, et d&#8217;adaptation des technologies Web aux portlets. Déterminer si un portail doit être utilisé dans une architecture dépend alors du niveau de tolérance à ces problématiques.</p><h4><a
name="EmbarquerleWebdansJavaavecJWeb"></a>Embarquer le Web dans Java avec JWebPane</h4><p>Depuis plusieurs années, lorsque l&#8217;on veut afficher une page Web au sein d&#8217;une application Swing, il faut se tourner vers le composant <a
href="https://jdic.dev.java.net/documentation/Specification.html" title="Browser" >Browser</a> de la librairie <a
href="https://jdic.dev.java.net/" title="Jdic" >Jdic</a>. Ce composant utilise <a
href="http://www.mozilla.org/projects/embedding/" title="Embeddable Mozilla" >Embeddable Mozilla</a>, et se présente sous la forme de code natif décliné pour chaque OS et d&#8217;un <em>wrapper</em> Java. Outre la nécessité de fournir une version spécifique à chaque OS, ce composant présente également l&#8217;inconvénient de mal s&#8217;intégrer aux applications Swing du fait de sa nature <em>heavyweight</em>. Pour rappel, un composant est dit <em>heavyweight</em> lorsqu&#8217;il est dessiné par l&#8217;environnement graphique du système d&#8217;exploitation ; à l&#8217;opposé il devient <em>lightweight</em> s&#8217;il est dessiné par l&#8217;application,  ce qui est le cas de l&#8217;ensemble des composants Swing. Or, faire cohabiter les deux types de composants est délicat car n&#8217;étant pas dessinés au même moment, leur superposition est confuse et des chevauchements non contrôlables apparaissent.</p><p>Lors de JavaOne, Alexey Ushakov a fait la démonstration du composant JWebPane sur lequel il travaille actuellement et vient de poster <a
href="http://weblogs.java.net/blog/alex2d/archive/2009/06/jwebpane_bof_sc.html" title="des captures d'écrans" >des captures d&#8217;écrans</a>. Contrairement à Jdic Browser, JWebPane se base sur le moteur <a
href="http://webkit.org/" title="WebKit" >WebKit</a> pour effectuer le rendu HTML. Or celui-ci se caractérise par sa nature <em>lightweight</em> s&#8217;intégrant agréablement à Swing. La <a
href="http://weblogs.java.net/blog/alex2d/archive/JWebPaneJ1.pdf" title="prsentation dAlex Ushakov" >présentation d&#8217;Alex Ushakov</a> permet également de constater que son composant est particulièrement riche en possibilité d&#8217;interactions et apporte un support pour d&#8217;éventuels plugins tels que Flash.</p><p>On ne peut qu&#8217;apprécier le choix de Sun de créer un composant pour Swing, réutilisable dans JavaFX, plutôt que de privilégier uniquement JavaFX comme cela est souvent le cas depuis son arrivée. L&#8217;intégration de JWebPane au JDK 7 est maintenant indispensable pour rendre ce composant réellement exploitable : se basant sur WebKit, il repose donc sur des librairies natives qu&#8217;il sera nécessaire de livrer avec les applications Java et seul l&#8217;intégration au JDK permettrait de l&#8217;éviter. Or, malgré <a
href="http://www.jroller.com/dmdevito/entry/about_swing_future_and_jwebpane" title="les appels" >les appels</a> de la communauté, JWebPane reste pour le moment absent de la <a
href="http://openjdk.java.net/projects/jdk7/features/" title="liste des features" >liste des <em>features</em></a> du JDK 7 et il est uniquement question d&#8217;une <a
href="http://weblogs.java.net/blog/alex2d/archive/2008/12/jwebpane_projec.html" title="mise  disposition sur Javanet" >mise à disposition sur Java.net</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/</link> <comments>http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#comments</comments> <pubDate>Tue, 14 Apr 2009 17:07:06 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Google App Engine]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBI]]></category> <category><![CDATA[Lucene]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[ServiceMix]]></category> <category><![CDATA[SOA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1758</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Google App Engine pour Java et Groovy SOA Le statut de JBI 2 en question Mobilité Preview d&#8217;Android 1.5 Le coin de la technique Lucene continue d&#8217;innover ServiceMix 4 et son kernel OSGi Évènements de notre communauté en France et [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#GoogleAppEnginepourJavaetGroov">Google App Engine pour Java et Groovy</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#LestatutdeJBIenquestion">Le statut de JBI 2 en question</a></li></ul><p><strong>Mobilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#PreviewdAndroid">Preview d&#8217;Android 1.5</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#Lucenecontinuedinnover">Lucene continue d&#8217;innover</a></li><li><a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#ServiceMixetsonkernelOSGi">ServiceMix 4 et son kernel OSGi</a></li></ul><p><strong>Évènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#LesCastCodeurslepodcastJavaenF">Les Cast Codeurs, le podcast Java en Français</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="GoogleAppEnginepourJavaetGroov"></a>Google App Engine pour Java et Groovy</h4><p><a
href="http://code.google.com/intl/fr/appengine/" title="Google App Engine" >Google App Engine</a>, solution de Cloud Computing proposée par Google supporte depuis la semaine dernière (en plus du langage Python disponible depuis un an) le langage Java. Cette solution permet dorénavant de déployer son application web à base de servlets (sous forme de war) sur un serveur virtuel hébergé sur l&#8217;infrastucture de production de Google (Google a donné la semaine dernière un compte Google App Engine Java aux 10 000 premiers inscrits).</p><p>Google met en avant les avantages suivants :</p><ul><li>La facilité d&#8217;utilisation via un SDK très documenté et des plugins Eclipse.</li><li>La scalabilité gérée de manière transparente et automatique</li><li>La fiabilité et la performance fournies par les infrastructures de Google</li><li>Enfin, App Engine est gratuit si votre serveur n&#8217;excède les 500 Mo de stockage et 5 millions de page visualisées par mois</li></ul><p>Google fait une entrée de manière fracassante dans le marché du cloud computing &laquo;&nbsp;Java&nbsp;&raquo; (Amazon EC2, etc.. ) et propose une offre séduisante où chacun peut créer, tester et déployer son application facilement. La création d&#8217;un projet App Engine sous Eclipse via le plugin est simple et le déploiement sur App Engine s&#8217;effectue en un seul clic.</p><p>Quelques liens utiles :</p><ul><li>vous pouvez trouver une description très complète de la solution (en Français) <a
href="http://arnulfo.net/2009/04/google-app-engine-et-java-une-revolution/" title="sur le blog de Frank Arnulfo" >sur le blog de Frank Arnulfo</a></li><li>David Gageot a mis en ligne une feuille Google Spreadsheet qui <a
href="http://sunchic.free.fr/wordpress/index.php/archives/2009/04/12/java-libraries-and-frameworks-supported-by-google-app-engine/" title="liste les librairies et frameworks Java supports par Google App Engine" >liste les librairies et frameworks Java supportés par Google App Engine</a></li><li>Groovy est également supporté, retrouvez <a
href="http://glaforge.free.fr/weblog/index.php?itemid=268" title="lannonce sur le blog de Guillaume Laforge" >l&#8217;annonce sur le blog de Guillaume Laforge</a></li></ul><h3><a
name="SOA"></a>SOA</h3><h4><a
name="LestatutdeJBIenquestion"></a>Le statut de JBI 2 en question</h4><p>La <a
href="http://jcp.org/en/jsr/detail?id=312" title="JSR-312 : Java Business Integration 2.0 (JBI)" >JSR-312 : Java Business Integration 2.0 (JBI)</a> a été initiée début 2007 pour pallier les défauts de la première version de ce standard (<a
href="http://jcp.org/en/jsr/detail?id=208" title="JSR208  JBI" >JSR-208 : JBI</a>). Cette dernière souffrait en effet de nombreuses critiques, portant principalement sur sa lourdeur excessive et son indépendance vis-à-vis des autres standards existants (SCA, EJB3, JAX-WS, &#8230;).</p><p>Le projet était alors ambitieux mais la perspective d&#8217;un tel standard ne manquait pas d&#8217;intérêt. Toutefois, deux ans après sa création, le statut de cette JSR, tel qu&#8217;affiché sur sa page du JCP, reste toujours inchangé et la JSR est maintenant classée &laquo;&nbsp;inactive&nbsp;&raquo;.<br
/> Ron Ten-Hove (<em>co-spec lead</em> de la JSR), vient toutefois d&#8217;apporter une information discrète quant à l&#8217;activité de l&#8217;<em>Expert Group</em> associé sur <a
href="http://n2.nabble.com/JBI-2.0,-open-esb-future---td2607990.html" title="la mailing list du projet OpenESB" >la mailing list du projet OpenESB</a>. Il indique que le développement de la JSR n&#8217;est pas interrompu et que la classification d&#8217;inactivité est uniquement due à une nouvelle règle du JCP qui étiquette ainsi les JSRs dont le statut n&#8217;a pas évolué depuis 18 mois. Ceci ne refléterait donc pas le niveau d&#8217;activité au sein de l&#8217;<em>Expert Group</em>. Aucune date ni évolution de planning ne sont par contre indiquées.</p><p>Le standard JBI 1.0 est boudé par un grand nombre de produits commerciaux et Open Source qui préfèrent épouser la vague des &laquo;&nbsp;lightweight ESB&nbsp;&raquo; dont <a
href="http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/" title="nous vous parlions dj il y a un an" >nous vous parlions déjà il y a un an</a>. Toutefois l&#8217;arrivée tardive d&#8217;un standard faisant consensus n&#8217;est pas forcément un frein à son adoption comme l&#8217;a montré EJB 3 remplaçant avec succès ses très lourds prédécesseurs ; la voie reste donc ouverte pour JBI 2.0 et l&#8217;avenir nous dira si la tâche n&#8217;était pas trop lourde.</p><h3><a
name="Mobilit"></a>Mobilité</h3><h4><a
name="PreviewdAndroid"></a>Preview d&#8217;Android 1.5</h4><p>En attendant la sortie finale d&#8217;Android 1.5 (Cupcake) à la fin du mois, Android Developers Blog <a
href="http://android-developers.blogspot.com/2009/04/getting-ready-for-android-15.html" title="annonce la sortie dune prversion du SDK 15" >annonce la sortie d&#8217;une pré-version du SDK 1.5</a> pour les développeurs d&#8217;applications Android.<br
/> Parmi <a
href="http://developer.android.com/sdk/preview/features.html" title="la liste complte des nouveauts dAndroid 15" >la liste complète des nouveautés d&#8217;Android 1.5</a>, cette pré-version du SDK propose notamment:</p><ul><li>le <a
href="http://androidcommunity.com/android-getting-virtual-keyboard-20081024" title="clavier virtuel" >clavier virtuel</a></li><li>le développement de widgets pour l&#8217;écran d&#8217;accueil (à l&#8217;image de l&#8217;horloge ou du widget de recherche qui existent déjà dans Android)</li><li>la fonctionnalité <a
href="http://www.readwriteweb.com/archives/live_folders_bring_the_real-time_web_to_android.php" title="live folders" >live folders</a></li><li>la reconnaissance vocale</li></ul><p>Ce nouveau SDK propose également une avancée intéressante : la possibilité de gérer plusieurs versions du SDK en parallèle, par exemple ici les versions 1.1 et 1.5. Les développeurs pourront donc tester leur application sur plusieurs environnements sans manipulations fastidieuses.<br
/> Afin de commencer à tester vos applications sur cette nouvelle version d&#8217;Android, vous pouvez télécharger ce SDK 1.5 <a
href="http://developer.android.com/sdk/preview/" title="en cliquant ici" >en cliquant ici</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Lucenecontinuedinnover"></a>Lucene continue d&#8217;innover</h4><p>Le projet <a
href="http://lucene.apache.org/" title="Apache Lucene" >Apache Lucene</a> reste une source d&#8217;innovation importante au fil des années. Il compte en effet huit sous-projets, chacun apportant son lot d&#8217;outils et d&#8217;APIs additionnelles permettant de mettre en œuvre un moteur de recherche toujours plus élaboré.Ces sous-projets vont parfois au-delà du simple environnement de Lucene, comme cela a été le cas avec <a
href="http://hadoop.apache.org/core/" title="Hadoop" >Hadoop</a>, qui <a
href="http://blog.xebia.fr/2009/04/06/revue-de-presse-xebia-103/#AmazonlancesonserviceElasticMa" title="gagne actuellement en popularité" >gagne actuellement en popularité</a> et dont le moteur <a
href="http://labs.google.com/papers/mapreduce.html" title="MapReduce" >MapReduce</a> est réutilisé par de nombreux autres projets.</p><p>Dernière preuve en date de cette activité, le sous-projet <a
href="http://lucene.apache.org/mahout/" title="Mahout" >Mahout</a>, <a
href="http://www.mail-archive.com/announce@apache.org/msg00466.html" title="créé en Janvier 2009" >créé en Janvier 2009</a> et qui vient <a
href="http://lucene.grantingersoll.com/2009/04/07/apache-mahout-01-released/" title="dtre annonc en version 01" >d&#8217;être annoncé en version 0.1</a>, a pour but de fournir des implémentations d&#8217;algorithmes de <em>machine learning</em>, la plupart pouvant être distribués grâce à Hadoop. Ces algorithmes couvrent principalement :</p><ul><li>La classification et le <em>clustering</em> : permettent de catégoriser, tagger et séparer des données en groupes. Ainsi enrichies, ces données pourraient par exemple être plus facilement exploitables et accessibles par un moteur de recherche qui saurait exploiter ces informations lors de son processus d&#8217;indexation.</li><li>Le <em>collaborative filtering</em> : permet de créer des systèmes d&#8217;associations d&#8217;objets par apprentissage, du type &laquo;&nbsp;les utilisateurs ayant acheté cet article ont également acheté &#8230;&nbsp;&raquo;. Cette fonctionnalité est offerte par le moteur <a
href="http://lucene.apache.org/mahout/taste.html" title="Taste" >Taste</a> de Mahout.</li></ul><p>Ces technologies sont actuellement plus proches du monde de la recherche que de celui de l&#8217;informatique de gestion en entreprise. Et c&#8217;est bien là que va résider tout le défit pour Mahout : parvenir à proposer une API simple et robuste pour offrir ces fonctionnalités à moindre coût aux applications d&#8217;entreprise. Actuellement peu courants, les cas d&#8217;utilisation pourraient se multiplier avec la mouvance globale vers les technologies Web 2.0 et autre concepts liés à l&#8217;intelligence collective.</p><h4><a
name="ServiceMixetsonkernelOSGi"></a>ServiceMix 4 et son kernel OSGi</h4><p>L&#8217;équipe de ServiceMix a profité de la conférence <a
href="http://www.eu.apachecon.com/c/aceu2009/" title="ApacheCon Europe 2009" >ApacheCon Europe 2009</a> pour <a
href="http://gnodet.blogspot.com/2009/04/apache-servicemix-400-and-apache.html" title="annoncer" >annoncer</a> la sortie de la version 4.0 finale de leur ESB.<br
/> Rod Biresch <a
href="http://soatechlab.blogspot.com/2008/09/whats-new-in-servicemix-4x.html" title="prsentait en septembre dernier" >présentait en septembre dernier</a> les principaux apports de cette nouvelle version, ce qui permettait alors de constater qu&#8217;il s&#8217;agissait avant tout d&#8217;une refonte de l&#8217;architecture du projet. Ainsi, alors que ServiceMix 3 gravitait principalement autour de son conteneur JBI, son successeur utilise désormais un kernel basé sur OSGi et secondé par un module Normalized Message Router (NMR). Il donne naissance à deux sous-projets distincts : ServiceMix Kernel et ServiceMix NMR.</p><p>Cette nouvelle architecture permet à ServiceMix de gagner en évolutivité et n&#8217;a qu&#8217;un impact limité pour les développeurs utilisant cet ESB. Ainsi, les composants développés pour ServiceMix 3.x restent compatibles avec cette nouvelle version, tel que l&#8217;on pouvait s&#8217;y attendre du fait de la conservation du standard JBI.</p><p>En outre, Guillaume Nodet (<em>project lead</em> de ServiceMix) <a
href="http://gnodet.blogspot.com/2009/04/apache-karaf.html" title="nous apprend" >nous apprend</a> que le kernel de ServiceMix 4 attire d&#8217;autres projets de la fondation Apache (ActiveMQ, Directory et James) ce qui devrait conduire ServiceMix Kernel à devenir un sous-projet d&#8217;Apache Felix et à être, à priori, renommé pour l&#8217;occasion en Apache Karaf. OSGi continue ainsi de s&#8217;imposer massivement pour apporter la modularité dans les implémentations de conteneurs et middlewares Java, après avoir conquit le cœur de nombreux serveurs d&#8217;applications.</p><h3><a
name="vnementsdenotrecommunautenFran"></a>Évènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="LesCastCodeurslepodcastJavaenF"></a>Les Cast Codeurs, le podcast Java en Français</h4><p>A l&#8217;image du <a
href="http://javaposse.com/" title="Java Posse" >Java Posse</a> anglo-saxon, Emmanuel Bernard (JBoss, Hibernate), Guillaume Laforge (SpringSource, Groovy), Antonio Goncalves (freelance, auteur, Paris JUG) et Vincent Massol (XWiki, Maven) lancent <a
href="http://lescastcodeurs.com" title="Les Cast Codeurs" >Les Cast Codeurs</a>, podcast dédié aux nouvelles fraîches du monde Java, en Français !<br
/> Parmi les sujets discutés pendant cette première édition : Google App Engine, le rachat hypothétique de Sun par IBM ou Java EE 6 proposé en final draft.<br
/> On y entend beaucoup Emmanuel Bernard, beaucoup moins Vincent Massol, mais les propos et le format sont intéressants, longue vie aux Cast Codeurs !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/</link> <comments>http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#comments</comments> <pubDate>Mon, 30 Mar 2009 17:03:17 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[CXF]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[Jdk7]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[Red Hat]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[SpringSource]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1694</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Sun, Java et le JCP RIA, SOA, Tim Bray tire dans le tas SOA Red Hat JBoss choisit d&#8217;investir dans CXF Le coin de la technique Enfin une roadmap détaillée pour le JDK7 La création de bundles OSGi selon SpringSource [...]]]></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/03/30/revue-de-presse-xebia-102/#SunJavaetleJCP">Sun, Java et le JCP</a></li><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#RIASOATimBraytiredansletas">RIA, SOA, Tim Bray tire dans le tas</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#RedHatJBosschoisitdinvestirdan">Red Hat JBoss choisit d&#8217;investir dans CXF</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#EnfinuneroadmapdtaillepourleJD">Enfin une roadmap détaillée pour le JDK7</a></li><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#LacrationdebundlesOSGiselonSpr">La création de bundles OSGi selon SpringSource</a></li><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#Utiliserlenuagepourrduirelesco">Utiliser le nuage pour réduire les coûts d&#8217;intégration continue.</a></li><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#OutilsGlassfishpourEclipse">Outils Glassfish pour Eclipse</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="SunJavaetleJCP"></a>Sun, Java et le JCP</h4><p>Depuis quelques jours, une agitation se crée au sein de la communauté Java autour des agissements de Sun vis-à-vis de son projet OpenJDK 7. Plusieurs observations permettent en effet de penser que le JDK 7 pourrait bien ne pas être basé sur un standard du JCP comme c&#8217;est habituellement le cas :</p><ul><li><a
href="http://neilbartlett.name/blog/2009/03/25/using-suns-jigsaw-may-get-you-fired/" title="Neil Bartlett remarque" >Neil Bartlett remarque</a> que le projet Jigsaw, poussé par Sun pour être le système de modules utilisé par le JDK, n&#8217;est pas défini par une JSR. Ceci en fait donc une technologie propriétaire dont il doute de la légitimité face à OSGi, un standard bénéficiant de 10 années d&#8217;expérience.</li><li><a
href="http://www.jroller.com/scolebourne/entry/no_more_java_7" title="Stephen Colebourne constate" >Stephen Colebourne constate</a> que Sun ne fait plus mention de &laquo;&nbsp;Java 7&#8243; depuis quelques temps, mais seulement de &laquo;&nbsp;JDK 7&#8243; qui n&#8217;est qu&#8217;une implémentation, là où &laquo;&nbsp;Java 7&#8243; qualifierait un standard.</li><li><a
href="http://apsblog.burtongroup.com/2009/03/open-source-is-not-as-open-as-standard-specifications.html" title="Anne Thomas Manes faisant des observations similaires compare" >Anne Thomas Manes faisant des observations similaires, compare</a> l&#8217;OpenJDK à la position de framework Open Source &laquo;&nbsp;rebelle&nbsp;&raquo;, non standard, que tient Spring.</li><li>Stephen Colebourne encore, visiblement très impliqué par ce débat, revient dans une série de billets sur <a
href="http://www.jroller.com/scolebourne/entry/sun_apache_ip_in_pictures" title="les différents qui opposent Sun à la fondation Apache" >les différents qui opposent Sun à la fondation Apache</a>, <a
href="http://www.jroller.com/scolebourne/entry/shedding_new_light_on_no" title="rappelant l'historique" >rappelant l&#8217;historique</a>, ainsi que sur la problématique de <a
href="http://www.jroller.com/scolebourne/entry/a_question_of_ip" title="proprit intellectuelle au sein du JCP" >propriété intellectuelle au sein du JCP</a> de manière générale.</li></ul><p>Si le JDK 7 devait être finalisé sans qu&#8217;aucun standard ne le soutienne, cela constituerait un évènement majeur, puisque l&#8217;avenir deviendrait incertain pour les JVMs fournies par d&#8217;autres éditeurs tels qu&#8217;Oracle ou IBM.</p><h4><a
name="RIASOATimBraytiredansletas"></a>RIA, SOA, Tim Bray tire dans le tas</h4><p>C&#8217;est <a
href="http://www.infoq.com/interviews/tim-bray-future-of-web" title="dans une interview pour InfoQ" >dans une interview pour InfoQ</a> que Tim Bray co-auteur du XML nous donne son avis sur les technologies RIA. Selon lui, les RIA type Flex, Silverlight et JavaFx n&#8217;ont pour but que de fournir des applications toujours plus immersives et de moins en moins utiles. Il modère tout de même ses propos en s&#8217;appuyant sur des exemples de réussite comme Google et Yahoo! qui utilisent de manière élégante Ajax et consort. En bref, pour lui les avantages des interfaces web sont la simplicité et la rapidité, Tim ne croit donc pas en la longévité du RIA. Rien de mieux pour faire de l&#8217;applicatif lourd que de l&#8217;applicatif lourd.<br
/> Dans son interview, il explique rapidement que l&#8217;émergence des Web Services et des architectures de type SOA s&#8217;est faite en dépit du bon sens. Au début chacun y allait de son format XML privé et ça fonctionnait, mais on a voulu généraliser le problème et fournir une solution pour tous. Cette volonté de créer une pierre philosophale pour exposer ses services n&#8217;a apporté que des difficultés d&#8217;implémentation, d&#8217;intégration et surtout d&#8217;interopérabilité. Bref, Tim est assez pessimiste en ce qui concerne les &#8216;WS-*&#8217;, il soutient en revanche REST qui selon ses termes, n&#8217;est qu&#8217;une reformulation des bonnes pratiques des Web Oriented Architectures.<br
/> Enfin, il reste très discret sur Sun et sur le cloud computing en indiquant tout de même que pour le moment le département se cherche un peu. Faut-il fournir des solutions et des outils pour implémenter des nuages ou bien héberger directement des nuages et devenir fournisseur?</p><p><a
href="http://www.infoq.com/interviews/tim-bray-future-of-web" title="Linterview complte sur InfoQ" >L&#8217;interview complète sur InfoQ</a><br
/> <a
href="http://flexblog.faratasystems.com/?p=404" title="La rponse de Yakov Fain" >La réponse de Yakov Fain</a></p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="RedHatJBosschoisitdinvestirdan"></a>Red Hat JBoss choisit d&#8217;investir dans CXF</h4><p><a
href="http://www.press.redhat.com/2009/03/25/red-hat-adds-muscle-to-apache-cxf/" title="Red Hat a annoncé la semaine dernière" >Red Hat a annoncé la semaine dernière</a> qu&#8217;elle devient un <em>&laquo;&nbsp;key contributor&nbsp;&raquo;</em> du projet <a
href="http://cxf.apache.org/" title="Apache CXF" >Apache CXF</a>.<br
/> A terme, <a
href="http://sacha.labourey.com/2009/03/26/jboss-to-join-forces-with-apache-cxf/" title="comme l'explique Sacha Labourey sur son blog" >comme l&#8217;explique Sacha Labourey sur son blog</a>, cela signifie que <a
href="http://jboss.org/jbossws" title="JBossWS" >JBossWS</a> qui laisse aujourd&#8217;hui le choix de l&#8217;implémentation Web Service <em>(ne fournissant qu&#8217;une couche d&#8217;abstraction)</em> ne fournira plus que l&#8217;implémentation Apache CXF. C&#8217;est dommage, d&#8217;autant plus que les dernières releases de CXF ont été plutôt douloureuses et riches en bugs.<br
/> D&#8217;un autre côté, la participation active des équipes JBoss au projet ne peut qu&#8217;aider à rectifier le tir. Gageons donc que les futures releases d&#8217;Apache CXF seront de bien meilleures factures que celles de 2008.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="EnfinuneroadmapdtaillepourleJD"></a>Enfin une roadmap détaillée pour le JDK7</h4><p>Lors de la conférence Devoxx de décembre dernier, un keynote avait particulièrement retenu l&#8217;attention : Mark Reinhold présentait alors la <a
href="http://hamletdarcy.blogspot.com/2008/12/java-7-update-from-mark-reinhold-at.html" title="liste des fonctionnalits" >liste des fonctionnalités</a> qui seraient intégrées au futur JDK 7, ainsi qu&#8217;une date pour la version finale.</p><p>Mark Reinhold <a
href="http://blogs.sun.com/mr/entry/jdk7" title="annonce" >annonce</a> maintenant la mise en ligne d&#8217;un <a
href="http://openjdk.java.net/projects/jdk7/calendar/" title="calendrier" >calendrier</a> détaillé des <a
href="http://openjdk.java.net/projects/jdk7/" title="milestones prévus" >milestones prévus</a> et des <a
href="http://openjdk.java.net/projects/jdk7/features/" title="fonctionnalits" >fonctionnalités</a> associées.</p><p>L&#8217;analyse de ces informations aboutit à quelques remarques :</p><ul><li>La période annoncée en décembre dernier pour l&#8217;arrivée d&#8217;une version finale, à savoir &laquo;&nbsp;début 2010&#8243;, est légèrement décalée puisqu&#8217;un <em>final milestone</em> est prévu pour le 18/02/2010 suivi d&#8217;une phase de <em>release candidate</em> d&#8217;un à deux mois. Ceci porterait donc l&#8217;arrivée d&#8217;une version finale à avril ou mai 2010.</li><li>La liste des nouveautés reste globalement inchangée à une exception près : il n&#8217;est plus question de MVM (Multiple Virtual Machines) qui devait permettre d&#8217;exécuter plusieurs applications au sein d&#8217;une même VM. Cette fonctionnalité, particulièrement intéressante dans le contexte du regain d&#8217;intérêt pour les Applets Java et autres applications JavaFX embarquées dans le browser, était annotée d&#8217;un <em>&laquo;&nbsp;maybe&nbsp;&raquo;</em> il y a deux mois et était visiblement trop ambitieuse pour résister à la pression du calendrier.</li><li>La <a
href="http://www.jcp.org/en/jsr/detail?id=310" title="JSR-310 (Date and Time API)" >JSR-310 (Date and Time API)</a> n&#8217;avait pas été citée en décembre et ne l&#8217;est toujours pas. <a
href="https://jsr-310.dev.java.net/servlets/ReadMsg?list=dev&#038;msgNo=1389" title="Lappel  laide" >L&#8217;appel à l&#8217;aide</a> du <em>spec lead</em> Stephen Colebourne aura donc été vain. En effet, comme il le faisait alors remarquer, dans le cas d&#8217;une inclusion au JDK, JDBC et NIO2 seraient impactés afin de prendre en compte la nouvelle API. Compte-tenu de cet impact, il était essentiel que cette JSR puisse être finalisée rapidement. Or son statut, toujours annoncé comme <em>&laquo;&nbsp;inactive&nbsp;&raquo;</em> par le site du JCP, tend à nous faire penser que la classe <code>java.util.Date</code> a encore de &laquo;&nbsp;beaux&nbsp;&raquo; jours devant elle.</li></ul><h4><a
name="LacrationdebundlesOSGiselonSpr"></a>La création de bundles OSGi selon SpringSource</h4><p>SpringSource <a
href="http://forum.springsource.org/showthread.php?p=232865" title="annonce" >annonce</a> l&#8217;arrivée de <a
href="http://www.springsource.org/bundlor" title="Bundlor" >Bundlor</a>, son outil de création de bundles OSGi, actuellement en version 1.0M2.</p><p>Dans un projet OSGi il est en effet nécessaire que l&#8217;ensemble des modules de l&#8217;application et des librairies tierces soient fournis sous forme de bundles. La création de bundles pour les modules dont on a le contrôle n&#8217;est pas un problème en soit, pour les librairies tierces, il en est tout autrement.</p><p>Deux possibilités s&#8217;offrent alors au développeur : obtenir la librairie qu&#8217;il recherche packagée sous forme d&#8217;un bundle OSGi sur un repository dédié (<a
href="http://www.springsource.com/repository/app/" title="celui de SpringSource" >celui de SpringSource</a> par exemple) ou créer ce bundle par lui-même. Dans ce dernier cas, il faudra analyser l&#8217;ensemble des dépendances de la librairie pour créer un manifest adapté. C&#8217;est là que les outils de création automatisée de bundles interviennent. <a
href="http://www.aqute.biz/Code/Bnd" title="Bnd" >Bnd</a> était le seul disponible jusqu&#8217;alors, crée par Peter Kriens, <em>Technical Director</em> d&#8217;OSGi. SpringSource amène donc désormais son propre outil.</p><p>Bundlor est justifié par SpringSource par quelques fonctionnalités non présentes dans Bnd telles que la création incrémentale de manifests et <a
href="http://blog.springsource.com/2009/03/26/using-bundlor-in-eclipse/" title="lintgration  Eclipse" >l&#8217;intégration à Eclipse</a> via un plugin dédié.</p><p>Malgré l&#8217;apparente efficacité de ce type d&#8217;outil, il est indispensable de ne l&#8217;appliquer qu&#8217;à des librairies tierces. En effet un des intérêts d&#8217;OSGi réside dans sa capacité à n&#8217;exposer qu&#8217;une partie soigneusement sélectionnée des interfaces d&#8217;un module, ce que seule une intervention humaine sera à même d&#8217;effectuer correctement.</p><h4><a
name="Utiliserlenuagepourrduirelesco"></a>Utiliser le nuage pour réduire les coûts d&#8217;intégration continue.</h4><p>Il est de notoriété publique que plus la fin d&#8217;un sprint approche, plus les ressources du serveur d&#8217;intégration sont sollicitées. En outre, c&#8217;est dans ces périodes que les développeurs ont besoin des feedbacks les plus rapides. Alors, que faire ? S&#8217;offrir une machine surpuissante, dédiée à l&#8217;intégration continue, mais qui ne sera que rarement utilisée à pleine capacité ?<br
/> Atlassian, l&#8217;éditeur du <a
href="http://www.atlassian.com/software/bamboo" title="serveur d'intégration continue Bamboo" >serveur d&#8217;intégration continue Bamboo</a>, propose de résoudre ce problème dans la version 2.2 de son produit, en offrant la possibilité d&#8217;utiliser &laquo;&nbsp;Elastic Bamboo&nbsp;&raquo;, un agent distant s&#8217;exécutant sur le nuage <a
href="http://aws.amazon.com/ec2/" title="Amazon EC2" >Amazon EC2</a>. Ainsi, la disponibilité et la puissance sont maximales lorsque l&#8217;équipe en a besoin, tout en limitant les coûts.<br
/> Et comme Atlassian utilise Bamboo en interne, certains plâtres sont déjà essuyés :</p><ul><li>Les builds doivent réellement être indépendants de l&#8217;environnement (à vous de construire vos builds en étant conscients de ce problème).</li><li>Dans le cas <em>standard</em>, les dépendances doivent être téléchargées à chaque build (l&#8217;instance de build disparaissant du nuage lorsqu&#8217;elle se termine). Une solution peut être d&#8217;utiliser une <em>image disque</em> sauvegardée sur le nuage.</li></ul><p><a
href="http://blogs.atlassian.com/developer/2009/03/customizing_your_cloud.html" title="Toutes les astuces de Edwin Wong pour paramtrer votre serveur dintgration continue sur le nuage" >Toutes les astuces de Edwin Wong pour paramétrer votre serveur d&#8217;intégration continue sur le nuage</a> se trouvent sur le blog d&#8217;Atlassian.</p><h4><a
name="OutilsGlassfishpourEclipse"></a>Outils Glassfish pour Eclipse</h4><p>Sun vient de sortir la <a
href="http://download.java.net/glassfish/eclipse/" title="version 09" >version 0.9</a> (la version 1.0 arrive bientôt) de son bundle.<br
/> Celui-ci intègre:</p><ul><li>Eclipse 3.4.1</li><li>Serveurs Glassfish v 2.1 et v3 Prélude</li><li>JDK 1.6 Update 12 (optionnel)</li><li>Une série de plugins permettant de configurer votre serveur J2EE, ainsi que vos WebServices (Soap ou Rest) depuis l&#8217;IDE. (Plus de détails sur les plugins, <a
href="https://glassfishplugins.dev.java.net/eclipse34/index.html" title="ici" >ici</a>).</li></ul><p>Ce bundle offre l&#8217;avantage de fournir un paquet tout-en-un. Il est destiné aux développeurs et aux organisations qui n&#8217;utilisent pas NetBeans, mais Eclipse. Celui-ci étant l&#8217;IDE le plus répandu. Sun élargit ainsi son public et se rapproche de la grande communauté d&#8217;Eclipse.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/11/24/revue-de-presse-xebia-84/</link> <comments>http://blog.xebia.fr/2008/11/24/revue-de-presse-xebia-84/#comments</comments> <pubDate>Mon, 24 Nov 2008 17:58:29 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Netbeans]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Seam]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[SoapUI]]></category> <category><![CDATA[XP]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1050</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII OSGi : Spring dm Server standardisé pour l&#8217;été 2009 ? Agilité La fin de l&#8217;Agilité ? SOA SOA : de la crise de doute à la désillusion ? Le coin de la technique Seam 3 : les futures orientations 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/2008/11/24/revue-de-presse-xebia-84/#OSGiSpringdmServerstandardispo">OSGi : Spring dm Server standardisé pour l&#8217;été 2009 ?</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/11/24/revue-de-presse-xebia-84/#LafindelAgilit">La fin de l&#8217;Agilité ?</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/11/24/revue-de-presse-xebia-84/#SOAdelacrisededouteladsillusio">SOA : de la crise de doute à la désillusion ?</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/11/24/revue-de-presse-xebia-84/#SeamlesfuturesorientationsdeSe">Seam 3 : les futures orientations de Seam</a></li><li><a
href="http://blog.xebia.fr/2008/11/24/revue-de-presse-xebia-84/#SortiedeNetbeans">Sortie de Netbeans 6.5</a></li><li><a
href="http://blog.xebia.fr/2008/11/24/revue-de-presse-xebia-84/#SortiedeSOAPUI">Sortie de SOAP UI 2.5</a></li><li><a
href="http://blog.xebia.fr/2008/11/24/revue-de-presse-xebia-84/#SurvoldelarchitectureMySpace">Survol de l&#8217;architecture MySpace</a></li><li><a
href="http://blog.xebia.fr/2008/11/24/revue-de-presse-xebia-84/#OraclesortsonIncubateurCoheren">Oracle sort son Incubateur Coherence</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="OSGiSpringdmServerstandardispo"></a>OSGi : Spring dm Server standardisé pour l&#8217;été 2009 ?</h4><p>Eric Newcommer, <em>OSGi Enterprise Expert Group <em>(EEG)</em> co-chair</em>, présente dans &laquo;&nbsp;<a
href="http://blogs.iona.com/newcomer/archives/000578.html" title="OSGi for the Enterprise Gets a Bit Closer &#038; LinkedIn Too" >OSGi for the Enterprise Gets a Bit Closer &#038; LinkedIn Too</a>&nbsp;&raquo; l&#8217;avancement de l&#8217;EEG qui a pour ambition de faire coïncider la fin de ses travaux avec la sortie d&#8217;OSGi R4.2 annoncée pour Juin 2009.</p><p>On y apprend que la &laquo;&nbsp;RFC 124 / Blueprint Component Model&nbsp;&raquo; est quasiment finalisée, son implémentation de référence <em>(RI)</em> est <a
href="http://www.springsource.com/products/suite/dmserver" title="SpringSource dm Server" >SpringSource dm Server</a> dont elle a repris les principes ; le Test Compatibility Kit <em>(TCK)</em> est développé par le projet <a
href="http://geronimo.apache.org/" title="Apache Geronimo" >Apache Geronimo</a>. Souhaitons que cette standardisation de dm Server permette à SpringSource de reverser le contenu de son <a
href="http://www.springsource.com/repository/app/" title="Enterprise Bundle Repository" >Enterprise Bundle Repository</a> dans l&#8217;officiel <a
href="http://www.osgi.org/Repository/HomePage" title="OSGi Bundle Repository" >OSGi Bundle Repository</a> de l&#8217;OSGi Alliance et que la prolifération de bundles customisés par les grands acteurs de l&#8217;OSGi prenne fin.</p><p>Par ailleurs, &laquo;&nbsp;RFC 119 / Distributed OSGi&nbsp;&raquo; serait elle aussi prête. <a
href="http://cxf.apache.org/" title="Apache CXF" >Apache CXF</a> est en charge de la Reference Implementation <em>(Cf. <a
href="http://blogs.iona.com/newcomer/archives/000569.html" title="First Ever Demo of Distributed OSGi" >First Ever Demo of Distributed OSGi</a>)</em> et Tibco s&#8217;occupe du Test Compatibility Kit. Nous remarquerons que Distributed OSGi reprend certains principes de <a
href="http://blog.xebia.fr/2007/04/11/introduction-a-sca-service-component-architecture/" title="Service Component Architecture (SCA)" >Service Component Architecture (SCA)</a> et que le positionnement des deux technologies manque encore de clarté. De plus, à la différence de &laquo;&nbsp;Blueprint Component Model&nbsp;&raquo; avec Spring dm Server, Distributed OSGi ne connaît pas encore de <em>&laquo;&nbsp;vraie&nbsp;&raquo;</em> implémentation.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="LafindelAgilit"></a>La fin de l&#8217;Agilité ?</h4><p>Le prix du buzz de la semaine revient incontestablement à James Shore pour son article <a
href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html" title="The Decline and Fall of Agile" >The Decline and Fall of Agile</a>. &laquo;&nbsp;Jim&nbsp;&raquo; raconte qu&#8217;il a noté un changement dans son métier : avant on l&#8217;appelait pour introduire les méthodes agiles sur les projets, aujourd&#8217;hui on l&#8217;appelle pour secourir des projets soi-disant &laquo;&nbsp;agiles&nbsp;&raquo;.<br
/> Et par &laquo;&nbsp;agile&nbsp;&raquo; la plupart des clients entendent Scrum, la méthode la plus répandue. Il reproche à Scrum son silence sur les pratiques d&#8217;ingénierie logicielle à mettre en place <em>(contrairement à XP)</em>, pourtant indispensables à la viabilité d&#8217;un projet. Il critique également la <a
href="http://www.scrumalliance.org/" title="Scrum Alliance" >Scrum Alliance</a> et son système de certification ScrumMaster qui donnent l&#8217;impression que l&#8217;agilité est facile. La nature humaine nous incite à ne choisir que les côtés agréables <em>(les sprints et les daily scrums)</em> mais nous ignorons les côtés plus difficiles, qui sont aussi les plus importants : équipe co-localisée, auto-organisée, produit livrable à chaque fin d&#8217;itération, élimination des obstacles.</p><p>Cet article a déclenché de vives réactions dans la communauté agile, certaines un peu <a
href="http://blog.objectmentor.com/articles/2008/11/16/dirty-rotten-scrumdrels" title="puériles" >puériles</a>, d&#8217;autres plus constructives. Sur <a
href="http://www.infoq.com/news/2008/11/decline-of-agile" title="InfoQ" >InfoQ</a> par exemple, le <a
href="http://en.wikipedia.org/wiki/Hype_cycle" title="Gartner Hype Cycle" >Gartner Hype Cycle</a> est évoqué pour expliquer ce déclin. Après un pic d&#8217;attentes irréalistes concernant une technologie, celle-ci traverse un creux de désillusion avant de remonter pour atteindre son plateau de productivité. Les méthodes agiles traverseraient-elles actuellement ce creux ?</p><p>Le <a
href="http://www.touilleur-express.fr/2008/11/17/mda-scrum/" title="Touilleur" >Touilleur</a> cite <a
href="http://blog.robbowley.net/2008/11/15/lean-scrum/" title="Rob Bowley" >Rob Bowley</a> qui fait le rapprochement entre la déception de Scrum et l&#8217;engouement récent pour le <a
href="http://en.wikipedia.org/wiki/Lean_software_development" title="Lean Software Development" >Lean Software Development</a>. Il prédit pourtant que le Lean subira le même sort que Scrum, pour les mêmes raisons. Selon lui peu importe la méthode, il y a toujours des personnes qui se concentrent sur les outils plutôt que sur les vrais problèmes. Ces personnes, qui échouent avec Scrum aujourd&#8217;hui, échoueront avec le Lean demain.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="SOAdelacrisededouteladsillusio"></a>SOA : de la crise de doute à la désillusion ?</h4><p>Nous évoquions en Mars dernier dans <em>&laquo;&nbsp;<a
href="http://blog.xebia.fr/2008/03/03/revue-de-presse-xebia-46/#annusHorribilis" title="2008, annus horribilis de la la SOA ?" >2008, annus horribilis de la la SOA ?</a>&laquo;&nbsp;</em> la crise de doute qui s&#8217;emparait du Burton Group, grand chantre de la SOA. La crise s&#8217;accentue aujourd&#8217;hui avec l&#8217;autre évangéliste de SOA, le Gartner Group, qui nous gratifie de <a
href="http://blogs.gartner.com/frank_kenney/2008/11/12/ahh-shucks-soa-is-a-failure/" title="Ahh Shucks, SOA Is A Failure (Frank Kenney)" >Ahh Shucks, SOA Is A Failure (Frank Kenney)</a>. À croire que le Gartner Group s&#8217;applique son célèbre <a
href="http://en.wikipedia.org/wiki/Hype_cycle" title="Hype cycle" >Hype cycle</a> et, après avoir loué SOA, tombe en pleine phase de désillusion.</p><p>Est-ce pour autant la fin de SOA ? Certainement pas, des ouvrages comme <a
href="http://www.enterpriseintegrationpatterns.com/" title="Enterprise Integration Patterns" >Enterprise Integration Patterns</a> ou <a
href="http://www.enterpriseintegrationpatterns.com/docs/hohpe_developing_in_soa_world.pdf" title="Developing in a Service-oriented World" >Developing in a Service-oriented World</a> <em>(Gregor Hohpe, Google)</em> ont beaucoup apporté à l&#8217;intégration des Systèmes d&#8217;Information.</p><p>Quant aux cabinets de conseils qui ont parfois <em>manqué de pragmatisme</em>, ils ont trouvé des nouvelles marottes avec les architectures du moment : <a
href="http://en.wikipedia.org/wiki/Representational_State_Transfer" title="Representational State Transfer (REST)" >Representational State Transfer (REST)</a> et <a
href="http://en.wikipedia.org/wiki/Web_Oriented_Architecture" title="Web Oriented Architecture (WOA)" >Web Oriented Architecture (WOA)</a> <em>(Cf. <a
href="http://blogs.gartner.com/nick_gall/2008/11/19/woa-putting-the-web-back-in-web-services/" title="Gartner - WOA: Putting the Web Back in Web Services" >Gartner &#8211; WOA: Putting the Web Back in Web Services</a> ou <a
href="http://apsblog.burtongroup.com/2008/09/the-toa-of-rest.html" title="Burton Group : The Tao Of REST" >Burton Group : The Tao Of REST</a>)</em>, sans oublier les promesses mirobolantes du <a
href="http://en.wikipedia.org/wiki/Software_as_a_service" title="Software As A Service (SaaS)" >Software As A Service (SaaS)</a> et du <a
href="http://en.wikipedia.org/wiki/Cloud_computing" title="Cloud Computing" >Cloud Computing</a> !</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SeamlesfuturesorientationsdeSe"></a>Seam 3 : les futures orientations de Seam</h4><p>Gavin King, créateur d&#8217;Hibernate et Seam, présente les futures orientations de <a
href="http://in.relation.to/Bloggers/Seam3" title="Seam3" >Seam3</a>.</p><p>Il indique que Seam 2 était une première couche. Cette couche a pour responsabilité de gérer des composants à état, configurables et injectables pour le développement d&#8217;applications Web riches. Il permet de s&#8217;abstraire du code &laquo;&nbsp;glue&nbsp;&raquo; que l&#8217;on doit faire pour intégrer différentes technologies <em>(JSF, JPA, &#8230;)</em>. Cette première couche est focalisée sur l&#8217;intégration de services à état côté serveur et sur la réalisation d&#8217;interface graphique <em>(par défaut avec JSF)</em>.</p><p>Seam 3 ajoutera une seconde couche, qui aura pour responsabilité de faire de WebBeans le coeur de Seam, d&#8217;améliorer l&#8217;intégration de la sécurité, de <a
href="http://www.jboss.org/drools/" title="Drools" >Drools</a> et <a
href="http://www.jboss.com/fr/products/jbpm" title="jBPM" >jBPM</a>. L&#8217;idée est de faire de Seam 3 un framework d&#8217;infrastructure basé sur Web Beans. Seam 3 permettra donc l&#8217;intégration de moteur de workflow et de moteur de règles qui devrait apporter de nouveaux outils pour la conception et la réalisation d&#8217;applications.</p><p>Seam 3 pourrait conduire à une réécriture de Seam 2 afin d&#8217;intégrer Web Beans.</p><p>A noter que le 2 décembre 2008 se tiendra une <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20081202" title="soirée JBoss au Paris JUG" >soirée JBoss au Paris JUG</a>, dont la deuxième partie sera entièrement consacrée au framework Seam.</p><h4><a
name="SortiedeNetbeans"></a>Sortie de Netbeans 6.5</h4><p>Netbeans.org annonce la sortie de son IDE NetBeans 6.5 : <a
href="http://www.netbeans.org/servlets/NewsItemView?newsItemID=1313" title="NetBeans.org is proud to announce the availability of NetBeans IDE 6.5!" >NetBeans.org is proud to announce the availability of NetBeans IDE 6.5!</a>.</p><p>Cette nouvelle version met à disposition des développeurs :</p><ul><li>le debug Javascript dans Internet Explorer et Firefox,</li><li>le développement JavaFX <em>(compilation, déploiement, prévisualisation, édition, &#8230;)</em>,</li><li>l&#8217;intégration de Glassfish V3 Prelude <em>(possibilité de scripter en JRuby)</em>,</li><li>un plugin pour le développement en python : <a
href="http://dlc.sun.com.edgesuite.net/netbeans/6.5/python/ea/" title="NetBeans IDE for Python EA Download" >NetBeans IDE for Python EA Download</a>,</li><li>l&#8217;amélioration et l&#8217;intégration de nouvelles technologies de développement : PHP, Groovy / <a
href="http://grail.sourceforge.net/" title="GRails" >GRails</a>, Ruby <em>(<a
href="http://www.rubyonrails.org/" title="RoR - Ruby On Rails" >RoR &#8211; Ruby On Rails</a>, <a
href="http://rake.rubyforge.org/" title="rake" >rake</a>)</em>,</li><li>et bien d&#8217;autres : <a
href="http://www.netbeans.org/community/releases/65/" title="NetBeans IDE 6.5 Release Information" >NetBeans IDE 6.5 Release Information</a>, <a
href="http://wiki.netbeans.org/NewAndNoteWorthyNB65" title="NewAndNoteWorthyNB65" >NewAndNoteWorthyNB65</a>.</li></ul><p>Netbeans s&#8217;avère une alternative de plus en plus crédible à Eclipse. Il possède des avantages non négligeables par rapport à ce dernier : meilleur support Javascript <em>(et du développement Web avec PHP)</em>, support de Python, JavaFx, etc.</p><p>Pour plus d&#8217;informations, voici quelques screencasts qui montrent le fonctionnement de Netbeans : <a
href="http://cld.blog-city.com/netbeans_ide_65_released_introductory_screencast_released.htm" title="NetBeans IDE 6.5 Released; Introductory Screencast Released" >NetBeans IDE 6.5 Released; Introductory Screencast Released</a>.</p><h4><a
name="SortiedeSOAPUI"></a>Sortie de SOAP UI 2.5</h4><p>SoapUI est un outil graphique pour tester les services web. Il permet d&#8217;inspecter, invoquer, développer, créer des tests de charges et des tests fonctionnels sur des services web. Il apporte aussi des plugins pour Eclipse, IntelliJ IDEA et NetBeans.</p><p>SoapUI 2.5 apporte un grand nombre de fonctionnalités :</p><ul><li><strong>Inspection</strong> et <strong>invocation</strong> :<ul><li
style="font-size:1.0em;">Importation et analyse de fichiers WSDL.</li><li
style="font-size:1.0em;">Appel des différentes opérations d&#8217;un service web.</li><li
style="font-size:1.0em;">SSL / authentification / sécurité WS.</li></ul></li><li><strong>Développement</strong> et <strong>validation</strong> :<ul><li
style="font-size:1.0em;">Génération de stubs client et serveur pour les frameworks les plus populaires : Axis 1.x/2.x, XFire / CXF, JWSDP, Oracle, .NET, GSoap, JBossWS.</li><li
style="font-size:1.0em;">Génération de XML bindings pour JAXB et XMLB.</li></ul></li><li><strong>Tests fonctionnels</strong> :<ul><li
style="font-size:1.0em;">Génération de séries de tests et de testcases sur la base du WSDL.</li><li
style="font-size:1.0em;">Utilisation de scripts « Groovy » pour l&#8217;exécution de tests.</li></ul></li><li><strong>Tests de charge</strong> :<ul><li
style="font-size:1.0em;">Établissement de tests de charge à partir de testcases fonctionnels.</li><li
style="font-size:1.0em;">Établissement d&#8217;assertions, tant au niveau de la performance que de la fonctionnalité.</li><li
style="font-size:1.0em;">Analyse de performance pour des scénarios variés..</li></ul></li></ul><p>Pour voir la liste complète des fonctionnalités, rendez-vous sur <a
href="http://www.soapui.org/features.html" title="le site du projet" >le site du projet</a>.</p><p>Très facile d&#8217;utilisation, SoapUI devient de plus en plus un leader incontournable dans le test des services web en open source. Il existe en version gratuite et open source et en version payante appelée &laquo;&nbsp;SoapUI Pro&nbsp;&raquo;.</p><p>Vous pouvez <a
href="http://sourceforge.net/project/showfiles.php?group_id=136013&#038;package_id=163662&#038;release_id=568878" title="télécharger" >télécharger</a> l&#8217;outil, ou l&#8217;utiliser directement avec le déploiement Java Web Start. Java 1.5 est indispensable à son utilisation.</p><h4><a
name="SurvoldelarchitectureMySpace"></a>Survol de l&#8217;architecture MySpace</h4><p><a
href="http://www.infoq.com/interviews/MySpace-Architecture-Dan-Farino" title="InfoQ poursuit sa série sur les architectures des grands du Web 2.0" >InfoQ poursuit sa série sur les architectures des grands du Web 2.0</a>, avec l&#8217;interview de Dan Farino, architecte principal du site communautaire <a
href="http://www.myspace.com/" title="MySpace" >MySpace</a>.</p><p>Nous entrerons probablement moins dans les détails de cette architecture pour la bonne et simple raison que MySpace est l&#8217;un des seuls site internet de cette taille à tourner sous .Net. Cependant, les grands principes de performances qui permettent au site communautaire de gérer plusieurs millions de visiteurs par jour, et un contenu en constante augmentation, s&#8217;appliquent à n&#8217;importe quelle technologie.</p><ul><li>Mettre l&#8217;accent sur l&#8217;automatisation : avec des fermes comportant plusieurs centaines de serveurs <em>(300 serveurs web IIS frontaux par exemple)</em>, il est vital que toutes les opérations d&#8217;administration des serveurs soient automatisées à une large échelle.</li><li>La détection des anomalies est la première étape nécessaire à l&#8217;amélioration des performances : à cette fin, Dan Farino a dû écrire un outil de supervision sur mesure permettant de &#8216;tracer&#8217; chaque requête à travers les centaines de serveurs de l&#8217;architecture. Cette problématique est relativement courante.</li><li>Pour chaque problème de performance ou de scalling détecté, l&#8217;équipe d&#8217;architectes de MySpace a favorisé la solution sur mesure aux nombreux outils &#8216;génériques&#8217; proposés par Microsoft. On notera en particulier :<ul><li
style="font-size:1.0em;">Le développement d&#8217;un système de cache spécifique, afin de s&#8217;affranchir des problèmes <em>(connus)</em> de GarbageCollection en .Net, et afin d&#8217;alléger la charge pesant sur les serveurs de DB.</li><li
style="font-size:1.0em;">Le développement d&#8217;un serveur de fichiers, en Linux, permettant d&#8217;adresser les fichiers aux utilisateurs finaux directement en HTTP, et gérant la redondance des fichiers audio, video <em>(qui sont la vraie valeur ajoutée de MySpace)</em>.</li><li
style="font-size:1.0em;">Le développement d&#8217;un système d&#8217;introspection du code .Net en temps réel <em>(mesure des temps d&#8217;appels, des allocations mémoire, levée d&#8217;exception, &#8230;)</em> écrit en C++ <em>(afin de monitorer le code .Net de la manière la plus indépendante possible)</em>.</li><li
style="font-size:1.0em;">La création d&#8217;un système de &#8216;load balancing&#8217; spécifique, permettant de rapidement isoler un serveur défaillant et de n&#8217;impacter qu&#8217;un minimum d&#8217;utilisateurs.</li></ul></li></ul><p>Et bien sûr, MySpace respecte un principe que nous avons maintenant rencontré dans tous les sites gérant un trafic ou un contenu important, le partitionnement horizontal et vertical des bases de données, en fixant une limite d&#8217;un million d&#8217;utilisateurs par DB.</p><p>Les autres épisodes de la série disponibles sur notre blog :</p><ul><li><a
href="http://blog.xebia.fr/2008/06/02/revue-de-presse-xebia-59/#eBayexposelesgrandsprincipesdu" title="Ebay" >Ebay</a></li><li><a
href="http://blog.xebia.fr/2008/06/09/revue-de-presse-xebia-60/#LesprincipesarchitecturauxdeLi" title="LinkedIn" >LinkedIn</a></li><li><a
href="http://blog.xebia.fr/2008/10/06/revue-de-presse-xebia-77/#LesdessousdInfoQ" title="InfoQ" >InfoQ</a></li></ul><h4><a
name="OraclesortsonIncubateurCoheren"></a>Oracle sort son Incubateur Coherence</h4><p>Oracle tente d&#8217;élargir la communauté &#8216;Coherence&#8217; après l&#8217;ouverture du mois dernier de son nouveau site web <a
href="http://coherence.oracle.com/display/INCUBATOR/" title="Coherence Incubator" >Coherence Incubator</a>. Veillez à ne pas comparer celui-ci à l&#8217;incubateur Apache, son fonctionnement est tout autre. &#8216;Coherence Incubator&#8217; a été créé dans le but de regrouper un ensemble de projets d&#8217;exemples, chacun d&#8217;entre eux proposant une implémentation de référence pour un cas d&#8217;utilisation standard de l&#8217;outil. Il s&#8217;agit donc d&#8217;un ensemble de bonnes pratiques validées par Oracle. Oracle espère par ce biais faciliter l&#8217;accès à son outil.</p><p>Pour mémoire, <a
href="http://www.oracle.com/technology/products/coherence/index.html" title="Oracle Coherence" >Oracle Coherence</a> se positionne comme l&#8217;une des solutions les plus complètes de grilles de données distribuées. Il  permet de clusteriser vos applications sur un environnement hardware évolutif. Par exemple, l&#8217;ajout et la suppression de machine s&#8217;effectuent sans contrarier la réplication, la distribution et le cache de données au sein du cluster.</p><p>Un mois après sa sortie, l&#8217;incubateur Coherence contient les projets suivants :</p><ul><li><a
href="http://coherence.oracle.com/display/INCUBATOR/Coherence+Common" title="coherence common" >coherence common</a> : un regroupement de classes utilitaires et bonnes pratiques. Utilisés par les autres projets de l&#8217;incubateur.</li><li>Implémentation distribuée du <a
href="http://coherence.oracle.com/display/INCUBATOR/Command+Pattern" title="command pattern" >command pattern</a>.</li><li>Implémentation du <a
href="http://coherence.oracle.com/display/INCUBATOR/Functor+Pattern" title="functor pattern" >functor pattern</a>. Il s&#8217;agit d&#8217;une extension au &#8216;command pattern&#8217; qui permet de renvoyer à l&#8217;appelant des valeurs de retour et des exceptions.</li><li>Implémentation partielle du pattern <a
href="http://coherence.oracle.com/display/INCUBATOR/Messaging+Pattern" title="messaging" >messaging</a>. Messages non persistés, managés en mémoire par Coherence.</li><li>Implémentation du pattern <a
href="http://coherence.oracle.com/display/INCUBATOR/Push+Replication+Pattern" title="Push Replication" >Push Replication</a>. Propagation des modifications des données, réplication.</li></ul><p>Si le contenu de cet incubateur n&#8217;est pas encore très impressionnant, il aura le mérite de servir de bon point de départ aux futurs nouveaux utilisateurs de Coherence. Le nombre de cas d&#8217;utilisation est encore très faible ; reste à savoir à quelle vitesse Oracle enrichira-t-il celui-ci. Après un mois d&#8217;utilisation, seul un nouveau projet a été créé.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/11/24/revue-de-presse-xebia-84/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>OSGi au Paris JUG &#8211; Slides de la présentation</title><link>http://blog.xebia.fr/2008/10/16/osgi-au-paris-jug-slides-de-la-presentation/</link> <comments>http://blog.xebia.fr/2008/10/16/osgi-au-paris-jug-slides-de-la-presentation/#comments</comments> <pubDate>Thu, 16 Oct 2008 18:59:11 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Divers]]></category> <category><![CDATA[Publications]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Java Module System]]></category> <category><![CDATA[JCP]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[OSGi Alliance]]></category> <category><![CDATA[Paris JUG]]></category> <category><![CDATA[superpackages]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=828</guid> <description><![CDATA[Cyrille Le Clerc et Nicolas Griso, Xebia, ont présenté OSGi, prêt pour Java EE ? au Paris JUG d&#8217;Octobre. Nous tenons à remercier les participants d&#8217;avoir fait le déplacement, les organisateurs Antonio Goncalves, David Dewalle et Zouheir Cadi pour leur accueil toujours aussi chaleureux et tous les bloggers qui ont relayé cette soirée. Nous souhaitons [...]]]></description> <content:encoded><![CDATA[<p>Cyrille Le Clerc et Nicolas Griso, Xebia, ont présenté <a
href="http://parisjug.org/xwiki/bin/view/Meeting/20081014">OSGi, prêt pour Java EE ?</a> au Paris JUG d&#8217;Octobre.</p><p>Nous tenons à remercier les participants d&#8217;avoir fait le déplacement, les organisateurs <a
href="http://parisjug.org/xwiki/bin/view/Speaker/GoncalvesAntonio">Antonio Goncalves</a>, <a
href="http://parisjug.org/xwiki/bin/view/Speaker/DewalleDavid">David Dewalle</a> et <a
href="http://parisjug.org/xwiki/bin/view/Speaker/CadiZouheir">Zouheir Cadi</a> pour leur accueil toujours aussi chaleureux et tous les bloggers qui ont relayé cette soirée.</p><p>Nous souhaitons à Didier Girard et Jérôme Louvel une assistance aussi nombreuse pour la <a
href="http://parisjug.org/xwiki/bin/view/Meeting/20081104">soirée GWT du Paris JUG de Novembre</a> .</p><h1>La blogosphère en parle</h1><ul><li> Le Touilleur Express : <a
href="http://www.touilleur-express.fr/2008/10/15/presentation-dosgi-au-paris-jug-naphtaline-et-peinture-fraiche/">Présentation d’OSGI au Paris JUG : naphtaline et peinture fraîche</a></li><li> Eric Le Merdy (Valtech Blog) : <a
href="http://blog.valtech.fr/wordpress/2008/10/15/back-from-osgi-at-parisjug/">Back from OSGi at ParisJUG</a></li><li> Tom&#8217;s quest : <a
href="http://www.tomsquest.com/blog/osgi-oui-mais-non/">OSGi : oui mais non</a></li><li> Ruchika Goyal  (Xebia Hollande) qui relate lui aussi son expérience OSGi dans <a
href="http://blog.xebia.com/2008/10/16/experimenting-with-osgi-on-server-side/">Experimenting with OSGi on Server Side</a></li></ul><h1>La présentation</h1><div
style="text-align:center" id="__ss_270612"> <object
style="width:700px;margin:0px" width="650" height="542"><param
name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=parisjugosgi20081014-1224133598028741-9&#038;stripped_title=osgi-parisjug-20081014-presentation" /><param
name="allowFullScreen" value="true"/><param
name="allowScriptAccess" value="always"/><embed
src="http://static.slideshare.net/swf/ssplayer2.swf?doc=parisjugosgi20081014-1224133598028741-9&#038;stripped_title=osgi-parisjug-20081014-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="650" height="542"></embed></object></p><div
style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;text-align:center;" > <a
href="http://www.slideshare.net/XebiaFrance/osgi-parisjug-20081014-presentation"><img
src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> <a
href='http://blog.xebia.fr/wp-content/uploads/2008/10/parisjug-osgi-20081014.pdf' title='2008-02-07_xebia_erwanalliaume_java7proposals.pdf'><img
src='http://blog.xebia.fr/wp-content/uploads/2008/02/pdf.miniature.jpg' height="20" border="0" alt="jdk7 proposals" /> T&eacute;l&eacute;charger en PDF</a></div></div><p><br/></p><h1>Le plan</h1><ul><li>Pourquoi la modularité ?</li><li>La modularité en Java<ul><li>L’existant<ul><li>Les jars</li><li>Les classloaders hiérarchiques</li><li>Maven 2</li></ul></li><li> Le futur</p><ul><li>Java Module System</li><li>OSGi / JSR 291 : Dynamic Component Support for Java SE</li></ul></li></ul><li>OSGi Alliance<ul><li>L’histoire</li><li>Le fonctionnement</li><li>OSGi Alliance et le JCP</li></ul></li><li> La plateforme OSGI</p><ul><li>Les bundles</li><li>Le réseau de classloader</li><li>Le conteneur</li><li>Le cycle de vie des bundles</li><li>Le Service Registry</li><li>L&#8217;assemblage des services<ul><li>BundleActivator et ServiceTracker</li><li>Declarative Service</li><li>RFC 124 &#8211; A Component Model for OSGi (aka Spring DM)</li></li></ul><li>Les services standards</li></ul></li><li>Demo<ul><li>Import d’un service</li><li>Exposition d’une servlet : le HttpService</li><li>Upgrade à chaud d’un bundle</li><li>Log4j !</li></ul></li><li>OSGi dans le monde Java EE<ul><li>Client side</li><li>Server Side</li></ul></li><li>Bonnes pratiques OSGi</li><li>Les enjeux d’OSGi pour Java EE</li><li>Conclusion : OSGi, prêt pour Java EE ?</li></ul><p>Rendez-vous le mois prochain au <a
href="http://parisjug.org/">Paris JUG</a> !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/10/16/osgi-au-paris-jug-slides-de-la-presentation/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/10/13/revue-de-presse-xebia-78/</link> <comments>http://blog.xebia.fr/2008/10/13/revue-de-presse-xebia-78/#comments</comments> <pubDate>Mon, 13 Oct 2008 17:14:30 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Java Module System]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[SpringSource]]></category> <category><![CDATA[Websphere]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=815</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII SpringSource : sortie par le haut Websphere: les derniers seront les premiers ? Agilité Prioriser le Product Backlog Leçons de management par la NASA RIA 10 choses à savoir sur Flex GraniteDs en version 1.1.0 Le coin de la technique [...]]]></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/2008/10/13/revue-de-presse-xebia-78/#SpringSourcesortieparlehaut">SpringSource : sortie par le haut</a></li><li><a
href="http://blog.xebia.fr/2008/10/13/revue-de-presse-xebia-78/#Webspherelesderniersserontlesp">Websphere: les derniers seront les premiers ?</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/10/13/revue-de-presse-xebia-78/#PrioriserleProductBacklog">Prioriser le Product Backlog</a></li><li><a
href="http://blog.xebia.fr/2008/10/13/revue-de-presse-xebia-78/#LeonsdemanagementparlaNASA">Leçons de management par la NASA</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/10/13/revue-de-presse-xebia-78/#chosessavoirsurFlex">10 choses à savoir sur Flex</a></li><li><a
href="http://blog.xebia.fr/2008/10/13/revue-de-presse-xebia-78/#GraniteDsenversion">GraniteDs en version 1.1.0</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/10/13/revue-de-presse-xebia-78/#JSROSGimatuerStanleyHo">JSR-277 : <em>OSGi m&#8217;a tuer</em> (Stanley Ho)</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/2008/10/13/revue-de-presse-xebia-78/#ParisJUGsoireOSGi">Paris JUG : soirée OSGi</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="SpringSourcesortieparlehaut"></a>SpringSource : sortie par le haut</h4><p>Comme nous l&#8217;annoncions succinctement <a
href=" http://blog.xebia.fr/2008/10/08/spring-30-le-grand-nettoyage-du-printemps/" title="mercredi" >mercredi</a>, SpringSource a revu sa copie concernant sa nouvelle politique de maintenance abandonnant de ce fait  les points les plus polémiques de celle-ci, dont sa fameuse règle des trois mois à l&#8217;origine des levées de boucliers de la communauté.</p><p>Dans son post de mardi dernier, Rod Johnson dévoile donc le <a
href="http://blog.springsource.com/2008/10/07/a-question-of-balance-tuning-the-maintenance-policy/" title="nouveau fonctionnement" >nouveau fonctionnement</a> de celle-ci : les releases seront disponibles pour la communauté jusqu&#8217;à la sortie d&#8217;une nouvelle version majeure. Ainsi, les binaires des versions 2.5.x du cœur du framework continueront d&#8217;être publiés tant que Spring 3.0 RC1 n&#8217;est pas disponible. SpringSource compte, par ce biais, inciter la communauté open-source à toujours coller aux dernières versions de son framework.</p><h4><a
name="Webspherelesderniersserontlesp"></a>Websphere: les derniers seront les premiers ?</h4><p>Dernier serveur certifié Java EE 5, Websphere ressort grand vainqueur d&#8217;une étude comparative des principaux serveurs d&#8217;application du marché, menée par <a
href="http://www.evansdata.com/reports/viewRelease_download.php?reportID=20" title="Evans Data Corporation" >Evans Data Corporation</a> (rapport gratuit, mais enregistrement nécessaire).</p><p>Cette étude soulève déjà de nombreuses questions chez les concurrents (comme <a
href="http://blog.softwhere.org/archives/409" title="Rick Sharples, de JBoss" >Rick Sharples, de JBoss</a>), le marketing d&#8217;IBM n&#8217;allant pas se plaindre d&#8217;une si belle vitrine.<br
/> Rick émet 3 interrogations majeures :</p><ul><li>Comment comparer des serveurs d&#8217;application dont les communautés peuvent varier d&#8217;un noyau de type &#8216;niche&#8217; (SAP) à des super-communautés mondiales (IBM, BEA, RedHat ou Microsoft) ?</li><li>Pourquoi n&#8217;arrive t&#8217;on pas à corréler les résultats de cette étude avec ceux d&#8217;autres études publiques, voire internes, sur JBoss ?</li><li>Pourquoi évalue t&#8217;on un serveur aussi confidentiel que Geronimo (lui aussi chez IBM) ?</li></ul><p>Pour notre part, nous émettons un certain nombre de réserves :</p><ul><li>L&#8217;étude ayant été menée durant l&#8217;été 2008, elle ne peut nécessairement pas porter sur WAS 7.0, sorti officiellement en septembre (d&#8217;autant plus qu&#8217;un des points de l&#8217;étude porte sur le support, qui n&#8217;est pas assuré pour les versions <em>beta</em>). Cette étude porte donc plus globalement sur &#8216;les marques&#8217;, plutôt que sur les dernières versions des serveurs d&#8217;application cités.</li><li>Les consultants Xebia ont l&#8217;habitude de travailler avec bon nombre de ces serveurs d&#8217;application, et au petit jeu des comparaisons directes (ce qui n&#8217;est pas le cas de cette étude), les avis sont loin d&#8217;être aussi tranchés.</li><li>La rédaction du rapport est très orientée &#8216;marketing&#8217;, ce qui est étonnant au vu de la population consultée. Il est étonnant de lire des phrases telles que &laquo;&nbsp;WebSphere&#8217;s users obviously love this product.&nbsp;&raquo; venant de développeurs qui n&#8217;ont souvent pas le choix de leur serveur d&#8217;application (souvent dicté par les achats groupe ou l&#8217;exploitant) et qui ont tendance à ne faire que &laquo;&nbsp;subir&nbsp;&raquo; ses désavantages.</li></ul><p>Alors, étude téléguidée par un éditeur ? Enième conflit d&#8217;intérêt pour un cabinet d&#8217;analyse dont les clients sont les premiers sujets de comparatifs ? La réponse est sûrement plus complexe et on peut tout au plus tirer quelques enseignements de ce travail :</p><ul><li>JBoss joue définitivement dans la cour des grands, et est un concurrent sérieux pour les &laquo;&nbsp;grands&nbsp;&raquo; serveurs d&#8217;application, même sur des applications à grande échelle.</li><li>la communauté s&#8217;inquiète du rachat de BEA par Oracle (peut-être est-ce même la raison principale de cette 7ème place).</li><li>Le &laquo;&nbsp;petit jeune&nbsp;&raquo;, Glassfish, qui remporte l&#8217;adhésion des développeurs pour sa facilité de mise en oeuvre, n&#8217;est pas en reste sur les fonctions principales (performances, scalabilité) et vient titiller les vieux mastodontes.</li><li>La comparaison objective de serveurs d&#8217;application, dans un environnement aussi hétéroclite que celui des SI du XXIeme siècle, avec des problématiques variées et complexes, est un exercice dangereux, qui porte rapidement à critique.</li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="PrioriserleProductBacklog"></a>Prioriser le Product Backlog</h4><p>En Scrum, il faut ordonner les éléments du <a
href="http://agilesoftwaredevelopment.com/blog/artem/product-backlog" title="Product Backlog" >Product Backlog</a> pour que l&#8217;équipe sache quelles sont les fonctionnalités à implémenter en priorité.<br
/> <a
href="http://www.blogger.com/profile/04855156445588778076" title="Peter Stevens" >Peter Stevens</a> propose différentes stratégies pour <a
href="http://agilesoftwaredevelopment.com/blog/peterstev/prioritizing-product-backlog" title="prioriser le Product Backlog" >prioriser le Product Backlog</a>, à composer selon le contexte du projet :</p><ul><li><strong>Ensemble minimum de fonctions</strong> : faire une liste minimum des fonctions à implémenter pour que le produit soit utilisable et accepté par les utilisateurs</li><li><strong>Valeur métier en premier</strong> : se concentrer sur les fonctions à haute valeur ajoutée métier. La valeur métier (typiquement avec un coefficient entre 1 et 100) est fixée par le Product Owner.</li><li><strong>En avoir pour son argent</strong> : semblable à la précédente approche, elle se concentre sur les éléments qui ont le meilleur rapport valeur métier/coût.</li><li><strong>Risques techniques en premier</strong> : préconisée par <a
href="http://en.wikipedia.org/wiki/RUP" title="RUP" >RUP</a>, cette approche s&#8217;attaque aux points techniques difficiles en premier. Cela peut cependant conduire à un système trop complexe par rapport aux besoins.</li><li><strong>Reporter le risque</strong> : s&#8217;attaquer aux difficultés en dernier (ou jamais). Préférer les stories bien comprises, tout en investigant les stories plus risquées/coûteuses pour les décomposer.</li><li><strong>Votes des utilisateurs</strong> : demandez aux utilisateurs de voter parmi une liste de fonctionnalités potentielles.</li></ul><p>Ce dernier point peut être accompli par une <a
href="http://www.qualitystreet.fr/?2007/12/13/85-le-modele-de-kano-si-precieux-pour" title="analyse de Kano" >analyse de Kano</a> comme le propose Mike Cohn dans sa présentation <a
href="http://www.infoq.com/news/2008/10/mike-cohn-prioritizing-backlog" title="Prioritizing Your Product Backlog" >Prioritizing Your Product Backlog</a> mise en ligne sur InfoQ. Le <a
href="http://www.mountaingoatsoftware.com/system/presentation/file/84/Cohn_PrioritizingYourBacklog.pdf" title="pdf" >pdf</a> est également disponible.<br
/> Mike Cohn y présente plusieurs techniques de priorisation, plus concrètes mais nécessitant plus de calculs  :</p><ul><li><strong>Analyse de Kano</strong> : distinguer les thèmes selon 3 types : fonctions obligatoires, linéaires, et attractives. Implémenter toutes les fonctions obligatoires, le plus de linéaires possible et quelques excitateurs pour la satisfaction utilisateur.</li><li><strong>Theme screening</strong> : noter les thèmes selon certains critères de sélection, par rapport à un thème de référence.</li><li><strong>Theme scoring</strong> : semblable au Theme screening en pondérant les critères de sélection</li><li><strong>Relative weighting</strong> : pour chaque thème, calculer le rapport entre sa valeur relative (aux autres thèmes du product backlog) et son coût relatif. Ce rapport donne la priorité du thème.</li></ul><p>Ces techniques s&#8217;appliquent toutes au niveau <a
href="http://www.aubryconseil.com/dotclear/index.php/2007/10/04/305-features-themes-epics-et-stories" title="thème" >thème</a>, car descendre au niveau user story demanderait trop de travail sur un product backlog complet.</p><h4><a
name="LeonsdemanagementparlaNASA"></a>Leçons de management par la NASA</h4><p>Jerry Madden, un ancien employé du <a
href="http://fr.wikipedia.org/wiki/Goddard_Space_Flight_Center" title="Goddard Space Flight Center" >Goddard Space Flight Center</a> de la NASA, a collecté &laquo;&nbsp;100 leçons&nbsp;&raquo; apprises auprès des managers qu&#8217;il a cotoyés.<br
/> Marios Alexandrou en a extrait <a
href="http://www.mariosalexandrou.com/blog/?p=69" title="les leçons qui collent le plus avec son expérience des projets web" >les leçons qui collent le plus avec son expérience des projets web</a>. Parmi les plus marquantes :</p><ul><li>Une <strong>réunion de travail</strong> devrait durer <strong>5 minutes</strong> minimum (moins elle est inutile) et <strong>1 heure</strong> maximum (plus c&#8217;est un marathon). Au-delà de 6 personnes, elle devrait être réservée au transfert d&#8217;information.</li><li>Ne demandez jamais à vos chefs de prendre une <strong>décision</strong> que vous pouvez prendre <strong>vous-même</strong>, sauf si un document vous l&#8217;interdit.</li><li>Ne supposez jamais que quelqu&#8217;un a fait quelque chose, <strong>demandez</strong> lui. Même le plus évident peut être oublié, surtout en période de stress.</li><li>La documentation ne remplace pas la <strong>connaissance</strong>. Les documents restent des images statiques dans le temps et sont rapidement dépassés.</li><li>Les projets nécessitent un <strong>travail d&#8217;équipe</strong> pour réussir. Rappelez-vous que la plupart des équipes ont un coach et non un boss, mais le coach doit parfois arbitrer certaines parties.</li><li>Si un chef de projet est l&#8217;homme le plus intelligent de l&#8217;équipe, c&#8217;est qu&#8217;il a fait un <strong>mauvais travail de recrutement</strong>.</li><li>Les principes de gestion sont toujours les mêmes. Seuls les outils changent. Vous devez toujours <strong>trouver les bonnes personnes</strong> pour faire le travail et rester à l&#8217;écart pour qu&#8217;ils puissent le faire.</li></ul><p>Il est amusant de constater certaines similitudes avec les méthodes agiles. Les individus et leurs connaissances sont plus importants que la documentation. Le coach doit s&#8217;appuyer sur une équipe de personnes motivées, intelligentes, et responsables qui n&#8217;attendent pas d&#8217;ordre d&#8217;un patron. Leur collaboration est essentielle à la réussite du projet. Ces ressemblances sont logiques finalement, il s&#8217;agit simplement de bon sens.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="chosessavoirsurFlex"></a>10 choses à savoir sur Flex</h4><p>Les articles recommandant Flex se succèdent. Après l&#8217;annonce d&#8217;Atos sur son blog Entreprise 2.0 du choix de <a
href="http://entreprise2.wordpress.com/2008/10/06/flex-choix-maintenant-evident-pour-nos-rias/" title="Flex sur plusieurs projets pour de grands comptes" >Flex sur plusieurs projets pour de grands comptes</a> et la &laquo;&nbsp;victoire&nbsp;&raquo; de Flex lors de notre <a
href="http://blog.xebia.fr/2008/10/03/ria-contest-flex-silverlight-gwt-echo3-javafx/" title="RIA Contest" >RIA Contest</a>, c&#8217;est au tour de Alaric Cole, l&#8217;auteur de &laquo;&nbsp;Learning Flex 3&#8243; de lister <a
href="http://css.dzone.com/news/the-top-10-things-you-should-k" title="10 avantages à l'utilisation de Flex" >10 avantages à l&#8217;utilisation de Flex</a>.</p><p>Alaric Cole est partie prenante, et on a déjà pu lire sur d&#8217;autres blogs les différents points cités, mais l&#8217;article a l&#8217;avantage de les regrouper :</p><ol><li>Flex s&#8217;apparente aux standards d&#8217;une application Web : MXML est un langage de balises comparable à l&#8217;HTML, l&#8217;ActionScript est l&#8217;équivalent du JavaScript. Le tout customisable avec du CSS.</li><li>Flex = Flash : tout ce qui était possible en Flash l&#8217;est en Flex. Flex apporte cependant une couche de structuration/méthodologie par rapport à Flash</li><li>Une application Flex fonctionne sur tous les navigateurs et tous les OS (Linux 64bit ?). La seule contrainte est d&#8217;avoir déployé le plug-in d&#8217;exécution.</li><li>Le framework RIA d&#8217;Adobe accepte l&#8217;échange de données et propose des interfaces de communication avec plusieurs formats d&#8217;échange (SOAP, HTTP, AMF&#8230;)</li><li>Une application Web Flex aura un &laquo;&nbsp;Look And Feel&nbsp;&raquo; identique quelque soit l&#8217;OS client</li><li>Flex est léger et rapide grâce notamment aux améliorations du futur plug-in Flash 10. Par exemple, la fonctionnalité de &laquo;&nbsp;Framework Caching&nbsp;&raquo; permet de réduire à 100Ko la taille de l&#8217;application à télécharger</li><li>Les composants de Flex sont nativement construits pour être accessibles (loupe, internationalisation, raccourcis clavier&#8230;)</li><li>Le contenu d&#8217;une application Flex peut maintenant être indexé par un moteur de recherche</li><li>Le SDK Flex est maintenant OpenSource et gratuit mais attention l&#8217;IDE Flex Builder est payant.</li><li>Enfin, il rappelle la facilité d&#8217;apprentissage du langage. Pour un habitué de la Javadoc, l&#8217;accès au format ASDocs d&#8217;Adobe est cependant déroutant les premiers temps.</li></ol><p>Même si l&#8217;ancienneté de Flex sur le marché, la couverture de déploiement de son plugin d&#8217;exécution et la solidité de son distributeur Adobe semblent placer Flex en tête du tournoi RIA, il est bon de rappeler que la compétition ne fait que commencer : 2 outsiders sérieux (Silverlight et JavaFx) vont bientôt s&#8217;élancer dans la course ! L&#8217;avance prise par Flex pourra t-elle être comblée ?</p><h4><a
name="GraniteDsenversion"></a>GraniteDs en version 1.1.0</h4><p>GraniteDS est un framework opensource équivalent à <a
href="http://blog.xebia.fr/2008/09/16/blazeds/" title="BlazeDS" >BlazeDS</a>, simplifiant le développement des communications entre un RIA Flex et un serveur J2EE. Cet <a
href="http://www.infoq.com/news/2008/10/GDS-110-release" title="article d'InfoQ" >article d&#8217;InfoQ</a> nous présente les nouvelles fonctionnalités disponibles sur GraniteDS 1.1.0:</p><ul><li><strong>Granite Eclipse Builder</strong> : un plugin Eclipse basé sur AS3 Generator permettant de générer le code ActionScript 3 associé aux JavaBeans. Ce plugin génère automatiquement du code lorsqu&#8217;un JavaBean est modifié.</li><li><strong>Tide</strong> : ce framework fournit des fonctionnalités telles que la mémorisation d&#8217;objets dans un contexte qui transite entre la partie cliente et la partie serveur, la pagination des données. Il permet également de gérer le lazy loading des collection en wrappant les collections et en les récupérant dés que c&#8217;est nécessaire.</li><li><strong>MXML Web Compiler</strong> : une compilation à la volée du code source MXML et ActionScript 3 sur le serveur d&#8217;application.</li></ul><p>Avec cette nouvelle version, GraniteDS se positionne comme un concurrent sérieux de BlazeDS. La génération des JavaBeans, la gestion du lazy loading et la compilation à la volée sont des points forts qui séduiront très vite les développeurs. Cette nouvelle approche ne peut que faciliter et améliorer le développement d&#8217;applications Flex.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="JSROSGimatuerStanleyHo"></a>JSR-277 : <em>OSGi m&#8217;a tuer</em> (Stanley Ho)</h4><p>Stanley Ho <a
href="http://mail.openjdk.java.net/pipermail/jsr277-eg-observer/2008-October/000307.html" title="a annoncé son départ" >a annoncé son départ</a> de Sun Microsystems. Par la même occasion, il laisse les clés de la <a
href="http://jcp.org/en/jsr/detail?id=277" title="JSR-277" >JSR-277</a> dont il était à la tête. C&#8217;est  donc Alex Buckley qui reprend le flambeau, il était déjà responsable de la petite sœur, la <a
href="http://jcp.org/en/jsr/detail?id=294" title="JSR-294" >JSR-294</a> : les <a
href="http://blog.xebia.fr/2008/02/27/jsr-294-les-superpackages/" title="superpackages" >superpackages</a>.</p><p>Nous sommes en droit de nous demander si la création du prototype permettant l&#8217;interopérabilité entre <a
href="http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/#InteroprabilitOSGIetJavaModule" title="Java Module System et OSGi" >Java Module System et OSGi</a> qu&#8217;a amorcé Sun ces derniers mois a quelque chose à voir avec ce départ. Quoi qu&#8217;il en soit, le tournant est définitivement engagé pour le futur de Java Module System.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="ParisJUGsoireOSGi"></a>Paris JUG : soirée OSGi</h4><p>Dernière piqûre de rappel pour la soirée OSGi de ce mardi 14 octobre au Paris JUG.</p><ul><li>Le programme est <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20081014" title="disponible ici" >disponible ici</a> : première partie &#8216;introduction à OSGi&#8217;, seconde partie : &#8216;OSGi appliqué&#8217;</li><li>Les inscriptions sont gratuites et ouvertes à tous, <a
href="http://jugevents.jugpadova.it/jugevents/event/registration.form?event.id=8749" title="enregistrez-vous ici" >enregistrez-vous ici</a></li><li>La soirée aura lieu à l&#8217;ISEP, dont <a
href="http://www.parisjug.org/xwiki/bin/view/Location/ISEP" title="voici le plan d'accès" >voici le plan d&#8217;accès</a></li></ul><p>Nous vous y attendons nombreux.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/10/13/revue-de-presse-xebia-78/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Paris JUG : Soirée OSGi le 14 octobre</title><link>http://blog.xebia.fr/2008/10/07/paris-jug-soiree-osgi-le-14-octobre/</link> <comments>http://blog.xebia.fr/2008/10/07/paris-jug-soiree-osgi-le-14-octobre/#comments</comments> <pubDate>Tue, 07 Oct 2008 09:53:18 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Divers]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[Paris JUG]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=778</guid> <description><![CDATA[La prochaine soirée du Paris JUG aura lieu le mardi 14 octobre 2008 dans les locaux de l&#8217;ISEP. Cette soirée sera consacrée à OSGi et sera animée par Cyrille Le Clerc et Nicolas Griso de Xebia. Au programme : 19h15 à 19h30 : Accueil 19h30 à 20h30 : Introduction à OSGI La naissance de ce [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://www.parisjug.org"><img
src="http://blog.xebia.fr/wp-content/uploads/2008/09/parisjug.jpg" alt="Paris JUG" title="Paris Jug" width="124" height="140" style="margin: 1em 1em 1em 1em; float: right;" /></a></p><p>La prochaine soirée du <a
href="http://www.parisjug.org/">Paris JUG</a> aura lieu le mardi 14 octobre 2008 dans <a
href="http://www.parisjug.org/xwiki/bin/view/Location/ISEP">les locaux de l&#8217;ISEP</a>.</p><p>Cette soirée sera consacrée à OSGi et sera animée par Cyrille Le Clerc et Nicolas Griso de Xebia.</p><p>Au programme :</p><p><strong>19h15 à 19h30 : Accueil</strong></p><p><strong>19h30 à 20h30 : Introduction à OSGI</strong></p><ul><li>La naissance de ce standard extérieur au JCP</li><li>La gouvernance de l&#8217;OSGI Alliance et les relations avec le JCP</li><li>Les champs d&#8217;applications d&#8217;hier, d&#8217;aujourd&#8217;hui et demain <em>(Enterprise Expert Group)</em></li></ul><p><strong>20h30 à 21h : Buffet</strong></p><p><strong>21h à 22h : OSGI appliqué</strong><br
/> Côté client graphique, côté serveur. Quelles promesses, quelle valeur ajoutée, quels défis ?<br
/> Côté client, les applications RCP imposent OSGI, est-ce vraiment une plus value pour les développements ?<br
/> Côté serveur :</p><ul><li>OSGI en socle des middlewares : Websphere, Weblogic, Glassfish et ServiceMix 4</li><li>OSGI pour l&#8217;informatique de gestion :<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;pour les ESB/EAI : OSGI comme technologie d&#8217;assemblage là où JavaEE n&#8217;a pas légiféré<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;pour les applications Web en alternative au standard .war de Java EE</li></ul><p><strong>22h à &#8230; : 3ème mi-temps des juggers <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </strong></p><p>Pour participer à la soirée OSGi, <a
href="http://jugevents.jugpadova.it/jugevents/event/registration.form?event.id=8749">inscrivez-vous ici</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/10/07/paris-jug-soiree-osgi-le-14-octobre/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/10/06/revue-de-presse-xebia-77/</link> <comments>http://blog.xebia.fr/2008/10/06/revue-de-presse-xebia-77/#comments</comments> <pubDate>Mon, 06 Oct 2008 17:45:39 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[dmServer]]></category> <category><![CDATA[Dojo]]></category> <category><![CDATA[EJB]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[JQue]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[SpringSource]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=792</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Sortie officielle de SpringSource dmServer Agilité Sprint zéro Méthodes agiles et développement de Google Chrome RIA Framework RIA : où en est-on? Le coin de la technique EJB 3.1 se dévoile Pour l&#8217;amélioration de la qualité, gérez vos dépendances Les [...]]]></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/2008/10/06/revue-de-presse-xebia-77/#SortieofficielledeSpringSource">Sortie officielle de SpringSource dmServer</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/10/06/revue-de-presse-xebia-77/#Sprintzro">Sprint zéro</a></li><li><a
href="http://blog.xebia.fr/2008/10/06/revue-de-presse-xebia-77/#MthodesagilesetdveloppementdeG">Méthodes agiles et développement de Google Chrome</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/10/06/revue-de-presse-xebia-77/#FrameworkRIAoeneston">Framework RIA : où en est-on?</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/10/06/revue-de-presse-xebia-77/#EJBsedvoile">EJB 3.1 se dévoile</a></li><li><a
href="http://blog.xebia.fr/2008/10/06/revue-de-presse-xebia-77/#Pourlamliorationdelaqualitgrez">Pour l&#8217;amélioration de la qualité, gérez vos dépendances</a></li><li><a
href="http://blog.xebia.fr/2008/10/06/revue-de-presse-xebia-77/#LesdessousdInfoQ">Les dessous d&#8217;InfoQ</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="SortieofficielledeSpringSource"></a>Sortie officielle de SpringSource dmServer</h4><p>L&#8217;actualité SpringSource ne faiblit pas, à chaque semaine son annonce.  Après les vif remous engendrés par la <a
href="http://blog.xebia.fr/2008/09/22/nouvelle-politique-de-maintenance-de-spring-la-tres-perilleuse-route-de-la-monetisation-de-lopen-source/" title="nouvelle politique de maintenance" >nouvelle politique de maintenance</a> et l&#8217;<a
href="http://blog.xebia.fr/2008/09/29/revue-de-presse-xebia-76/#SpringSourcelesVCprennentlecon" title="arrivée de Rob Bearden" >arrivée de Rob Bearden</a> à SpringSource de la semaine dernière, au programme cette semaine, une nouvelle un peu plus technique : <a
href="http://www.springsource.com/node/597" title="l'arrivée en GA (General Availibility) de son serveur d'applications OSGI 'dmServer'" >l&#8217;arrivée en GA (General Availibility) de son serveur d&#8217;applications OSGI &#8216;dmServer&#8217;</a>.</p><p>Il s&#8217;agit en fait de la sortie officielle de son produit anciennement appelé S2AP (SpringSource Application Platform) annoncé depuis <a
href="http://blog.xebia.fr/2008/05/01/springsource-application-platform-la-breche-dans-java-ee/" title="mai dernier" >mai dernier</a> dont les versions bêta se sont succédées cet été. Le produit a été renommé en <em>dmServer</em> lors de l&#8217;arrivée de la RC2 en Septembre dernier, <a
href=" http://www.springsource.com/products/suite/applicationplatform" title="S2AP existe toujours" >S2AP existe toujours</a> comme terme plus générique. Il désigne ce serveur d&#8217;applications <a
href="http://www.springsource.com/products/suite/dmserver" title="dmServer" >dmServer</a> ET son ensemble d&#8217;outils, de services et de supports : <a
href="http://www.springsource.com/products/enterprise" title="SpringSource Enterprise" >SpringSource Enterprise</a></p><p>Pour revenir à la sortie de dmServer, celui-ci se présente comme un serveur d&#8217;applications modulaire basé sur OSGI dont voici les principaux bénéfices :</p><ul><li>pour le développeur, l&#8217;approche modulaire permet d&#8217;améliorer la réutilisation du code et de faciliter le développement itératif sans trop dépendre d&#8217;un serveur d&#8217;applications particulier</li><li>pour la production, dmServer propose des fonctionnalités de mises à jour applicatives et serveur automatisées, une compatibilité avec des environnements grid et virtualisés et une meilleure utilisation des ressources. Embarquant Tomcat, il reste également compatible avec les anciennes applications Web.</li></ul><p>Pour terminer les nouveautés SpringSource, notons également la <a
href="http://www.springframework.org/node/775" title="sortie de Spring Security 2.0.4" >sortie de Spring Security 2.0.4</a> disponible en téléchargement, il s&#8217;agit de la première release post 3 mois Open Source de SpringSource depuis qu&#8217;ils ont annoncé qu&#8217;ils arrêtaient d&#8217;en faire <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Sprintzro"></a>Sprint zéro</h4><p>Dans ces articles de <a
href="http://www.aubryconseil.com/dotclear/index.php/2008/09/29/477-sprint-zero" title="Claude Aubry" >Claude Aubry</a> et de <a
href="http://www.infoq.com/news/2008/09/sprint_zero" title="Mark Levison" >Mark Levison</a>, ceux-ci nous expliquent en quoi consiste ce sprint. Il contient entre autres en la définition backlog initial, la définition des users stories, la priorisation des items&#8230; Mais ce sprint est aussi consacré à la mise en place des environnements de travail, à la définition d&#8217;architectures (si celles-ci ne sont pas définies), à la mise en place d&#8217;un prototype&#8230;<br
/> La difficulté est que ce sprint n&#8217;a pas vraiment de durée, mais il est judicieux de la maintenir la plus courte possible, car rien n&#8217;est produit au final (pas de produit utilisable à la fin, pas de mesure de la vélocité&#8230;).<br
/> Alors peut-on parler effectivement de Sprint zéro (et donc intégré à Scrum) ou bien de phase préparatoire ? Le débat est ouvert.</p><h4><a
name="MthodesagilesetdveloppementdeG"></a>Méthodes agiles et développement de Google Chrome</h4><p>Darin Fisher, membre de l&#8217;équipe de développement de Chrome, <a
href="http://searchsoftwarequality.techtarget.com/news/interview/0,289202,sid92_gci1332788,00.html" title="expose sur SearchSoftwareQuality.com" >expose sur SearchSoftwareQuality.com</a> les grands principes qui ont prévalus pour le développement du navigateur de Google.<br
/> Même si le décor est planté dès la première phrase (&laquo;&nbsp;Nous n&#8217;avons pas spécifiquement utilisé la méthodologie Agile, nous avons juste fait appel à notre bon sens&nbsp;&raquo;), il est intéressant de voir que la méthodologie Agile et le bon sens selon l&#8217;équipe de développement de Google Chrome ont de nombreux points communs:</p><ul><li>Les équipes étaient auto organisées, chacun décidant des taches qu&#8217;il accomplirait.</li><li>Le développement était organisé en sprints (longs) d&#8217;un trimestre, mais une version stable était mise à disposition des utilisateurs toutes les semaines.</li><li>Le pilotage était réalisé via une liste de fonctionnalités (précises et minimalistes) ordonnée (incontournable, secondaire&#8230;), enrichie par les retours des utilisateurs (via une mailing list interne).</li><li>Une grande partie du test a été automatisée.</li><li>Dans une certaine limite, le développement a pu être distribué.</li></ul><p>Google n&#8217;a visiblement pas systématisé son usage, mais utilise déjà Scrum sur certains projets, en particulier pour le développement de sa &laquo;&nbsp;cash machine&nbsp;&raquo;, Adsense&#8230;<br
/> <a
href="http://jeffsutherland.com/" title="Jeff Sutherland" >Jeff Sutherland</a> a récemment donné une <a
href="http://www.youtube.com/watch?v=Ht2xcIJrAXo" title="http://www.youtube.com/watch?v=Ht2xcIJrAXo" >conférence sur Scrum dans les locaux de Google NYC</a></p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="FrameworkRIAoeneston"></a>Framework RIA : où en est-on?</h4><p>Il y a quelques jours, nous vous proposions un point sur les frameworks RIA à la suite d&#8217;un contest : <a
href="http://blog.xebia.fr/2008/10/03/ria-contest-flex-silverlight-gwt-echo3-javafx/" title="Xebia RIA Contest" >Xebia RIA Contest</a>.</p><p>Glen Lipka, designer Web, propose aussi un point sur l&#8217;état des frameworks RIA : <a
href="http://commadot.com/ria-frameworks/" title="RIA frameworks" >RIA frameworks</a>. Il est intéressant de comparer les deux points de vue, si nous sommes spécialistes Java (Xebia), Glen Lipka est designer Web.</p><p>Il existe d&#8217;autres comparatifs : par exemple <a
href="http://www.jsfmatrix.net/" title="JSF matrix" >JSF matrix</a> qui compare différentes technologies Ajax qui peuvent être utiliser avec JSF.</p><p>Etant donné le profil technique de Glen Lipka, il a une préférence pour le framework <a
href="http://jquery.com/" title="JQuery" >JQuery</a>. Il est vrai que JQuery apporte une solution simple et élégante au développement JavaScript :</p><ul><li>Syntaxe élégante et fonction utilitaire (appel ajax, effet ergonomique, &#8230;)</li><li>Simplification de la manipulation de l&#8217;arbre DOM et de la gestion des événements DOM</li><li>Système de plugin pour étendre le comportement de JQuery : manipulation en Ajax de formulaire, composants graphiques (Carrousel, animation, &#8230;)</li></ul><p>JQuery est un bon compromis entre simplicité et puissance. Au prix d&#8217;une complexité supérieure, <a
href="http://extjs.com/" title="Ext-JS" >Ext-JS</a> s&#8217;annonce comme une solution plus complète. Il existe d&#8217;ailleurs une version Ext-JS pour GWT : <a
href="http://extjs.com/products/gxt/" title="Ext-GWT" >Ext-GWT</a>. Il faut néanmoins une licence commerciale pour les applications propriétaires.</p><p>Il y a d&#8217;autres concurrents de qualité :</p><ul><li><a
href="http://developer.yahoo.com/yui/" title="Yahoo UI Library" >Yahoo UI Library</a></li><li><a
href="http://dojotoolkit.org/" title="Dojo toolkit" >Dojo toolkit</a> mais reste assez complexe</li><li><a
href="http://www.openlaszlo.org/" title="OpenLazlo" >OpenLazlo</a> mais il est  architecturalement compliqué et sa syntaxe freine aussi bien les Java-istes que les développeurs Web</li><li>Technologies <em>Rails</em> : <a
href="http://www.rubyonrails.org/" title="Ruby On Rails (ROR)" >Ruby On Rails (ROR)</a>, <a
href="http://grails.org/" title="Grails (Groovy)" >Grails (Groovy)</a> ou encore <a
href="http://www.django-fr.org/" title="Django (Python)" >Django (Python)</a> se base sur des concepts très pragrammatiques (&laquo;&nbsp;<em>convention over configuration</em>&laquo;&nbsp;, &laquo;&nbsp;<em>don&#8217;t repeat yourself</em>&laquo;&nbsp;)</li></ul><p>Il y en a de toutes les couleurs dans les frameworks RIA :</p><ul><li>Avec/sans développement JavaScript</li><li>Pour designer ou autre</li><li>Dans des langages interprétés ou compilés (voir même intermédiaires comme GWT)</li><li>Dans des technologies inexplorées (Ruby, Groovy, Python)</li></ul><p>Le choix est difficile mais les solutions s&#8217;orientent vers :</p><ul><li>Un <strong>modèle de programmation simple et productif</strong> (selon les compétences des utilisateurs, c&#8217;est un point difficile car on est à cheval sur deux domaines (vastes) de compétences, le développement Web et le développement d&#8217;applications de gestion)</li><li><strong>Richesse des composants graphiques</strong> (qui est par exemple le point fort de Flex)</li><li>L&#8217;<strong>intégration</strong> avec l&#8217;existant qui est souvent négligé dans les solutions comme le montre Ruby On Rails ou Grails même si elles ont un modèle de programmation très intéressant, ou à moindre mesure GWT.</li></ul><p>Liens connexes :</p><ul><li><a
href="http://www.theserverside.com/news/thread.tss?thread_id=50829" title="Discussions de cet article sur TSS : The Server Side" >Discussions de cet article sur TSS : The Server Side</a></li></ul><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="EJBsedvoile"></a>EJB 3.1 se dévoile</h4><p>Un peu plus d&#8217;un an après le lancement de la réflexion sur l&#8217;évolution des EJB 3.0, de nouvelles spécifications viennent d&#8217;être rendues publiques.<br
/> Toujours dans la droite ligne d&#8217;une simplification de l&#8217;utilisation des EJB, voici un aperçu des nouveautés les plus attrayantes :</p><ul><li>Les EJB locaux ne nécessitent plus l&#8217;utilisation d&#8217;une interface, une simple classe concrète suffit.</li><li>Un sous ensemble allégé, les &laquo;&nbsp;EJB Lite&nbsp;&raquo; directement déployables dans un war (sont notamment exclus les Message Driven Beans, l&#8217;exposition Web Services et le remoting RMI/IIOP).</li><li>Un nouveau type d&#8217;EJB Session vient de naître: le type Singleton, qui rappelle beaucoup les singletons Spring.</li><li>Un mécanisme d&#8217;événement pour lancer des traitements au démarrage et à l&#8217;arrêt du conteneur EJB.</li><li>Pour simplifier les tests unitaires, on peut désormais exécuter un conteneur d&#8217;EJB dans une simple JVM sans nécessiter de serveur d&#8217;application.</li><li>Un accès JNDI global permet d&#8217;accéder aux EJB sans besoin de spécifier un descripteur de déploiement.</li><li>Un EJB peut être invoqué de manière asynchrone.</li></ul><p>Dans les spécifications de Java EE 6, il est souhaité que la réduction des « lourdeurs » de l&#8217;API EJB soit faite de la manière la plus douce pour les développeurs. Cette publication va dans ce sens, dans le sens d&#8217;une facilité d&#8217;utilisation qui s&#8217;approche du framework Spring.<br
/> Pour tout savoir sur cette publication, il faut consulter la <a
href="http://jcp.org/aboutJava/communityprocess/pr/jsr318/index.html" title="JSR-318" >JSR-318</a> et pour mieux comprendre, par l&#8217;exemple, la <a
href="http://wikis.sun.com/download/attachments/47894654/ejb3_1_overview_glassfish_webinar_100208.pdf" title="présentation" >présentation</a> de Kenneth Saks avère très utile.</p><h4><a
name="Pourlamliorationdelaqualitgrez"></a>Pour l&#8217;amélioration de la qualité, gérez vos dépendances</h4><p>Kevlin Henney présente dans l&#8217;article <a
href="http://searchsoftwarequality.techtarget.com/news/article/0,289142,sid92_gci1332586,00.html" title="Manage component dependencies for improved system quality" >Manage component dependencies for improved system quality</a> un autre aspect de la QoS en développement logiciel qui est : la gestion des dépendances.</p><p>La gestion des dépendances permet de réaliser une application plus modulaire, donc moins monolithique. Quelques bonnes pratiques à suivre :</p><ul><li><strong>Structurer le logiciel</strong> sous forme de module cohérent, défini, suffisant et distinct (<a
href="http://en.wikipedia.org/wiki/Separation_of_concern" title="Separation of Concern (Dijkstra)" >Separation of Concern (Dijkstra)</a>)</li><li><strong>Identifier les impacts</strong> lorsqu&#8217;un module est modifié, et donc de mieux analyser les coûts et risques d&#8217;une modification sur l&#8217;ensemble du logiciel</li><li><strong>Mettre en place de bonnes pratiques de conception</strong> :</li><ul><li><em>Open Closed Principle (OCP)</em> : Un module doit être ouvert aux extensions mais fermé aux modifications.</li><li><em>Inversion Of Control (IOC)</em> : Permettre l&#8217;isolation des modules. Les modules de haut niveau ne doivent pas dépendre de modules de bas niveau.</li><li><em>Acyclic Dependencies Principle (ADP)</em> : Le graphe des dépendances doit former un graphe acyclique.</li><li><em>Stable Dependencies Principle (SDP)</em>, <em>Stable abstractions Principe (SAP)</em> : Un module doit dépendre de modules plus stables que lui, les modules les plus stables sont les plus abstraits.</li></ul></ul><p>Actuellement, il existe des outils pour gérer les dépendances au niveau librairie (<a
href="http://maven.apache.org/" title="Maven2" >Maven2</a>, <a
href="http://ant.apache.org/ivy/" title="Ivy" >Ivy</a>), pour réaliser une application modulaire, on applique une solution <em>packaging</em>.</p><p>Il existe d&#8217;autres types de solution : <a
href="http://www.osgi.org/Main/HomePage" title="OSGi" >OSGi</a> et <a
href="http://jcp.org/en/jsr/detail?id=277" title="Java Module (JSR 277)" >Java Module (JSR 277)</a>. Dans ce cas, c&#8217;est une infrastructure de modules qui est utilisée pour exécuter les différents modules et former une application.</p><p>Pour le développement d&#8217;applications modulaires, il n&#8217; y a pas encore de solution technique miracle, elle se repose fortement sur la bonne conception fonctionnelle et technique : la mise en oeuvre des principes avancés de conception objet.</p><p>Liens connexes :</p><ul><li><a
href="http://www.design-up.com/data/principesoo.pdf" title="Design-up : Principes avancés de conception objet (PDF)" >Design-up : Principes avancés de conception objet (PDF)</a> : explication des principes OCP, IOC, ADP, SDP, SAP, &#8230;</li></ul><h4><a
name="LesdessousdInfoQ"></a>Les dessous d&#8217;InfoQ</h4><p>Alexandru Popescu, architecte en chef du site InfoQ, dévoile l&#8217;architecture du célèbre site d&#8217;information, qui culmine à plus de 300 000 visiteurs uniques par mois. De ce vidcast, nous retiendrons :</p><ul><li>InfoQ est une entreprise virtuelle, et elle utilise les méthodologies Agile pour son développement (dont un backlog long de sept pages, ce qui nous promet de très nombreuses évolutions)</li><li>InfoQ est un CMS complet et fait maison. Le site est découpé comme une application trois tiers classique. Les API &#8216;utilisateur&#8217; et &#8216;auteur&#8217; sont quasi identiques et sont séparées durant la phase de build.</li><li>L&#8217;application repose sur WebWork et DWR pour la navigation. Une API spécifique redirige la requête vers le framework ad-hoc (WebWork pour les requêtes classiques, DWR pour les requêtes Ajax). Cette API a été reversée dans le repository de DWR, et peut être utilisée avec Struts 2 par exemple.</li><li>Au niveau Service, on a majoritairement du Spring &#8216;classique&#8217;</li><li>Au niveau persistance, un mécanisme original, puisqu&#8217;InfoQ s&#8217;appuie à la fois sur Hibernate et JCR. C&#8217;est d&#8217;ailleurs le seul regret d&#8217;Alexandru Popescu, ne pas avoir une API de haut niveau qui permet à ses développeurs de s&#8217;affranchir du mode de stockage.</li><li>Toute cette architecture repose sur une base MySql distribuée (une instance en lecture écriture, plusieurs autres instances en lecture seule). Les problèmes et temps de réplication sont insignifiants, et les performances d&#8217;un Hibernate &#8216;de base&#8217; (requêtes non optimisées) suffisent à servir du contenu à tous les visiteurs.</li><li>Dernier point, plus technique, le caching : un cache à 2 niveaux a été élaboré. Le premier, basique, utilise le cache d&#8217;Hibernate (ainsi que l&#8217;ensemble des mécanismes du framework, comme le lazy loading). Le second est un cache spécifique d&#8217;objets agrégés depuis les différentes sources de données (on n&#8217;en saura pas plus&#8230;)</li></ul><p>En outre, dans l&#8217;interview, Alexandru Popescu aborde les problématiques de streaming. Nous vous invitons à consulter <a
href="http://www.infoq.com/interviews/popescu-infoq-architecture#" title="l'intégralité de ce vidcast, servie par InfoQ lui-même" >l&#8217;intégralité de ce vidcast, servie par InfoQ lui-même</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/10/06/revue-de-presse-xebia-77/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Paris Jug &#8211; Résumé de la soirée Groovy et Grails</title><link>http://blog.xebia.fr/2008/09/10/paris-jug-resume-de-la-soiree-groovy-et-grails/</link> <comments>http://blog.xebia.fr/2008/09/10/paris-jug-resume-de-la-soiree-groovy-et-grails/#comments</comments> <pubDate>Wed, 10 Sep 2008 10:58:48 +0000</pubDate> <dc:creator>Erwan Alliaume</dc:creator> <category><![CDATA[Divers]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Grails]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[Paris JUG]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=632</guid> <description><![CDATA[Les tongs et les shorts de bain sont définitivement rangés pour tout le monde, le Paris Jug a fait sa rentrée hier soir. Rappelez-vous, la dernière édition nous avait particulièrement conquis. C&#8217;est donc avec une certaine impatience que nous attendions cette soirée, au menu ce jour : Groovy et Grails. &#160; &#160; &#160; Groovy, scriptez [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://www.parisjug.org"><img
src="http://blog.xebia.fr/wp-content/uploads/2008/09/parisjug.jpg" alt="Paris JUG" title="Paris Jug" width="124" height="140" style="margin: 1em 1em 1em 1em; float: right;" /></a></p><p>Les tongs et les shorts de bain sont définitivement rangés pour tout le monde, le <a
href="http://www.parisjug.org" title="Paris Jug" >Paris Jug</a> a fait sa rentrée hier soir. Rappelez-vous, <a
href="http://blog.xebia.fr/2008/07/09/soiree-mda-et-flex-au-paris-jug/" title="la dernière édition" >la dernière édition</a> nous avait particulièrement conquis. C&#8217;est donc avec une certaine impatience que nous attendions cette soirée, au menu ce jour : <a
href="http://blog.xebia.fr/2008/09/10/paris-jug-resume-de-la-soiree-groovy-et-grails/#Groovyscriptezvosapplicationss" title="Groovy" >Groovy</a> et <a
href="http://blog.xebia.fr/2008/09/10/paris-jug-resume-de-la-soiree-groovy-et-grails/#GrailsletrifouilleurdeCRUD" title="Grails" >Grails</a>.</p><p>&nbsp;<br
/> <br
/>&nbsp;<br
/> <br
/>&nbsp;</p><h3><a
name="Groovyscriptezvosapplicationss"></a>Groovy, scriptez vos applications sur une plateforme Java</h3><p><a
href="http://groovy.codehaus.org/" title="Groovy" >Groovy</a> est un langage de programmation dynamique pour la JVM. Il reprend certaines fonctionnalités d&#8217;autres langages comme Python ou Ruby tout en gardant une syntaxe proche du langage Java. Les scripts peuvent, soit être interprétés à la volée par la JVM, soit compilés comme tout autre programme Java. Étant donné que le bytecode généré est le même, il est tout à fait possible d&#8217;utiliser des bibliothèques Java au sein d&#8217;un programme Groovy et vice-versa. Vous pouvez par exemple écrire une interface en Java, l&#8217;implémenter par une classe Groovy et utiliser cette classe dans du Java. Groovy fait l&#8217;objet de la spécification <a
href="http://jcp.org/en/jsr/detail?id=241" title="JSR-241" >JSR-241</a> du JCP. Qui de mieux que son leader, Guillaume Laforge, pouvait animer cette première partie de soirée ?</p><p>Après la présentation générale du framework, Guillaume nous a fait faire le tour les principaux sucs syntaxiques offerts par Groovy <em>&laquo;&nbsp;sans devoir attendre les versions 7, 8 ou 9 de Java&nbsp;&raquo;</em>. Pour nous démontrer cela, nous avons commencé par transformer un programme du type &laquo;&nbsp;hello world&nbsp;&raquo; écrit en Java en utilisant certaines fonctionnalités spécifiques Groovy :</p><ul><li>Utilisation de la portée par défaut <em>(en Groovy tout est public par défaut)</em> ;</li><li>Sortie du code de la méthode main ;</li><li>Suppression des <code>';'</code> ;</li><li>Gestion des <a
href="http://groovy.codehaus.org/Groovy+Beans" title="propriétés" >propriétés</a> ;</li><li>Utilisation de paramètres nommés</li><li>&#8230;</li></ul><p>Au final, la taille du code a été divisée par 3.</p><p>Nous sommes ensuite entrés dans les détails de certaines fonctionnalités clés de Groovy dont :</p><ul><li>Les <a
href="http://groovy.codehaus.org/Closures" title="closures" >closures</a> ;</li><li>La lecture / <a
href="http://groovy.codehaus.org/Creating+XML+using+Groovy%27s+MarkupBuilder" title="écriture de fichiers XML" >écriture de fichiers XML</a> ;</li><li>La décoration de classes <code>final</code> ;</li><li>&#8230;</li></ul><p>Le tout en nous appuyant sur des cas d&#8217;utilisation concrets : <a
href="http://groovy.codehaus.org/Swing+Builder" title="création d'interfaces en Swing" >création d&#8217;interfaces en Swing</a>, utilisation simplifiée d&#8217;API, <a
href="http://groovy.codehaus.org/Tutorial+6+-+Groovy+SQL" title="requêtes SQL" >requêtes SQL</a>.</p><p>L&#8217;intégration de code Groovy dans une application Java peut se faire de plusieurs manières :</p><ul><li>Via un <code>ScriptEngine</code> proposé par le Jdk 6 (<a
href=" http://jcp.org/en/jsr/detail?id=223" title="JSR-223" >JSR-223</a>) ;</li><li>Via Spring avec un namespace <code>lang</code> permettant de définir des <em>beans</em> Groovy ;</li><li>Ou encore, via d&#8217;autres <a
href="http://groovy.codehaus.org/Embedding+Groovy" title="mécanismes spécifiques à Groovy" >mécanismes spécifiques à Groovy</a>.</li></ul><p>Groovy permet également la création de <a
href="http://fr.wikipedia.org/wiki/Domain-specific_programming_language" title="DSL (Domain Specific Language)" >DSL (Domain Specific Language)</a>, une sorte de mini-langage proche de l&#8217;utilisateur, sujet sur lequel nous avons publié <a
href=" http://blog.xebia.fr/2008/05/07/introduction-aux-dsl-avec-groovy/" title="un article en mai dernier" >un article en mai dernier</a>.</p><p>La prochaine version Groovy 1.6 (actuellement en beta) est annoncée pour la fin de l&#8217;année, apportant de <a
href="http://docs.codehaus.org/display/GROOVY/2008/05/02/Groovy+1.6-beta-1+release+with+great+performance+improvements" title="grandes améliorations sur les performances" >grandes améliorations sur les performances</a>.</p><h3><a
name="GrailsletrifouilleurdeCRUD"></a>Grails, le trifouilleur de CRUD</h3><p>En seconde partie de soirée, Fabrice Robini, architecte chez notre confrère <a
href=" http://www.octo.com/" title="Octo Technology" >Octo Technology</a>, nous a présenté <a
href="http://grails.org/" title="Grails" >Grails</a>.<br
/> Grails est un framework, basé sur Groovy, permettant le développement Agile d&#8217;applications Web MVC. Sorti <a
href="http://blog.xebia.fr/2008/02/11/revue-de-presse-xebia-43/#Grails" title="en février dernier" >en février dernier</a> en version 1.0, Grails se veut être la réponse Java au framework <a
href="http://www.rubyonrails.org/" title="Ruby On Rails" >Ruby On Rails</a> dont il est fortement inspiré.<br
/> Ce type de framework privilégie les conventions à la configuration : fan de lourds fichiers XML, passez votre chemin ! L&#8217;idée maîtresse est de minimiser le code et les configurations techniques afin d&#8217;être rapidement opérationnel et de pouvoir se concentrer sur le code métier.</p><p>Pour fonctionner, Grails se repose sur certains frameworks <em>stars</em> du monde Java dont Spring et Hibernate. Ce n&#8217;est pas pour autant que votre code reste complètement figé par ces choix préétablis. Si il vous prend l&#8217;idée de remplacer votre couche présentation , pas de problème. Pour peu que votre choix se trouve dans le <a
href="http://grails.org/Plugins" title="catalogue de plugins" >catalogue de plugins</a>, vous pourrez remplacer Spring MVC par GWT ou Flex. Dans la plupart des cas, le code est débranchable et configurable. Notons cependant qu&#8217;il est, pour le moment, impossible de se passer d&#8217;Hibernate. Ce problème devrait être corrigé avec la prochaine version de Grails qui prévoit une compatibilité Jpa.</p><p>Grails ne se contente pas de fournir une stack d&#8217;API de développement, il intègre également un environnement complet d&#8217;exécution :</p><ul><li>Base de données <em>(Hsqldb)</em> ;</li><li>Serveur web <em>(Jetty)</em></li><li>Scripts de déploiement <em>(Ant, Maven)</em></li><li>&#8230;</li></ul><p>La création de projets s&#8217;en trouve fortement simplifiée.<br
/> Nous avons donc créé, le temps de la session, un petit projet CRUD permettant l&#8217;ajout / la modification / la suppression et la recherche d&#8217;albums audio. La première étape consiste à générer un projet vide par l&#8217;intermédiaire d&#8217;une première ligne de commande Grails. Projet que l&#8217;on peut directement importer dans Eclipse pour développer, en Groovy, nos entités métiers : &#8216;Album&#8217;. Ensuite, avec une seconde commande Grails, l&#8217;intégralité de l&#8217;application CRUD est automatiquement générée. A partir de là, il vous est tout à fait possible de modifier le code généré pour y apporter les améliorations que vous désirez. C&#8217;est là que Groovy devient intéressant, Grails s&#8217;appuyant sur les forces de ce langage pour faciliter la création de votre code spécifique. Au final, une dernière commande Grails vous permettra de générer un WAR déployable sur votre serveur d&#8217;applications préféré et monitoré par vos outils d&#8217;administration habituels.</p><h3><a
name="Conclusion"></a>Conclusion</h3><p>Bien plus qu&#8217;une simple présentation de framework, les soirées Paris Jug sont toujours l&#8217;occasion de partager un retour d&#8217;expérience au sein d&#8217;un cercle de passionnés. La soirée d&#8217;hier n&#8217;a pas dérogé à la règle, l&#8217;assemblée contenait une proportion importante de personnes qui connaissaient déjà (de près ou de loin) ces technologies. Au final, si la soirée n&#8217;a évidemment pas mis tout le monde d&#8217;accord, elle aura eu le mérite de faire avancer un peu le point de vue de chacun.</p><p>À chaque événement, c&#8217;est également l&#8217;occasion d&#8217;ouvrir le débat, ce mois-ci par exemple, les questions nous ont permis d&#8217;avoir le point de vue de Guillaume Laforge sur un des sujets d&#8217;actualités du moment : l&#8217;arrivée probable des closures Java.</p><p>Terminons ce résumé avec le <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20081014" title="programme du mois prochain" >programme du mois prochain</a> consacré à OSGI présenté &#8230; par des Xebians (Cyrille Le Clerc et Nicolas Griso)</p><p>Première partie : « introduction à OSGI »</p><ul><li>La naissance de ce standard extérieur au JCP</li><li>La gouvernance de l&#8217;OSGI Alliance et les relations avec le JCP</li><li>Les champs d&#8217;applications d&#8217;hier, d&#8217;aujourd&#8217;hui et demain (Enterprise Expert Group)</li></ul><p>Seconde partie : « OSGI appliqué »</p><ul><li>Côté client, les applications RCP imposent OSGI, est-ce vraiment une plus value pour les développements ?</li><li>Côté serveur : OSGI en socle des middlewares (Websphere, Weblogic, Glassfish et ServiceMix 4) et OSGI pour l&#8217;informatique de gestion</li></ul><p>Nous vous y attendons nombreux !</p><div
align="center"> <a
href="http://twitter.com/ealliaume" ><br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/04/twitter4.png"  alt="twitter erwan alliaume" title="twitter erwan alliaume" border="0" /><br
/> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/09/10/paris-jug-resume-de-la-soiree-groovy-et-grails/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/08/04/revue-de-presse-xebia-68/</link> <comments>http://blog.xebia.fr/2008/08/04/revue-de-presse-xebia-68/#comments</comments> <pubDate>Mon, 04 Aug 2008 17:02:10 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[OSGi]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=543</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Pourquoi payer pour de l&#8217;open source ? Le coin de la technique JavaFX en pre-release Grilles de calcul versus grilles de données Des dangers de la virtualisation appliquée à la haute disponibilité Actualité OSGI Convention de nommage pour langage Java [...]]]></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/2008/08/04/revue-de-presse-xebia-68/#Pourquoipayerpourdelopensource">Pourquoi payer pour de l&#8217;open source ?</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/08/04/revue-de-presse-xebia-68/#JavaFXenprerelease">JavaFX en pre-release</a></li><li><a
href="http://blog.xebia.fr/2008/08/04/revue-de-presse-xebia-68/#Grillesdecalculversusgrillesde">Grilles de calcul versus grilles de données</a></li><li><a
href="http://blog.xebia.fr/2008/08/04/revue-de-presse-xebia-68/#Desdangersdelavirtualisationap">Des dangers de la virtualisation appliquée à la haute disponibilité</a></li><li><a
href="http://blog.xebia.fr/2008/08/04/revue-de-presse-xebia-68/#ActualitOSGI">Actualité OSGI</a></li><li><a
href="http://blog.xebia.fr/2008/08/04/revue-de-presse-xebia-68/#Conventiondenommagepourlangage">Convention de nommage pour langage 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/2008/08/04/revue-de-presse-xebia-68/#Agile">Agile 2008</a></li><li><a
href="http://blog.xebia.fr/2008/08/04/revue-de-presse-xebia-68/#Deeplean">Deep lean</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Pourquoipayerpourdelopensource"></a>Pourquoi payer pour de l&#8217;open source ?</h4><p>Alexis MP, Sun, explique dans <a
href="http://blogs.sun.com/alexismp/entry/glassfish_subscription" title="Why should I buy a subscription when community support is good enough?" >Why should I buy a subscription when community support is good enough?</a> les avantages à payer un éditeur (ou une société de support) lorsqu&#8217;on utilise un produit open source dont la communauté est très active :</p><ul><li><strong>Correction des bugs</strong> : plutôt que d&#8217;avoir une correction en mode <em>best effort</em> avec une communauté, la souscription garantit l&#8217;utilisateur, avec un délai de réponse assuré, des mécanismes d&#8217;escalade et des correctifs allant du contournement au bugfix directement ré-intégré dans les versions suivantes du projet open source selon le type de souscription.</li><li><strong>Accès à des patchs</strong> : une fois le bug corrigé, le packaging du correctif peut être complexe. Cette difficulté sera particulièrement sensible sur les systèmes d&#8217;exploitation (e.g. Linux) et les middlewares (e.g. Glassfish, JBoss App Server, MySQL, Tomcat) qui sont souvent complexes à builder. Les souscriptions protègent les clients de ces complexités en assurant la livraison de versions adaptées du produit open source avec l&#8217;ensemble des patchs qui ont été nécessaires au client.</li><li><strong>Indemnisation</strong> : problème beaucoup moins médiatisé en France qu&#8217;aux États-Unis, l&#8217;utilisation de produits open-sources expose les utilisateurs à des infractions aux lois sur les brevets et la propriété intellectuelle. Pour mémoire, la société SCO, avant d&#8217;être déboutée par la justice, avait demandé à des grandes entreprises américaine utilisatrices de Linux des dommages et intérêts au motif que Linux aurait violé des brevets appartenant à SCO. Certains verront dans cet argument une nouvelle rengaine de la tactique de <a
href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt" title="Fear, Uncertainty and Doubt (FUD)" >Fear, Uncertainty and Doubt (FUD)</a>mais ce risque de procès existe théoriquement.</li></ul><p>Alors, faut-il payer pour de l&#8217;open source ? S&#8217;il s&#8217;agit de librairies / frameworks utilisées par des équipes de développement (e.g. Struts 2, Spring, Hibernate, etc), les avantages sont discutables. En revanche, pour un middleware compliqué qui a un rôle critique en production (base de données MySQL/PostgreSQL, middleware de message ActiveMQ, etc), du support commercial avec un engagement de temps de correction prend toute sa signification.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="JavaFXenprerelease"></a>JavaFX en pre-release</h4><p>JavaFX est enfin disponible en <a
href="http://java.sun.com/javafx/" title="pre-release" >pre-release</a>. Un an après <a
href=" http://www.fredcavazza.net/2007/05/09/sun-relance-java-dans-la-competition-des-interfaces-riches/" title="son annonce" >son annonce</a> et quelques <a
href=" http://blog.developpez.com/christophej?title=javafx_a_javaone" title="bugs corrigés" >bugs corrigés</a>, la technologie permettant le développement d&#8217;interfaces riches à la sauce Sun pointe le bout de son nez.</p><p>Concurrent sérieux à <a
href="http://www.adobe.com/products/flex/" title="Adobe Flex" >Adobe Flex</a> et Microsoft Silverlight ? Sun semble mettre beaucoup d&#8217;énergie dans cette initiative mais nous remarquerons qu&#8217;Adobe a une très grande longueur d&#8217;avance avec un produit mature et une communauté très active aussi bien du côté des web designers que des développeurs. Microsoft est certes en retard face à Adobe mais est tout de même sur le point de lancer la version 2 de Silverlight et a entamé la difficile tâche de séduction du pré-carré d&#8217;Adobe : les graphistes et les web designers.</p><p>La technologie JavaFX se compose d&#8217;un langage de développement (JavaFX Script), d&#8217;un compilateur, d&#8217;un environnement d&#8217;exécution et de différents plugins destinés aux développeurs(plugins <a
href=" http://javafx.netbeans.org/" title="NetBeans" >NetBeans</a>) et aux web designers (Adobe <a
href="https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=project_nile-1.0-pre1-oth-JPR@CDS-CDS_Developer" title="Illustrator et Photoshop" >Illustrator et Photoshop</a>). De plus, elle compte séduire les développeurs en proposant une interaction aisée avec les APIs Java existantes.</p><p>La version 1.0 de JavaFX est prévue pour cet automne.</p><p>Annonce de la sortie :</p><ul><li><a
href=" http://www.theserverside.com/news/thread.tss?thread_id=50196" title="JavaFX, are we there yet?" >JavaFX, are we there yet?</a></li><li><a
href="http://www.greggbolinger.com/blog/2008/08/01/1217623140232.html" title="JavaFX Too Late...But Who Cares" >JavaFX Too Late&#8230;But Who Cares</a></li><li><a
href="http://blogs.sun.com/alexismp/entry/javafx_sdk_preview_disponible" title="JavaFX SDK Preview" >JavaFX SDK Preview => disponible! </a></li></ul><p>Démos et tutoriaux :</p><ul><li><a
href="http://www.redmonk.com/cote/2008/07/31/javafx-preview-sdk-interview-and-demo/" title="JavaFX Preview SDK Interview and Demo" >JavaFX Preview SDK Interview and Demo</a></li><li><a
href="http://techbrew.net/articles/200706/slick-javafx-demo/" title="Slick JavaFX Demo" >Slick JavaFX Demo</a></li><li><a
href="http://blogs.sun.com/javafx/entry/start_your_engines" title="Start your engines" >Start your engines</a></li><li><a
href="http://java.dzone.com/articles/i-hear-voices-post-javafx-sdk-" title="I Hear Voices: Post JavaFX SDK Preview Release" >I Hear Voices: Post JavaFX SDK Preview Release</a></li></ul><h4><a
name="Grillesdecalculversusgrillesde"></a>Grilles de calcul versus grilles de données</h4><p><a
href="http://www.gridgain.com/" title="GridGain" >GridGain</a> joue des coudes pour essayer de différencier sa solution de grilles de calcul Open Source de ses concurrents. Dans cette optique, ils ont publié cette semaine un article sur Dzone présentant les différences entre les <em>grilles de calcul</em> et les <em>grilles de données</em>.</p><p>Le principe de base du calcul distribué s&#8217;appuie sur le célèbre adage « diviser pour régner ». Pour accélérer la résolution d&#8217;un gros problème, il est parfois possible de découper celui-ci en tâches indépendantes pour répartir les calculs sur plusieurs machines. Ce paradigme est appelé <a
href=" http://www.gridgainsystems.com/wiki/display/GG15UG/MapReduce+Overview" title="map reduce" >map reduce</a>.</p><p>Le principe des grilles de données (plus communément appelées caches distribués) est différent. Ici aucun calcul n&#8217;est effectué. Les grilles de données se veulent maximiser la récupération d&#8217;objets à partir de la mémoire tout en assurant une cohérence des données dans un contexte multi-machines.</p><p>Vous l&#8217;avez compris, ces deux types de produits n&#8217;adressent pas les mêmes problématiques. Ils peuvent d&#8217;ailleurs être complémentaires dans certains cas, c&#8217;est pourquoi un certain nombre de produits se positionnent sur ces deux types de problème simultanément (<a
href=" http://www-306.ibm.com/software/webservers/appserv/extremescale/" title="Websphere eXtreme Scale" >Websphere eXtreme Scale</a> / <a
href=" http://www.oracle.com/technology/products/coherence/index.html" title="Oracle Coherence" >Oracle Coherence</a>).</p><ul><li><a
href="http://java.dzone.com/articles/compute-grids-vs-data-grids" title="Compute Grids vs. Data Grids" >Compute Grids vs. Data Grids</a></li><li><a
href="http://java.dzone.com/news/gridgain-to-split-or-not-to-sp" title="To split or not to split" >To split or not to split</a></li><li><a
href="http://java.dzone.com/news/gridgain-203-released-with-gri" title="Hello World Grid-Enabled Executor Service" >Hello World Grid-Enabled Executor Service</a></li><li><a
href="http://java.dzone.com/news/gridgain-master-worker-peer-pe" title="Master-Worker in Peer-To-Peer Architecture" >Master-Worker in Peer-To-Peer Architecture</a></li><li><a
href=" http://www.slideshare.net/sbtourist/gridify-your-spring-application-with-grid-gain-spring-italian-meeting-2008?src=embed" title="Gridify your Spring application with Grid Gain" >Gridify your Spring application with Grid Gain</a></li></ul><h4><a
name="Desdangersdelavirtualisationap"></a>Des dangers de la virtualisation appliquée à la haute disponibilité</h4><p>Billy Newport, Websphere eXtreme Scale, explique dans <a
href="http://www.devwebsphere.com/devwebsphere/2008/07/the-dangers-of.html" title="The dangers of virtualization and datagrids" >The dangers of virtualization and datagrids</a> comme la grille de données d&#8217;IBM concilie haute disponibilité et virtualisation.</p><p>Le fond du problème est que les grilles et les clusters offrent de la haute disponibilité auto-configurée en dupliquant les informations critiques sur plusieurs noeuds dont la probabilité de panne simultanée est infime. Avant la virtualisation, il suffisait de différencier les noeuds par leur adresse IP. Aujourd&#8217;hui, la virtualisation permet de démarrer deux serveurs virtuels aux adresses IP différentes sur le même serveur physique ; l&#8217;assomption de beaucoup de solutions de haute disponibilité auto-configurées devient alors caduque.</p><p>En attendant l&#8217;arrivée d&#8217;API qui permettrons de détecter que deux serveurs virtuels s&#8217;exécutent sur le même serveur physique, une étape de configuration manuelle s&#8217;impose pour garantir que des données critiques ne se retrouvent pas dupliquées sur le même serveur physique qui héberge d&#8217;autres serveurs virtuels.</p><h4><a
name="ActualitOSGI"></a>Actualité OSGI</h4><p>OSGI est certainement l&#8217;un des sujets les plus fidèles de nos revues de presse. Après le <a
href=" http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/#InteroprabilitOSGIetJavaModule" title="prototype de Java Module / OSGI" >prototype de Java Module / OSGI</a> de la semaine dernière, deux actualités OSGI cette semaine :</p><ul><li>Cela fait quelques temps que GlassFish s&#8217;intéresse à OSGI. La prochaine version du serveur d&#8217;application de Sun <a
href=" http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/#JavaModuleSystemJSRvsOSGILarco" title="sera d'ailleurs modularisée" >sera d&#8217;ailleurs modularisée</a>. Dans ce sens, Sun un vient d&#8217;<a
href="http://www.nabble.com/The-Future-td18775232.html" title="embaucher Richard S. Hall" >embaucher Richard S. Hall</a>, actif participant au conteneur OSGI open-source <a
href="http://felix.apache.org/" title="Apache Felix" >Apache Felix</a>. Il devrait rejoindre l&#8217;équipe GlassFish.</li><li><a
href="http://www.arum.co.uk/solstice.php" title="Solstice" >Solstice</a> est (sera ?) le <a
href="http://www.infoq.com/news/2008/08/soltice-fuses-flex-osgi" title="premier framework" >premier framework</a> alliant Flex et OSGI. Il permet le développement d&#8217;application riche modularisée en intégrant les technologies <a
href=" http://www.adobe.com/fr/products/flex/" title="Adobe Flex" >Adobe Flex</a> et <a
href=" http://opensource.adobe.com/wiki/display/blazeds/BlazeDS" title="Adobe BlazeDS" >Adobe BlazeDS</a>, <a
href="http://www.eclipse.org/equinox/" title="Eclipse Equinox" >Eclipse Equinox</a> et <a
href="http://felix.apache.org/" title="Apache Felix" >Apache Felix</a> .</li></ul><h4><a
name="Conventiondenommagepourlangage"></a>Convention de nommage pour langage Java</h4><p>John O&#8217;Hanley, auteur du framework <a
href="http://www.web4j.com" title="Web4J" >Web4J</a> et de <a
href="http://www.javapractices.com/home/HomeAction.do" title="javapractices.com" >javapractices.com</a>, propose différentes conventions de nommage pour le langage de programmation Java, <a
href="http://www.javaworld.com/javaworld/jw-07-2008/jw-07-harmful-idioms.html" title="Four harmful Java idioms, and how to fix them" >Four harmful Java idioms, and how to fix them</a>.</p><p>Voici les 4 conventions que propose John O&#8217;Hanley :</p><ul><li>1&nbsp;-&nbsp;Préfixer les attributs de classes privées par &laquo;&nbsp;<code>f</code>&laquo;&nbsp;, les arguments de méthode par &laquo;&nbsp;<code>a</code>&laquo;&nbsp;,</li><li>2&nbsp;-&nbsp;Organiser les packages Java par critères fonctionnels plutôt que par couche,</li><li>3&nbsp;-&nbsp;Ne pas utiliser la <a
href="http://fr.wikipedia.org/wiki/JavaBeans" title="convention JavaBeans" >convention <em>JavaBeans</em></a> pour les objets immuables,</li><li>4&nbsp;-&nbsp;Ne pas mettre les attributs privés en début de classe.</li></ul><p>Les règles n°1 et n°4 sont contestables, dans la mesure où un IDE moderne, comme <a
href="http://www.eclipse.org" title="Eclipse" >Eclipse</a>, disposent de fonctionnalités pour assurer la lisibilité du code, et surtout assurer la distinction entre les différents types de variables (paramètre de méthode, attributs de classe). Eclipse fournit une colorisation du code source et un panneau <em>outline</em> permettant de trier et d&#8217;assurer la distinction des différents types de variables (comme le montre l&#8217;image ci-dessous) :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/08/rdp-codeconv1.png" border="0" alt="" /></div><p>La règle n°2 est pertinente. Il est plus intéressant d&#8217;avoir un premier découpage en composant fonctionnel. Rien n&#8217;empêche, à l&#8217;intérieur d&#8217;un composant fonctionnel d&#8217;avoir un découpage en couche, ou de manière générale un découpage technique. Le concept important est de cerner au mieux la responsabilité fonctionnelle d&#8217;une classe en l&#8217;exprimant clairement dans le nom de la classe. Le package est un premier filtrage des responsabilités fonctionnelles. Steve McConnell fait l&#8217;éloge de ce concept dans le livre <a
href="http://www.cc2e.com/" title="Code Complet" >Code Complet</a></p><p>Enfin, la règle n°3 pose différents problèmes techniques avec des frameworks existants tel que Hibernate. Hibernate se repose rigoureusement sur la convention <em>JavaBean</em>. Hibernate commence par appeler le constructeur par défaut pour construire l&#8217;objet avant d&#8217;injecter l&#8217;état de l&#8217;objet via les différents setters d&#8217;attributs de classe.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="Agile"></a>Agile 2008</h4><p>Cette semaine se déroule LA conférence annuelle sur l&#8217;agilité du 4 au 8 août à Toronto. <a
href="http://www.agile2008.org/" title="Agile 2008" >Agile 2008</a> a un <a
href="http://www.agile2008.org/Agile2008program.pdf" title="programme" >programme</a> chargé avec ses 400 sessions !<br
/> Pour ceux qui ont la chance d&#8217;y aller, vous serez probablement intéressés par cette <a
href="http://agilesoftwaredevelopment.com/Agile2008/Best" title="sélection des présentations les plus attendues" >sélection des présentations les plus attendues</a>.</p><h4><a
name="Deeplean"></a>Deep lean</h4><p>Crisp organise un séminaire <a
href="http://www.crisp.se/lean/20080925/" title="Deep lean" >Deep lean</a> animé par des grands noms du lean et de l&#8217;agilité : <a
href="http://www.poppendieck.com/" title="Mary et Tom Poppendieck" >Mary et Tom Poppendieck</a>, <a
href="http://jeffsutherland.com/scrum/2008/08/deep-lean-and-scrum-stockholm-25-26-sep.html" title="Jeff Sutherland" >Jeff Sutherland</a>, et <a
href="http://blog.crisp.se/henrikkniberg/2008/08/02/1217706420000.html" title="Henrik Kniberg" >Henrik Kniberg</a>.<br
/> Ce séminaire de 2 jours aura lieu à Stockholm les 25 et 26 Septembre. Pour plus de détails, regardez <a
href="http://www.crisp.se/lean/20080925/Agenda.html" title="l'agenda" >l&#8217;agenda</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/08/04/revue-de-presse-xebia-68/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/</link> <comments>http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/#comments</comments> <pubDate>Mon, 28 Jul 2008 17:13:58 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Maven]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SOA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=432</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Projet Cassandra : donation de Facebook à la communauté Open Source Agilité Les outils pour l&#8217;Agilité RIA OSCON 2008 : Web framework of the future SOA Succès des projets SOA : seulement 20% selon le Burton Group Le coin 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/2008/07/28/revue-de-presse-xebia-67/#ProjetCassandradonationdeFaceb">Projet Cassandra : donation de Facebook à la communauté Open Source</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/#LesoutilspourlAgilit">Les outils pour l&#8217;Agilité</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/#OSCONWebframeworkofthefuture">OSCON 2008 : Web framework of the future</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/#SuccsdesprojetsSOAseulementsel">Succès des projets SOA : seulement 20% selon le Burton Group</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/#InteroprabilitOSGIetJavaModule">Interopérabilité OSGI et Java Module System</a></li><li><a
href="http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/#NouvelleJSRPostmortemJVMDiagno">Nouvelle JSR : Post mortem JVM Diagnostics API</a></li><li><a
href="http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/#OptimiserlesperformancesdeJava">Optimiser les performances de Java : rencontre avec Kirk Pepperdine</a></li><li><a
href="http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/#MEclipseLenouvellediteurgraphi">M2Eclipse : Le nouvelle éditeur graphique de pom</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="ProjetCassandradonationdeFaceb"></a>Projet Cassandra : donation de Facebook à la communauté Open Source</h4><p><a
href="http://code.google.com/p/the-cassandra-project/" title="Cassandra" >Cassandra</a> est un système distribué de stockage de données. Cette solution sera Open Source.</p><p>Cassandra est une solution développée par Facebook (Facebook Data Team), le site de réseau social.</p><p>Cassandra s&#8217;inspire de l&#8217;architecture de <a
href="http://labs.google.com/papers/bigtable.html" title="Google Big Table" >Google Big Table</a> et <a
href="http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html" title="Amazon Dynamo" >Amazon Dynamo</a>. Ces systèmes sont conçus pour être des solutions fortement <em>scalables</em> et aussi gérer des entrepôts de données importants, de l&#8217;ordre du petabyte (<a
href="http://fr.wikipedia.org/wiki/Penta" title="représente 10 puissance 15 soit un un million de milliards" >représente 10 puissance 15 soit un un million de milliards</a>). Son architecture est semblable à un réseau P2P contrairement ou base de données classique (Oracle, MySQL, &#8230;) qui ont une architecture centralisée (sous forme de Cluster). Cette architecture permet de répartir la charge et de contourner des goulets d&#8217;étranglement de trafic de données.</p><p>L&#8217;avantage d&#8217;une telle architecture est d&#8217;être très <em>scalable</em>, et d&#8217;éviter les goulets d&#8217;étranglement de performance, au détriment de la cohérence de données.</p><p>Autant dire que les problématiques adressées par ces outils sont fortement critiques, mais seulement pour des systèmes d&#8217;information très particuliers.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="LesoutilspourlAgilit"></a>Les outils pour l&#8217;Agilité</h4><p><a
href="http://www.threeriversinstitute.org/Kent%20Beck.htm" title="Kent Beck" >Kent Beck</a> (l&#8217;un des fondateurs d&#8217;<a
href="http://fr.wikipedia.org/wiki/Extreme_Programming" title="XP" >XP</a>) partage ses réflexions sur la relation entre <a
href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AE7E07E8-0872-47C4-B1E7-2C1DE7FACF96&#038;displaylang=en" title="les outils et l'Agilité" >les outils et l&#8217;Agilité</a>.</p><p>Il constate que beaucoup de personnes font une mauvaise interprétation d&#8217;un des principes du <a
href="http://agilemanifesto.org/" title="manifeste agile" >manifeste agile</a> : <em>Privilégiez les personnes et leurs interactions plutôt que les processus et les outils</em>. Cela ne signifie pas qu&#8217;il n&#8217;y a pas besoin d&#8217;outil ! Les outils sont indispensables et les méthodes agiles font émerger de nouveaux besoins. Les tests unitaires, la conception incrémentale, et l&#8217;intégration continue sont des exemples de changements qui accompagnent le développement agile. Kent prédit d&#8217;autres changements à venir :</p><ul><li>Des transitions plus aisées entre les activités</li><li>Un plus grand périmètre pour les tests automatiques</li><li>La transparence</li><li>Une collaboration en temps réel</li></ul><p>Une synthèse du livre blanc est disponible sur <a
href="http://www.infoq.com/news/2008/07/agile-tool-relation" title="InfoQ" >InfoQ</a> et sur le blog de <a
href="http://www.aubryconseil.com/dotclear/index.php/2008/07/28/447-les-outils-pour-l-agilite" title="Claude Audry" >Claude Audry</a>.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="OSCONWebframeworkofthefuture"></a>OSCON 2008 : Web framework of the future</h4><p>Lors de la <a
href="http://en.oreilly.com/oscon2008/public/content/home" title="convention de l'Open Source" >convention de l&#8217;Open Source</a> à Portland (EU), Matt Raible a présenté <a
href="http://raibledesigns.com/rd/entry/oscon_2008_web_frameworks_of" title="Web framework of the future" >Web framework of the future</a> où sont comparés les frameworks suivants : Flex, GWT, GRails et Rails</p><p>Il propose deux &#8216;nouveaux&#8217; pattern pour la conception des couches de présentation pour les applications SOA :</p><ul><li><a
href="http://www.theserverside.com/news/thread.tss?thread_id=47213" title="SOFEA, for Service-Oriented Front-End Architecture" >SOFEA, for Service-Oriented Front-End Architecture</a>.</li><li><a
href="http://www.infoq.com/news/2007/11/soui-death-of-mvc2" title="SOUI, Does the rise of Service Oriented UI (SOUI) means the death of server-assisted MVC?" >SOUI, Does the rise of Service Oriented UI (SOUI) means the death of server-assisted MVC?</a></li></ul><p>Le SOFEA se fonde sur trois principes fondamentaux :</p><ul><li><em>AD : Application Download</em>, décrit la manière dont la couche client est téléchargée du serveur chez l&#8217;utilisateur. Suivant le paramétrage du client (logiciel, sécurité, &#8230;) une certaine application sera téléchargée par le client</li><li><em>PF : Presentation Flow</em>, décrit la manière dont la couche de présentation enchaîne les écrans et dont les données sont transmises d&#8217;écran en écran. La réalisation de ce principe doit être dirigée par la partie client et non service</li><li><em>DI : Data Interchange</em>, décrit la manière dont la couche de présentation et la couche service s&#8217;échangent les données. La couche de présentation doit supporter les mêmes structures de données que la couche modèle</li></ul><p>La tableau suivant liste quelques solutions pour implémenter les trois principes précédents avec deux modèles de client <em>thin client</em>, <em>rich client</em> :</p><table
cellspacing="0" cellpadding="5" style="border: 1px solid black"><tr><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"> <strong>Principe</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"> <strong>thin client</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"> <strong>rich client</strong></td></tr><tr><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"> <strong>Application Download</strong></td><td
style="border: 1px solid black"> Cette opération est assurée par le conteneur de la partie cliente (navigateur web)</td><td
style="border: 1px solid black"> C&#8217;est une opération explicite, le client télécharge une application suivant le paramétrage du client (Flash/Java Web Start)</td></tr><tr><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"> <strong>Presentation Flow</strong></td><td
style="border: 1px solid black"> Une partie de la navigation peut être assurée par du Javascript côté client. Cependant, la grosse partie de la navigation est assurée côté serveur avec un framework</td><td
style="border: 1px solid black"> La navigation est gérée localement (sur le poste client) par l&#8217;application téléchargée. Sur cette partie client, le pattern MVC est envisageable</td></tr><tr><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"> <strong>Data Interchange</strong></td><td
style="border: 1px solid black"> Il n&#8217;y a pas de communication directe, elle est assurée par le conteneur de l&#8217;application serveur (serveur Web). Un modèle HTML/HTTP est utilisé pour s&#8217;échanger les données, elle suit la sémantique requête/réponse.</td><td
style="border: 1px solid black"> Une certain nombre de protocoles et de format d&#8217;échange de données peuvent être utilisés, dans la plupart des cas c&#8217;est du XML. Généralement, la sémantique utilisée est la requête/réponse mais elle peut aussi être une semantique peer-to-peer.</td></tr></table><p>A l&#8217;instar du SOFEA, le SOUI se base sur un découplage net entre la couche de présentation et la couche service métier. La conception de la couche présentation est pilotée par la couche de service métier et non l&#8217;inverse.</p><p>Ces principes sont mis en oeuvre au travers de 3 frameworks :</p><ul><li>Flex : pour la réalisation d&#8217;interface en Flash.</li><li>GWT : pour la réalisation d&#8217;interface en DHTML/Ajax, développée en Java. Cette technologie peut amener à des difficultés lors que l&#8217;on travaille sur du code source existant.</li><li>GRails (Rails) : pour la réalisation d&#8217;interface Web en suivant le pattern MVC. Le <em>scaffolding</em> apporte une mise en place des écrans rapide, mais supporte mal le REST.</li></ul><p>Ces technologies sont assez différentes dans leur architecture et dans leur prise en compte de l&#8217;existant. Flex supporte bien le REST. Les technologies Rails (GRails, Ruby On Rails, Django) apportent de la productivité grâce à un langage dynamique et expressif, au <a
href="http://fr.wikipedia.org/wiki/%C3%89chafaudage_(programmation)" title="<em>scaffolding</em>&nbsp;&raquo; >_scaffolding_</a>, à l&#8217;<a
href="http://fr.wikipedia.org/wiki/Active_record" title="<em>active record</em>&nbsp;&raquo; >_active record_</a>, aux conventions de nommage, et au principe <em>don&#8217;t repeat</em>. GWT permet d&#8217;implémenter des applications Web riches en ayant peu de compétences Javacript, il suffit de bien maîtriser Java et CSS.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="SuccsdesprojetsSOAseulementsel"></a>Succès des projets SOA : seulement 20% selon le Burton Group</h4><p>Nous annoncions en Mars dernier le lancement du <a
href="http://www.infoq.com/news/2008/07/Only1" title="sondage du Burton Group sur le succès des projets SOA" >sondage du Burton Group sur le succès des projets SOA</a>. Nous saluerons d&#8217;abord l&#8217;honnêteté de l&#8217;étude d&#8217;Anne Thomas Mannes qui reconnaît pas moins de 50% d&#8217;échecs complets.</p><p>Il ne faut pas pour autant condamner SOA dans son ensemble ; les piliers de cette démarche correspondent à des réalités des entreprises d&#8217;aujourd&#8217;hui. Certains principes comme le couplage lâche et la cohérence ne sont pas nouveaux et des idées comme la gouvernance des services et les <a
href="http://en.wikipedia.org/wiki/Service_level_agreements" title="Service Level Agreement" >Service Level Agreement</a> qui vont avec, restent souvent des voeux pieux difficilement mis en oeuvre eu égard aux changements culturels qu&#8217;ils demandent.</p><p>Nous ne tirerons donc pas aujourd&#8217;hui sur l&#8217;ambulance. En plus des <a
href="http://blog.xebia.fr/2008/07/17/les-10-pieges-de-la-soa/" title="10 pièges de la SOA" >10 pièges de la SOA</a> dont nous avons déjà parlé ces dernières semaines, nous retiendrons que sur le fond, les échecs sont plus souvent dûs à un manque de vision métier et architecturale qu&#8217;un à problème d&#8217;implémentation technique.</p><p>Un point intéressant de l&#8217;étude du Burton Group : une culture purement projet, malgré ses vertus de mise en production à un prix et une date maitrisés, se marie mal à une démarche SOA. Le délai court et le périmètre étroit, clefs du succès d&#8217;un projet (ce que nous prônons), sont souvent incompatibles avec une architecture SOA qui demande une vision plus large des briques du SI et des retours sur investissements plus long.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="InteroprabilitOSGIetJavaModule"></a>Interopérabilité OSGI et Java Module System</h4><p>Plusieurs mois après <a
href="http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/#JavaModuleSystemJSRvsOSGILarco" title="l'annonce" >l&#8217;annonce</a> d&#8217;une éventuelle interopérabilité entre Java Module System et OSGI, le sujet est toujours en discussion au sein du groupe d&#8217;experts de la JSR-277.  Sun semble un peu patauger dans la gadoue sur ces spécifications, il est vrai qu&#8217;il est difficile de contenter tout le monde sur un sujet ou chacun essaye d&#8217;imposer ses idées.</p><p>Et bien vous pouvez maintenant vous faire votre propre opinion, le <a
href="http://openjdk.java.net/projects/modules/" title="sous-projet" >sous-projet</a> implémentant le draft de Java Module System inclus maintenant un repository OSGI. Le prototype est pour le moment uniquement compatible avec l&#8217;implémentation OSGI de la fondation Apache (Apache Felix).  L&#8217;interopérabilité semble complètement transparente à l&#8217;utilisation, vous pouvez importer des modules OSGI de la même manière que vous importeriez des modules <a
href="http://blog.developpez.com/adiguba?title=ou_va_java_java_module_system" title="JAM (JAva Module)" >JAM (JAva Module)</a>. Si vous voulez essayer par vous-même un <a
href="http://weblogs.java.net/blog/mandychung/archive/2008/07/osgi_repository.html" title="exemple complet" >exemple complet</a> est disponible sur le blog de Mandy Chung.</p><h4><a
name="NouvelleJSRPostmortemJVMDiagno"></a>Nouvelle JSR : Post mortem JVM Diagnostics API</h4><p>Les principaux outils de diagnostic (débuggeur, outils de trace, analyse de performance) permettent de surveiller le comportement de la JVM lorsqu&#8217;ils sont activés. Ce genre d&#8217;outils est très efficace quand les problèmes sont reproductibles et que le client est prêt à accepter le prix de cette reproduction. C&#8217;est pourtant en pratique pas toujours le cas : soit par ce que le bug est dû à un problème ponctuel, soit par ce que le coût de reproduction n&#8217;est pas acceptable. L&#8217;analyse rétrospective est compliquée et nous manquons d&#8217;outils permettant d&#8217;effectuer des analyses &#8216;post-mortem&#8217;.</p><p>La nouvelle <a
href="http://jcp.org/en/jsr/detail?id=326" title="JSR-326 : Post mortem JVM Diagnostics API" >JSR-326 : Post mortem JVM Diagnostics API</a> voudrait pallier à ce manque en proposant un API permettant d&#8217;effectuer des analyses sur des artefacts générés à chaud par la JVM (<a
href=" http://java.sun.com/developer/technicalArticles/Programming/HPROF.html" title="HPROF" >HPROF</a> ou autres&#8230; ).</p><p>Elle proposera :</p><ul><li>un ensemble d&#8217;outils permettant de lire ces analyses</li><li>un moyen d&#8217;étendre ces outils</li><li>un moyen de standardiser la génération à la volée de ces artefacts</li></ul><p>Alex Miller en a profité pour <a
href=" http://tech.puredanger.com/2008/07/27/jsr-326-post-mortem-jvm-diagnostics-api/" title="demander à Steve Poole" >demander à Steve Poole</a> (specifications leader de la JSR) si celle-ci à une chance d&#8217;arriver à temps pour le jdk7. La réponse évidement incertaine : toujours aucune date pour cette fameuse umbrella JSR devant officialiser le <a
href="http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/" title="contenu de la prochaine version de Java" >contenu de la prochaine version de Java</a>&#8230;</p><h4><a
name="OptimiserlesperformancesdeJava"></a>Optimiser les performances de Java : rencontre avec Kirk Pepperdine</h4><p>Dans cet <a
href="http://java.sun.com/developer/technicalArticles/Interviews/community/pepperdine_qa.html" title="article sur le Sun Developpper Network" >article sur le Sun Developpper Network</a>, Kirk Pepperdine revient sur ses expériences dans le domaine de la performance. Nous retiendrons les points suivants :</p><ul><li>L&#8217;un des principaux écueils dans une analyse de performance est le <strong>manque de méthode avec un focus prématuré sur le code</strong>. La plupart des équipes plongent directement dans le code, au mépris d&#8217;informations plus globales sur le système. Pour améliorer ce point Kirk Pepperdine expose deux méthodes : <a
href="http://www.infoq.com/articles/the-box" title="la box" >la box</a> et le mantra <a
href="http://javasymposium.techtarget.com/images/TSSJS_E_Presentations/Pepperdine_Kirk_MeasuringUpPerformance.pdf" title="Ne devinez pas, mesurez" >Ne devinez pas, mesurez</a><br
/> Plonger directement dans le code est d&#8217;ailleurs l&#8217;un des soucis majeurs que Kirk Pepperdine a rencontré au cours de sa carrière : aussi doué soit-il, un développeur ne parviendra pas à résoudre un problème de performance uniquement par la lecture du code ; la phase préliminaire de caractérisation du problème et d&#8217;identification du code en cause est primordiale.</li><li>L&#8217;un des facteurs de succès dans l&#8217;amélioration des performances est un <strong>code source simple et bien structuré</strong>. Un code simple (a.k.a. &laquo;&nbsp;dumb&nbsp;&raquo;) permet une meilleure analyse, aussi bien par des humains que par les optimiseurs de JVMs. De plus, un code complexe cache souvent des optimisations prématurées.<br
/> Un code bien structuré permet ajouts et remaniements qui sont souvent la clé de toute optimisation.<br
/> De manière générale, les grands principes agiles (couplage lâche, délégation, application des bons design patterns, bonne couverture de tests unitaires, builds automatisés) s&#8217;appliquent dans le cadre du tuning des performances.</li><li>Il faut se méfier des Performance Tips qui peuvent se révéler être des faux amis : une solution peut fonctionner dans un cas et s&#8217;avérer catastrophique dans une autre situation ou avec les versions suivantes d&#8217;une JVM.</li><li>La majorité des problèmes de performances se situent au niveau de la base de données et de la mémoire de la JVM.<br
/> Les principales mauvaises pratiques en ce qui concerne les liens entre programme Java et base de données sont :<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Rendre son application résistante à l&#8217;introduction de caches (e.g. en mélangeant des accès jdbc au code métier)<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Utiliser la base de données comme un mécanisme de lock distribué<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Utiliser la base de données pour exécuter de la logique métier clef<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Stocker des flux dénormalisés en base.<br
/> Le premier indice d&#8217;une sur-utilisation de la base est le nombre d&#8217;interactions entre celle-ci et l&#8217;application. La correction la plus triviale à cette erreur est d&#8217;ajouter un cache, ce qui sera beaucoup plus rapide et efficace que de tenter de réduire le nombre d&#8217;appels à la base.<br
/> Une autre astuce est de grouper au maximum les interactions application &#8211; base de données.</li><li>La gestion de la mémoire peut aujourd&#8217;hui reposer uniquement sur des outils efficaces :<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Détection des fuites mémoire : <a
href="https://visualvm.dev.java.net/" title="Visual VM" >Visual VM</a> et <a
href="http://www.netbeans.org/" title="Netbeans" >Netbeans</a> Generation<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Objets &#8216;zombis&#8217; : Netbeans Generation ou attendre le time out de ces objets<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Un taux élévé de création d&#8217;objets. Cela entraîne généralement une Garbage Collection inefficace. Surveiller l&#8217;activité du GC permet donc de diagnostiquer ces problèmes (<a
href="http://www.javaperformancetuning.com/tools/hpjmeter/index.shtml" title="HPJMeter" >HPJMeter</a>, <a
href="http://www.tagtraum.com/" title="Tagtraum" >Tagtraum</a>, <a
href="https://gchisto.dev.java.net" title="gchisto" >gchisto</a>).<br
/> La majorité des problèmes de mémoire peuvent être réglés en jouant sur les Java Heap Size.</li><li>Une équipe stressée ne parviendra pas à traiter efficacement les problèmes. C&#8217;est pour cela qu&#8217;il est parfois bon d&#8217;envisager une correction &#8216;quick &#038; dirty&#8217; qui contente un maximum d&#8217;utilisateur, afin de faire baisser la pression sur les développeurs, pour pouvoir se poser et réfléchir à une solution à long terme.</li></ul><h4><a
name="MEclipseLenouvellediteurgraphi"></a>M2Eclipse : Le nouvelle éditeur graphique de pom</h4><p>Une nouvelle fonctionnalité vient de paraître dans la version 0.9.5 du plugin <a
href="http://m2eclipse.codehaus.org/" title="M2eclipse" >M2eclipse</a> : <a
href="http://docs.codehaus.org/display/M2ECLIPSE/Maven+POM+editor" title="l'éditeur graphique de fichier pom.xml" >l&#8217;éditeur graphique de fichier pom.xml</a>. On peut remarquer que pour une première version, l&#8217;éditeur est déjà assez complet : la très grande majorité des paramètres configurables d&#8217;un pom sont présents et l&#8217;éditeur offre la complétion pour l&#8217;ajout de dépendances (déjà présent dans l&#8217;éditeur &laquo;&nbsp;source&nbsp;&raquo;).</p><p>Mais la fonctionnalité qui mérite le coup d&#8217;oeil est celle permettant d&#8217;afficher l&#8217;arbre de dépendance sous la forme d&#8217;un arbre. L&#8217;éditeur reprend le goal <code>tree</code> du <a
href="http://maven.apache.org/plugins/maven-dependency-plugin/" title="maven-dependency-plugin" >maven-dependency-plugin</a> en lui ajoutant la visualisation graphique qui le rend bien plus facile à utiliser que son rendu en ligne de commande. Pour vous en rendre compte, voyez plutôt les <a
href="http://docs.codehaus.org/display/M2ECLIPSE/New+and+Noteworthy#NewandNoteworthy-0.9.5.200806261519/June26,2008" title="quelques captures d'écran" >quelques captures d&#8217;écran</a> disponibles. L&#8217;éditeur offre aussi une vue des dépendances sous la forme d&#8217;un graphe mais ce plugin relève encore du gadget, devant inutilisable sur des projets un peu conséquents.</p><p>M2Eclipse, en compétition avec Q4E pour devenir l&#8217;intégration officielle de Maven dans Eclipse (cf <a
href="http://www.eclipse.org/proposals/iam/" title="The Eclipse Integration for Apache Maven (IAM)" >The Eclipse Integration for Apache Maven (IAM)</a>), a fait de grands progrès depuis ses premières versions et si vous ne l&#8217;avez pas testé depuis longtemps, la dernière version mérite le coup d&#8217;œil &#8230;</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/07/28/revue-de-presse-xebia-67/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/</link> <comments>http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#comments</comments> <pubDate>Mon, 16 Jun 2008 16:15:50 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[AIR]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[S2AP]]></category> <category><![CDATA[Spring]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Agilité Le top 20 des livres sur l&#8217;Agilité RIA NASDAQ Market Replay : une success story pour Flex, AIR et Amazon S3 Le coin de la technique Spring Source Application Platform : l&#8217;heure de se faire une opinion ? JPA 2.0, la nouvelle version [...]]]></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>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#LetopdeslivressurlAgilit">Le top 20 des livres sur l&#8217;Agilité</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#NASDAQMarketReplayunesuccessst">NASDAQ Market Replay : une success story pour Flex, AIR et Amazon S3</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#SpringSourceApplicationPlatfor">Spring Source Application Platform : l&#8217;heure de se faire une opinion ?</a></li><li><a
href="http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#JPAlanouvelleversionduneAPIbie">JPA 2.0, la nouvelle version d&#8217;une API bien portante</a></li><li><a
href="http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#LanguageJavaquefautilattendre">Language Java, que faut-il attendre ?</a></li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="LetopdeslivressurlAgilit"></a>Le top 20 des livres sur l&#8217;Agilité</h4><p>A partir de son top 100 des meilleurs livres d&#8217;ingénierie logicielle, <a
href="http://www.noop.nl/" title="Jurgen Appelo" >Jurgen Appelo</a> en a extrait le <a
href="http://agilesoftwaredevelopment.com/blog/jurgenappelo/top-20-best-agile-development-books" title="top 20 des livres sur l'Agilité" >top 20 des livres sur l&#8217;Agilité</a>.<br
/> Voici les 3 premiers pour les moins courageux :<br
/> 1. <a
href="http://www.amazon.com/gp/product/0135974445?ie=UTF8&#038;tag=noopnl-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0135974445" title="Agile Software Development: Principles, Patterns and Practices" >Agile Software Development: Principles, Patterns and Practices</a> de Robert C. Martin<br
/> 2. <a
href="http://www.amazon.com/gp/product/0201485672?ie=UTF8&#038;tag=noopnl-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0201485672" title="Refactoring: Improving the Design of Existing Code" >Refactoring: Improving the Design of Existing Code</a> de Martin Fowler<br
/> 3. <a
href="http://www.amazon.com/gp/product/0131479415?ie=UTF8&#038;tag=noopnl-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0131479415" title="Agile Estimating and Planning" >Agile Estimating and Planning</a> de Mike Cohn</p><p>Une liste qui pourra vous guider dans vos prochains achats sur Amazon !</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="NASDAQMarketReplayunesuccessst"></a>NASDAQ Market Replay : une success story pour Flex, AIR et Amazon S3</h4><p>InfoQ explique dans <a
href="http://www.infoq.com/articles/nasdaq-case-study-air-and-s3" title="InfoQ Case Study: NASDAQ Market Replay" >InfoQ Case Study: NASDAQ Market Replay</a> comment le NASDAQ offre un outil de rejeu des transactions effectuées (vérification de la validité d&#8217;une transaction, explication de l&#8217;écart entre le prix de vente espéré et le prix de vente réel, etc&#8230;) développé en  FLEX avec un client standalone Abode AIR et connecté à un back end <a
href="http://en.wikipedia.org/wiki/Amazon_S3" title="Amazon Simple Storage Service" >Amazon Simple Storage Service</a> (S3).<br
/> La mise en place de cet outil est un véritable succès pour le RIA d&#8217;Abode, car il a été bâti en 6 mois par une équipe de 10 personnes, et répond complètement aux besoins fonctionnels, avec des performances supérieures à celles espérées.<br
/> De plus, un premier lot d&#8217;évolutions devrait voir le jour dans moins d&#8217;un mois, et son déploiement sera grandement facilité par l&#8217;utilisation de la technologie AIR (déploiement automatique par vérification de la dernière version en cours au lancement de l&#8217;outil).<br
/> Une <a
href="https://data.nasdaq.com/MR.aspx" title="démonstration de l'outil" >démonstration de l&#8217;outil</a> est disponible sur le site du NASDAQ.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SpringSourceApplicationPlatfor"></a>Spring Source Application Platform : l&#8217;heure de se faire une opinion ?</h4><p>Julien Dubois, directeur de Spring Source France, a présenté <a
href="http://springsource.com/products/suite/applicationplatform" title="Spring Source Application Platform" >Spring Source Application Platform</a> (S2AP) lors de la soirée Spring du <a
href="http://www.parisjug.org/xwiki/bin/view/Blog/SoireeSpring" title="Paris JUG" >Paris JUG</a>. Nous avions relaté en mai dernier la sortie du serveur hybride OSGI-Tomcat dans <a
href="http://blog.xebia.fr/2008/05/01/springsource-application-platform-la-breche-dans-java-ee/" title="SpringSource Application Platform : la brèche dans Java EE" >SpringSource Application Platform : la brèche dans Java EE</a>. L&#8217;événement avait fait grand bruit, The Server Side avait lancé la polémique avec <a
href="http://www.theserverside.com/news/thread.tss?thread_id=49243" title="S2AP - totally rocks" >S2AP &#8211; totally rocks</a> (220 messages enflammés). Si le buzz est retombé, Spring Source occupe le terrain médiatique pour nous faire patienter jusqu&#8217;à la première release avec des articles pédagogiques sur la valeur ajoutée des modules OSGI pour les applications web (<a
href="http://blog.springsource.com/main/2008/05/15/why-should-i-care-about-osgi-anyway/" title="Why should I care about OSGi anyway?" >Why should I care about OSGi anyway?</a> par Adrian Colyer) autant que sur la nouvelle stratégie de Spring Source (<a
href="http://blog.springsource.com/main/2008/05/27/open-source-open-strategy-the-springsource-manifesto/" title="Open Source, Open Strategy: The SpringSource Manifesto" >Open Source, Open Strategy: The SpringSource Manifesto</a> par Rod Johnson).</p><p>Au-delà des promesses un <em>zest</em> marketing du <a
href="http://springsource.com/products/suite/applicationplatform" title="site officiel" >site officiel</a> qui vont de l&#8217;amélioration de la réutilisabilité du code à la meilleure disponibilité des serveurs en passant par la reconfiguration à chaud, l&#8217;été peut-être l&#8217;occasion de regarder plus en détail la proposition de Spring Source.</p><p>Pour mémoire, S2AP est un serveur d&#8217;applications orienté modules basé sur OSGI Eclipse Equinox, dm-Kernel (Spring Source Dynamic Module Kernel), et <a
href=" http://blog.xebia.fr/2008/02/04/revue-de-presse-xebia-42/#SpringSourcerCovalent" title="Tomcat" >Tomcat</a>.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap.jpg" border="0" alt="" /></div><p>Le but de la présentation de jeudi dernier était autant de faire connaître le produit (après un rapide sondage avec l&#8217;assemblée, un peu plus la moitié du public connaissait s2ap) que de rassurer d&#8217;éventuels futurs utilisateurs sur la capacité de cette plateforme à aller rapidement en production. C&#8217;est d&#8217;ailleurs sur ce dernier point que Julien a insisté lors de la présentation au Jug : il ne faut pas oublier qu&#8217;il s&#8217;agit pour le moment que d&#8217;une béta.</p><p>L&#8217;administration de la plateforme s&#8217;effectue par l&#8217;intermédiaire : d&#8217;une web console ultra light (pour le moment). Celle-ci dispose d&#8217;un simple champ &#8216;Parcourir &#8230;&#8217; vous permettant d&#8217;uploader vos bundles et de la liste des applications déployées disposant chacune d&#8217;un lien &#8216;undeploy&#8217;.  (cf screenshot 2) ; et d&#8217;une console Osgi Equinox  accessible via Telnet (cf screenshot 3). Si cela ne vous convient pas, rien ne vous empêche d&#8217;installer une console OSGI complémentaire plus conviviale du type <a
href="http://www.knopflerfish.org/" title="knopflerfish " >knopflerfish </a>.</p><p>Petit problème anecdotique à ce sujet noté sur la console Equinox : si vous voulez vous déconnecter, utilisez la commande &#8216;disconnect&#8217;, celle-ci vous demandera alors si vous êtes certain de vouloir quitter la console. Par contre si vous tapez la commande &#8216;exit&#8217;, le serveur est immédiatement arrêté sans aucun message de confirmation.</p><p>Après plus d&#8217;un mois de teasing en tout genre, vous n&#8217;avez peut-être pas encore eu le temps de vous faire une idée concrète du produit. C&#8217;est peut-être le moment de passer à l&#8217;action. Nous vous proposons ici une liste de liens permettant d&#8217;effectuer votre propre « Getting Started S2AP » rapidement :</p><ul><li>Téléchargez la dernière bêta S2AP en vous <a
href="http://www.springsource.com/beta/applicationplatform/" title="inscrivant sur Spring Source" >inscrivant sur Spring Source</a>, <a
href="http://static.springsource.com/projects/s2ap/1.0.x/user-guide/html/" title="user guide" >user guide</a>, <a
href="http://static.springsource.com/projects/s2ap/1.0.x/programmer-guide/html/" title="programmer guide" >programmer guide</a></li><li>Téléchargez une <a
href="http://dist.springsource.com/release/AP/petclinic-1.1.0.RELEASE.zip" title="application exemple" >application exemple</a></li><li>Consultez le <a
href="http://www.springsource.com/repository" title="Repository officiel" >Repository officiel</a> de bundles compatibles S2AP</li><li>Tutoriel d&#8217;installation et d&#8217;utilisation rapide <a
href="http://blog.developpez.com/djo-mos?title=vos_premiers_pas_avec_springsource_appli" title="pour les développements" >pour les développements</a></li></ul><table><tr><td><strong>Screenshot&nbsp;1&nbsp;: S2AP startup</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td><strong>Screenshot&nbsp;2&nbsp;: Web Console</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td><strong>Screenshot&nbsp;3&nbsp;: Equinox Telnet Console</strong></td></tr><tr><td><a
href='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_startup.jpg' title='s2ap_startup.jpg'><img
src='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_startup.thumbnail.jpg' alt='s2ap_startup.jpg' /></a></td><td><a
href='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_admin.jpg' title='s2ap_admin.jpg'><img
src='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_admin.thumbnail.jpg' alt='s2ap_admin.jpg' /></a></td><td><a
href='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_telnet.jpg' title='s2ap_telnet.jpg'><img
src='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_telnet.thumbnail.jpg' alt='s2ap_telnet.jpg' /></a></td></tr></table><h4><a
name="JPAlanouvelleversionduneAPIbie"></a>JPA 2.0, la nouvelle version d&#8217;une API bien portante</h4><p>Il est loin le temps où le standard de persistance en Java, les EJB CMP, était conspué. JPA a refermé cette page tourmentée en créant un consensus autour du meilleur d&#8217;Hibernate, de TopLink et des autres.<br
/> Linda DeMichiel, Sun Microsystems, a présenté à JavaOne 2008 dans <a
href="http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5509.pdf" title="JavaTM Persistence API 2.0" >JavaTM Persistence API 2.0</a> les contours d&#8217;une nouvelle version largement inspirée d&#8217;Hibernate.</p><p>Nous retiendrons :</p><ul><li>Améliorations des mappings : collections de types basics avec <code>@ElementCollection</code>, supports amélioré des types <code>@Embeddable</code>, des tris et des <code>Map</code>, etc.</li><li>Ajout d&#8217;une Criteria query API que regrettaient les adeptes d&#8217;Hibernate</li><li>Intégration du mécanisme de validation <a
href="http://jcp.org/en/jsr/detail?id=303" title="JSR 303: Bean Validation" >JSR 303: Bean Validation</a> dont le specification leader n&#8217;est autre qu&#8217;Emmanuel Bernard, Red Hat, également project leader d&#8217;<a
href="http://www.hibernate.org/412.html" title="Hibernate Validator" >Hibernate Validator</a></li></ul><p>Cette ébauche de JPA 2.0 est l&#8217;occasion de rappeler qu&#8217;il est maintenant raisonnable de migrer de l&#8217;historique API Session d&#8217;Hibernate à l&#8217;API EntityManager de JPA. Cette dernière répond à la majorité des besoins de nos projets et il suffit de récupérer la session Hibernate avec <code>((Session) entityManager.getDelegate())</code> si le besoin s&#8217;en fait sentir.</p><h4><a
name="LanguageJavaquefautilattendre"></a>Language Java, que faut-il attendre ?</h4><p>Alex Buckley (Sun), Neal Gafter (Google) et Michael D. Ernst (MIT) ont présenté à JavaOne 2008 dans <a
href="http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5581.pdf" title="Upcoming Java Programming Language Features" >Upcoming Java Programming Language Features</a> les enjeux de l&#8217;évolution du langage Java et les nouvelles fonctionnalités actuellement à l&#8217;étude :</p><ul><li>Multi-catch <code>try {...} catch (E1, E2 e) {...}</code></li><li>Safe re-throw : simplification des blocs <code>catch</code> lorsque la méthode encapsulante rethrow les exceptions levées dans le bloc <code>try</code></li><li>Modularité : Ajout d&#8217;un niveau de granularité entre les visibilités <code>package</code> et <code>public</code></li><li>Extension des annotations pour ne plus limiter leur utilisation aux déclarations de class / method / field / variable et pour ajouter des informations dans le code telles que <code>@NonNull</code>, <code>@Readonly</code> ou <code>@Immutable</code>. Ces évolutions sont regroupées dans <a
href="http://jcp.org/en/jsr/detail?id=308" title="JSR 308: Annotations on Java Types" >JSR 308: Annotations on Java Types</a>.</li></ul><p>A plus long terme, l&#8217;Expert Group réfléchit entre autres à un meilleur support du parallélisme et une évolution du modèle de composant (versioning, etc). Plus généralement, d&#8217;autres sucs syntaxiques et évolutions du langage sont à l&#8217;étude, nous en avions consacré une partie à ce sujet lors de la présentation &#8216;<a
href="http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/" title="jdk 7 proposals" >jdk 7 proposals</a>&#8216; en février dernier.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/</link> <comments>http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#comments</comments> <pubDate>Mon, 28 Apr 2008 17:04:41 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Hibernate]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[REST]]></category> <category><![CDATA[Sun]]></category> <category><![CDATA[Websphere]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII MySQL by Sun : Revirement de stratégie open source ? Choquant ? Superpackages (JSR-294) vs. OSGI : Episode n° 34291567&#8230;. Agilité User stories &#171;&#160;En tant que &#8230; je veux &#8230;&#160;&#187; Le coin de la technique De la sérialisation au parallélisme, [...]]]></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/2008/04/28/revue-de-presse-xebia-54/#MySQLbySunRevirementdestratgie">MySQL by Sun : Revirement de stratégie open source ? Choquant ?</a></li><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#SuperpackagesJSRvsOSGIEpisoden">Superpackages (JSR-294) vs. OSGI : Episode n° 34291567&#8230;.</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#UserstoriesEntantquejeveux">User stories &laquo;&nbsp;En tant que &#8230; je veux &#8230;&nbsp;&raquo;</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#Delasrialisationauparalllismeu">De la sérialisation au parallélisme, une évolution incarnée par java.util.concurrent</a></li><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#InnovationautourdeJPAJBossHibe">Innovation autour de JPA : JBoss Hibernate confirme son domination avec Envers</a></li><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#VideoIntroductiontoWebSphereeX">Cas d&#8217;utilisation des grilles Java avec WebSphere eXtreme Scale/ ObjectGrid</a></li><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#JSRJAXRSRESTunehistoiredeRESTa">JSR-311 JAX-RS REST une histoire de RESTaurant</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/2008/04/28/revue-de-presse-xebia-54/#XKEleprogrammedelasessiondemai">XKE, le programme de la session de mai</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="MySQLbySunRevirementdestratgie"></a>MySQL by Sun : Revirement de stratégie open source ? Choquant ?</h4><p><a
href="http://slashdot.org/" title="Slashdot" >Slashdot</a> essaie de nous emmener sur une polémique &laquo;&nbsp;Sun gâche MySQL&nbsp;&raquo; avec <a
href="http://developers.slashdot.org/article.pl?sid=08/04/16/2337224" title="Sun May Begin Close Sourcing MySQL Features" >Sun May Begin Close Sourcing MySQL Features</a> à l&#8217;occasion de l&#8217;annonce par l&#8217;éditeur de fonctionnalités (online backup, etc) qui seront uniquement disponibles dans la version payante <a
href="http://www.mysql.com/products/enterprise/" title="MySQL Enterprise" >MySQL Enterprise</a>. Au delà de l&#8217;insinuation peu crédible quand on se rappelle que l&#8217;essentiel du catalogue de Sun est disponible gratuitement, on retrouve le défi aujourd&#8217;hui classique de la monétisation de l&#8217;Open Source. Le rachat de MySQL par Sun change complétement le modèle économique de l&#8217;éditeur de base de données.</p><p>Hier, la startup MySQL, financée par des fonds de capital risque, se permettait d&#8217;être déficitaire car les candidats au rachat (Oracle puis finalement Sun) ne valorisaient pas MySQL Inc sur ses revenus mais sur les parts de marché de sa base de données. La stratégie a magnifiquement porté ses fruits puisque MySQL Inc s&#8217;est vendue un milliard de dollars à Sun, félicitations au management.</p><p>Aujourd&#8217;hui, MySQL est vraisemblablement devenue une division &#8216;classique&#8217; de Sun et doit donc devenir rentable. L&#8217;équation de la rentabilité de l&#8217;open source est complexe, Red Hat et JBoss by Red Hat ont été des pionniers sur ce chemin, souhaitons à MySql by Sun de trouver lui aussi son modèle.</p><p><a
href="http://www.theserverside.com/news/thread.tss?thread_id=49087" title="TSS : MySQL to get new features in Enterprise version" >TSS : MySQL to get new features in Enterprise version</a></p><p><i><strong>Modification du billet le 29 Avril 2008 : Jonathan Schwartz est finalement revenu en arrière et a annoncé que tous les produits que Sun distribue, sans exception, sont proposés gratuitement en licence Open source à la communauté. Pour plus de détails sur cette histoire, nous vous recommandons la série de <a
href="http://www.the451group.com/">The 451 Group</a> : <a
href="http://blogs.the451group.com/opensource/2008/04/17/mysqls-business-model-in-a-state-of-flux/">MySQL’s business model in a state of flux</a>, <a
href="http://blogs.the451group.com/opensource/2008/04/24/finding-the-right-balance-mysql%e2%80%99s-changing-development-model/">Finding the right balance &#8211; MySQL’s changing development model</a> et <a
href="http://blogs.the451group.com/opensource/2008/04/28/jonathan-schwartz-has-the-last-word-on-mysql/">Jonathan Schwartz has the last word on MySQL</a></strong></i></p><h4><a
name="SuperpackagesJSRvsOSGIEpisoden"></a>Superpackages (JSR-294) vs. OSGI : Episode n° 34291567&#8230;.</h4><p>La guerre continue entre les partisans de OSGI et ceux des JSR de SuperPackage et de JAM. Cependant, l&#8217;attaque vient cette fois-ci d&#8217;<a
href="http://blogs.sun.com/abuckley/" title="Alex Buckley" >Alex Buckley</a> de chez Sun.</p><p>Il explique dans son <a
href="http://altair.cs.oswego.edu/pipermail/jsr294-modularity-eg/2008-March/000171.html" title="email" >email</a> les inconvénients qu&#8217;il voit dans l&#8217;implémentation actuelle des superpackages[1]. En substance, il propose d&#8217;introduire à la place un nouvel &#8216;access modifier&#8217; (module).</p><p>Peter Kriens de l&#8217;OSGi Alliance semble plutôt emballé par cette <a
href="http://www.osgi.org/blog/2008/04/jsr-294-superpackages-no-more.html" title="proposition" >proposition</a>.</p><p>[1] Pour mémoire, nous avons publié en février dernier un <a
href="http://blog.xebia.fr/2008/02/27/jsr-294-les-superpackages/" title="article présentant les superpackages" >article présentant les superpackages</a></p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="UserstoriesEntantquejeveux"></a>User stories &laquo;&nbsp;En tant que &#8230; je veux &#8230;&nbsp;&raquo;</h4><p>Mike Cohn nous rappelle les 3 raisons pour lesquelles il préconise de décomposer les <a
href="http://www.mountaingoatsoftware.com/presentation/63-an-introduction-to-user-stories" title="user stories" >user stories</a> sous forme de phrase <a
href="http://blog.mountaingoatsoftware.com/?p=24" title=""En tant que &lt;role&gt;, je veux &lt;but&gt;, pour que &lt;raison&gt;"" >&laquo;&nbsp;En tant que &lt;role&gt;, je veux &lt;but&gt;, pour que &lt;raison&gt;&nbsp;&raquo;</a> (la raison est optionnelle) :</p><ul><li>L&#8217;emploi de la 1ère personne du singulier aide les développeurs à s&#8217;identifier à l&#8217;utilisateur</li><li>La structure de la phrase &#8211; représentée par 3 colonnes dans le <a
href="http://www.mountaingoatsoftware.com/product_backlog" title="Product backlog" >Product backlog</a> &#8211; aide le <a
href="http://www.mountaingoatsoftware.com/product_owner" title="Product Owner" >Product Owner</a> à comprendre et prioriser les user stories</li><li>Pour ne pas rajouter de bruit dans la description des user stories, il suffit de nommer les colonnes du Product backlog &laquo;&nbsp;En tant que &#8230;&nbsp;&raquo;, &laquo;&nbsp;je veux &#8230;&nbsp;&raquo;, &laquo;&nbsp;pour que &#8230;&nbsp;&raquo; et le backlog devient intuitif à lire.</li></ul><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Delasrialisationauparalllismeu"></a>De la sérialisation au parallélisme, une évolution incarnée par java.util.concurrent</h4><p>La programmation multi-threadée en java a évoluée : anciennement on utilisait la sérialisation incarnée par <code>synchronized</code>, désormais on peut faire du parallélisme avec l&#8217;introduction des API <code>java.util.concurrent</code> en Java 5.</p><p>Sharadjava nous présente dans sa Java Concurrency Series les différents aspects de cette nouvelle librairie :</p><ul><li><a
href="http://www.techgrasp.com/blogs/sharadjava/java-concurrency-series-simple-executor-example" title="Simple Executor example" >Simple Executor example</a> pour la parallélisation des tâches.</li><li><a
href="http://www.techgrasp.com/blogs/sharadjava/java-concurrency-series-examples-barrier" title="Barrier" >Barrier</a> pour l&#8217;attente entre tâches (on n&#8217;oubliera pas sur ce sujet le <a
href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/CountDownLatch.html" title="CountDownLatch" >CountDownLatch</a>).</li><li><a
href="http://www.techgrasp.com/blogs/sharadjava/java-concurrency-series-meaning-volatile-variable" title="Meaning of volatile" >Meaning of volatile</a> pour la visibilité inter-threads des valeurs des variables.</li></ul><h4><a
name="InnovationautourdeJPAJBossHibe"></a>Innovation autour de JPA : JBoss Hibernate confirme son domination avec Envers</h4><p>Après l&#8217;intégration de la recherche full text Lucene [1] et le support du Database Sharding, <a
href="http://www.hibernate.org" title="Hibernate" >Hibernate</a> confirme sa domination de l&#8217;innovation autour de JPA en ouvrant le chantier du versionnage des données. Cette problématique, bien que récurrente et accentuée par les nouvelles contraintes réglementaires (Sarbane &#038; Oaxley, etc), restait largement ignorées par nos frameworks et nos très chers design patterns. Seul Martin Fowler nous éclairait sur ce sujet délicat avec <a
href="http://www.martinfowler.com/ap2/timeNarrative.html" title="Patterns for things that change with time" >Patterns for things that change with time</a>.</p><p>JBoss comble aujourd&#8217;hui ce vide en lançant <a
href="http://www.jboss.org/envers/" title="Envers" >Envers</a>, une extension d&#8217;Hibernate qui versionne les données persistantes selon un pattern similaire au <a
href="http://www.martinfowler.com/ap2/temporalObject.html" title="Temporal Object" >Temporal Object</a> de Martin Fowler. Envers n&#8217;est qu&#8217;en version preview mais le projet est très prometteur et déjà une source d&#8217;inspiration pour les projets qui n&#8217;ont pas le temps d&#8217;attendre la première version stable.</p><p>On notera au passage qu&#8217;Envers préfère l&#8217;API standard JPA EntityManager à l&#8217;historique Session Hibernate ; on peut y voir un signe que le temps est venu pour les équipes projets de privilégier les standards JPA aux API historiques Hibernate.</p><p>Exemple d&#8217;entité persistante versionnée avec JBoss Envers</p><pre class="brush: java; title: ; notranslate">
@Entity
public class Person {
    @Id
    @GeneratedValue
    private Integer id;
    @Versioned
    private String name;
    @Versioned
    private String surname;
    @Versioned
    @ManyToOne
    private Address address;
   ...
}
</pre><p>[1] cf notre billet <a
href="http://blog.xebia.fr/2008/03/06/introduction-a-hibernate-search-googling-your-persistent-domain-model/" title="Introduction à Hibernate Search (Googling your Persistent Domain Model)" >Introduction à Hibernate Search (Googling your Persistent Domain Model)</a></p><h4><a
name="VideoIntroductiontoWebSphereeX"></a>Cas d&#8217;utilisation des grilles Java avec WebSphere eXtreme Scale/ ObjectGrid</h4><p>Billy Newport présente dans <a
href="http://www.devwebsphere.com/devwebsphere/2008/04/video-introduct.html" title="Video: Introduction to WebSphere eXtreme Scale/ObjectGrid with patterns and use cases" >Video: Introduction to WebSphere eXtreme Scale/ObjectGrid with patterns and use cases</a> les scénarios typiques d&#8217;utilisation de la grille Java d&#8217;IBM :</p><ul><li>Cache de proximité classique : la grille sert de Map distribuée ; l&#8217;application métier gère les données (chargement depuis les backends, mise en cache et sauvegarde des modifications dans les backends).</li><li>Cache de proximité avec &laquo;&nbsp;Loader synchrone&nbsp;&raquo; dans la grille : l&#8217;application métier se limite à demander des données à la grille et à les modifier ; la grille, grâce à un Loader, s&#8217;occupe de charger les données depuis les backends et sauvegarde en synchrone les données modifiées dans les backends.</li><li>Cache de proximité avec un &laquo;&nbsp;Loader à écriture différée&nbsp;&raquo; dans la grille : similaire au scénario précédent mais la sauvegarde des modifications dans les backends est asynchrone.</li><li>Cache collocalisé : l&#8217;application et la grille s&#8217;éxécutent dans les même JVM, chaque JVM héberge un noeud du cluster de l&#8217;application et un noeud de la grille. Ce scénario est typique de la mise en cache des sessions HTTP.</li></ul><p>On notera que les architectures de type <a
href="http://en.wikipedia.org/wiki/MapReduce" title="Map/Reduce" >Map/Reduce</a>, qui nécessitent une conception radicalement différente, ne semblent pas encore très répandues.</p><h4><a
name="JSRJAXRSRESTunehistoiredeRESTa"></a>JSR-311 JAX-RS REST une histoire de RESTaurant</h4><p>Dans cet <a
href="http://www.touilleur-express.fr/2008/04/25/jsr-311-jax-rs-rest-une-histoire-de-restaurant/" title="article" >article</a>, Nicolas Martignole nous présente l&#8217;architecture REST (<a
href="http://en.wikipedia.org/wiki/Representational_State_Transfer" title="Representational State Transfer" >Representational State Transfer</a>) et <a
href="http://jcp.org/en/jsr/detail?id=311" title="JSR 311: JAX-RS: The Java API for RESTful Web Services" >JSR 311: JAX-RS: The Java API for RESTful Web Services</a>. L&#8217;objectif de cette JSR est de faciliter la programmation d&#8217;applications REST en Java.<br
/> La première partie est consacrée à une introduction de REST (définition d&#8217;une ressource, lecture, création, mise à jour, suppression d&#8217;une ressource, Services Webs RESTfull).<br
/> La deuxième partie nous présente quelques détails sur l&#8217;implémentation JAX-RS avec Java.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="XKEleprogrammedelasessiondemai"></a>XKE, le programme de la session de mai</h4><p>Le prochain XKE (Xebia Knowledge Exchange) aura lieu le <strong>mardi</strong> 6 Mai 2008. Les sujets suivants seront abordés :</p><ul><li>Sessions Pratiques<ul><li>Terracotta, the Network Attached Memory (NAM)</li><li>java.util.concurrent, concours de developpement</li></ul></li></ul><ul><li>Technique<ul><li>Java et la Cryptographie</li></ul></li></ul><ul><li>Architecture<ul><li>Retour sur l&#8217;architecture de l&#8217;un des plus grand site de ecommerce de France</li><li><a
href="http://xp-france.net/index.php?option=com_content&#038;task=view&#038;id=48&#038;Itemid=120#S836" title="Tests unitaires avec les librairies de Mock" >Tests unitaires avec les librairies de Mock</a></li></ul></li></ul><ul><li>Xebia Hollande<ul><li>Intervention du CTO de <a
href="http://www.xebia.com" title="Xebia Hollande" >Xebia Hollande</a></li></ul></li></ul><p>Comme nous l&#8217;annoncions, les XKE sont <a
href="http://blog.xebia.fr/2008/02/06/xebia-ouvre-ses-journees-de-partage-de-la-connaissance-xke/" title="ouverts" >ouverts</a> à l&#8217;ensemble des personnes à l&#8217;écoute du marché de l&#8217;emploi autour des technologies Java/J2EE. Si vous êtes l&#8217;une d&#8217;entre elles , n&#8217;hésitez pas à contacter <a
href="mailto:mbacrot@xebia.fr" title="Mélanie Bacrot" >Mélanie Bacrot</a> pour vous inscrire.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/</link> <comments>http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/#comments</comments> <pubDate>Mon, 21 Apr 2008 16:24:29 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Acegi]]></category> <category><![CDATA[CXF]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Java Module System]]></category> <category><![CDATA[Maven]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Mule]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Spring]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Agilité Succès et échecs avec Scrum en Chine RIA Top 10 des problèmes des applications Flex Le coin de la technique Java Module System (JSR 277) vs. OSGI. La réconciliation ? CXF devient un Top Level Project de la fondation Apache Nouvelles de la [...]]]></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>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/#SuccsetchecsavecScrumenChine">Succès et échecs avec Scrum en Chine</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/#TopdesproblmesdesapplicationsF">Top 10 des problèmes des applications Flex</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/#JavaModuleSystemJSRvsOSGILarco">Java Module System (JSR 277) vs. OSGI. La réconciliation ?</a></li><li><a
href="http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/#CXFdevientunTopLevelProjectdel">CXF devient un Top Level Project de la fondation Apache</a></li><li><a
href="http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/#NouvellesdelacommunautMaven">Nouvelles de la communauté Maven</a></li><li><a
href="http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/#Muleunerefontepourallerplusloi">Mule 2, une refonte pour aller plus loin</a></li><li><a
href="http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/#SpringSecurityAcegiSecurityenp">Spring Security 2.0 : Acegi Security en plus simple</a></li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="SuccsetchecsavecScrumenChine"></a>Succès et échecs avec Scrum en Chine</h4><p>Jacky Li d&#8217;InfoQ China a étudié l&#8217;<a
href="http://www.infoq.com/articles/Agile-adoption-study-china" title="adoption de Scrum dans les entreprises chinoises" >adoption de Scrum dans les entreprises chinoises</a>. Elles ont essayé Scrum pour différentes raisons : leurs besoins changeaient trop souvent, nécessité de livrer fréquemment, ou parce que leur ancienne approche ne leur permettait plus de s&#8217;améliorer.<br
/> Parmi les 5 cas retenus, 3 compagnies ont adopté Scrum avec succès, les 2 autres ont essuyé un échec. Comme on apprend beaucoup aussi d&#8217;un échec, voici les raisons évoquées par les 2 sociétés concernées :</p><ul><li>certains dirigeants n&#8217;ont pas compris l&#8217;agilité, ils ont transformé les &laquo;&nbsp;daily scrum&nbsp;&raquo; en &laquo;&nbsp;daily report&nbsp;&raquo; (rapport journalier) avant de les abandonner</li><li>le 2e cas est une équipe offshore qui a abandonné les stand-up meetings et les plannings meetings, et où les développeurs priorisaient eux-mêmes les fonctionnalités du product backlog à implémenter</li></ul><p>Même dans les cas de succès, l&#8217;un des principaux problèmes lors de l&#8217;adoption reste la mauvaise compréhension de Scrum et des principes agiles par les dirigeants et leurs collègues.<br
/> A noter qu&#8217;une des sociétés interrogées a mené une enquête au sein de ses équipes : 68% se trouvent plus productifs avec Scrum qu&#8217;avec leur ancienne approche&#8230;</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="TopdesproblmesdesapplicationsF"></a>Top 10 des problèmes des applications Flex</h4><p>Dans <a
href="http://www.infoq.com/news/2008/04/top-10-flex-mistakes" title="cet article" >cet article</a>, l&#8217;équipe de <a
href="http://www.jamesward.org/wordpress/" title="James Ward" >James Ward</a> nous présente les erreurs et/ou problèmes que peuvent engendrer la mise en place d&#8217;applications Flex.</p><p>Ainsi, nous apprenons que des problèmes de standard (bouton retour, bookmarking&#8230;) et de manière de concevoir les applications Web apparaissent. Au niveau des transferts de données, Flex en propose plusieurs types (XML, SOAP&#8230;) mais certains d&#8217;entre eux posent des problématiques de performances.</p><p>Néanmoins, des pistes de solutions sont citées comme entre autres l&#8217;utilisation de <a
href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS" title="BlazeDS" >BlazeDS</a>, pratique à utiliser avec du Java en backend.<br
/> Flex permet d&#8217;élaborer des IHM avec de nombreuses animations, mais trop d&#8217;animations tue l&#8217;animation. Il est donc conseillé de ne mettre de l&#8217;animation lorsque celle-ci est réellement nécessaire.</p><p>Etant donnée leur jeunesse, les projets Flex n&#8217;ont pas encore d&#8217;écosystème de développement et d&#8217;intégration (ie intégration continue, tests unitaires&#8230;). Cependant, de plus en plus d&#8217;outils et de plugins apparaissent (<a
href="http://code.google.com/p/as3flexunitlib/" title="FlexUnit" >FlexUnit</a>, <a
href="http://code.google.com/p/flexcover/" title="FlexCover" >FlexCover</a>, <a
href="http://www.israfil.net/projects/mojo/maven-flex2-plugin/" title="plugin Maven" >plugin Maven</a>&#8230;) et doivent être mis en place au même titre que des projets « classiques ».<br
/> Enfin trouver des développeurs Flex sur le marché est difficile, mais pour des personnes étant familières avec le monde Web et la programmation d&#8217;UI, l&#8217;apprentissage du langage Flex (ActionScript) ainsi que de ses API ne devrait pas être un grand frein à la percée de Flex sur le marché.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="JavaModuleSystemJSRvsOSGILarco"></a>Java Module System (JSR 277) vs. OSGI. La réconciliation ?</h4><p>La grève des scénaristes à Hollywood n&#8217;aura finalement pas touché tout le monde. Si certaines de vos séries préférées ont été écourtées cette année, heureusement il n&#8217;en est pas de même partout. Plus haletant que 24, voici le pitch du nouvel épisode de la série : &laquo;&nbsp;Java Module System vs. OSGI&nbsp;&raquo;.</p><p><em>Résumé des épisodes précédents :</em></p><p>Sun a décidé de proposer une <a
href="http://blog.xebia.fr/2007/09/17/revue-de-presse-xebia-23/#JSR277" title="nouvelle solution" >nouvelle solution</a> d&#8217;assemblage de composants en ignorant les solutions (à peu près similaires) existantes. Au programme de cette solution : offrir le versionning, la gestion des dépendances, le stockage, packaging et distribution d&#8217;un nouveau type d&#8217;archive : le JAM. L&#8217;objectif étant d&#8217;inclure ces fonctionnalités dans la prochaine version du jdk dont <a
href="http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/" title="voici l'overview" >voici l&#8217;overview</a>.</p><p>La <a
href="http://www.jcp.org/en/jsr/detail?id=277" title="JSR 277 : Java Module System" >JSR 277 : Java Module System</a> a donc été lancée. Pourtant, de par les (trop) nombreuses (houleuses) discussions, les spécifications ont commencé à prendre un certain retard. Ce retard devenant inquiétant, <a
href="http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/#JavaModuleSystemOSGI" title="un nettoyage" >un nettoyage</a> a été demandé au sein de l&#8217;expert group chargé de valider les spécifications. Concernant OSGI, aucune véritable prise de position n&#8217;a été communiquée par Sun.</p><p><em>Nouveautés de la semaine :</em></p><p>Bryan Atsatt, membre de l&#8217;expert group, essaye de calmer le jeu en exposant <a
href="http://atsatt.blogspot.com/2008/04/jsr-277-could-be-great-for-osgi.html" title="certains bénéfices" >certains bénéfices</a> qu&#8217;OSGI pourrait tirer d&#8217;une intégration fine de ces bundles avec Java Module System. De son coté, Sun fait une annonce, peut être la principale sur ce sujet de la semaine : la prochaine version de leur serveur d&#8217;application Glassfish <a
href="http://www.eclipsezone.com/eclipse/forums/t92461.html" title="sera modularisée" >sera modularisée</a> &#8230; et un prototype existe : basé sur <a
href="http://felix.apache.org" title="Felix" >Felix</a> (l&#8217;implémentation Apache d&#8217;OSGI R4).</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/04/glassfishosgi.jpg" border="0" alt="glassfish et osgi" /></div><p>Pour le moment, d&#8217;après le <a
href="http://weblogs.java.net/blog/ss141213/" title="blog de Sahoo" >blog de Sahoo</a> dont nous avons repris le schéma ci-dessus, cela ressemble plus à une cohabitation entre bundles <a
href="https://hk2.dev.java.net/" title="HK2" >HK2</a> et OSGI. Par la suite, l&#8217;idée est de transformer les bundles HK2 en une surcouche à OSGI, puis de la faire disparaître peu à peu.</p><ul><li>L&#8217;annonce de Jérôme Dochez, tech lead Glassfish : <a
href="http://blogs.sun.com/dochez/entry/glassfish_v3_runs_on_osgi" title="GlassFish V3 runs on OSGi" >GlassFish V3 runs on OSGi</a>.</li><li>Sanjeeb Kumar Sahoo : <a
href="http://weblogs.java.net/blog/ss141213/archive/2008/04/glassfish_v3_on.html" title="GlassFish on OSGI - Part 1" >GlassFish on OSGI &#8211; Part 1</a>.</li><li><a
href="https://glassfish.dev.java.net/downloads/v3-techPreview-2.html" title="Téléchargez GlassFish V3 Preview 2" >Téléchargez GlassFish V3 Preview 2</a> pour voir les instructions osgi (<code>Export-Package</code> et <code>Require-Bundle</code>) dans les manifests aux côtés de leurs équivalents HK2.</li></ul><p>D&#8217;autre part, Mandy Chung, qui travaillait auparavant sur les APIs de management du Java SE, annonce sur son blog qu&#8217;un nouveau challenge se présente à elle : <a
href="http://weblogs.java.net/blog/mandychung/" title="interopérabilité entre Java Module System et OSGI" >l&#8217;interopérabilité entre Java Module System et OSGI</a>.</p><p>Affaire à suivre.</p><h4><a
name="CXFdevientunTopLevelProjectdel"></a>CXF devient un Top Level Project de la fondation Apache</h4><p>Le <a
href="http://incubator.apache.org/cxf/" title="framework SOAP CXF" >framework SOAP CXF</a>, successeur de <a
href="http://xfire.codehaus.org/" title="XFire" >XFire</a>, quitte l&#8217;incubateur de la fondation Apache pour <a
href="http://mail-archives.apache.org/mod_mbox/incubator-cxf-dev/200804.mbox/%3c46270223-618D-4A53-A9F5-60EE609C6BB4@jaguNET.com%3e" title="devenir un Top Level Project" >devenir un Top Level Project</a>.</p><p>Quels impacts pour les utilisateurs ?</p><ul><li>A court terme, le support de JAXB 2.1 et de JAXWS 2.1 avec <a
href="http://www.nabble.com/CXF-2.1-release-td16421846.html#a16422787" title="la release CXF 2.1 qui attendait que le projet quitte l'incubateur" >la release CXF 2.1 qui attendait que le projet quitte l&#8217;incubateur</a> et la disparition des messages d&#8217;erreur lors de l&#8217;édition des fichiers XML qui référencent des schémas XML de CXF (<a
href="http://issues.apache.org/jira/browse/CXF-957" title="CXF-957" >CXF-957</a>).</li><li>A plus long terme, le renforcement de CXF face à ses concurrents <a
href="https://jax-ws.dev.java.net/" title="JAXWS-RI" >JAXWS-RI</a> et <a
href="http://ws.apache.org/axis2/" title="Axis 2" >Axis 2</a>. On notera sur ce point que le nouveau <a
href="http://mulesource.org/display/MULE/Mule+2.0+Release+Notes" title="Mule 2 à choisi CXF pour remplacer XFire" >Mule 2 à choisi CXF pour remplacer XFire</a>.</li></ul><p>Cette promotion est l&#8217;occasion de regarder <a
href="http://www.apache.org/foundation/how-it-works.html" title="le fonctionnement de la Fondation Apache" >le fonctionnement de la Fondation Apache</a>.</p><h4><a
name="NouvellesdelacommunautMaven"></a>Nouvelles de la communauté Maven</h4><p>Vous <a
href="http://blog.octo.com/index.php/2008/04/14/102-maven-community-news-fevrier-et-mars-2008" title="trouverez sur le blog d'Octo" >trouverez sur le blog d&#8217;Octo</a> quelques nouvelles de la communauté Maven, avec en particulier la sortie de Maven 2.0.9 annoncée la semaine passée, et la liste des plugins principaux mis à jour ces deux derniers mois.</p><h4><a
name="Muleunerefontepourallerplusloi"></a>Mule 2, une refonte pour aller plus loin</h4><p>Le célèbre ESB Open Source <a
href="http://www.theserverside.com/news/thread.tss?thread_id=49081" title="Mule annonce la sortie de sa version 2.0" >Mule annonce la sortie de sa version 2.0</a>, une remise à plat de l&#8217;architecture interne de l&#8217;ESB préalable au développement de nouvelles technologies telles que <a
href="http://en.wikipedia.org/wiki/Service_component_architecture" title="SCA" >SCA</a> et <a
href="http://en.wikipedia.org/wiki/Osgi" title="OSGI" >OSGI</a>.</p><p>On notera :</p><ul><li>La refonte des API et de la configuration qui repose désormais sur la configuration XML par namespace introduite avec Spring 2.0.</li><li>Le framework d&#8217;évaluation d&#8217;expression (XPath, Groovy, etc) pour faciliter le traitement des messages.</li><li>La généralisation du modèle de streaming qui évite la représentation complète en mémoire des messages (HTTP, file, etc).</li><li>L&#8217;écartement du standard <a
href="http://en.wikipedia.org/wiki/JBI" title="JBI" >JBI</a> comme le rappelle Ross Mason dans <a
href="http://rossmason.blogspot.com/2008/04/jbi-misses-mark.html" title="JBI misses mark" >JBI misses mark</a>.</li><li>L&#8217;annonce d&#8217;un probable support de SCA.</li></ul><p>Nous aurions aimé :</p><ul><li>L&#8217;OSGI-fication de l&#8217;ESB à l&#8217;instar de Websphere ESB, de BEA Aqualogic et du prochain ServiceMix 4. Ce chantier est annoncé pour la version 2.1 (cf <a
href="http://mule.mulesource.org/jira/browse/MULE-981" title="MULE-981" >MULE-981</a>) mais nous pouvons craindre que son ampleur nécessite plus qu&#8217;un changement de release mineur et relève plus d&#8217;une version 3.</li><li>L&#8217;intégration limitée des <a
href="http://www.eaipatterns.com" title="Enterprise Integration Patterns" >Enterprise Integration Patterns</a> alors qu&#8217;<a
href="http://activemq.apache.org/camel/enterprise-integration-patterns.html" title="Apache Camel" >Apache Camel</a> et <a
href="http://www.springframework.org/spring-integration" title="Spring Integration " >Spring Integration </a> en font leurs éléments principaux de routage [1].</li></ul><p>Si cette refonte de Mule est pleine de promesses, l&#8217;absence de technologies phares comme OSGI, SCA et les Enterprise Integration Patterns font hélas de Mule un produit en retrait face aux <a
href="http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/" title="'lightweight ESB'" >&#8216;lightweight ESB&#8217;</a> que sont Apache Camel et Spring Integration.</p><h4><a
name="SpringSecurityAcegiSecurityenp"></a>Spring Security 2.0 : Acegi Security en plus simple</h4><p>Le très réputé framework de sécurité Java <a
href="http://acegisecurity.org/" title="Acegi" >Acegi</a> profite de sa release 2.0 pour rejoindre le giron de SpringSource et devenir <a
href="http://static.springframework.org/spring-security/site/" title="Spring Security 2.0" >Spring Security 2.0</a>.</p><p>On notera de cette release :</p><ul><li><strong>La grande simplification et une configuration beaucoup moins verbeuse</strong> grâce à :</li><ul><li>Une configuration XML Spring à base de namespaces</li><li>Une configuration XML Spring à base de namespaces</li><li>Exemple de configuration :<pre class="brush: xml; title: ; notranslate">
&lt;security:http&gt;
   &lt;security:intercept-url pattern=&quot;/**&quot; access=&quot;ROLE_USER&quot; /&gt;
   &lt;security:form-login /&gt;
   &lt;security:anonymous /&gt;
   &lt;security:http-basic /&gt;
   &lt;security:logout /&gt;
   &lt;security:remember-me /&gt;
&lt;/security:http&gt;
</pre></li></ul></ul><ul><li>Le support du standard émergent de Web SSO <a
href="http://en.wikipedia.org/wiki/OpenID" title="OpenID" >OpenID</a> (notamment utilisé par Google, IBM, Sun et Yahoo) ainsi que de l&#8217;authentification <a
href="http://en.wikipedia.org/wiki/NTLM" title="Microsoft NTLM" >Microsoft NTLM</a>.</li><li>L&#8217;amélioration de la gestion des utilisateurs, des groupes et des rôles qui deviennent hiérarchiques.</li></ul><p>L&#8217;intégration au portfolio Spring et la grande simplification de la configuration en font un framework incontournable de l&#8217;écosystème Java.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/</link> <comments>http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/#comments</comments> <pubDate>Mon, 07 Apr 2008 17:27:10 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[AIR]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[IBM]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SCA]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Websphere]]></category> <category><![CDATA[XP]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Microsoft se rapproche de la fondation Eclipse Eclispe 4, une refonte du socle ? SpringSource Application Management Suite (AMS) Agilité Polémique : Scrum aliène-t-il XP ? RIA Adobe AIR pour Linux Le coin de la technique SCA Java EE Integration [...]]]></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/2008/04/07/revue-de-presse-xebia-51/#MicrosoftEclipse">Microsoft se rapproche de la fondation Eclipse</a></li><li><a
href="http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/#Eclispe4">Eclispe 4, une refonte du socle ?</a></li><li><a
href="http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/#AMS">SpringSource Application Management Suite (AMS)</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/#ScrumXP">Polémique : Scrum aliène-t-il XP ?</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/#AdobeAIRpourLinux">Adobe AIR pour Linux</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/#SCA">SCA Java EE Integration specification : v0.9</a></li><li><a
href="http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/#WebsphereMQV7">IBM annonce Websphere MQ V7 pour Juin</a></li><li><a
href="http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/#Cyclomatique">Complexité cyclomatique optimale : 11 selon Enerjy !</a></li><li><a
href="http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/#JavaModuleSystemOSGI">Java Module System (JSR-277) et OSGI, un silence pesant</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/2008/04/07/revue-de-presse-xebia-51/#avril">Poissons d&#8217;avril</a></li></ul><hr/><h3>Actualité éditeurs / SSII</h3><h4><a
name="MicrosoftEclipse"></a>Microsoft se rapproche de la fondation Eclipse</h4><p>A l&#8217;occasion d&#8217;EclipseCon 08, Sam Ramji, leader de la <a
href="http://port25.technet.com/">communauté Open Source</a> chez Microsoft, a <a
href="http://port25.technet.com/archive/2008/03/19/supernova.aspx">annoncé</a> le début d&#8217;une collaboration entre La fondation Eclipse et Microsoft.<br
/> Le principal but de ce rapprochement concerne une meilleure intégration du toolkit graphique d&#8217;Eclipse <a
href="http://www.eclipse.org/swt/">SWT</a> avec <a
href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation">Windows Presentation Foundation (WPF)</a>.</p><h4><a
name="Eclispe4"></a>Eclispe 4, une refonte du socle ?</h4><p>Voulant conquérir de nouveaux horizons, notamment côté serveur, la fondation Eclipse <a
href="http://dev.eclipse.org/mhonarc/lists/eclipse.org-committers/msg00504.html">annonce</a> la création d&#8217;un nouveau composant appelé e4. Le but principal de ce projet est de poser les bases du futur Eclipse 4.0. Partant de zéro, son rôle sera de simplifier la plateforme Eclipse et d&#8217;être résolument tourné vers le web.<br
/> Prévu au mieux pour fin 2009, Eclipse 4 sera développé en parallèle d&#8217;Eclipse 3.4 (Ganymede) et devrait assurer le compatibilité des plugins existants.</p><h4><a
name="AMS"></a>SpringSource Application Management Suite (AMS)</h4><p>SpringSource <a
href="http://blog.springsource.com/main/2008/03/31/springsource-application-management-suite-ams-released/">vient de livrer</a> une solution de monitoring des applications basée sur Spring. Voyons ici un système concurrent de <a
href="http://www.glassbox.com/">Glassbox</a>. Cependant, cet outil tire partie des nouvelles possibilités de configuration par annotation offertes par Spring 2.5. Il comprend automatiquement les annotations @Controller, @Repository, @Transactional, @Component et @Service. L&#8217;avantage donc par rapport à Glassbox finalement c&#8217;est la prise en compte automatique des beans gérés par Spring dans le monitoring.</p><p>SpringSource AMS est basé sur Hyperic&#8217;s HQ Enterprise Edition, fruit du récent partenariat entre les deux sociétés.</p><p>Un outil résolument à suivre &#8230;.</p><h3>Agilité</h3><h4><a
name="ScrumXP"></a>Polémique : Scrum aliène-t-il XP ?</h4><p>Notre collègue <a
href="http://vikashazrati.wordpress.com/about/">Vikas Hazrati</a> a résumé sur <a
href="http://www.infoq.com/news/2008/04/scrum-alienating-xp">InfoQ: Do Extreme Programming Folks Care about Scrum?</a> une discussion très &laquo;&nbsp;animée&nbsp;&raquo; initiée par <a
href="http://www.danube.com/blog/michaeljames">Michael James</a> à propos de Scrum vue par les praticiens d&#8217;XP (eXtreme Programming). Ce dernier pense que Scrum et XP sont des alliés, mais ce n&#8217;est pas l&#8217;avis de tout le monde.</p><p>Comme Guillaume Bodet l&#8217;expliquait dans <a
href="http://blog.xebia.fr/2008/01/10/scrum-ou-xp-scrum-et-xp/">Scrum ou XP ? Scrum et XP !</a>, nous pensons que Scrum et XP sont complémentaires, Scrum se positionne au niveau de la gestion/organisation de projet tandis que XP concerne les activités de développement.<br
/> Mais comme le dit Bruce Robinson, XP n&#8217;est pas la seule méthode de développement et elle n&#8217;est pas forcément la plus adaptée dans tous les cas, on peut par exemple préférer la revue de code au pair programming.</p><p><a
href="http://alistair.cockburn.us/index.php/Main_Page">Alistair Cockburn</a> répète que les pratiques préconisées par XP sont utiles mais pas nécessaires, des projets fonctionnent très bien sans XP.<br
/> Peu importe la méthode, mais tous sont d&#8217;accord qu&#8217;un projet nécessite des pratiques de développement pour réussir. Effectivement Scrum fournit un cadre méthodologique mais elle nécessite d&#8217;être complétée, &laquo;&nbsp;implémentée&nbsp;&raquo; par des pratiques de développement.</p><p>Wayne Mack propose l&#8217;approche du menu chinois : apprenez les 2 méthodes, choisissez ensuite les éléments qui vous semble intéressants parmi le menu.<br
/> Attention toutefois, Vikas Hazrati nous rappelle à travers le <a
href="http://vikashazrati.wordpress.com/2008/01/27/so-your-agile-adoption-failed-ever-heard-of-shu-ha-ri/">ShuHaRi</a> que choisir les éléments du menu et créer sa propre méthode demande de la maturité, il conseille de commencer par expérimenter une méthode telle que préconisée, et seulement une fois à l&#8217;aise avec la méthode vous pouvez essayer de la personnaliser.</p><p>Pour en revenir aux valeurs de l&#8217;agilité, la méthode n&#8217;est pas le principal, les personnes et leurs interactions sont plus importantes. Car même si vous appliquez de bonnes pratiques, cela ne vous protège pas contre une &laquo;&nbsp;mauvaise&nbsp;&raquo; équipe (manque de compétences techniques, mauvais relationnel, esprit compliqué&#8230;). Quelle que soit la méthode il faut des gens talentueux et motivés pour mener à bien un projet selon <a
href="http://c2.com/cgi/wiki?JbRainsberger">J. B. Rainsberger</a>, cependant un processus peut aider et XP semble le mieux adapté pour compléter Scrum.</p><p>Même si le groupe n&#8217;a pu se mettre d&#8217;accord au final, certains ont mentionné avoir utilisé Scrum et XP ensemble avec succès !</p><p>La discussion originale est sur <a
href="http://tech.groups.yahoo.com/group/extremeprogramming/message/139415">Yahoo! Extreme Programming: How is Scrum alienating the eXtreme Programming folks?</a>.</p><h3>RIA</h3><h4><a
name="AdobeAIRpourLinux"></a>Adobe AIR pour Linux</h4><p><a
href="http://labs.adobe.com/technologies/air/">Adobe AIR</a> est enfin disponible pour la plateforme Linux. Seul bémol, celui-ci est une version alpha. Néanmoins, cette version contient le runtime, un exemple d&#8217;application et le AIR SDK. Par ailleurs, <a
href="http://labs.adobe.com/downloads/flexbuilder_linux.html">Flex Builder 3</a> a aussi été mis à jour afin de supporter la mise en place d&#8217;applications AIR sous Linux.<br
/> Adobe continue son ascension et remporte de plus en plus de succès et d&#8217;adhésion. Va t-on vers une ère Adobe ?</p><h3>Le coin de la technique</h3><h4><a
name="SCA"></a>SCA Java EE Integration specification : v0.9</h4><p>Pendant que le Java Community Process tarde à statuer sur le modèle de composants de bas niveau OSGI, la communauté <a
href="http://en.wikipedia.org/wiki/Service_component_architecture">SCA </a> continue à avancer les pions de son standard d&#8217;assemblage de composants de haut niveau avec la publication d&#8217;une première ébauche de la <a
href="http://www.infoq.com/news/2008/04/sca-java-ee">SCA Java EE Integration specification</a>. Cette spécification a le mérite d&#8217;apaiser le monde Java EE après la tonitruante déclaration de Michael Rowley (BEA) : <em>&laquo;&nbsp;EJB session beans, MDBs, JAX-WS and even JMS aren&#8217;t usually necessary in an SCA universe&nbsp;&raquo;</em> dans <a
href="http://dev2dev.bea.com/blog/mrowley/archive/2007/05/does_sca_define.html">Does SCA define a new programming model for Java?</a>.</p><p>Quel impact pour le quotidien des développeurs Java ? Quasiment aucun pour le moment ; SCA est une spécification à l&#8217;utilisation encore confidentielle (SCA est principalement présent dans Websphere ESB et Process Server).</p><h4><a
name="WebsphereMQV7"></a>IBM annonce Websphere MQ V7 pour Juin</h4><p>Le marché des middlewares de messages est lui aussi modifié par l&#8217;émergence d&#8217;offres open source matures (<a
href="http://activemq.apache.org">Apache ActiveMQ</a>, etc ). Dans cette atmosphère dynamisée, IBM Websphere MQ, le leader du marché, tourne la page de trois ans de V6.0 avec <a
href="http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=an&amp;subtype=ca&amp;appname=GPA&amp;htmlfid=897/ENUS208-068">l&#8217;annonce de WMQ V7.0 pour Juin 2008</a>.<br
/> Les principales améliorations :</p><ul><li>Amélioration des performances (particulièrement publish/subscribe, réception sur selector et messages non persistents).</li><li>Simplification de l&#8217;administration du mode publish/subscribe et des ressources JMS.</li><li><a
href="http://www-306.ibm.com/software/integration/wmq/httpbridge/">Bridge HTTP</a> pour directement exposer les queues à des clients Web 2.0/Ajax.</li><li>Intégration native du mode publish/subscribe  au Queue Manager [1].</li></ul><p>Nous aurions espéré :</p><ul><li>Un mécanisme de relivraison différé des messages équivalent à la <a
href="http://activemq.apache.org/redelivery-policy.html">redelivery policy d&#8217;ActiveMQ</a>.</li><li>Une amélioration des performances des temporary queues similaire à celle apportée aux selectors. L&#8217;utilisation de files temporaires est un modèle encore plus simple que les selectors pour réaliser des invocations synchrones avec un middleware de messages (cf <a
href="http://enterpriseintegrationpatterns.com/RequestReply.html">pattern request/reply</a>).</li></ul><p>Plus d&#8217;informations dans <a
href="ftp://ftp.software.ibm.com/software/websphere/pdf/DRAFT_WebSphere_MQ_V7_Redbook.pdf">Redbook: WebSphere MQ V7.0 Features and Enhancements (Draft)</a>.</p><p>[1] En v6.0, un broker périphérique était utilisé.</p><h4><a
name="Cyclomatique"></a>Complexité cyclomatique optimale : 11 selon Enerjy !</h4><p>Les outils d&#8217;analyse statique de code fleurissent avec l&#8217;essor des serveur d&#8217;intégration continue. L&#8217;éditeur <a
href="http://www.enerjy.com/">Enerjy</a>, après avoir étudié des projets open source réputés à la loupe de son analyseur, <a
href="http://www.infoq.com/news/2008/03/cyclomaticcomplexity">révise la valeur optimale de la complexité </a> à 11. On notera que cette valeur est légèrement supérieure à celle retenue par CheckStyle, le leader de l&#8217;analyse statique, qui estime que <a
href="http://checkstyle.sourceforge.net/config_metrics.html#CyclomaticComplexity">10 est déjà excessif</a>.</p><p>Si la valeur exacte est sujette à débat, c&#8217;est l&#8217;occasion de se rappeler que la complexité cyclomatique est un indicateur pertinent de qualité du code et que les environnements de développement et serveurs d&#8217;intégration continue rendent aujourd&#8217;hui facile le suivi de ces indicateurs.</p><h4><a
name="JavaModuleSystemOSGI"></a>Java Module System (JSR-277) et OSGI, un silence pesant</h4><p>Nouveau rebondissement dans le feuilleton &laquo;&nbsp;<a
href="http://jcp.org/en/jsr/detail?id=277">JSR-277 : Java Modules System</a> versus OSGI&nbsp;&raquo;.</p><p>La JSR d&#8217;assemblage des composants menée par Sun prenait un retard inquiétant pour être intégrée à la version 7 de Java (Dolphin). Un petit répit s&#8217;annonce avec le décalage de la sortie de Dolphin désormais planifiée pour Janvier 2009.</p><p>Si cette prolongation donne une chance à la JSR-277 de figurer dans la prochaine version de Java, il reste néanmoins un problème de gouvernance de fond sur cette spécification. Peter Kriens (OSGI Alliance) expliquait en Septembre dernier qu&#8217;il a été <a
href="http://www.infoq.com/interviews/osgi-peter-kriens">refoulé de l&#8217;expert group sans raison convaincante</a>. Dalibor Topic (kaffe.org) a <a
href="http://mail.openjdk.java.net/pipermail/modules-dev/2008-January/000463.html">demandé en Janvier l&#8217;éviction de 9 membres de ce même expert group</a> sur une mailing list du projet Open JDK. Les déclarations fusent et l&#8217;expert group de la JSR 277 qui ne communique toujours rien de concret sur la position du très important OSGI, laissant la place à la rumeur et au mécontentement &#8230;</p><h3>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="avril"></a>Poissons d&#8217;avril</h4><p>Premier jour d&#8217;avril oblige, certains ont annoncé de fausses nouvelles, surprenantes ou amusantes. Voici une liste des poissons d&#8217;avril que nous avons recensés :</p><ul><li><a
href="http://www.infoq.com/news/2008/04/microsoft-springsource-purchase">Microsoft rachète SpringSource</a></li><li><a
href="http://www.theserverside.com/news/thread.tss?thread_id=18635">Microsoft rachète TheServerSide.com</a> (décidément Microsoft est en forme)</li><li><a
href="http://www.google.com/virgle/">Google et Richard Branson (Virgin) s&#8217;associent pour lancer la 1ère colonie sur Mars</a></li><li><a
href="http://blog.catchpole.net/2008/04/strange-imagery-found-in-java-class.html">De l&#8217;ASCII Art dans le bytecode Java</a></li><li><a
href="http://www.zeroturnaround.com/blog/javarebel-goes-ai/">Le projet JavaRebel</a> intègre une Intelligence Artificielle qui code à votre place pendant vos pauses-cafés</li><li>Cédric Beust lance le projet Toledo : <a
href="http://beust.com/weblog/archives/000480.html">un générateur de code multi-langage</a></li><li><a
href="http://www.eclipse.org/org/press-release/20080401_nextgen.php">Eclipse e4 déjà disponible</a></li><li><a
href="http://www.theserverside.com/news/thread.tss?thread_id=48904">TSS devient multilingue</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/04/07/revue-de-presse-xebia-51/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> </channel> </rss>
