<?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; Google</title> <atom:link href="http://blog.xebia.fr/tag/google/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/10/11/revue-de-presse-xebia-233/</link> <comments>http://blog.xebia.fr/2011/10/11/revue-de-presse-xebia-233/#comments</comments> <pubDate>Tue, 11 Oct 2011 21:00:41 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[crowdsourcing]]></category> <category><![CDATA[Dart]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[JavaOne]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[TomEE]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=8813</guid> <description><![CDATA[La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia. Actualité éditeurs / SSII JavaOne Google Dart Google Cloud SQL Apache TomEE Agilité SCRUM se met au crowdsourcing Actualité éditeurs / SSII JavaOne La conférence JavaOne 2011 s&#8217;est tenue la semaine passée à San Francisco. Comme chaque année, elle a été l&#8217;occasion d&#8217;un grand [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /></p><p><em>La revue de presse 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/10/11/revue-de-presse-xebia-233/#JavaOne">JavaOne</a></li><li><a
href="http://blog.xebia.fr/2011/10/11/revue-de-presse-xebia-233/#GoogleDart">Google Dart</a></li><li><a
href="http://blog.xebia.fr/2011/10/11/revue-de-presse-xebia-233/#GoogleCloudSQL">Google Cloud SQL</a></li><li><a
href="http://blog.xebia.fr/2011/10/11/revue-de-presse-xebia-233/#ApacheTomEE">Apache TomEE</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/10/11/revue-de-presse-xebia-233/#SCRUMsemetaucrowdsourcing">SCRUM se met au crowdsourcing</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="JavaOne"></a>JavaOne</h4><p>La conférence <strong>JavaOne</strong> 2011 s&#8217;est tenue la semaine passée à San Francisco. Comme chaque année, elle a été l&#8217;occasion d&#8217;un grand nombre d&#8217;annonces, de <em>keynotes</em> et de plans sur le futur de Java. On notera après avoir pris la température auprès de la communauté, que celle-ci semble moins inquiète que dans un récent passé: Oracle est là depuis un moment maintenant, les choses semblent s’être stabilisées et clarifiées. La récente arrivée de Java 7 ne doit pas y être pour rien. Parmi les diverses annonces, on retiendra surtout :</p><ul><li>Java 8 est retardé à début 2013. Nous aurons le temps de vous reparler des nouveaux apports.</li><li>Java ME tend à se rapprocher de Java SE et vise à en devenir un sous ensemble. L’intérêt est d&#8217;unifier les communautés de ces 2 versions.</li><li>Java EE 7 est en préparation, orienté Cloud et <a
title="multitenancy" href="http://blog.loof.fr/2011/06/multi-tenancy.html">multi-tenancy</a></li><li>JavaFX n&#8217;est pas mort. Les mauvaises langues diront que le projet ressort du placard chaque année pour JavaOne. Mais Oracle semble décidé à le faire avancer: il devrait progressivement devenir complètement OpenSource et une version 3 est prévue, intégrée directement dans le JDK 8.</li><li>Pour rêver un peu, quelques pistes pour le JDK 9 ont été évoquées. On parle de VM s&#8217;adaptant toutes seules aux applications (plus de XmX et autres barbaries ?!), d&#8217;un nouveau Meta Object Protocol améliorant le support entre langages&#8230; Là encore, nous aurons laaaargement le temps d&#8217;en reparler !</li></ul><p>On regrettera encore malgré tout l&#8217;absence de <em>speakers</em> de Google, à cause du procès opposant celui-ci à Oracle et alors que la compagnie n&#8217;est pas la moins active dans l’écosystème Java.<br
/> Le <a
title="blog suivant" href="http://marxsoftware.blogspot.com/2011/10/javaone-2011-tremendous-success.html">blog suivant</a> recense nombre d&#8217;articles sur JavaOne et vous pourrez retrouver quelques <em>roadmaps</em> sur <a
title="le podcast JavaSpotlight" href="http://blogs.oracle.com/javaspotlight/entry/java_spotlight_episode_51_live">le podcast JavaSpotlight</a>.</p><p>Parmi les autres annonces intéressantes, on notera l&#8217;annonce du <strong>serveur Apache TomEE</strong> qui est maintenant certifié EE 6 Web Profile. C&#8217;est un serveur Java EE qui se veut léger, basé sur un Tomcat tout ce qu&#8217;il y a de plus standard avec utilisation d&#8217;une librairie Apache pour chacune des fonctionnalités requises par la norme Web Profile: on retrouvera ainsi Apache OpenWebBeans, Apache MyFaces, Apache ActiveMQ, Apache OpenJPA et Apache CXF.<br
/> Et pour finir, Oracle a annoncé une nouvelle solution <strong>NoSQL</strong>. Le géant des bases relationnelles compte donc se diversifier en élargissant son offre. Retrouvez tous les détails de cette solution basée sur Java <a
title="chez infoQ" href="http://www.infoq.com/news/2011/10/Oracle-NoSQL-Database">chez infoQ</a>.</p><h4><a
name="GoogleDart"></a>Google Dart</h4><p>A l&#8217;occasion de la <a
title="GotoCon" href="http://gotocon.com/">GotoCon</a>, Lars Bak le créateur de la machine JavaScript V8 de Chrome et Gilad Bracha auteur du langage <a
title="NewSpeak" href="http://newspeaklanguage.org/">NewSpeak</a> ont annoncé la naissance d&#8217;un nouveau langage de script pour les navigateurs nom de code Dart. L&#8217;annonce concerne le disponibilité de ce langage en Technology Preview, il n&#8217;est pour le moment pas supporté par Chrome.<br
/> Ce langage inspiré de la syntaxe JavaScript offre de plus le support de la concurrence de type acteurs. Notez de plus qu&#8217;il permet de créer des applications pour iPad.<br
/> Quelques caractéristiques du langage:</p><ul><li>Orienté objet avec classe, interface, et héritage</li><li>Typage optionnel</li><li>Mono-thread</li></ul><p>Selon le paradigme acteur, les pocessus dart sont isolés et ne peuvent communiquer entre eux que par une API de messaging.<br
/> Dart supporte différents type d’éxecutions:</p><ul><li>JavaScript &#8211; Avec le compilateur DartC les .dart sont compilés JavaScript.</li><li>DartVM &#8211; Une machine virtuelle permet d’éxecuter directement les scripts Dart.</li><li>Un utilitaire permet de créer et packager une image binaire de la heap qui pourra être exécutée par la suite.</li></ul><p>Côté outillage, Dart propose un éditeur basé sur Eclipse avec support de l’auto-complétion. Bref, avec Dart, Google semble vouloir proposer une alternative à JavaScript permettant enfin de structurer son code et probablement de réconcilier les Javaïstes avec la programmation côté navigateur. Une belle initiative à laquelle nous souhaitons un franc succès.<br
/> Pour plus d’information:</p><ul><li><a
title="Lannonce sur InfoQ" href="http://www.infoq.com/news/2011/10/google-dart-language">L’annonce sur InfoQ</a></li><li><a
title="Dartlangorg" href="http://www.dartlang.org/">Dartlang.org</a></li><li><a
title="Google code de Dart" href="http://code.google.com/p/dart/">Google code de Dart</a></li></ul><h4><a
name="GoogleCloudSQL"></a>Google Cloud SQL</h4><p>Google App Engine, la solution de cloud PaaS made in Google offre dorénavant la possibilité d&#8217;utiliser une base de données relationnelle de type MySql.<br
/> Ce service nommée <a
title="Google Cloud SQL" href="http://googleappengine.blogspot.com/2011/10/google-cloud-sql-your-database-in-cloud.html">Google Cloud SQL</a> répond à de nombreuses demandes d&#8217;utilisateurs, qui souhaitaient une manière plus simple de persister ses données que la solution <a
title="BigTable" href="http://labs.google.com/papers/bigtable.html">BigTable</a>.</p><p>Comme on pouvait s&#8217;y attendre, ce service ne nécessite aucune maintenance, ni administration. Une interface d&#8217;administration est néanmoins fournie. Vous avez la possibilité d&#8217;importer ou d&#8217;exporter votre base de données MySQL. De plus, il offre un mécanisme de réplication géolocalisé des données sur des centres de données.</p><p>Pour le moment, ce nouveau service est gratuit et mis à disposition d&#8217;un nombre limité d&#8217;utilisateurs. Par ailleurs, les quotas fixés sont plutôt modestes: 5 requêtes par seconde et la taille d&#8217;une requête est limitée à 15MO. Si vous êtes intéressé, c&#8217;est <a
title="ici" href="http://code.google.com/intl/fr/apis/sql/docs/before_you_begin.html#enroll">ici</a> pour s&#8217;inscrire.</p><h4><a
name="ApacheTomEE"></a>Apache TomEE</h4><p>Apache a profité de JavaOne pour annoncer la sortie de <a
title="TomEE" href="http://www.infoq.com/news/2011/10/apache-tomee">TomEE</a> en version Bêta. La particularité de ce serveur web est d&#8217;être certifié JEE 6 Web Profile.<br
/> Il s&#8217;ajoute à la liste des serveurs open source déjà existant compatibles JEE 6 Web Profile: GlassFish, JBoss et Apache Geronimo.</p><p>Ce serveur est assemblé à partir d&#8217;un simple Apache Tomcat, auquel ont été ajoutées différentes implémentations Apache pour fournir tous les services EE.<br
/> Voici les implémentations des différentes briques de la stack JEE embarquées dans TomEE:</p><ul><li>CDI: Apache OpenWebBeans</li><li>EJB: Apache OpenEJB</li><li>Javamail: Apache Geronimo JavaMail</li><li>JPA: Apache OpenJPA</li><li>JSF: Apache MyFaces</li><li>JTA: Apache Geronimo Transaction</li><li>Connector: Apache Geronimo Connector</li><li>JMS: Apache ActiveMQ</li><li>Web Services: Apache CXF</li></ul><p>La philosophie d&#8217;Apache TomEE est d&#8217;offrir une solution simple et légère pour faire du JEE. Ce serveur semble bien prédisposé pour les solutions de Cloud avec notamment sa faible taille mémoire (&lt; 24 Mo).<br
/> Toutes les informations et le téléchargement se trouvent <a
title="ici" href="http://openejb.apache.org/downloads.html">ici</a>.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="SCRUMsemetaucrowdsourcing"></a>SCRUM se met au crowdsourcing</h4><p>La plus populaire des méthodes agiles marque un tournant significatif dans son histoire. Les co-créateurs ont décidé de laisser la possibilité à chacun de proposer des modifications ou des extensions au cadre de base. <a
title="Cette annonce" href="http://www.scrum.org/news/2011/10/6/scrum-is-open-for-modification-and-extension.html">Cette annonce</a> intervenue peu avant le week-end serait presque passé inaperçue. Il y a quand même eu quelques réactions spontanées, notamment David Anderson, le meneur du mouvement Kanban, qui se demandait sur Twitter qui serait le premier à proposer une extension Kanban pour Scrum.</p><div
align="center"><a
href="http://blog.xebia.fr/wp-content/uploads/2011/10/SCRUM_crowdsourcing.png"><br
/> <img
class="size-full wp-image-8815" title="SCRUM_crowdsourcing" src="http://blog.xebia.fr/wp-content/uploads/2011/10/SCRUM_crowdsourcing.png" alt="" width="200" height="108" /><br
/> </a></div><p>De notre côté on se demande qui sera la première SSII française à proposer une extension de SCRUM pour remettre un rôle de chef de projet et de MOA dans tout ça ? Heureusement pour veiller aux dérives, il existe un comité de revue des propositions dont on connait au moins 2 personnes: James Coplien et David Starr. Ce comité est en charge de revoir les propositions et interagir avec leur auteur. L&#8217;histoire nous dira si ce comité, censé veiller au grain, adopte une ligne plutôt rigide ou permissive. Dans tous les cas le modèle pour proposer une modification ou une extension (c&#8217;est le même) demande de bien préciser le contexte dans lequel l&#8217;élément proposé est utile, à la façon d&#8217;une approche par pattern. Il faut également que la proposition soit appuyée par un sponsor et on nous promet une réaction sous 3 mois. Il est possible de voir en ligne <a
title="la liste" href="http://www.scrum.org/scrum-extensions/">la liste</a> des extension proposées. Pour l&#8217;instant on en trouve une seule qui émane de David Starr, du comité de revue. Elle traite, d&#8217;après le titre, du découpage en tâche dans le sprint planning. Ah, mais ce n&#8217;est pas ce qui avait été supprimé de SCRUM en Juillet ça ? D&#8217;ailleurs les <a
title="explications" href="http://www.scrum.org/scrum-guide-updates/#backlog">explications</a> sur les modifications du Sprint Backlog provenaient également de David Starr. Donc si j&#8217;ai bien compris, il explique pourquoi ça disparait de SCRUM et ensuite il propose une extension pour le réintroduire si l&#8217;on veut. Bon, j&#8217;espère juste que SCRUM ne va pas finir comme le RUP avec un site web qu&#8217;on peut configurer à partir d&#8217;une bibliothèque d&#8217;extensions&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/10/11/revue-de-presse-xebia-233/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Les annonces de Google IO 2011</title><link>http://blog.xebia.fr/2011/05/13/les-annonces-de-google-io-2011/</link> <comments>http://blog.xebia.fr/2011/05/13/les-annonces-de-google-io-2011/#comments</comments> <pubDate>Fri, 13 May 2011 12:16:49 +0000</pubDate> <dc:creator>Steve Klouvi</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Android@Home]]></category> <category><![CDATA[Chrome]]></category> <category><![CDATA[Chromebooks]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Google AppEngine]]></category> <category><![CDATA[Google IO]]></category> <category><![CDATA[Google Storage]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[HTML 5]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=7717</guid> <description><![CDATA[Cette semaine se tenait à San Francisco la conférence Google I/O pour la 4ème année consécutive. Cette conférence est toujours un évènement riche en annonces sur l&#8217;ensemble des technologies Google, et cette année n&#8217;a pas fait exception à la règle. Nous n&#8217;étions malheureusement pas sur place (la totalité des places de la conférence était écoulée [...]]]></description> <content:encoded><![CDATA[<p>Cette semaine se tenait à San Francisco la conférence <a
href="http://www.google.com/events/io/2011/" title="Google IO" >Google I/O</a> pour la 4ème année consécutive. Cette conférence est toujours un évènement riche en annonces sur l&#8217;ensemble des technologies Google, et cette année n&#8217;a pas fait exception à la règle. Nous n&#8217;étions malheureusement pas sur place (la totalité des places de la conférence était écoulée deux heures après l&#8217;ouverture des ventes). Toutefois, l&#8217;initiative de retransmettre en direct une partie des sessions de la conférence est louable <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Voici donc un petit résumé.</p><div
style="border: dotted 1px #6A205F; background: #F0EDF1; padding:10px 30px;"> Comme pour les années précédentes, les keynotes de la conférence et une partie des sessions seront (ou sont d&#8217;ores et déjà) mises en ligne dans les jours et semaines à venir. Nous ne saurions trop vous conseiller d&#8217;en profiter.</p><ul><li><a
href="http://www.youtube.com/watch?v=OxzucwjFEEs" title="Keynote du mardi 10 Mai" >Keynote du mardi 10 Mai</a></li><li><a
href="http://www.youtube.com/watch?v=MiYND_zvIc0" title="Keynote du mercredi 11 Mai" >Keynote du mercredi 11 Mai</a></li><li><a
href="http://www.youtube.com/user/GoogleDevelopers" title="Chaine YouTube" >Chaine YouTube</a></li></ul></div><style>table {border: hidden; border-collapse: collapse; font-size: small;}
tr, th, td {border: dotted 1px #6A205F; padding: 5px;}
th {background: #F0EDF1;}
td {text-align: center;}</style><h3><a
name="GoogleAppEngine"></a>Google AppEngine 1.5</h3><p>Google livre une nouvelle version de sa plateforme de cloud AppEngine. On notera l&#8217;arrivée d&#8217;une nouvelle API de file de traitement en mode Producteur/Consommateur, les Pull Queues. Les consommateurs peuvent être des composants faisant partie de votre application AppEngine ou externes ; le service fournit une API REST et des librairies pour Java, Python, .NET, PHP et Ruby.</p><p>Cette version introduit également un nouveau type d&#8217;instance en liaison directe avec la nouvelle API de file de traitement, les instances « <em>Backend</em> ». Les traitements effectués sur une instance de type <em>Backend</em> ne sont pas soumis aux restrictions standards (comme par exemple la limite de durée à 30 secondes). Il est également possible de choisir une classe parmi 4 proposées pour ces instances ; ce qui offre plus de contrôle sur le dimensionnement de l&#8217;architecture de déploiement. Une des autres options de configuration est le mode de rétention de l&#8217;instance Backend : <em>Resident</em>, son arrêt et son démarrage sont alors <strong>manuels</strong> ; ou <em>Dynamic,</em> les instances sont alors automatiquement démarrées pour traiter les demandes et sont arrêtées après 30 secondes d&#8217;inactivité.</p><p>Voici un tableau récapitulatif, pour vous donner une idée des tarifs de ces Backends:</p><table><tr><th> Backend</th><th> Description</th><th> Tarif horaire</th><th> Tarif journalier</th><th> Tarif mensuelle (30j)</th></tr><tr><th> Classe B1</th><td> CPU 600 MHz<br
/> Ram 128 Mo</td><td>0,08 $</td><td>1,92 $</td><td>57,60 $</td></tr><tr><th> Classe B2 <em>(classe par défaut)</em></th><td> CPU 1,2 GHz<br
/> Ram 256 Mo</td><td>0,16 $</td><td>3,84 $</td><td>115,20 $</td></tr><tr><th> Classe B4</th><td> CPU 2,4 GHz<br
/> Ram 512 Mo</td><td>0,32 $</td><td>7,68 $</td><td>230,40 $</td><tr><th> Classe B8</th><td> CPU 4,8 GHz<br
/> Ram 1024 Mo</td><td>0,64 $</td><td>15,36 $</td><td>460,80 $</td></tr></table><p>Autre annonce importante, la technologie quittera le statut de <strong>preview</strong> lors du 2ème semestre de cette année. Le programme « <em>AppEngine for Business</em> » s&#8217;arrête et nombre des fonctionnalités est ou sera réintégré dans AppEngine comme : les bases SQL hébergées, les engagements sur les niveaux de service, l&#8217;utilisation de SSL avec des noms de domaine externes, etc. Une première version du SLA est consultable <a
href="http://code.google.com/appengine/sla.html" title="ici" >ici</a>. Autre modification importante, <a
href="http://www.google.com/enterprise/appengine/appengine_pricing.html" title="le modle tarifaire" >le modèle tarifaire</a> évoluera également : certaines APIs, dont la consommation est évaluée en temps CPU, seront dorénavant facturées au nombre d&#8217;appels. Tout cela conforte l&#8217;engagement de Google pour cette technologie.</p><h3><a
name="RapprochementAndroidGWTAppEngi"></a>Rapprochement Android / GWT / AppEngine</h3><p>La future version 2.4 du plugin Eclipse de Google (actuellement en bêta) permettra un rapprochement entre les technologies Android, AppEngine et GWT. Le plugin autorisera la création de projets « connectés », et générera automatiquement le code de plomberie technique nécessaire pour effectuer les appels aux services GWT depuis une application Android.</p><p>Il y a également des nouveautés du côté de l&#8217;API Cloud to Device (<a
href="http://code.google.com/android/c2dm/index.html" title="CD2M" >CD2M</a>) qui est encore dans l&#8217;incubateur Google. Sa mise en œuvre sera simplifiée par une intégration au sein même de Google AppEngine. Pour rappel, le but de l&#8217;API Cloud to Device est de remplacer les mécanismes de polling que l&#8217;on pourrait développer directement au niveau applicatif par un système de notification push. L&#8217;intégration de cette fonctionnalité directement au cœur du système permet de mutualiser les notifications, et rend l&#8217;ensemble du service plus efficace et moins consommateur en bande passante et en énergie. Un exemple concret d&#8217;utilisation est l&#8217;extension ChromeToPhone qui permet de diriger vers votre Smartphone Android une page en cours de visualisation dans Chrome.</p><p>Avec ce rapprochement, c&#8217;est tout un éco-système autour de Google AppEngine qui se dessine peu à peu.</p><h3><a
name="ChromeHTML"></a>Chrome / HTML 5</h3><p>Le navigateur de Google se voit doté de fonctionnalités supplémentaires intéressantes comme la reconnaissance vocale. Autre annonce marquante, l&#8217;équipe de développement signale que l&#8217;optimisation des performances reste un chantier de premier plan. Toutefois, le focus sera mis sur l&#8217;accélération matérielle et non plus sur le moteur JavaScript. Enfin, on peut rappeler le lancement mondial du <a
href="https://chrome.google.com/webstore" title="Chrome Web Store" >Chrome Web Store</a> accessible dans plus d&#8217;une quarantaine de langues.</p><h3><a
name="NouvellesversionsAndroid"></a>Nouvelles versions Android</h3><p>Cette conférence a été l&#8217;occasion pour Google d&#8217;annoncer 2 versions majeures de la plateforme Android. La version HoneyComb 3.1 et la très attendue version 4 (?!) Ice Cream Sandwich qui va permettre de regrouper la version téléphone et la déclinaison tablette du système d&#8217;exploitation. La plus importante nouveauté de ces versions est sans doute l&#8217;API Open Accessory qui permet aux appareils Android d&#8217;utiliser les appareils connectés via USB ou de se comporter comme un hôte USB (le mode hôte USB n&#8217;est accessible que pour HoneyComb).</p><h3><a
name="AndroidHome"></a>Android@Home</h3><p>Le framework Android@Home permet au système d&#8217;exploitation d&#8217;être utilisé pour la domotique. Votre appareil Android devient la commande centrale pour piloter les appareils sans fil de votre domicile ; les équipes ont également développé un nouveau protocole pour les appareils sans fil non connectés au réseau Wifi. Une démonstration du projet Tungsten permet par exemple de diffuser en streaming de la musique dans l&#8217;ensemble de votre domicile.</p><h3><a
name="GoogleStorage"></a>Google Storage</h3><p><a
href="http://code.google.com/apis/storage/" title="Google Storage" >Google Storage</a>, le service de stockage en ligne de haute disponibilité et accessible via une API REST. Bien qu&#8217;encore dans l&#8217;incubateur, il est maintenant accessible à tous, dispose d&#8217;un quota gratuit d&#8217;utilisation (jusqu&#8217;à la fin de l&#8217;année) et propose 2 zones géographiques de stockage les états-unis et l&#8217;Europe.</p><h3><a
name="Chromebooks"></a>Chromebooks</h3><p>Google a annoncé la prochaine sortie de 2 nouveaux « <em>NetBook</em> » utilisant le système d&#8217;exploitation Chrome OS. L&#8217;originalité vient l&#8217;offre de commercialisation puisqu&#8217;ils seront disponible à la vente de manière standard, mais aussi dans le cadre d&#8217;une souscription étudiante ou professionnelle pour respectivement $20 et $30. L&#8217;offre inclue également la mise à jour matérielle.</p><h3><a
name="LemotdelafinenattendantGoogleI"></a>Le mot de la fin &#8230; en attendant Google I/O 2012</h3><p>C&#8217;est ici que s&#8217;achève notre petit tour d&#8217;horizon de cette très généreuse conférence. Avec plus de 100 sessions réparties sur 2 jours, il y a fort à parier que nous avons « <em>oublié</em> » d&#8217;aborder certains sujets. Mais, j&#8217;espère vous avoir donné l&#8217;envie de parcourir plus en détail les annonces, vidéos et autres matériaux de cette conférence.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/05/13/les-annonces-de-google-io-2011/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2011/03/08/revue-de-presse-xebia-201/</link> <comments>http://blog.xebia.fr/2011/03/08/revue-de-presse-xebia-201/#comments</comments> <pubDate>Tue, 08 Mar 2011 13:12:47 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[CDN]]></category> <category><![CDATA[Data Grid]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[IE6]]></category> <category><![CDATA[Infinispan]]></category> <category><![CDATA[Internet Explorer]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Kanban]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Microsoft]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Web]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=7133</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII IE6 : End of life ! cdnjs.com un content delivery network pour javascript Agilité Traiter l&#8217;urgence dans une équipe agile NoSQL Infinispan au Paris NoSQL User Group Actualité éditeurs / SSII IE6 : End of life ! IE6 Countdown est un site [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité  éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/03/08/revue-de-presse-xebia-201/#IEEndoflifenbsp">IE6 : End of life !</a></li><li><a
href="http://blog.xebia.fr/2011/03/08/revue-de-presse-xebia-201/#cdnjscomuncontentdeliverynetwo">cdnjs.com un content delivery network pour javascript</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/03/08/revue-de-presse-xebia-201/#Traiterlurgencedansunequipeagi">Traiter l&#8217;urgence dans une équipe agile</a></li></ul><p><strong>NoSQL</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/03/08/revue-de-presse-xebia-201/#InfinispanauParisNoSQLUserGrou">Infinispan au Paris NoSQL User Group</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="IEEndoflifenbsp"></a>IE6 : End of life !</h4><p><a
href="http://www.ie6countdown.com" title="IE6 Countdown" >IE6 Countdown</a> est un site lancé par <strong>Microsoft</strong> pour mesurer <strong>la baisse de part de marché d&#8217;IE6 dans le monde</strong> (et accessoirement promouvoir IE7 et 8). Ce dernier affiche <strong>3,9%</strong> pour la <strong>France</strong>, alors que la <strong>Chine</strong> plafonne à <strong>34,5%</strong>. Le «_grand gagnant_» est la <strong>Norvège</strong>, qui affiche seulement <strong>0,7%</strong> de part de marché. La firme de Richmond encourage vivement à migrer vers IE7/8, avec pour argument <a
href="http://www.microsoft.com/windows/internet-explorer/compare/compare-versions.aspx" title="un tableau comparatif" >un tableau comparatif</a>, où l’on peut observer que presque aucune feature des navigateurs modernes n&#8217;est supportée : gestion des fenêtres par onglets, barre de favoris, compatibilité avec les standards du Web. Les développeurs Web quant à eux, peuvent même rajouter une bannière sur leur site, qui invite les utilisateurs ayant une version d&#8217;Internet Explorer antérieure à la 7, à le mettre à jour :</p><div
align="center"> <a
href="http://www.theie6countdown.com/images/upgrade.jpg"><br
/> <img
src="http://www.theie6countdown.com/images/upgrade.jpg" border="0" alt="" width="90%"/><br
/> </a></div><p>Enfin, bien qu&#8217;un grand du Web tel que <strong>Google</strong> ait récemment <a
href="http://googleenterprise.blogspot.com/2010/01/modern-browsers-for-modern-applications.html" title="cess de supporter IE6 sur Google Docs et Google Sites" >cessé de supporter IE6 sur Google Docs et Google Sites</a> (Gmail et Google Calendar suivront dans l&#8217;année), le navigateur est encore très largement répandu en entreprise, avec son OS Windows XP. De ce fait, nous ne serions que trop vous conseiller d&#8217;inviter vos clients respectifs à monter de version, notamment pour des raisons de sécurité et de compatibilité. Pour les autres, Microsoft assurera tout de même le support jusqu&#8217;en Avril 2014.</p><h4><a
name="cdnjscomuncontentdeliverynetwo"></a>cdnjs.com un content delivery network pour javascript</h4><p><a
href="http://www.cdnjs.com/" title="cdnjscom" >cdnjs.com</a> est, comme son nom l&#8217;indique, un Content Delivery Network pour javascript : un nouveau service en ligne utilisant l&#8217;infrastructure AWS d&#8217;Amazon pour mettre à disposition des bibliothèques javascript. Google et plus récemment Microsoft proposent déjà ce type de service, mais uniquement pour les bibliothèques javascript les plus populaires&#8230; d&#8217;après leur propre usage. L&#8217;idée de cdnjs.com est d&#8217;apprécier à travers les votes de la communauté les bibliothèques javascript les plus utilisées afin de les héberger. Les sites web utilisant ce service bénéficient alors d&#8217;un cache http commun.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Traiterlurgencedansunequipeagi"></a>Traiter l&#8217;urgence dans une équipe agile</h4><p>Serge Beaumont, notre confrère de Xebia Pays-Bas, vient de publier <a
href="http://blog.xebia.com/2011/02/28/dealing-with-emergencies-in-agile-teams/" title="un intressant article" >un intéressant article</a> sur les différentes manières de traiter les situations d&#8217;urgence dans les équipes agiles. C&#8217;est un sujet toujours difficile, car, par définition, la charge de travail requise pour traiter ces situations est inconnue. Donc peu estimable et planifiable.<br
/> Il commence son article par regretter la bonne vieille époque des projets <em>waterfall</em> où il n&#8217;y avait jamais de maintenance à faire. Ahhh, le bonheur que ça devait être que de travailler sur des projets parfaits, sans bugs, sans&#8230; Ah, attendez: une lecture plus attentive précise que c&#8217;était en fait l&#8217;équipe de maintenance qui était chargée de corriger la pile de non-sens créée par d&#8217;autres. Les pauvres&#8230;<br
/> Sur un projet agile, les livraisons régulières responsabilisent les équipes elles-mêmes qui verront revenir plus rapidement leurs propres erreurs.<br
/> Plusieurs scénarios sont envisagés:</p><ul><li>un Product Owner jouant le rôle de &laquo;&nbsp;firewall&nbsp;&raquo; et élimine bon nombre de problèmes (qui bien souvent n&#8217;en sont pas !)</li><li>ce même Product Owner peut mettre les urgences au planning du sprint suivant et n&#8217;accepter que les <strong>vraies</strong> urgences</li></ul><p>Pour les vrais problèmes, ceux qu&#8217;on ne peut pas éviter de traiter immédiatement, il est envisageable de garder à chaque début de sprint un buffer leur étant destiné. Mais notre confrère nous met en garde sur le fait que ce serait sans doute une <em>fausse bonne idée</em>: dès que votre MOA aura connaissance de la présence de votre buffer, ils n&#8217;auront de cesse d&#8217;essayer de le remplir. D&#8217;où la règle numéro 1 du buffer: <strong>le buffer n&#8217;est pas pour les éléments du backlog</strong>. La règle numéro 2, pourtant extrême, permettra de relativiser l&#8217;importance des demandes: <strong>un remplissage du buffer entraîne un abandon du sprint en cours</strong>. Extrême ? Mais efficace ! Les gens réfléchirons par 2 fois à la priorité de leurs demandes. Le principal reste tout de même de fixer la cause racine et donc d&#8217;améliorer la qualité. Logique, non ?</p><p>Finalement, l&#8217;auteur donne un conseil pour les équipes qui doivent faire beaucoup de maintenance: Kanban bien que proche de Scrum propose un process plus adapté. Nous vous renvoyons à notre article sur &laquo;&nbsp;Kanban in action&nbsp;&raquo; <a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-kanban-in-action/" title=" Devoxx" >à Devoxx</a>.</p><h3><a
name="NoSQL"></a>NoSQL</h3><h4><a
name="InfinispanauParisNoSQLUserGrou"></a>Infinispan au Paris NoSQL User Group</h4><p>Manik Surtani, est venu au <a
href="https://sites.google.com/a/octo.com/nosql/tous-les-meetings/07-mars-2011" title="Paris NoSQL User Group" >Paris NoSQL User Group</a> présenter Infinispan, la In Memory Data Grid de JBoss dont il est le <em>lead technique</em>. Nous retiendrons :</p><p><strong>Objectif : concurrencer Coherence</strong></p><p>L&#8217;objectif d&#8217;Infinispan est de proposer une alternative Open Source à Oracle Coherence, Gigaspace ou IBM eXtreme Scale.</p><p><strong>Les topologies</strong></p><p>Infinispan propose <a
href="http://community.jboss.org/wiki/InfinispanServerModules" title="deux topologies de dploiement" >deux topologies de déploiement</a> :</p><ul><li><strong>Embedded Mode (aka peer-to-peer)</strong> : l&#8217;application est fusionnée avec la grille de données : les JVM qui portent la(les) application(s) participent à la grille et portent des données. C&#8217;est la mode d&#8217;intégration qui permet le plus grand nombre de fonctionnalités mais qui apporte aussi le plus grand couplage.</li></ul><ul><li><strong>Client-Server Mode</strong> :</li><ul><li>L&#8217;application se connecte à la grille de données avec un connecteur comme elle se connecte à des SGBD.</li><li>Il existe quatre protocoles : REST/HTTP, MemCached, <a
href="http://community.jboss.org/wiki/HotRodProtocol" title="Hot Rod" >Hot Rod</a> (protocole bi-directionnel interne d&#8217;Infinispan) et les Web Sockets. Hot Rod sera le protocole le plus riche qui facilitera la haute disponibilité grâce à l&#8217;autodécouverte de la topologie de la grille et permettra les continuous queries. Seul Hot Rod impose java côté client. Les WebSockets sont temporairement remises en cause par les <a
href="http://blog.xebia.fr/2010/12/14/revue-de-presse-xebia-189/#WebSocketuntroudanslaraquette" title="failles de scurit inhrentes  cette technologie" >failles de sécurité inhérentes à cette technologie</a>. </li></ul></ul><p><strong>Les APIs</strong></p><p>Infinispan propose aujourd&#8217;hui une API bas niveau de style key-value store et travaille sur une API de haut niveau de style JPA qui manque cruellement à certains concurrents <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Ces APIs seraient utilisables en mode &laquo;&nbsp;Embedded&nbsp;&raquo; et en mode &laquo;&nbsp;Client-Server&nbsp;&raquo; avec le protocole Hot Rod.</p><p>Fort de l&#8217;expérience de JBoss sur les annotations JPA et Hibernate Search, on peut espérer une API élégante.</p><p><strong>Le plus : Hibernate Search</strong></p><p>Infinispan apporte une fonctionnalité originale qui le différencie de ses concurrents : l&#8217;intégration d&#8217;Hibernate Search qui permet de créer des index secondaires plus sophistiqués que ceux &laquo;&nbsp;à la SQL&nbsp;&raquo; qu&#8217;on voit dans les autres In Memory Data Grids. Il est tout de même probable que cette richesse d&#8217;indexation ne concerne que peu de cas d&#8217;utilisation.</p><p><strong>La road map</strong></p><p>Le projet est dynamique et prometteur et il reste encore beaucoup de travail comme :</p><ul><li>l&#8217;envoi de traitements dans la grille (map/reduce, entry-processors, etc) qui est encore en version <em>beta</em>,</li><li>le choix de language de programmation pour réaliser des traitements dans la grille. La réflexion se place aujourd&#8217;hui autour d&#8217;un langage <em>neutre</em> comme javascript ou de java,</li><li>des optimisations de la gestion de la mémoire pour gérer des JVM de grande taille (> 10 Go),</li><li>l&#8217;intégration de <a
href="http://www.jboss.org/jbossmarshalling" title="JBoss Marshalling" >JBoss Marshalling</a> avec l&#8217;ajout d&#8217;une API de versioning pour sérialiser les données dans la grille,</li><li>l&#8217;ajout d&#8217;une query language pour requêter les données.</li></ul><p><strong>Scénarios d&#8217;utilisation d&#8217;Infinispan aujourd&#8217;hui</strong></p><p>Le principal scénario d&#8217;utilisation d&#8217;Infinispan aujourd&#8217;hui est un &laquo;&nbsp;distributed key-value store&nbsp;&raquo; qu&#8217;on peut même installer sous forme &laquo;&nbsp;<em><a
href="http://infinispan.blogspot.com/2010/10/data-as-service-talk-by-yours-truly.html" title="Data as a Service" >Data as a Service</a></em>&nbsp;&raquo; pour reprendre l&#8217;expression de Manik Surtani.</p><p>Les utilisations en In Memory Data Grid haute performance avec des traitements au coeur des données sont a réserver à un public averti <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/03/08/revue-de-presse-xebia-201/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Rétrospective de notre XKE de mars</title><link>http://blog.xebia.fr/2011/03/04/retrospective-de-notre-xke-de-mars/</link> <comments>http://blog.xebia.fr/2011/03/04/retrospective-de-notre-xke-de-mars/#comments</comments> <pubDate>Fri, 04 Mar 2011 15:27:28 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Divers]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Guava]]></category> <category><![CDATA[Mahout]]></category> <category><![CDATA[MongoDB]]></category> <category><![CDATA[SOLID]]></category> <category><![CDATA[XKE]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=7120</guid> <description><![CDATA[Comme chaque mois, le premier jeudi de mars a réuni tous les consultants Xebia pour le XKE (Xebia Knowledge Exchange). Après la traditionnelle introduction où chacun partage les actualités du mois précédent, place aux présentations, en parallèle : Michael Figuière a présenté Apache Mahout, le framework de Machine Learning de l&#8217;ecosystème Hadoop ; Nicolas Jozwiak [...]]]></description> <content:encoded><![CDATA[<p>Comme chaque mois, le premier jeudi de mars a réuni tous les consultants Xebia pour le <strong>XKE (Xebia Knowledge Exchange)</strong>.</p><p>Après la traditionnelle introduction où chacun partage les actualités du mois précédent, place aux présentations, en parallèle :</p><ul><li><a
href="http://blog.xebia.fr/author/mfiguiere/" title="Michael Figuire" >Michael Figuière</a> a présenté Apache Mahout, le framework de <em>Machine Learning</em> de l&#8217;ecosystème Hadoop ;</li><li><a
href="http://blog.xebia.fr/author/njozwiak/" title="Nicolas Jozwiak" >Nicolas Jozwiak</a> et <a
href="http://blog.xebia.fr/author/fdubois/" title="Frédéric Dubois" >Frédéric Dubois</a> se sont quant à eux attaqués aux concepts <a
href="http://en.wikipedia.org/wiki/Solid_%28object-oriented_design%29" title="SOLID" >SOLID</a>.</li></ul><p>Ont suivi deux nouvelles sessions parallèles :</p><ul><li><a
href="http://blog.xebia.fr/author/ealliaume/" title="Erwan Alliaume" >Erwan Alliaume</a>, Julien Buret, <a
href="http://blog.xebia.fr/author/slemesle/" title="Séven Le Mesle" >Séven Le Mesle</a> et <a
href="http://blog.xebia.fr/author/plopez/" title="Pablo Lopez" >Pablo Lopez</a> ont animé un débat sur les problématiques de Load Balancing dans les architectures soumises à forte charge ;</li><li><a
href="http://blog.xebia.fr/author/nrichand/" title="Nathaniel Richand" >Nathaniel Richand</a> a organisé un open space, où il a notamment été question de traitement des exceptions Java puis de gestion des émotions.</li></ul><p>Après la pause déjeuner, les sessions sont redevenues plénières :</p><ul><li><a
href="http://blog.xebia.fr/author/karesti/" title="Katia Aresti" >Katia Aresti</a> est revenue en détail sur son expérience MongoDb et nous a fait l&#8217;honneur de l&#8217;avant première de la présentation qu&#8217;elle donnera à <a
href="http://www.10gen.com/conferences/mongofr2011" title="Mongo Paris" >Mongo Paris</a> ;</li><li><a
href="http://blog.xebia.fr/author/rmaton/" title="Romain Maton" >Romain Maton</a> nous a proposé un aperçu des APIs Google Guava ;</li><li><a
href="http://blog.xebia.fr/author/nrichand/" title="Nathaniel Richand" >Nathaniel Richand</a> nous a démontré à quel point la communication est un facteur déterminant dans la réussite d&#8217;une mission ;</li><li>Et, une fois n&#8217;est pas coutume, ce sont des intervenants extérieurs qui ont clos la journée. Mais contrairement à l&#8217;habitude, ce n&#8217;est pas un éditeur qui est venu nous présenter sa solution, mais deux de nos clients, Vincent Jaouen et Jean-Yves Cronier, qui nous ont exposé comment une refonte complète de leur couche HTML a permis de diviser les temps d&#8217;accès à un site internet grand public par cinq. Un grand merci à eux pour avoir apporté leur pierre à cet échange de connaissances.</li></ul><p>Malgré l&#8217;heure avancée <em>(la journée a une fois de plus été dense)</em>, bon nombre de courageux ont poursuivi les discussions autour d&#8217;un verre <em>(Ajax, Json, méthodes d&#8217;audit, Grid computing mais aussi vacances au soleil et cinéma <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )</em>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/03/04/retrospective-de-notre-xke-de-mars/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/11/09/revue-de-presse-xebia-184/</link> <comments>http://blog.xebia.fr/2010/11/09/revue-de-presse-xebia-184/#comments</comments> <pubDate>Tue, 09 Nov 2010 06:20:42 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Apache HTTP Client]]></category> <category><![CDATA[CEP]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[JVM Premium]]></category> <category><![CDATA[mod_pagespeed]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[StreamBase]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5858</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Google accélère le web avec le mod_pagespeed Oracle proposera une JVM Premium SOA Le CEP, un domaine en expansion Actualité éditeurs / SSII Google accélère le web avec le mod_pagespeed Google a annoncé la première version de ce nouveau module [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /></p><p><em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité  éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/11/09/revue-de-presse-xebia-184/#Googleacclrelewebaveclemodpage">Google accélère le web avec le mod_pagespeed</a></li><li><a
href="http://blog.xebia.fr/2010/11/09/revue-de-presse-xebia-184/#OracleproposerauneJVMPremium">Oracle proposera une JVM Premium</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/11/09/revue-de-presse-xebia-184/#LeCEPundomaineenexpansion">Le CEP, un domaine en expansion</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="Googleacclrelewebaveclemodpage"></a>Google accélère le web avec le mod_pagespeed</h4><p>Google a <a
title="annoncé" href="http://googlecode.blogspot.com/2010/11/make-your-websites-run-faster.html">annoncé</a> la première version de ce nouveau module Apache. Il s&#8217;agit d&#8217;accélérer le chargement des pages HTML sans avoir à modifier son application. Le module applique un certain nombre d&#8217;optimisations, relevées par <a
title="InfoQ" href="http://www.infoq.com/news/2010/11/mod-pagespeed">InfoQ</a>:</p><ul><li>Changement des directives de cache par extension de fichier notamment.</li><li>Optimisation du HTML, des CSS et du JavaScript à la volée (suppression des commentaires, passage en ligne, suppression d&#8217;espaces).</li><li>Concaténation des fichiers CSS pour limiter le nombre de requête HTTP nécessaire à la page.</li><li>Suppression des caractères et des attributs HTML inutiles.</li><li>Optimisation des fichiers images par compression et effet d&#8217;échelle.</li><li>Intégration en ligne des images en base 64.</li></ul><p>Toutes ces optimisations sont bien sûr configurables et c&#8217;est à nous de choisir de les appliquer ou non via les différents filtres du module. Nous voyons ce nouveau module avec un oeil bienveillant, l&#8217;idée est séduisante et les bénéfices pourraient s&#8217;avérer convaincants. Reste encore à savoir comment se comporte le module en production, et quel est son impact sur les ressources du système ?</p><p>Il faudra donc le tester en conditions réelles pour pouvoir se prononcer sur ce nouveau venu. Voici le <a
title="site officiel" href="http://code.google.com/intl/fr-FR/speed/page-speed/docs/module.html">site officiel</a> et la <a
title="documentation" href="http://code.google.com/intl/fr-FR/speed/page-speed/docs/filters.html">documentation</a>. A noter également sur le blog de <a
title="dynaTrace" href="http://blog.dynatrace.com/2010/11/05/how-we-improved-our-web-site-performance-rank-from-d-to-a/">dynaTrace</a>, un article intéressant sur des bonnes pratiques pour rendre son site plus performant.</p><h4><a
name="OracleproposerauneJVMPremium"></a>Oracle proposera une JVM Premium</h4><p>La semaine dernière au <a
title="QCon" href="http://qconsf.com/">QCon</a>, le monde Java a lancé la machine à rumeur. La faute à <a
title="Adam Messinger" href="http://qconsf.com/sf2010/speaker/Adam+Messinger">Adam Messinger</a>, vice président du développement pour l&#8217;entité <em>Fusion Middleware</em> d&#8217;Oracle, qui a <a
title="annonc" href="http://www.theregister.co.uk/2010/11/06/oracle_dueling_jvms/">annoncé</a> qu&#8217;il y aurait une version Premium (comprendre payante) de la JDK en plus de la version gratuite.</p><p>En réalité les plus avertis avaient déjà noté cette information au dernier <a
title="JavaOne" href="http://www.oracle.com/us/corporate/press/173782">JavaOne</a>:</p><p><em>Premium offerings such as JRockit Mission Control, JRockit Real Time, Java for Business and Enterprise Support will continue to be made available for an additional charge.</em></p><p>En clair, Oracle a l&#8217;intention de vendre une version payante de la JDK qui comprendra, entre autres, les outils JRockit <a
title="Mission Control" href="http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/tools/index.html">Mission Control</a> (outil de monitoring), <a
title="Real Time" href="http://www.oracle.com/technetwork/middleware/jrockit/overview/index-086343.html">Real Time</a> (outil de temps réel) et un <a
title="support" href="http://www.oracle.com/us/solutions/ent-performance-bi/enterprise-edition-066546.html">support</a> donnant accès par exemple à des corrections sans attendre les versions officielles. L&#8217;offre reste encore à définir, entre autre le prix, et des inconnus demeurent sur les différences entre les JDKs.</p><p>Par ailleurs Adam Messinger se veut plutôt rassurant sur le maintien d&#8217;une version gratuite. L&#8217;objectif d&#8217;Oracle reste de fusionner Hotspot et JRockit vers OpenJDK.</p><p>Néanmoins Stephen Colebourne (membre la fondation Apache et Java Champion) <a
title="souligne" href="http://www.jroller.com/scolebourne/entry/premium_jvm_open_jvm_proposal">souligne</a> les risques entourant cette annonce:</p><ul><li><em>Est-ce que la version gratuite et la version premium sortiront en même temps ?</em></li><li><em>Est-ce que la version gratuite sera supporté sur la même quantité d&#8217;OS ?</em></li><li><em>Quels sont précisément les fonctionnalités de la version premium ?</em></li><li><em>Est-ce qu&#8217;il s&#8217;agira seulement de fonctionnalités pour le management ?</em></li><li><em>Ou s&#8217;agira aussi de fonctionnalités sur les performances ?</em></li><li><em>Quel est le marché ciblé ?</em></li></ul><p>Il remarque également que ces craintes seraient levées si la <a
title="JSR 924" href="http://jcp.org/en/jsr/detail?id=924">JSR 924</a>, qui spécifie la JVM, pouvait être implémentée librement, en s&#8217;abstrayant entre autre des champs d&#8217;utilisation (une vieille <a
title="querelle" href="http://www.apache.org/jcp/sunopenletterfaq.html">querelle</a> entre Apache et Sun). Ceci permettrait d&#8217;avoir un standard et aux implémentations telle qu&#8217;Harmony d&#8217;être certifiées.</p><p>Depuis la prise en main de Java par Oracle, la communauté, qui est historiquement tournée vers l&#8217;Open Source, a quelques sueurs froides et l&#8217;<a
title="annonce" href="http://www.theregister.co.uk/2010/11/03/oracle_mysql_price_hike/">annonce</a> récente de monter les prix du support de MySQL n&#8217;arrangera rien.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="LeCEPundomaineenexpansion"></a>Le CEP, un domaine en expansion</h4><p>Le domaine du CEP, pour <a
title="Complex Event Processing" href="http://en.wikipedia.org/wiki/Complex_event_processing">Complex Event Processing</a> ou Traitement d&#8217;évènements complexes, est un domaine dont on entend peu parler mais dont l&#8217;utilité, une fois que l&#8217;on se penche dessus, semble évidente. Rappelons que le CEP est un concept dans lequel des suites d&#8217;évènements sont analysées, de façon automatisée, pour en dégager des informations qui ne seraient pas déductibles à partir de chaque événement pris séparément. La corrélation d&#8217;une suite d&#8217;évènements &laquo;&nbsp;simples&nbsp;&raquo; permet donc de déduire d&#8217;autres informations, plus complexes. Pour être concret, le CEP peut servir à détecter des fraudes bancaires par des suites d&#8217;évènements louches survenant sur un compte, ou alors pour détecter des problèmes dans un système suite à la réception, à une fréquence plus élevée que la moyenne, d&#8217;un certain type d&#8217;évènement.</p><p>Toujours est-il que <a
title="de nombreuses solutions" href="http://tibcoblogs.com/cep/2009/07/31/the-cep-market-2009-a-brief-history-lesson/">de nombreuses solutions</a> existent, Open Source ou non, pour satisfaire les divers besoins d&#8217;analyse. Dans <a
title="un récent article" href="http://streambase.typepad.com/streambase_stream_process/">un récent article</a>, Marc Palmer de <a
title="Streambase " href="http://www.streambase.com">Streambase </a> qui édite ses propres solutions CEP, revient sur la publication de chiffres semblant indiquer que les CEP ne représentent qu&#8217;un petit marché. Et pour contrer ces chiffres, il cite nombre de sociétés utilisatrices de la solution de Streambase. Même si c&#8217;est surtout un coup de pub pour sa compagnie, nous pouvons malgré tout réaliser à quel point les CEP sont importants dans le domaine du <a
title="Capital Market" href="http://en.wikipedia.org/wiki/Capital_market">Capital Market</a>.</p><p>Pour aller plus loin et découvrir différentes solutions, citons <a
title="cet article" href="http://debupanda.blogspot.com/2010/11/introducing-event-server-platform.html">cet article</a> de Debu Panda (de <a
title="EJB3 in Action" href="http://manning.com/panda/">EJB3 in Action</a>) vu <a
title="sur ServerSide" href="http://www.theserverside.com/news/thread.tss?thread_id=61236">sur ServerSide</a> et dans lequel il évoque la solution de Starview. Mais si vous voulez vraiment être pris par la main pour avoir une première approche du CEP, Michal Bali, auteur de <a
title="Drools JBoss Rules 5.0" href="https://www.packtpub.com/drools-jboss-rules-5-0-developers-guide/">Drools JBoss Rules 5.0</a>, nous livre <a
href="https://www.packtpub.com/article/drools-jboss-rules-50complex-event-processing">un tutorial complet</a> implémentant la détection de fraude dans un système bancaire en utilisant <a
title="Drools Fusion" href="http://www.jboss.org/drools/drools-fusion.html">Drools Fusion</a>, solution de JBoss. Ce dernier article est très complet et permettra au lecteur d&#8217;avoir une bonne première approche des possibilités de l&#8217;outil.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/11/09/revue-de-presse-xebia-184/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Comment intégrer des graphiques dans une application Android ?</title><link>http://blog.xebia.fr/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/</link> <comments>http://blog.xebia.fr/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/#comments</comments> <pubDate>Thu, 21 Oct 2010 13:44:18 +0000</pubDate> <dc:creator>Erwan Alliaume</dc:creator> <category><![CDATA[Mobilité]]></category> <category><![CDATA[Achartengine]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[chart]]></category> <category><![CDATA[ChartDroid]]></category> <category><![CDATA[Google]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5672</guid> <description><![CDATA[Android ne propose nativement aucune solution pour générer des courbes, camemberts et autres graphiques. Lors du développement d&#8217;applications, il est pourtant fréquent que l&#8217;on veuille afficher ce genre d&#8217;informations. Les terminaux Android disposant pour la plupart d&#8217;une résolution plutôt petite (< 800*600), il est souvent plus simple et plus efficace d'afficher les valeurs d'un tableau [...]]]></description> <content:encoded><![CDATA[<p>Android ne propose nativement aucune solution pour générer des courbes, camemberts et autres graphiques. Lors du développement d&#8217;applications, il est pourtant fréquent que l&#8217;on veuille afficher ce genre d&#8217;informations. Les terminaux Android disposant pour la plupart d&#8217;une résolution plutôt petite (< 800*600), il est souvent plus simple et plus efficace d'afficher les valeurs d'un tableau sous forme de graphique.</p><p>Cet article a pour but de vous présenter quelques-unes des solutions les plus répandues pour répondre à ce besoin. Pour cela, nous allons créer un camembert de 3 manières différentes :</p><ul><li><a
href="http://blog.xebia.fr/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/#GoogleChartingAPI">Google Chart API</a></li><li><a
href="http://blog.xebia.fr/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/#achartengine">Achartengine</a></li><li><a
href="http://blog.xebia.fr/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/#Chartdroid">ChartDroid</a></li></ul><p>Cet article est une adaptation libre du billet de l&#8217;un des mes collègues indiens Yogesh Kapoor, l&#8217;original est disponible en anglais sur le <a
href="http://xebee.xebia.in/2010/08/31/exploring-android-charting-and-graphs-solutions/" title="blog de Xebee" >blog de Xebee</a>.</p><h4><a
name="GoogleChartingAPI"></a>Google Charting API</h4><p>L&#8217;utilisation de Google Charting est très simple. Cette API permet de créer des graphiques par l&#8217;intermédiaire d&#8217;une URL. Vous n&#8217;avez qu&#8217;à passer les bon arguments à celle-ci pour récupérer votre graphique. Comme ce service est basé sur une URL, vous devez disposer d&#8217;une connexion internet pour que celle-ci fonctionne. Si votre application s&#8217;exécute hors ligne, passez votre chemin.</p><p>L&#8217;appel à l&#8217;<a
href="http://code.google.com/apis/chart/" title="API Google Charting" >API Google Charting</a> s&#8217;effectue par l&#8217;intermédiaire d&#8217;URL ressemblant à celle-ci :</p><pre class="brush: java; title: ; notranslate">
http://chart.apis.google.com/chart?cht=p3&#038;chs=250x100&#038;chd=t:30,60,10&#038;chl=cars|bikes|trucks
</pre><p>Dans cet exemple, voici comment lire les paramètres :</p><ul><li>cht=t3, type du graphique, t3 = camembert 3D,</li><li>chs=250&#215;100, la résolution,</li><li>chd=t:30,60,10, les données,</li><li>chl=cars|bikes|trucks, les libellés.</li></ul><p>Le google code du projet est plutôt bien fait, il vous permet de créer différents types de graphiques en vous inspirant d&#8217;une <a
href="http://code.google.com/apis/chart/docs/gallery/chart_gall.html" title="multitude dexemples" >multitude d&#8217;exemples</a>.</p><p>Vous pouvez intégrer un graphique de ce type dans une application Android par l&#8217;intermédiaire d&#8217;une simple <a
href="http://developer.android.com/intl/de/reference/android/webkit/WebView.html" title="WebView" >WebView</a>. Difficile de faire plus simple.</p><pre class="brush: java; title: ; notranslate">
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  WebView webView = new WebView(this);
  webView.loadUrl(&quot;http://chart.apis.google.com/chart?cht=p3&amp;chs=250x100&amp;chd=t:30,60,10&amp;chl=cars|bikes|trucks&quot;);
  setContentView(webView);
}
</pre><p>La méthode <code>onCreate()</code> est appelée à la création d&#8217;une activité. Dans l&#8217;exemple ci-dessus, nous avons créé une WebView, chargé l&#8217;url de notre graphique dans celle-ci et affecté notre vue comme composant principal de l&#8217;activité.</p><p>Pour que cela fonctionne, comme vous avez besoin d&#8217;un accès internet, vous devez ajouter la permission suivante dans votre <code>AndroidManifest.xml</code>.</p><pre class="brush: java; title: ; notranslate">
&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&gt;
</pre><p>Et c&#8217;est tout ce que vous avez à faire ! Notez au passage que vous n&#8217;êtes pas obligé de passer par une <code>WebView</code>, vous pouvez également télécharger cette image et l&#8217;afficher comme n&#8217;importe quel autre <em>drawable</em> dans n&#8217;importe quel composant (imageView, boutons, backgounds &#8230;)</p><p>Voici un capture d&#8217;écran du résultat obtenu, le graphique est plutôt joli. Il vous est possible de modifier les couleurs, ajouter une légende, changer le type de graphique en ajoutant des <a
href="http://code.google.com/apis/chart/docs/gallery/pie_charts.html" title="paramtres supplmentaires" >paramètres supplémentaires</a>.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/01_googleapichart-300x193.png" border="0" alt="Google Char Api Android" /></div><p>Si votre application n&#8217;a pas besoin d&#8217;accéder à internet, ce type de graphique n&#8217;est pas adapté. Continuons notre tour d&#8217;horizon avec une autre solution &#8230; hors ligne.</p><h4><a
name="achartengine"></a>achartengine</h4><p><a
href="http://code.google.com/p/achartengine/" title="achartengine" >achartengine</a> est un projet permettant de générer différents types de graphique pour Android. Cette API utilise le mécanisme d&#8217;<code>Intent</code>, des messages configurables qui permettent de lancer l&#8217;exécution d&#8217;une activité tierce. Elle ne nécessite aucune connexion internet..</p><p>Qui dit <code>Intent</code> dit nouvelle activité. Les graphiques sont affichés sur des activités dédiées. Contrairement à Google Chart API, vous ne pourrez donc pas intégrer vos graphiques directement dans vos activités.</p><p>Pour l&#8217;utiliser, télécharger la dernière version du jar du projet sur le <a
href="http://code.google.com/p/achartengine/downloads/list" title="Google Code du projet" >Google Code du projet</a>, puis ajoutez le à votre projet Android.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/02_libfolder.png" border="0" alt="" /></div><p>Voici l&#8217;exemple d&#8217;une classe contenant une méthode qui créer un <code>Intent</code> configuré pour afficher un camembert :</p><pre class="brush: java; title: ; notranslate">
public class MyChartExample {
  public Intent createIntent(Context context) {
    int[] colors = new int[] { Color.RED, Color.YELLOW, Color.BLUE };
    DefaultRenderer renderer = buildCategoryRenderer(colors);
    CategorySeries categorySeries = new CategorySeries(&quot;Vehicles Chart&quot;);
    categorySeries.add(&quot;cars &quot;, 30);
    categorySeries.add(&quot;trucks&quot;, 20);
    categorySeries.add(&quot;bikes &quot;, 60);
    return ChartFactory.getPieChartIntent(context, categorySeries, renderer);
  }
  private DefaultRenderer buildCategoryRenderer(int[] colors) {
    DefaultRenderer renderer = new DefaultRenderer();
    for (int color : colors) {
      SimpleSeriesRenderer r = new SimpleSeriesRenderer();
      r.setColor(color);
      renderer.addSeriesRenderer(r);
    }
    return renderer;
  }
}
</pre><p>La récupération de l&#8217;<code>Intent</code> bien configuré s&#8217;effectue par l&#8217;intermédiaire de la méthode <code>createIntent</code>. À l&#8217;intérieur de celle-ci, un <code>SimpleSeriesRenderer</code> est créé pour chaque part du camembert. Ces renderers sont ensuite ajoutés à un <code>DefaultRenderer</code> global au graphique.</p><p>À ce stade, la structure du graphique est configurée, il nous reste plus qu&#8217;à déclarer les valeurs des différentes parts de notre camembert. Pour cela, nous créons un <code>CategorySeries</code> avec les mêmes libellés et valeurs que nous avons utilisé dans l&#8217;exemple précédent.</p><p>Pour finir, nous fabriquons à partir de tout cela (renderers + series) un <code>Intent</code> correctement configuré en utilisant la factory prévue à cet effet.</p><p>Notre <code>Intent</code> créé, il ne nous reste plus qu&#8217;à l&#8217;utiliser pour lancer une nouvelle activité contenant le graphique. Il s&#8217;agit du mécanisme habituel pour lancer une nouvelle activité.</p><pre class="brush: java; title: ; notranslate">
  Intent achartIntent = MyChartExample.createIntent(this);
  startActivity(achartIntent);
</pre><p>Après avoir exécuté ce code, voici ce qui devrait s&#8217;afficher.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/03_achart2-223x300.png" border="0" alt="" /></div><h4><a
name="Chartdroid"></a>Chartdroid</h4><p>La dernière solution présentée dans cet article est plus contraignante d&#8217;utilisation. Elle utilise le même mécanisme d&#8217;<code>Intent</code> que la solution précédente, mais ici les activités ne sont pas directement intégrées à votre projet. Pour que les <code>Intents</code> fonctionnent, vous devez installer une application tierce : <code>ChartDroid</code>. Notez qu&#8217;il vous est cependant possible de faciliter cette installation en proposant programmatiquement un lien sur le market pour la récupérer (ce mécanisme n&#8217;est pas présenté dans cet article, il fonctionne, une fois encore, via un <code>Intent</code>).</p><p>Pour utiliser cette solution, vous devez créer un <code>ContentProvider</code>. C&#8217;est un mot qui peut faire peur au premier abord, mais il s&#8217;agit d&#8217;un des mécanismes proposé par Android pour communiquer entre application. Un <code>ContentProvider</code> est utilisable après la création d&#8217;un <code>Intent</code>, il permet de récupérer des données à partir d&#8217;un type et d&#8217;un URL.</p><pre class="brush: java; title: ; notranslate">
public class ChartDroidDataProvider extends ContentProvider {
  static final String AUTHORITY =  &quot;com.xyz.contentprovider.chardroid&quot;;
  @Override
  public String getType(Uri uri) {
    return &quot;vnd.android.cursor.dir/vnd.com.googlecode.chartdroid.graphable&quot;;
  }
  public static final Uri PROVIDER_URI = new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT).authority(AUTHORITY).build();
  @Override
  public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
    // Fetch the actual data
    MatrixCursor c = new MatrixCursor(new String[] {
      BaseColumns._ID,
      &quot;COLUMN_AXIS_INDEX&quot;, &quot;COLUMN_SERIES_INDEX&quot;,
      &quot;COLUMN_DATUM_VALUE&quot;, &quot;COLUMN_DATUM_LABEL&quot;
    });
    c.newRow().add(1).add(0).add(1).add(30).add(null);
    c.newRow().add(2).add(0).add(1).add(10).add(null);
    c.newRow().add(3).add(0).add(1).add(60).add(null);
    return c;
  }
  ...
}
</pre><p>Notez que nous avons supprimé du code précédent les méthodes qui sont générées par défaut par nos IDEs et que nous n&#8217;avons pas eu besoin de modifier.</p><p>La méthode <code>query</code> est en fait chargée de fournir les données nécessaires à la construction du graphique. Ce listing est l&#8217;un des exemples les plus minimalistes nécessaire à l&#8217;API pour générer un camembert. Nous utilisons un <code>MatrixCursor</code> afin de passer les valeurs de notre graphique. Au premier abord, la manière de récupérer les données ne semblent pas très claire, la syntaxe n&#8217;est pas des plus conviviale. Au final, on dit souvent que la première impression est souvent la bonne <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>N&#8217;hésitez pas à consulter le <a
href="http://code.google.com/p/chartdroid/wiki/InterfaceSpecification" title="site officiel" >site officiel</a> pour plus d&#8217;informations sur ce projet.</p><p>Maintenant que notre content provider est crée, il ne nous reste plus qu&#8217;à démarrer l&#8217;activité ChartDroid pour afficher notre graphique. Cela s&#8217;effectue par un <code>Intent</code> :</p><pre class="brush: java; title: ; notranslate">
Intent chartDroidIntent = new Intent(Intent.ACTION_VIEW, ChartDroidDataProvider.PROVIDER_URI);
chartDroidIntent.putExtra(Intent.EXTRA_TITLE, &quot;Chart droid&quot;);
chartDroidIntent.addCategory(&quot;com.googlecode.chartdroid.intent.category.PIE_CHART&quot;);
startActivity(chartDroidIntent);
</pre><p>Dans le morceau de code précédent, la ligne <em>category</em> est importante car elle définie le type de graphique à afficher.</p><p>Après exécution, vous devriez avoir un résultat qui ressemble à cela :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/04_chartdroid-211x300.png" border="0" alt="" /></div><h4><a
name="Conclusion"></a>Conclusion</h4><p>Pour conclure, la solution <strong>Google Chart API</strong> est la plus aboutie, je vous la recommande vivement. Les graphiques sont obtenus très facilement et sont plutôt jolis. Si vous n&#8217;êtes pas prêt à dépendre d&#8217;une connexion internet, je vous recommanderais la deuxième solution : <strong>achartengine</strong>. Bien que cela ne se voit pas sur les captures d&#8217;écran ci-dessous, les graphiques obtenus par achartengine sont généralement un peu moins jolis que ceux obtenus par chartdroid. C&#8217;est la contrainte d&#8217;avoir à installer une application tierce qui cause du tord à la troisième solution.</p><p>Pour finir, notez que toutes les solutions n&#8217;ont pas été présentées dans cet article. Je pense en particulier aux nombreuses petites surcouches jfreechart qui émergent (et meurent) ici et là. Je ne les ai pas présentées car la majorité d&#8217;entre elles ne sont que très peu actives.</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/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/08/31/revue-de-presse-xebia-174/</link> <comments>http://blog.xebia.fr/2010/08/31/revue-de-presse-xebia-174/#comments</comments> <pubDate>Tue, 31 Aug 2010 05:48:06 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Brevet]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[java7]]></category> <category><![CDATA[Jdk7]]></category> <category><![CDATA[rabbitmq]]></category> <category><![CDATA[SpringSource]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5303</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Sortie de RabbitMQ 2.0 Le coin de la technique Gestion automatique des ressources dans Java7 (ARM) Evènements de notre communauté en France et à l&#8217;étranger Google et les brevets Actualité éditeurs / SSII Sortie de RabbitMQ 2.0 La sortie 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/2010/08/31/revue-de-presse-xebia-174/#SortiedeRabbitMQ">Sortie de RabbitMQ 2.0</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/08/31/revue-de-presse-xebia-174/#Gestionautomatiquedesressource">Gestion automatique des ressources dans Java7 (ARM)</a></li></ul><p><strong>Evènements  de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/08/31/revue-de-presse-xebia-174/#Googleetlesbrevets">Google et les brevets</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="SortiedeRabbitMQ"></a>Sortie de RabbitMQ 2.0</h4><p>La sortie de la version 2.0 du serveur de messaging <a
href="http://blog.xebia.fr/2010/02/23/amqp-une-alternative-a-jms/" title="AMQP" >AMQP</a> RabbitMQ vient d&#8217;être annoncée <a
href="http://www.rabbitmq.com/blog/2010/08/27/growing-up/" title="ici" >ici</a>.<br
/> Cette release majeure vient avec une refonte importante et son lot de nouveautés :</p><ul><li>Une refonte de la gestion de la persistence permettant une alternative au moteur de persistence embarqué. Il sera possible de développer un support pour une base de données relationelle ou NoSQL ou tout autre data store.</li><li>Le support de différents protocoles de messaging : AMQP (0-8 et <a
href="http://www.rabbitmq.com/blog/2010/08/04/rabbitmq-and-amqp-0-9-1/" title="0-9-1" >0-9-1</a>), <a
href="http://fr.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol" title="XMPP" >XMPP</a>, <a
href="http://stomp.codehaus.org/Protocol" title="STOMP" >STOMP</a>, HTTP, SMTP&#8230; Il sera aussi possible d&#8217;ajouter de nouveaux protocoles à l&#8217;aide d&#8217;extensions.</li><li>La mise en place d&#8217;une infrastructure ayant pour but de simplifier le développement d&#8217;outils pour la gestion et le monitoring de RabbitMQ.</li><li>Une amélioration de la gestion des plugins (il n&#8217;est plus nécessaire de compiler les plugins, une version pré-compilée peut être directement chargée par RabbitMQ).</li></ul><p>SpringSource qui a récemment racheté RabbitMQ (nous vous en avions parlé <a
href="http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#RabbitMQrachetparSpringSource" title="ici" >ici</a>) propose de son côté un template reprenant les principes des templates jdbc, hibernate, jms ou encore LDAP encapsulant le client Java d&#8217;AMQP. Les utilisateurs habitués à <a
href="http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jms/core/JmsTemplate.html" title="JmsTemplate" >JmsTemplate</a> retrouveront donc leurs repères en utilisant l&#8217;<a
href="http://static.springsource.org/spring-amqp/docs/1.0.x/api/org/springframework/amqp/core/AmqpTemplate.html" title="AmqpTemplate" >AmqpTemplate</a> du projet <a
href="http://www.springsource.org/spring-amqp" title="spring AMQP" >spring AMQP</a>.</p><p>SpringSource/VMWare continue donc de faire évoluer son portefeuil de produits avec cette évolution majeure de RabbitMQ, qu&#8217;il considère comme une pièce essentielle à sa stratégie de développement du Cloud Computing (voir <a
href="http://blog.springsource.com/2010/04/13/springsource-acquires-rabbitmq/" title="cet article" >cet article</a> de Rod Johnson).</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="Gestionautomatiquedesressource"></a>Gestion automatique des ressources dans Java7 (ARM)</h4><p>Java7 suit son petit bonhomme de chemin sans qu&#8217;on ait encore une bonne visibilité sur la date de sortie officiel. Le <a
href="http://download.java.net/jdk7/" title="build 105" >build 105</a> de la version actuelle propose une nouvelle fonctionnalité très intéressante qui devrait facilité la vie de chaque développeur: <a
href="http://blogs.sun.com/darcy/entry/project_coin_updated_arm_spec" title="lAutomatic Resource Management" >l&#8217;<em>Automatic Resource Management</em></a>.</p><p>L&#8217;idée, proposée par Joshua Bloch depuis quelques années déjà, consiste à améliorer la fermeture des ressources sous la forme d&#8217;une clause <code>try-with-resources</code>. Actuellement lorsqu&#8217;on manipule une ressource, par exemple un <code>InputStream</code>, la façon la plus propre ressemble à ceci:</p><pre class="brush: java; title: ; notranslate">
public void copyFile(File in, File out) {
    FileInputStream fis = null;
    FileOutputStream fos = null;
    try {
       fis = new FileInputStream(in);
       fos= new FileOutputStream(out);
       // Lire le fichier in et écrire dans le out
       ...
    }  catch (Exception e)  {
       ...
    } finally {
      close(fis);
      close(fos);
    }
}
private void close(Closeable closeable){
    if(closeable != null) {
        try{
           closeable.close();
        } catch(IOException e){...}
    }
}
</pre><p>Ce code devient vite très verbeux et répetitif car beaucoup de vérifications doivent être faites pour s&#8217;assurer de la possibilité de fermer la ressource. La solution pour simplifier cela est de déléguer la fermeture du flux à l&#8217;aide du <code>try</code>:</p><pre class="brush: java; title: ; notranslate">
public void copyFile(File file) {
    try(FileInputStream fis=new FileInputStream(in);
        FileOutputStream fos=new FileOutputStream(out)) {
       // Lire le fichier in et écrire dans le out
       ...
    }
}
</pre><p>Le code gagne énormément en visibilité, les tests pour savoir si la ressource est <code>null</code> ou si la fermeture s&#8217;est bien déroulée sont gérés en interne de la JVM. A noter que pour être fermées les ressources devront étendre une nouvelle interface <code><a
href="http://download.java.net/jdk7/docs/api/java/lang/AutoCloseable.html" title="AutoCloseable" >AutoCloseable</a></code>.</p><p>S&#8217;il existe un certain consensus autour de l&#8217;utilité de cette évolution, il demeure encore un petit débat sur la partie <code>catch</code> des exceptions. Sans rentrer dans les détails, les exceptions levées pendant la fermeture d&#8217;une ressource annihilent celles levées dans le bloc <code>try</code>, ce qui en général est préférable mais du coup peut aussi masquer des exceptions importantes pour l&#8217;analyse du problème.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements  de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="Googleetlesbrevets"></a>Google et les brevets</h4><p>Semaine chargée pour Google:</p><ul><li>InfoQ <a
href="http://www.infoq.com/news/2010/08/h264-free" title="nous annonce" >nous annonce</a> que le MPEG LA a décidé de continuer à ne pas réclamer de royalties pour les videos encodées en H.264 et distribuées gratuitement aux utilisateurs. Seules les plateformes vendant des vidéos sont, elles, toujours soumises à taxation. C&#8217;est donc une réponse à Google qui avait il y a quelques temps annoncé WebM, un codec vidéo semblable au H.264 mais plus libre et débarrassé des problèmes de brevets et de royalties qui entravent ce dernier. Si InfoQ ne voit pas trop de problèmes à continuer d&#8217;utiliser H.264, ce n&#8217;est pas du tout l&#8217;avis de <a
href="http://en.wikipedia.org/wiki/Mike_Shaver" title="Mike Shaver" >Mike Shaver</a> ingénieur haut gradé chez Mozilla et <a
href="http://shaver.off.net/diary/2010/08/27/free-as-in-smokescreen/" title="qui rappelle" >qui rappelle</a> que les logiciels permettant de produire ou de consommer ces vidéos devront eux toujours s&#8217;acquitter d&#8217;une licence. La bataille entre WebM et H.264 ne fait donc que commencer.</li><li>Ensuite, c&#8217;est <a
href="http://fr.wikipedia.org/wiki/Paul_Allen" title="Paul Allen" >Paul Allen</a>, le co-fondateur de Microsoft, qui <a
href="http://www.numerama.com/magazine/16620-brevets-onze-geants-du-web-poursuivis-par-le-cofondateur-de-microsoft.html" title="attaque Google et nombre de ses petits camarades" >attaque Google et nombre de ses petits camarades</a> (AOL, Yahoo, Facebook) pour avoir enfreint 4 brevets détenus par sa compagnie &laquo;&nbsp;Interval Licensing&nbsp;&raquo;. Le blog <em>Digits</em> du Wall Street Journal <a
href="http://blogs.wsj.com/digits/2010/08/27/the-paul-allen-suit-a-look-at-the-patents/" title="sest pench sur 2 de ces brevets" >s&#8217;est penché sur 2 de ces brevets</a>. Nous vous déconseillons fortement la lecture de son analyse si vous avez réalisé quoi que ce soit dans l&#8217;informatique ces 10 dernières années. En effet, vous risquez de ne plus trouver le sommeil en vous rendant compte que vous enfreignez sans doutes, vous aussi, nombre de brevets !</li><li>Et pour finir sur Google et les brevets, vous vous souvenez des récentes poursuites engagées par Oracle concernant Java et Android. Google vient de riposter, <a
href="http://googlecode.blogspot.com/2010/08/update-on-javaone.html" title="en annoncant" >en annoncant</a> qu&#8217;aucun de ses employés ne participera à <a
href="http://en.wikipedia.org/wiki/JavaOne" title="JavaOne" >JavaOne</a> <a
href="http://www.oracle.com/us/javaonedevelop/062264.html" title="cette année" >cette année</a>. Pour ceux qui voulaient échanger avec les employés de Google, il semble que c&#8217;est plus tard dans l&#8217;année, à Devoxx, <a
href="http://twitter.com/ecspike/status/22288635610" title="qu'il faille se rendre" >qu&#8217;il faille se rendre</a>. Mais rassurez vous, il y aura quand même de l&#8217;ambiance à JavaOne: James Gosling, père de Java, demande <a
href="http://nighthacks.com/roller/jag/entry/let_larry_know_you_care" title="sur son blog" >sur son blog</a> à toute personne y assistant de porter un TShirt arborant le slogan &laquo;&nbsp;Java just Free it&nbsp;&raquo;. Si cette idée ne risque pas trop de faire bouger Oracle, elle devrait quand même apporter sa dose de fun à l&#8217;évènement !</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/08/31/revue-de-presse-xebia-174/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172/</link> <comments>http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172/#comments</comments> <pubDate>Tue, 17 Aug 2010 05:47:32 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[GraniteDS]]></category> <category><![CDATA[JQuery Mobile]]></category> <category><![CDATA[livre]]></category> <category><![CDATA[Nasa]]></category> <category><![CDATA[Nebula]]></category> <category><![CDATA[Oracle]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5203</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Oracle poursuit Google pour violation de brevets RIA Bean Validation pour Flex. Annonce de jQuery Mobile SOA La NASA ouvre les sources de son cloud privé Le coin de la technique Continuous Delivery, le livre le plus important de 2010 [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /></p><p><em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité  éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172#OraclepoursuitGooglepourviolat">Oracle poursuit Google pour violation de brevets</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172#BeanValidationpourFlex">Bean Validation pour Flex.</a></li><li><a
href="http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172#AnnoncedeJQueryMobile">Annonce de jQuery Mobile</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172#LaNASAouvrelessourcesdesonclou">La NASA ouvre les sources de son cloud privé</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172#ContinuousDeliverylelivreleplu">Continuous Delivery, le livre le plus important de 2010 ?</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="OraclepoursuitGooglepourviolat"></a>Oracle poursuit Google pour violation de brevets</h4><p>Jeudi dernier, Oracle a lancé une action en justice contre Google pour violation de brevets quant à l&#8217;utilisation de Java pour la plateforme Android. L&#8217;information a rapidement fait le tour du web et de la twitosphère provoquant à l&#8217;encontre d&#8217;Oracle son lot de commentaires indignés, notamment dans les communautés Java et libristes (<em>On retiendra le billet peu amène de <a
title="James Gosling  The shit finally hits the fan" href="http://nighthacks.com/roller/jag/entry/the_shit_finally_hits_the">James Gosling : &laquo;&nbsp;The shit finally hits the fan&#8230;.&nbsp;&raquo;</a></em>).</p><p>Dans sa <a
title="plainte" href="http://i.i.com.com/cnwk.1d/i/ne/pdfs/FINAL_Complaint.pdf?tag=mncol;txt">plainte</a>, Oracle précise que <em>&laquo;&nbsp;Android [...] et les appareils qui utilisent Android violent un ou plusieurs brevets parmi les suivants: 6,125,447; 6,192,476; 5,966,702; 7,426,720; RE38,104; 6,910,205; et 6,061,520&#8243;</em>. Les brevets en question portent sur l&#8217;implémentation de machines virtuelles, l&#8217;outillage et les compilateurs.<br
/> Google, certainement pour garder les coudées franches, a fait le choix d&#8217;implémenter sa machine virtuelle Dalvik sans utiliser OpenJDK <em>(la version GPL2 de Java)</em>. Cette implémentation n&#8217;est pas pleinement compatible Java et est exécutée sur des terminaux mobiles. Or, lorsque Sun avait <em>&laquo;&nbsp;open sourcé une partie de Java&nbsp;&raquo;</em> au travers d&#8217;OpenJDK, les garanties d&#8217;être à l&#8217;abri d&#8217;attaques pour violation de brevet ne protégeaient que les implémentations pleinement compatibles Java pour desktop et serveur uniquement <em>(pas les implémentations pour terminaux mobiles)</em>.<br
/> Pour étayer son accusation selon laquelle Google a sciemment violé les brevets relatifs à Java, Oracle avance que Google était, de longue date, au courant des brevets détenus par Sun. Eric Schmidt (CEO de Google) et Urs Hölzle (Senior VP of operations chez Google) ont en effet joué un rôle significatif dans le développement de la technologie Java lorsqu&#8217;ils étaient chez Sun.<br
/> La réponse de Google à l&#8217;attaque d&#8217;Oracle <em>(au travers d&#8217;un communiqué de presse)</em> est sans surprise : Google estime que la plainte est sans fondement. D&#8217;autre part, Google considère qu&#8217;avec cette plainte, Oracle n&#8217;attaque pas seulement Google, mais aussi la communauté Open Source Java.</p><p>A priori, l&#8217;objectif d&#8217;Oracle n&#8217;est pas de &laquo;&nbsp;tuer&nbsp;&raquo; Android mais de profiter de son succès en imposant à Google de lui reverser une part des revenus de la plateforme. En effet, Java ME est une source non négligeable de revenus pour Sun <em>(Oracle)</em> puisque cette technologie équipe de très nombreux terminaux. Mais le succès fulgurant d&#8217;Android sur le marché des smartphones est sur le point de tarir cette source de revenus.<br
/> D&#8217;autre part, Oracle souhaite sans doute envoyer un message clair quant à sa conception de l&#8217;utilisation de la technologie Java là où le silence de Sun vis à vis d&#8217;Android pouvait être perçu comme un blanc seing.</p><p>Ce genre d&#8217;affaire est généralement synonyme de feuilleton judiciaire à rallonge <em>(comme dans le cas emblématique de <a
title="SCO vs Linux" href="http://en.wikipedia.org/wiki/SCO-Linux_controversies">SCO vs. Linux</a>)</em>. Il y a donc peu de chances que le cas Google / Oracle se règle rapidement. La complexité du dossier <em>(notamment en ce qui concerne les tenants et aboutissants techniques)</em> laisse présager de longs débats. Même si l&#8217;issu d&#8217;un procès reste incertaine Google était certainement préparé à une telle attaque <em>(et est de taille à y faire face)</em> et sa défense sera bien préparée.<br
/> Tant que l&#8217;affaire ne sera pas réglée, l&#8217;ensemble de l&#8217;écosystème Android <em>(constructeurs, développeurs, utilisateurs, &#8230;)</em> va retenir son souffle, mais l&#8217;engouement pour la plateforme Android ne devrait pas trop en pâtir. D&#8217;une part, Google continuera de développer la technologie Android. D&#8217;autre part, gageons que Google prendra ses responsabilités sur le sujet de la propriété intellectuelle et jouera son rôle de pare feux vis à vis des constructeurs équipant leurs terminaux de l&#8217;OS Android.</p><p>La fin d&#8217;Android est très peu probable. Oracle n&#8217;y a aucun intérêt et ce pour plusieurs raisons. D&#8217;abord parce qu&#8217;Oracle a tout intérêt à ce que Java soit présent sur le marché des smartphones. Or cette présence passe par Android, pas par Java ME et Oracle n&#8217;a, aujourd&#8217;hui, ni la volonté, ni la capacité d&#8217;innover dans ce sens. Ensuite parce que l&#8217;essor des smartphones sous Android favorise le développement d&#8217;applications utilisant des <em>backend</em> <em>(serveurs)</em> mettant en œuvre des serveurs d&#8217;applications Java et des bases de données, augmentant ainsi la taille d&#8217;un marché sur lequel Oracle se taille la part du lion. Enfin parce qu&#8217;Android réunit une large communauté Java.<br
/> Il semble donc que cette affaire ne puisse avoir que deux issues :</p><ul><li>Google sera contraint à verser une partie des revenus d&#8217;Android à Oracle. Soit parce qu&#8217;Oracle aura gagné un procès, soit parce que Google aura préféré négocier un accord à l&#8217;amiable.</li><li>Ce sera le status quo. Soit parce qu&#8217;Oracle aura perdu un procès, soit parce qu&#8217;Oracle retirera sa plainte suite aux négociations qui vont s&#8217;entamer <em>(au cours desquels Google pourrait commencer à utiliser ses brevets comme arme de dissuasion)</em>.</li></ul><p>Ce qui est sûr, c&#8217;est que l&#8217;image de Java ne sortira pas grandie de l&#8217;initiative d&#8217;Oracle <em>(qui semble d&#8217;ores et déjà avoir perdu la bataille de l&#8217;image)</em>.</p><p>Pour ceux qui souhaitent approfondir le sujet, l&#8217;excellent billet de Charles Nutter <a
title="My Thoughts on Oracle v Google" href="http://blog.headius.com/2010/08/my-thoughts-on-oracle-v-google.html">&laquo;&nbsp;My Thoughts on Oracle v Google&nbsp;&raquo;</a> fait longuement le tour de la question et propose des perspectives très intéressantes.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="BeanValidationpourFlex"></a>Bean Validation pour Flex.</h4><p>Le framework <a
title="GraniteDS" href="http://www.graniteds.org/confluence/pages/viewpage.action?pageId=229378">GraniteDS</a> continue à offrir des fonctionnalités riches pour Flex, en parallèle des offres de Adobe, BlazeDs (open source) et LifeCycle ES (commercial).<br
/> La <a
title="version 2.2 (actuellement en bêta publique)" href="http://tech.groups.yahoo.com/group/graniteds/message/7122">version 2.2 (actuellement en bêta publique)</a> ne faillit pas à la règle et amène une rafraichissante innovation : l&#8217;implémentation de la JSR 303 (BeanValidation) pour Flex. Toutes les contraintes standard de la JSR sont implémentées via des annotations AS3 et le générateur de code maison (GAS3) permet la conversions des annotations des beans Java.<br
/> La validation s&#8217;appuie sur une nouvelle fonctionnalité de réflexion.<br
/> Autre avancées, peut être moins spectaculaire, la prise en compte des types &#8216;big numbers&#8217; de Java dans les sérialisations offertes par le framework.<br
/> GraniteDs, dont certains avait décrété la mort à la publication de BlazeDs, est toujours bien vivant et comble, en open source,  certains manques laissés par Adobe.</p><h4><a
name="AnnoncedeJQueryMobile"></a>Annonce de jQuery Mobile</h4><p>C&#8217;est une nouvelle qui va à coup sûr faire du bruit dans un monde du développement mobile déjà bouillonnant, puisque vient d&#8217;être annoncée la sortie pour la fin d&#8217;année de la version mobile du framework <a
title="jQuery" href="http://jquerymobile.com/">jQuery</a>. Et ce n&#8217;est pas par la petite porte que le célèbre framework web souhaite faire son entrée, puisque contrairement à ses concurrents déclarés, tels que <a
title="jQTouch" href="http://www.jqtouch.com/">jQTouch</a> ou bien <a
title="Sensha Touch" href="http://www.sencha.com/products/touch/">Sensha Touch</a>, jQuery Mobile se veut être un framework JavaScript ciblant la quasi totalité des <a
title="plateformes mobiles" href="http://jquerymobile.com/gbs/">plateformes mobiles</a> web actuelles (Blackberry, Windows Mobile, iOS pour l&#8217;iPhone et l&#8217;iPad, Android, Symbian, Bada, &#8230;), et permettant de développer des interfaces riches capables de faire rougir bon nombre d&#8217;interfaces graphiques natives.</p><p>Avec l&#8217;avènement d&#8217;HTML5 (WebStorage, WebSockets, Vidéo, Géolocalisation, &#8230;), du CSS3, et des navigateurs mobiles dernière génération proposant des moteurs JavaScripts performants, la guerre du web semble se trouver un nouveau terrain de bataille, et le web mobile aura sous peu toutes les armes nécessaires pour déstabiliser le business modèle à peine naissant des Markets, tel que l&#8217;iTunes App Store ou bien l&#8217;Android Market. Le marché des applications mobiles semble donc suivre la voie de son grand frère, celui des applications PC, et proposera à terme de nombreuses applications riches directement par le web.</p><p>L&#8217;annonce parue sur le site de jQuery Mobile indique que l&#8217;un des objectifs du framework est de pouvoir développer une application unique pour toutes les plateformes mobiles. Ce concept, ne semble pas nouveau puisque l&#8217;objectif de J2ME sorti il y a 10 ans déjà était bien de développer une solution unique, rappelez-vous: &laquo;&nbsp;Write Once, Run everywhere&nbsp;&raquo;. Le slogan semble être ici: &laquo;&nbsp;Write Less, Do More&nbsp;&raquo;, mais l&#8217;objectif de fond est bien le même.</p><p>Palm avec sa plateforme WebOS et Firefox sont déjà sponsors du projet. Bien qu&#8217;encore en développement intense, la première sortie est prévue pour fin 2010. Ce framework pourrait bien être une des grandes surprises mobile de 2010 et devenir très rapidement un incontournable pour le développement web d&#8217;applications riches pour mobile.</p><p>Pour en apprendre plus sur cette déclinaison de jQuery, vous pouvez suivre les liens suivants et apprécier les designs présentés :</p><ul><li><a
title="Site officiel de jQuery Mobile" href="http://jquerymobile.com/">Site officiel de jQuery Mobile</a></li><li><a
title="La device support grid de jQuery Mobile" href="http://jquerymobile.com/gbs/">La device support grid de jQuery Mobile</a></li><li><a
title="Les designs concepts" href="http://jquerymobile.com/designs/">Les designs concepts</a></li></ul><h3><a
name="SOA"></a>SOA</h3><h4><a
name="LaNASAouvrelessourcesdesonclou"></a>La NASA ouvre les sources de son cloud privé</h4><p>La NASA a récemment <a
title="annoncé" href=" http://www.dailyfinance.com/story/company-news/nasa-rackspace-open-source-cloud-computing/19562733/">annoncé</a> son intention d&#8217;offrir le code de son <em>cloud</em> privé Nebula au projet <a
title="OpenStack" href=" http://openstack.org/index.php">OpenStack</a> en partenariat avec <a
title="Rackspace" href=" http://www.rackspace.com/index.php">Rackspace</a>. Il s&#8217;agit d&#8217;une implémentation d&#8217;une IaaS orientée vers le calcul scientifique et le stockage de données. Par ailleurs OpenStack est un projet actuellement supporté par plus de 25 firmes, dont Dell et Intel. Il offre une pile logicielle ouverte permettant de créer et exploiter un <em>cloud</em> privé sur la base d&#8217;infrastructures matérielles standards. Il est disponible sous la licence Apache 2.0. D&#8217;après la présentation du projet, la création d&#8217;un nouveau Framework ouvert pour le cloud est motivée par deux raisons principales :</p><ul><li>Le paysage du <em>cloud</em> est actuellement composé d&#8217;offres propriétaires, incompatibles entre elles et manquant de transparence, freinant ainsi l&#8217;expansion de cette nouvelle industrie. La création d&#8217;un framework Open Source permettrait donc une adoption plus massive.</li><li>La plupart des autres projets Open Source existant ne pouvaient satisfaire les énormes besoins de scalabilité exprimés par Rackspace. Seule Nebula, semblait correspondre au besoin.</li></ul><p>Pour l&#8217;instant le projet est disponible en &laquo;&nbsp;Developer preview&nbsp;&raquo;. Une première <em>release</em> sera disponible respectivement mi-septembre pour &laquo;&nbsp;OS Compute&nbsp;&raquo; et mi-octobre pour &laquo;&nbsp;OS Storage&nbsp;&raquo;.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="ContinuousDeliverylelivreleplu"></a>Continuous Delivery, le livre le plus important de 2010 ?</h4><p>Continuous Delivery, le livre de Jez Humble et David Farley, est disponible en version finale, en édition papier ou électronique (chez vos revendeurs habituels). Il traite d&#8217;un sujet qui tient à cœur de plus en plus d&#8217;acteurs de l&#8217;écosystème JEE : comment améliorer et dédramatiser les processus de build, de livraison et de déploiement d&#8217;un produit. Ce livre recueille déjà de nombreux lauriers. Dont ceux de Martin Fowler (directeur de la collection, donc forcément un peu partial), <a
title="qui en fait le livre technique le plus important de 2010" href="http://martinfowler.com/snips/201007301801.html">qui en fait le livre technique le plus important de 2010</a>.</p><p>De ce que nous avons pu en lire (<a
title="par exemple en RoughCuts ici" href="http://my.safaribooksonline.com/9780321670250">par exemple, en RoughCuts ici</a>), ces louanges sont justifiées : ce livre traite de tous les problèmes qui devraient animer n&#8217;importe quel consultant au démarrage d&#8217;un projet. Collaborer entre équipes, développer de manière incrémentale, tester, automatiser, déployer, tout cela dans un seul but, maximiser la qualité du produit délivré.</p><p>Ce livre donnera lieu a un grand <a
title="nombre de prsentations en confrence" href="http://continuousdelivery.com/2010/06/continuous-delivery-talks-2010/">nombre de présentations en conférence</a>, qui, si ce n&#8217;est déjà fait, devrait vous donner envie d&#8217;en faire votre livre de chevet avant la rentrée littéraire.</p><p>Pour en savoir plus, consultez le blog <a
title="Continuous Delivery" href="http://continuousdelivery.com/">Continuous Delivery</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/08/10/revue-de-presse-xebia-171/</link> <comments>http://blog.xebia.fr/2010/08/10/revue-de-presse-xebia-171/#comments</comments> <pubDate>Tue, 10 Aug 2010 05:39:38 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Axon]]></category> <category><![CDATA[CQRS]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Google Wave]]></category> <category><![CDATA[HonetQ]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JMS]]></category> <category><![CDATA[MongoDB]]></category> <category><![CDATA[Sharding]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5184</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Naufrage pour Google Wave Le coin de la technique Nouvelle architecture de réplication et de sharding pour MongoDB Axon, une implémentation Java du pattern CQRS L&#8217;architecture de Last.fm basée sur HornetQ Actualité éditeurs / SSII Naufrage pour Google Wave Nous [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /></p><p><em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité  éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/08/10/revue-de-presse-xebia-171/#NaufragepourGoogleWave">Naufrage pour Google Wave</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/08/10/revue-de-presse-xebia-171/#Nouvellearchitecturederplicati">Nouvelle architecture de réplication et de sharding pour MongoDB</a></li><li><a
href="http://blog.xebia.fr/2010/08/10/revue-de-presse-xebia-171/#AxonuneimplmentationJavadupatt">Axon, une implémentation Java du <em>pattern</em> CQRS</a></li><li><a
href="http://blog.xebia.fr/2010/08/10/revue-de-presse-xebia-171/#LarchitecturedeLastfmbasesurHo">L&#8217;architecture de Last.fm basée sur HornetQ</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="NaufragepourGoogleWave"></a>Naufrage pour Google Wave</h4><p>Nous l&#8217;apprenons sur <a
title="The H" href="http://www.h-online.com/open/news/item/Google-Wave-to-dissipate-1051080.html">The H</a>, Google Wave coule et ne sera bientôt plus. Après un peu plus d&#8217;un an d&#8217;existence, Google a décidé de mettre fin à son expérimentation qui n&#8217;aura pas répondu à toutes les attentes qu&#8217;elle avait provoqué. Pourtant, nous-mêmes, <a
title="nous y avons cru" href="http://blog.xebia.fr/2009/11/20/pourquoi-tant-de-vagues-autour-de-google-wave/">nous y avons cru</a> ! Basé sur des protocoles ouverts, le système avait de quoi séduire, même si tout le monde se demandait un peu quelles allaient être les applications réelles&#8230; Las, les serveurs de Google devraient être fermés l&#8217;année prochaine. La firme annonce quand même la mise à disposition future d&#8217;outils permettant aux utilisateurs de &laquo;&nbsp;libérer leurs données de Wave&nbsp;&raquo;. Mais ne nous y trompons pas, même si l&#8217;interface graphique colorée ayant donné aux internautes un avant goût de la communication du futur disparaît, il reste quasi-certain que le mécanisme d&#8217;échange de données entre serveurs Wave devrait survivre et servir de base à d&#8217;autres projets.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="Nouvellearchitecturederplicati"></a>Nouvelle architecture de réplication et de sharding pour MongoDB</h4><p><a
title="MongoDB" href="http://mongodb.org/">MongoDB</a> est une base de données orientée documents très populaire ces temps-ci. 10gen l&#8217;entreprise Open Source qui en est à la source se montre très active tant sur la communication que le plan technique en apportant des améliorations régulières pour placer leur base de données NoSQL à la hauteur des ambitions qu&#8217;on lui prête.<br
/> Respectant le planning présenté mi-juin lors du <a
title="MongoDB Day à Paris" href="http://www.10gen.com/conferences/event_mongofr_21june10">MongoDB Day à Paris</a>, la version 1.6 <a
title="vient dtre finalise" href="http://blog.mongodb.org/post/908172564/mongodb-1-6-released">vient d&#8217;être finalisée</a>. Cette <em>release</em> estivale était particulièrement attendue car elle apporte des améliorations majeures sur l&#8217;architecture distribuée de MongoDB :</p><ul><li>La réplication était jusqu&#8217;alors assurée par une architecture master / slave qui souffrait d&#8217;un <em>single point of failure</em> à cause de son nœud master. MongoDB 1.6 introduit la notion de <em>replica set</em> qui est un ensemble de nœuds qui possèderont des replicas d&#8217;une même donnée. Une élection de <em>master</em> permet alors de définir un nœud unique qui sera responsable des écritures.</li><li>Le <em>sharding</em> est maintenant <em>production ready</em> dans MongoDB. L&#8217;architecture de partitionnement repose sur un ou plusieurs nœud proxy intermédiaire entre les clients et les instances MongoDB.</li></ul><p>En apportant ces améliorations, 10gen offre à MongoDB une architecture distribuée plus attrayante. Ce choix se comprend puisque MongoDB ne proposait jusqu&#8217;alors que des mécanismes peu innovants et qui poussaient beaucoup de projets à lui préférer Cassandra.</p><h4><a
name="AxonuneimplmentationJavadupatt"></a>Axon, une implémentation Java du <em>pattern</em> CQRS</h4><p>Le <em>Command Query Request Segregation</em> (CQRS) est un <em>pattern</em> architectural qui a été <a
title="formalis fin 2009" href="http://www.udidahan.com/2009/12/09/clarified-cqrs/">formalisé fin 2009</a> par Greg Young et Udi Dahan. Il repose sur l&#8217;idée de séparer le code métier selon qu&#8217;il s&#8217;appuie sur des opérations d&#8217;écriture (<em>command</em>) ou de consultation de données (<em>query</em>), plutôt que par découpage fonctionnel. Le but recherché ici est d&#8217;offrir une grande scalabilité en permettant aux lectures de s&#8217;effectuer de manière synchrone dans un cache, tandis que les requêtes d&#8217;écritures sont effectuées de manière asynchrone en mettant à jour à la fois le cache et la base de données sous-jacente.</p><p>Les développeurs Java disposent d&#8217;une implémentation Open Source de ce <em>pattern</em>, il s&#8217;agit du <em>framework</em> <a
title="Axon" href="http://code.google.com/p/axonframework/">Axon</a> (anciennement CQRS4J). Le projet est très actif et <a
title="vient diffuser" href="http://www.gridshore.nl/2010/08/08/axon-framework-0-6-released/">vient diffuser</a> une version 0.6 dont la maturité mérite de s&#8217;y attarder : gestion et persistance des évènements, intégration à Spring et gestion des transactions.<br
/> Ce <em>framework</em> reste modeste pour l&#8217;instant et ne couvre qu&#8217;un nombre limité d&#8217;environnements techniques mais à défaut de répondre à votre besoin il constituera un exemple d&#8217;implémentation intéressant à étudier.</p><h4><a
name="LarchitecturedeLastfmbasesurHo"></a>L&#8217;architecture de Last.fm basée sur HornetQ</h4><p>Tout le monde connaît <a
title="Last.fm" href="http://fr.wikipedia.org/wiki/Last.fm">Last.fm</a>, le service de <em>streaming</em> et de recommandation de musique. La compagnie a récemment changé son infrastructure de <em>streaming</em> et en a profité pour adopter <a
title="JBoss HornetQ" href="http://jboss.org/hornetq">JBoss HornetQ</a> comme serveur de <em>messaging</em>, au détriment <em>&laquo;&nbsp;d&#8217;un autre serveur open-source&nbsp;&raquo;</em> (mais nous ne saurons pas lequel !). Jeff Mesnil publie sur DZone un article <a
title="expliquant" href="http://java.dzone.com/articles/case-study-how-lastfm-uses">expliquant</a> les raisons de ce changement et la façon dont Last.fm se sert d&#8217;HornetQ.<br
/> Pour résumer simplement, les messages JMS sont générés principalement par les <em>streamers</em> pour:</p><ul><li> notifier la fin de l&#8217;écoute d&#8217;un morceau et donc faire mettre à jour la base.</li><li>permettre la déconnexion automatique d&#8217;un utilisateur connecté à un flux si un message généré par un second <em>streamer</em> indique qu&#8217;il vient de se connecter à un autre flux.</li></ul><p>Dans sa configuration de HornetQ, Last.fm a mis l&#8217;accent sur la performance:</p><ul><li> la persistance a été désactivée. Comme rapporté par nos lecteurs dans <a
title="les commentaires" href="http://blog.xebia.fr/2010/02/23/amqp-une-alternative-a-jms/#comment-21922">les commentaires</a> <a
title="dun prcdant article" href="http://blog.xebia.fr/2010/02/23/amqp-une-alternative-a-jms/#comment-22026">d&#8217;un précédant article</a> celle-ci est connue pour être consommatrice.</li><li>messages déclarés comme pré-acquittés, permettant d&#8217;éliminer des accès réseau supplémentaires.</li></ul><p>Bien sûr tout ceci est fait au détriment de la robustesse. On n&#8217;a rien sans rien ! Mais Last.fm préfère perdre des messages plutôt que d&#8217;empêcher un auditeur d&#8217;écouter sa musique: &laquo;&nbsp;Availability was more important than reliable delivery&nbsp;&raquo;. Il est à noter que pour renforcer la robustesse, les envois de messages ne sont pas faits n&#8217;importe comment: un seul thread s&#8217;occupe de la communication JMS. Il communique avec les autres threads en interne par un mécanisme de files, dans lesquelles il puise les messages à envoyer à HornetQ et dépose les messages reçus. Ces files étant limitées en mémoire, cette dernière est donc maîtrisée et comme il y a un seul thread responsable des accès JMS, il n&#8217;y a pas de risque de blocage de tout le système.</p><p>Pour continuer sur HornetQ, notons que <a
title="la tant attendue" href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#HornetQunvritablerenouveau">la tant attendue</a> interface REST vient d&#8217;être annoncée par Bill Burke, son développeur principal, sur <a
title="le forum du broker" href="http://community.jboss.org/message/556393">le forum du broker</a>. Cette interface n&#8217;est pas encore disponible dans une version officielle de HornetQ, mais <a
title="sa documentation" href="http://jboss.org/hornetq/rest">sa documentation</a> permet d&#8217;ores et déjà de se faire une idée. Basée directement sur HTTP, elle évite de forcer l&#8217;utilisation d&#8217;une quelconque encapsulation (autre qu&#8217;applicative) des messages. Et bien sûr, on peut l&#8217;utiliser avec n&#8217;importe quel langage: REST est interopérable. La documentation <a
title="spécifique à la création de messages" href="http://docs.jboss.org/resteasy/hornetq-rest/1.0-beta-1/userguide/html/ch04.html">spécifique à la création de messages</a> permet de se faire une idée rapidement. Basée sur <a
title="RestEasy" href="http://jboss.org/resteasy">RestEasy</a>, qui fera aussi partie du futur JBoss AS 6, il y a fort à parier que cette interface fera parler d&#8217;elle et ouvrira la voie à de nouvelles utilisations du <em>broker</em>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/08/10/revue-de-presse-xebia-171/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/</link> <comments>http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#comments</comments> <pubDate>Tue, 25 May 2010 06:00:06 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Activiti]]></category> <category><![CDATA[Alfresco]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Google App Engine]]></category> <category><![CDATA[iBatis]]></category> <category><![CDATA[jBPM]]></category> <category><![CDATA[JRuby]]></category> <category><![CDATA[MyBatis]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4718</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Google I/O Partenariat entre Google et VMWare App Engine For Business WebM: enfin un standard vidéo libre ? SOA Les créateurs de jBPM chez Alfresco Le coin de la technique MyBatis : un fork de iBatis chez Google Code JRuby 1.5.0 Google I/O Dans [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Google I/O</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#PartenariatentreGoogleetVMWare">Partenariat entre Google et VMWare</a></li><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#AppEngineForBusiness">App Engine For Business</a></li><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#WebMenfinunstandardvidolibre">WebM: enfin un standard vidéo libre ?</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#LescrateursdejBPMchezAlfresco">Les créateurs de jBPM chez Alfresco</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#MyBatisunforkdeiBatischezGoogl">MyBatis : un fork de iBatis chez Google Code</a></li><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#JRuby">JRuby 1.5.0</a></li></ul><h3><a
name="GoogleIO"></a>Google I/O</h3><p>Dans le foisonnement d&#8217;annonces lors du <a
title="Google IO 2010" href="http://code.google.com/intl/fr-FR/events/io/2010/">Google I/O 2010</a> qui s&#8217;est tenu la semaine dernière à San Francisco, nous en avons retenu quelques unes très intéressantes.</p><h4><a
name="PartenariatentreGoogleetVMWare"></a>Partenariat entre Google et VMWare</h4><p>VMWare et SpringSource sont décidément très actifs actuellement dans le domaine des partenariats et des acquisitions (<a
title="RabbitMQ" href="http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#RabbitMQrachetparSpringSource">RabbitMQ</a>, <a
title="GemStone" href="http://blog.xebia.fr/2010/05/11/revue-de-presse-xebia-158/#SpringSourcesedoteduncachedist">GemStone</a> ou <a
title="VMForce" href="http://blog.xebia.fr/2010/05/03/revue-de-presse-xebia-157/#VMwareSpringSalesForceVMforce">VMForce</a>). Google I/O a été l&#8217;occasion pour eux d&#8217;annoncer un nouveau <em>partenariat</em> autour du cloud computing, voire au delà: ils poussent plus loin leur concept d&#8217;<a
title="Open PaaS" href="http://blogs.vmware.com/console/2010/05/google-and-vmwares-open-paas-strategy.html">Open PaaS</a> déjà évoqué pour le partenariat avec SalesForce.</p><p>L&#8217;idée sous-jacente est de faire de VMWare la plateforme de développement privilégiée pour toute solution de PaaS (Plateform as a Service). En citant Steve Herrod, CTO chez VMWare:<br
/> <em><br
/> Developers must be able to write applications without needing to know what underlying technology powers the cloud that they&#8217;ll be deployed on.<br
/> </em></p><p>Et donc on pourrait développer une application App Engine et la tester sur les environnements de Google puis les déployer en production sur des instances VMWare. Au-delà de la problématique de l&#8217;hébergement, Steve Herrod ajoute également la  possibilité d&#8217;accéder aux services Google (géolocalisation, traduction automatique&#8230;) et de diversifier les supports, en particulier sur les smartphones. Ce sont deux notions qu&#8217;on retrouve également dans le partenariat avec SalesForce.</p><p>Tout cela constitue pour l&#8217;instant des vœux pieux. Rod Johnson nous donne un <a
title="aperu" href="http://blog.springsource.com/2010/05/19/spring-google-appengine/">aperçu</a> plus précis de ce que sera ce partenariat:</p><ul><li>Intégration de GWT à l&#8217;outil <a
title="Spring ROO" href="http://www.springsource.org/roo">Spring ROO</a>, l&#8217;outil de SpringSource Tool qui permet de générer des projets Java en ligne de commande.</li><li>Intégration de <a
title="Google Speed Tracer" href="http://code.google.com/intl/fr-FR/webtoolkit/speedtracer/">Google Speed Tracer</a> à <a
title="Spring Insight" href="http://www.springsource.com/products/tcserver/devedition">Spring Insight</a>. Speed Tracer est un très bon outil de mesure de performance côté client, disponible aussi comme extension de chrome, alors que Spring Insight est un outil de mesure de performance plutôt côté serveur et directement accessible dans SpringSource Tool Suite. L&#8217;association des deux semble assez naturelle.</li></ul><p>Il est encore difficile de voir la pertinence de ce nouveau paradigme, l&#8217;Open PaaS, et si l&#8217;hétérogénéité des solutions ne va pas le rendre un peu creux. Mais au-delà de ça, la stratégie actuelle de VMWare semble être la captation des développeurs Java vers leurs outils et en particulier SpringSource Tool Suite.</p><h4><a
name="AppEngineForBusiness"></a>App Engine For Business</h4><p>Au-delà du partenariat avec VMWare et alors qu&#8217;aujourd&#8217;hui App Engine a encore une étiquette (un peu) de bricolage, Google a la volonté de percer dans les entreprises et d&#8217;ajouter tout un arsenal prompt à rassurer celles qui voudraient se lancer. D&#8217;où la nouvelle offre <a
title="Google App Engine For Business" href="http://googlecode.blogspot.com/2010/05/announcing-google-app-engine-for.html">Google App Engine For Business</a> qui s&#8217;articule autour de ces points:</p><ul><li>Administration centralisée : cette console permettrait de gérer, entre autres, plusieurs projets d&#8217;une même entreprise.</li><li>Fiabilité et support : une garantie de SLA de 99.9% et support pour les utilisateurs.</li><li>Sécurisation par défaut : l&#8217;application serait par défaut sécurisé par les comptes Google App de l&#8217;entreprise.</li><li>Coût raisonnable : la plateforme serait disponible pour 8$ par utilisateur et par mois, plafonné à 1000$.</li><li>une architecture plus orientée entreprise : utilisation du SSL à l&#8217;intérieur du domaine de l&#8217;entreprise, utilisation des services avancés de Google et surtout enfin accès à des <em>bases SQL</em> (c&#8217;était un des gros points noirs d&#8217;App Engine). Ces nouveautés seraient disponibles dans le courant de l&#8217;année.</li></ul><p>Plus de détails <a
title="ici" href="http://code.google.com/intl/fr-FR/appengine/business/#features">ici</a>.</p><h4><a
name="WebMenfinunstandardvidolibre"></a>WebM: enfin un standard vidéo libre ?</h4><p>Le Google I/O a aussi été l&#8217;occasion pour le géant de faire une annonce que de nombreux partisans d&#8217;un internet ouvert espéraient depuis le rachat de la société On2. Jusqu&#8217;à présent, les formats vidéo &laquo;&nbsp;du futur&nbsp;&raquo; étaient d&#8217;un coté H264, et de l&#8217;autre Theora. H264, meilleur techniquement que Théora avait le gros désavantage de traîner derrière lui nombre de brevets. Le consortium gérant ce format avait déclaré ne pas désirer recevoir de royalties avant quelques années. Mais le format n&#8217;en restait pas moins propriétaire et l&#8217;épée de Damoclès des royalties était susceptible de s&#8217;abattre plus tard sur ses utilisateurs. Cette guerre commençait à devenir visible au niveau des navigateurs et de leur support de la balise video du HTML5. Pour rappel, la spécification de celle-ci n&#8217;impose aucun codec. Nous arrivions donc à une situation difficile où certains navigateurs ne supportaient que Theora (<a
title="Firefox" href="http://standblog.org/blog/post/2010/01/26/Video-Theora-ou-H264">Firefox</a>) et d&#8217;autres que le H264 (Safari). L&#8217;incertitude était de mise quant à préserver un web standardisé mais ouvert. C&#8217;est là que Google intervient en proposant un nouveau projet, <a
title="WebM" href="http://www.webmproject.org/">WebM</a>, et endosse son costume de sauveur du web.<br
/> Ce projet est destiné à développer un format vidéo libre. Techniquement, des fichiers WebM contiendront:</p><ul><li>de la vidéo au format VP8</li><li>du son en <a
title="Vorbis" href="http://fr.wikipedia.org/wiki/Vorbis">Vorbis</a></li><li>le tout dans un conteneur <a
title="Matroska" href="http://fr.wikipedia.org/wiki/Matroska">Matroska</a>.</li></ul><p>Certaines voix <a
title="se sont dores et dj leves" href="http://x264dev.multimedia.cx/?p=377">se sont d&#8217;ores et déjà élevées</a> pour dénoncer le format VP8 pour diverses raisons, mais il y a fort à parier que ce codec soit celui que tout le web attendait, notamment pour utiliser la norme HTML5 sans soucis de compatibilité. Les versions de développement de Firefox et Chrome intègrent déjà le support de ce format, les mobiles Android devraient le faire avant la fin de l&#8217;année et Adobe, avec Flash, suivra aussi.</p><p>A coté de l&#8217;aspect technique, il nous semble intéressant de nous attarder sur <a
title="la licence de WebM" href="http://www.webmproject.org/license/software/">la licence de WebM</a> qui est assez singulière et participera à n&#8217;en pas douter à imposer WebM. L&#8217;un des problème de ce projet est que, malgré toutes les dispositions prises, il n&#8217;est pas certain qu&#8217;un bout de code quelque-part n&#8217;enfreigne pas un quelconque brevet&#8230; Or, la licence stipule, en gros, que quiconque intentera un procès au projet ou à ses utilisateurs devra cesser d&#8217;utiliser le projet lui-même. C&#8217;est un coup de génie: si WebM commence à s&#8217;imposer (ce dont nous ne doutons pas avec la puissance de feu de Google, Youtube&#8230;), alors les entreprises susceptibles de lui intenter un procès ne le pourront pas, car elles seront en même temps obligées de l&#8217;utiliser elle-mêmes pour ne pas pénaliser leurs propres utilisateurs. Impossible d&#8217;imaginer les utilisateurs d&#8217;Opera interdits de Youtube pour cause de format vidéo non supporté par exemple: ils auraient tôt fait de migrer vers un autre navigateur. Google tient donc peut être, avec WebM, le nouveau standard vidéo du Web. En tout cas, il entend bien l&#8217;imposer comme tel.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="LescrateursdejBPMchezAlfresco"></a>Les créateurs de jBPM chez Alfresco</h4><p>Alfresco <a
title="a annoncé" href="http://www.alfresco.com/media/releases/2010/05/activiti_bpm/">a annoncé</a> son nouveau BPMS, <a
title="Activiti" href="http://www.activiti.org/">Activiti</a>, mené par le créateur de jBPM, Tom Baeyens, et de son ancien <em>lead developer</em> Joram Barrez, tous deux partis de chez JBoss <a
title="il y a peu" href="http://blog.xebia.fr/2010/05/03/revue-de-presse-xebia-157/#RefontedejBPMchezJBoss">il y a peu</a>.</p><p>A l&#8217;instar de jBPM, Activiti est un BPMS léger, qui s&#8217;intègre facilement à nos applications Java. Il propose en plus, une console d&#8217;administration et un modeler graphique en ligne.</p><p>Par ailleurs, il s&#8217;appuie sur le standard BPMN 2.0, et bénéficie ainsi à la fois d&#8217;une sémantique d&#8217;exécution, ainsi que d&#8217;un modèle de représentation graphique. Cette décision marque bien le contraste avec le choix précédent des créateurs, lors du développement  de jBPM, de s&#8217;appuyer sur un format propriétaire, jPDL.</p><p>L&#8217;éditeur de la célèbre solution ECM a toutefois annoncé qu&#8217;il continuerait le support de jBPM au sein de sa suite logicielle. Bonne nouvelle, pour les nombreux projets qui ont déjà investi dans la solution de jBoss.</p><p>On notera enfin que SpringSource annonce la collaboration de Dave Syer, project lead de Spring Batch, avec l&#8217;équipe d&#8217;Activiti. On devrait donc s&#8217;attendre à un prochain support de BPMN dans les applications Spring.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="MyBatisunforkdeiBatischezGoogl"></a>MyBatis : un fork de iBatis chez Google Code</h4><p>Alors que la version 3.0 d&#8217;iBatis <a
title="a été finalisée" href="http://ibatis.apache.org/java.cgi">a été finalisée</a> il y a un mois après une longue période de gestation, une <a
title="annonce majeure" href="http://ibatis.apache.org/">annonce majeure</a> pour l&#8217;avenir du projet vient d&#8217;être diffusée sur son site. Le créateur d&#8217;iBatis, Clinton Begin, ainsi que plusieurs des principaux <em>commiters</em> ont décidé de créer un <em>fork</em> du projet en dehors de la fondation Apache.</p><p>Ce nouveau projet est baptisé MyBatis et <a
title="est hébergé" href="http://code.google.com/p/mybatis/">est hébergé</a> sur Google Code. Le projet iBatis d&#8217;origine est conservé au sein de la fondation, mais stoppé. Il devient donc un sous-projet d&#8217;<a
title="Apache Attic" href="http://attic.apache.org/">Apache Attic</a> qui regroupe les projets Apache dépréciés.</p><p>Clinton Begin clarifie les principales questions que l&#8217;on peut se poser suite à cette annonce :</p><ul><li>Les noms des <em>packages</em> ne changent pas, et la compatibilité ascendante est préservée avec le passage à MyBatis.</li><li>Les branches 2.x et 3.x sont préservées dans MyBatis avec la disponibilité immédiate des versions 2.3.5 et 3.0.1.</li><li>La licence est conservée.</li></ul><p>Cette annonce est pour le moins inattendue mais dans la mesure où il s&#8217;agit d&#8217;un transfert de responsabilité plus que d&#8217;un <em>fork</em>, les ressources du projet ne seront pas divisées et son activité devrait donc être préservée.</p><h4><a
name="JRuby"></a>JRuby 1.5.0</h4><p>Avec un peu de retard, nous tenons quand même à signaler la sortie de JRuby en version 1.5.0. Cette version a été celle de la maturation du moteur. En terme de compatibilité avec le langage Ruby, très peu d&#8217;ajouts ont été faits. En revanche, beaucoup d&#8217;ajouts de stabilité, améliorations de l&#8217;utilisation mémoire, du support de Windows, support de Ruby On Rails version 3. Pour le détail : l&#8217;<a
title="Annonce officielle" href="http://www.jruby.org/2010/05/12/jruby-1-5-0.html">Annonce officielle</a>.</p><h3><a
name="Lastucedelasemaine"></a>L&#8217;astuce de la semaine</h3><p>Nous inaugurons aujourd&#8217;hui une nouvelle rubrique qui est destinée à vous faire part brièvement de petites astuces qui, nous l&#8217;espérons, pourront vous être utiles. Et c&#8217;est le tout récent <a
title="Eclipse MarketPlace" href="http://marketplace.eclipse.org/">Eclipse MarketPlace</a> qui honore cette nouvelle rubrique de sa présence. Pour rappel, le MarketPlace est le successeur de <a
title="Eclipse Plugin Central" href="http://eclipseplugincentral.com/">Eclipse Plugin Central</a> (maintenant en fin de vie) et destiné à lui ajouter <a
title="de nombreuses fonctionnalits" href="http://ianskerrett.wordpress.com/2009/12/08/eclipse-marketplace-is-now-live/">de nombreuses fonctionnalités</a>.<br
/> Dans <a
title="son post" href="http://eclipse.dzone.com/articles/installing-multiple-eclipse">son post</a>, Zviki Cohen nous apprend comment utiliser le MarketPlace pour créer des liste de plugins et les installer facilement. C&#8217;est une astuce qui peut être particulièrement intéressante lorsque l&#8217;on cherche à uniformiser les postes de développement par exemple: il suffit d&#8217;une URL pour ajouter à une installation d&#8217;Eclipse tous les plugins utilisés. C&#8217;est une alternative pratique à l&#8217;installation manuelle par chaque développeur qu&#8217;on retrouve souvent sur les projets.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>HTML5 &#8211; Les nouveaux éléments</title><link>http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/</link> <comments>http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#comments</comments> <pubDate>Tue, 02 Mar 2010 13:30:10 +0000</pubDate> <dc:creator>Séven Le Mesle</dc:creator> <category><![CDATA[Mobilité]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Apple]]></category> <category><![CDATA[Gears]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[HTML]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[JavaScript]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4127</guid> <description><![CDATA[Comme évoqué dans une précédente revue de presse, voici le premier article de ma série sur HTML5. Plutôt que de faire du comptage de points entre Apple et Adobe, j&#8217;ai décidé de commencer par faire un tour d&#8217;horizon des nouveautés proposées par cette nouvelle spécification du W3C. Dans ce premier article, je vous propose donc [...]]]></description> <content:encoded><![CDATA[<p>Comme évoqué dans une précédente revue de presse, voici le premier article de ma série sur HTML5. Plutôt que de faire du comptage de points entre Apple et Adobe, j&#8217;ai décidé de commencer par faire un tour d&#8217;horizon des nouveautés proposées par cette nouvelle spécification du W3C. Dans ce premier article, je vous propose donc de faire un voyage à la découverte des nouveautés du côté de HTML. ; pour connaître les nouvelles balises, et les nouveaux attributs que nous pouvons déjà ou pourrons bientôt utiliser dans nos navigateurs. Du layout au canvas en passant par les WebForms, le son et la vidéo, tout tout tout, je vous dirai tout sur HTML5. Commençons donc par le commencement: HTML5 qu&#8217;est-ce que c&#8217;est ?</p><h3>Sommaire</h3><ul><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#HTML">HTML5 ?</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Nouveaumodledecontenu">Nouveau modèle de contenu</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Nouveauxlmentsdemiseenpage">Nouveaux éléments de mise en page</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Elmentsinteractifs">Eléments interactifs</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#LesWebForms">Les WebForms</a><ul><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Nouveauxinput">Nouveaux input</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Validationnative">Validation native</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Autocompltion">Auto-complétion</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Rptitions">Répétitions</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Etatdeslieux">Etat des lieux</a></li></ul></li><li><a
href="http://blog.xebia.fr/2010/03/02/html5-les-nouveaux-elements/#Multimedia">Multimedia</a><ul><li><a
href="http://blog.xebia.fr/2010/03/02/html5-les-nouveaux-elements/#AudioetVideo">Audio et Video</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html5-les-nouveaux-elements/#LaguerredesCodecs">La guerre des Codecs</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html5-les-nouveaux-elements/#LeCanvas">Le Canvas</a></li></ul></li><li><a
href="http://blog.xebia.fr/2010/03/02/html5-les-nouveaux-elements/#Conclusion">Conclusion</a></li></ul><h3><a
name="HTML"></a>HTML5 ?</h3><p>HTML5 est au départ la nouvelle version du langage HTML en cours de développement par le W3C. Pour le moment, il s&#8217;agit d&#8217;une recommandation en DRAFT, fruit du travail initial réalisé par le <a
title="WHATWG" href="http://www.whatwg.org">WHATWG</a> depuis 2004. Le <a
title="W3C" href="http://www.w3c.org">W3C</a> espère en faire un de ses standards libres aux alentours de 2022. De prime abord, ça nous laisse le temps de réfléchir au problème pendant les 10 prochaines années. L&#8217;idée d&#8217;une nouvelle version de HTML serait motivée par quelques constats simples :</p><ul><li>Les navigateurs ont besoin de plugins pour gérer le multimédia (flash et consorts)</li><li>La structure des documents n&#8217;est pas intuitive et rend l&#8217;accessibilité difficile</li><li>Les API JavaScript varient trop d&#8217;un navigateur à l&#8217;autre pour garantir la portabilité des documents</li><li>Les sites sont de plus en plus proches des applications de bureaux mais souffrent encore de limitations</li></ul><p>Pour répondre à ces problématiques et favoriser l&#8217;émergence du web sémantique, la spécification propose :</p><ul><li>Un nouveau modèle de contenu des éléments</li><li>Des éléments de mise en page</li><li>De nouveaux éléments pour les formulaires</li><li>Du contenu multimédia</li><li>Plus d&#8217;interactivité</li><li>Des APIs standards JavaScript</li></ul><p>Bien que la spécification soit encore en cours d&#8217;écriture, certaines parties sont déjà très avancées et les navigateurs ont tous commencé à les implémenter. Google Chrome est actuellement en tête. Il bénéficie nativement de Gears et respecte 87% de la spécification. Parmi les principaux supporters de ce standard en devenir, nous retrouvons Google, Mozilla, Opera, Apple et Palm, pour ne citer que les plus grands. Apparemment, les navigateurs qui ont le vent en poupe sont tous de la partie. Microsoft, de son côté, suit la tendance de très loin en intégrant des fonctionnalités au compte goutte dans son IE, qui supporte tout de même 28% du langage.</p><h3><a
name="Nouveaumodledecontenu"></a>Nouveau modèle de contenu</h3><p>Bye, bye, les alignements hasardeux dus aux éléments de type bloc ou en ligne. Les éléments seront plutôt classés par catégories.</p><div><a
href="http://blog.xebia.fr/wp-content/uploads/2010/03/contenthtml5.png"><img
class="aligncenter size-full wp-image-4135" title="contenthtml5" src="http://blog.xebia.fr/wp-content/uploads/2010/03/contenthtml5.png" alt="contenthtml5" width="520" height="284" /></a></div><ul><li>La catégorie ancêtre <code>Flow</code> correspond à tous les éléments qui contiennent un flot de texte</li><li><code>Phrasing</code> correspond aux éléments qui apparaissent dans le texte (a, li)</li><li><code>Interactive</code> définit les éléments qui fournissent une interaction avec l&#8217;utilisateur</li><li><code>Embedded</code> affiche des ressource externes dans le document</li><li>Les <code>Metadata</code> représentent tout ce qui n&#8217;est pas affiché (style, script, &#8230;)</li><li><code>Heading</code> définit les en-têtes d&#8217;une section</li><li><code>Sectioning</code> définit le scope des en-têtes et pieds de page</li></ul><p>Toutes ces catégories permettent de définir le contenu autorisé pour les éléments. Leur but est d&#8217;une part de fournir une grande souplesse de composition (par exemple la balise <code>a</code> peut maintenant contenir un paragraphe entier, une liste ou des headers (<code>h*</code>)), d&#8217;autre part ces catégories permettent aux navigateurs d&#8217;assimiler le contenu de la page, notamment pour les exports d&#8217;impression ou l&#8217;accessibilité.</p><h3><a
name="Nouveauxlmentsdemiseenpage"></a>Nouveaux éléments de mise en page</h3><p>Jusqu&#8217;à maintenant, l&#8217;élément de mise en page par excellence était la balise <code>div</code>. La grande majorité des sites est construite sur un modèle d&#8217;empilement de ces boites avec des <code>id</code> différents pour finir par une grosse partie de styles <code>CSS</code> assurant le positionnement. Mais cela a quelques inconvénients:</p><ul><li>Ce n&#8217;est pas intuitif pour le développeur, vous en conviendrez.</li><li>Le navigateur ne peut pas connaître le rôle de chacune des parties de la mise en page, ce qui rend beaucoup plus difficile la génération de plan ou d&#8217;aide à la navigation.</li></ul><div><table
border="0"><tbody><tr><td><a
href="http://blog.xebia.fr/wp-content/uploads/2010/03/layoutHTML4.png"><img
title="layoutHTML4" src="http://blog.xebia.fr/wp-content/uploads/2010/03/layoutHTML4.png" alt="layoutHTML4" width="351" /></a></td><td><a
href="http://blog.xebia.fr/wp-content/uploads/2010/03/layoutHTML5.png"><img
title="layoutHTML5" src="http://blog.xebia.fr/wp-content/uploads/2010/03/layoutHTML5.png" alt="layoutHTML5" width="351" /></a></td></tr></tbody></table></div><p>Les balises <code>article</code>, <code>section</code>, <code>header</code> et <code>footer</code> indiquent clairement à quel type de texte elles correspondent et comment s&#8217;organise leur contenu. La balise <code>aside</code> définit un contenu lié au sujet principal, sans en faire partie pour autant. Reste le tag <code>nav</code> qui est prévu pour servir les liens de navigations de la page comme un menu par exemple. La mise en page proposée ci-dessus ne révèle pas la flexibilité d&#8217;utilisation de ces éléments. Notez bien que les <code>article</code> et <code>section</code> peuvent avoir leur propre <code>header</code> et <code>footer</code>.</p><p>Avec ces nouvelles balises, nous serons enfin capables de gérer l&#8217;organisation de nos documents de façon intuitive et les navigateurs pourront générer le plan des documents eux-mêmes. L&#8217;algorithme nécessaire est d&#8217;ailleurs décrit dans la spécification. Tous ces éléments sont déjà supportés nativement par les navigateurs avec l&#8217;exception habituelle de IE pour lequel il existe un <a
title="workaround JavaScript" href="http://code.google.com/p/html5shiv/">workaround JavaScript</a>. Vous pouvez dès maintenant vous familiariser avec ces nouvelles balises sans avoir peur des problèmes de compatibilité.</p><h3><a
name="Elmentsinteractifs"></a>Eléments interactifs</h3><p>Sous ce terme limpide se cachent les éléments qui fournissent de l&#8217;interaction utilisateur dans la page. Ce qui correspond aux <a
title="Interactive elements" href="http://dev.w3.org/html5/spec/interactive-elements.html">Interactive elements</a> de la spécification. La grosse nouveauté ici est la définition d&#8217;une balise <code>menu</code> permettant de construire des barres de menu (<code>type="toolbar"</code>), des menus contextuels (<code>type="context"</code>) ou de simples listes de commandes. Un tag <code>menu</code> peut contenir des sous-menus et se compose d&#8217;éléments permettant de lancer des commandes.</p><pre class="brush: xml; title: ; notranslate">
&lt;menu type=&quot;toolbar&quot;&gt;
 &lt;li&gt;
  &lt;menu label=&quot;File&quot;&gt;
   &lt;button type=&quot;button&quot; onclick=&quot;fnew()&quot;&gt;New...&lt;/button&gt;
   &lt;button type=&quot;button&quot; onclick=&quot;fopen()&quot;&gt;Open...&lt;/button&gt;
   &lt;button type=&quot;button&quot; onclick=&quot;fsave()&quot;&gt;Save&lt;/button&gt;
  &lt;/menu&gt;
 &lt;/li&gt;
 &lt;li&gt;
  &lt;menu label=&quot;Edit&quot;&gt;
   &lt;button type=&quot;button&quot; onclick=&quot;ecopy()&quot;&gt;Copy&lt;/button&gt;
   &lt;button type=&quot;button&quot; onclick=&quot;epaste()&quot;&gt;Paste&lt;/button&gt;
  &lt;/menu&gt;
 &lt;/li&gt;
&lt;/menu&gt;
</pre><p>Pour les commandes, HTML5 propose directement un élément <code>command</code> qui permet d&#8217;associer un texte ou icône à une exécution JavaScript sur événement <code>onclick="alert('hello world')"</code>. Pour utiliser le menu contextuel, il suffit d&#8217;ajouter l&#8217;attribut <code>contextmenu="menu_id"</code>, sur l&#8217;élément qui doit utiliser le menu.</p><p>L&#8217;autre nouveauté parmi les éléments interactifs est la balise <code>details</code>. Le fonctionnement de ce tag est proche d&#8217;un menu en accordéon, avec une partie de texte toujours affichée et une partie cachée pouvant être rendue visible sur demande de l&#8217;utilisateur. Cela peut être utile, pour cacher des options avancées par exemple.</p><pre class="brush: xml; title: ; notranslate">
&lt;section class=&quot;progress window&quot;&gt;
 &lt;h1&gt;Copying &quot;Really Achieving Your Childhood Dreams&quot;&lt;/h1&gt;
 &lt;details&gt;
  &lt;summary&gt;Copying... &lt;progress max=&quot;375505392&quot; value=&quot;97543282&quot;&gt;&lt;/progress&gt; 25%&lt;/summary&gt;
  &lt;dl&gt;
   &lt;dt&gt;Transfer rate:&lt;/dt&gt; &lt;dd&gt;452KB/s&lt;/dd&gt;
   &lt;dt&gt;Local filename:&lt;/dt&gt; &lt;dd&gt;/home/rpausch/raycd.m4v&lt;/dd&gt;
   &lt;dt&gt;Remote filename:&lt;/dt&gt; &lt;dd&gt;/var/www/lectures/raycd.m4v&lt;/dd&gt;
  &lt;/dl&gt;
 &lt;/details&gt;
&lt;/section&gt;
</pre><p>Ici, le tag <code>details</code> est utilisé pour cacher les informations techniques d&#8217;une copie. Vous noterez au passage l&#8217;utilisation d&#8217;une balise <code>progress</code>, pour afficher une barre d&#8217;avancement.</p><h3><a
name="LesWebForms"></a>Les WebForms</h3><h4><a
name="Nouveauxinput"></a>Nouveaux input</h4><p>Les formulaires aussi profitent de la mise à jour en reprenant en partie <a
title="XForms" href="http://www.w3.org/TR/xforms11/">XForms</a> pour les connaisseurs. Le principe est de fournir des <code>input</code> fortement typés  ainsi qu&#8217;une API JavaScript de validation en plus d&#8217;une interactivité accrue. Parmi les nouveaux types d&#8217;input, il y a :</p><ul><li>Le support des saisies de dates et heure décliné sous plusieurs formes (<code>date</code>, <code>datetime</code>, <code>datetime-local</code>, <code>month</code>, <code>week</code>, <code>time</code>). Nous n&#8217;aurons donc plus besoin des widgets supplémentaires JavaScript pour générer des calendriers.</li><li>La saisie de formats numériques via les <code>number</code> et les <code>range</code> qui pourront prendre la forme d&#8217;un slider vertical ou horizontal</li><li>Différents types de chaînes formatées comme les <code>url</code>, les <code>email</code> et <code>tel</code></li><li>Le selecteur de couleur <code>color</code></li><li>Le champ de recherche <code>search</code></li></ul><p>Les anciens types sont maintenus. Ils bénéficient d&#8217;un bon lifting, tel le type <code>file</code> qui permettra désormais de sélectionner plusieurs fichiers d&#8217;un seul coup, tout en précisant le type mime accepté. Il y a aussi l&#8217;attribut <code>placeHolder</code> qui permet de fournir un texte descriptif affiché dans le champs si il n&#8217;est pas renseigné.</p><h4><a
name="Validationnative"></a>Validation native</h4><p>Tous les <code>input</code> supportent de nouveaux attributs de validation qui permettent de contraindre les saisies de l&#8217;utilisateur, et peuvent interdire la soumission du formulaire, s&#8217;il n&#8217;est pas valide. Encore une fois, cela permettra de remplacer des solutions hétérogènes JavaScript par un standard nativement supporté par le navigateur. La validation s&#8217;accompagne aussi de nouveaux évènements DOM pour notifier les erreurs ou surcharger la validation avec son propre code JavaScript. Plus besoin non plus de jouer avec les classes CSS pour faire ressortir les champs en erreur grâce aux pseudo-formats (<code>:invalid</code>, <code>:valid</code>, <code>:Out-of-range</code>, &#8230;).</p><p>Des validateurs par défaut sont fournis sous la forme de nouveaux attributs à placer sur les <code>input</code> :</p><ul><li><code>required</code> pour un champ requis</li><li><code>min</code> et <code>max</code> permettent de définir une valeur minimum et maximum sur les types numérique et date</li><li><code>pattern</code> fournit une expression régulière que la saisie doit respecter</li></ul><h4><a
name="Autocompltion"></a>Auto-complétion</h4><p>Autre nouveauté inspirée des widgets JavaScript existant, les <code>datalist</code> sont des listes de valeurs construites à l&#8217;aide d&#8217;éléments de type liste (<code>li</code>, <code>option</code>, &#8230;). La <code>datalist</code> est transparente par défaut mais elle peut-être liée à un ou plusieurs <code>input</code> avec l&#8217;attribut <code>list</code>. Une fois l&#8217;association établie avec un <code>input</code>, la liste est utilisée pour fournir des suggestions à la saisie. Les éléments à l&#8217;intérieur de la liste peuvent-être décorés par CSS directement.</p><pre class="brush: xml; title: ; notranslate">
&lt;input type=&quot;text&quot; list=&quot;roles&quot; autofocus /&gt;
&lt;datalist id=&quot;roles&quot;&gt;
   &lt;li&gt;Designer&lt;/li&gt;
   &lt;li&gt;Integrateur&lt;/li&gt;
   &lt;li&gt;Programmeur&lt;/li&gt;
&lt;/datalist&gt;
</pre><h4><a
name="Rptitions"></a>Répétitions</h4><p>Une autre évolution sympathique est la création d&#8217;un système de template, facilitant la création de formulaire dynamique. Dans les applications de gestion, il est souvent utile de pouvoir ajouter et supprimer des lignes de saisie dans le formulaire. Le système de répétition est fait pour ça. Je peux définir un bloc comme étant mon template, et le contenu de cet élément pourra être dupliqué via une API JavaScript.</p><pre class="brush: xml; title: ; notranslate">
&lt;tr id=&quot;order&quot; repeat=&quot;template&quot; repeat-start=&quot;3&quot;&gt;
   &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;row[order].product&quot; value=&quot;&quot;&gt;&lt;/td&gt;
   &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;row[order].quantity&quot; value=&quot;1&quot;&gt;&lt;/td&gt;
   &lt;td&gt;&lt;button type=&quot;remove&quot;&gt;Remove This Row&lt;/button&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;p&gt;&lt;button type=&quot;add&quot; template=&quot;order&quot;&gt;Add Row&lt;/button&gt;&lt;button type=&quot;submit&quot;&gt;Submit&lt;/button&gt;&lt;/p&gt;
</pre><p>C&#8217;est l&#8217;attribut <code>repeat</code> qui définit notre bloc de répétition, le <code>repeat-start</code> permet de gérer les aller-retour serveur, pour afficher la liste avec le nombre d&#8217;éléments précédemment soumis. Pour assurer l&#8217;ajout et la suppression de ligne, j&#8217;ai utilisé les boutons de type <code>add</code> et <code>remove</code> mais j&#8217;aurais aussi bien pu utiliser des méthodes JavaScript de l&#8217;élément template <code>addRepetitionBlock()</code>. Il y a aussi des solutions pour gérer l&#8217;ordre des répétitions permettant de monter et descendre les lignes répétées.</p><h4><a
name="Etatdeslieux"></a>Etat des lieux</h4><p>Voilà la promesse d&#8217;un monde meilleur dans lequel nous aurons moins de travail à fournir (CSS, JS) pour obtenir des résultats simplement meilleurs. Notez une dernière chose, les input peuvent être liés à un ou plusieurs formulaires via le nouvel attribut <code>form</code>. En d&#8217;autres termes, il sera possible de placer nos <code>input</code> pour un formulaire à l&#8217;extérieur de ce dernier.</p><p>Comme vous l&#8217;avez remarqué, j&#8217;ai utilisé le futur dans ce paragraphe car pour le moment seul Opera 9 supporte nativement les WebForms. Pour permettre aux développeurs de s&#8217;y essayer et valider la spécification, le projet <a
title="WebForms2" href="http://code.google.com/p/webforms2/">WebForms2</a> propose une implémentation partielle en JavaScript. La spécification au départ avait été séparée du langage HTML5, mais le W3C a décidé de la ré-intégrer en y apportant des modifications. Du coup la plupart des fonctions développées sont liées à une ancienne version des WebForms.</p><p>Pour les autres navigateurs, notez tout de même que les développements ont déjà commencé. Par exemple Chrome 5 devrait être livré avec le support des nouveaux <code>input</code> et l&#8217;API de validation(<a
title="Chrome Web Platform Status" href="http://www.chromium.org/developers/web-platform-status">Chrome Web Platform Status</a>). Safari bénéficie du même support que chrome qui se limite aux types <code>search</code>, <code>range</code> et <code>file</code> multiple. Du côté de Firefox, les choses sont moins claires ; il existe bien un ensemble de <a
title="bugs" href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=344614&amp;hide_resolved=0">bugs</a> pour le support des WebForms mais Mozilla communique peu sur le sujet. Actuellement, Internet Explorer 8 ne supporte aucune des ces nouveautés et il est impossible de connaître la roadmap de Microsoft sur le sujet. Tout ce que l&#8217;on sait, c&#8217;est que l&#8217;éditeur a décidé de mettre les bouchées doubles pour améliorer son support des travaux du W3C. Peut-être une bonne solution pour inverser la vapeur et en finir avec la descente aux enfers de son précieux navigateur.</p><p><a
title="Page de dmonstration pour Chrome Safari et Opera" href="http://www.miketaylr.com/pres/html5/forms2.html">Page de démonstration pour Chrome, Safari et Opera</a>.</p><h3><a
name="Multimedia"></a>Multimedia</h3><p>Il est temps de parler des nouveaux types de contenu poussés par HTML5. Les auteurs du whatwg se sont probablement demandé pourquoi doit-on installer des plugins dans nos navigateurs ? Nous savons a priori tous aujourd&#8217;hui que Flash est utilisé principalement pour 3 choses dans les applications :</p><ul><li>Pouvoir écouter de la musique</li><li>Pouvoir regarder des vidéos</li><li>Faire des animations de folies</li></ul><p>J&#8217;ai mis volontairement de côté Flex car il cible plutôt les applications d&#8217;entreprise, et les jeux Flash car le Boss ne veut pas en entendre parler <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Sachez, si vous êtes passé à côté de ça, que HTML5 adresse ces trois problématiques en sortant trois nouvelles balises de son chapeau :</p><ul><li><code>audio</code> permet de gérer la lecture de fichiers audio en streaming.</li><li><code>video</code> assure la lecture de vidéos en streaming toujours.</li><li><code>canvas</code> permet de dessiner et de faire des animations en JavaScript.</li></ul><h4><a
name="AudioetVideo"></a>Audio et Video</h4><p>Jusqu&#8217;à maintenant, les gros avantages de la technologie d&#8217;Adobe sont la portabilité puisque Flash est disponible pour tous les navigateurs, et la performance en comparaison avec les moteurs JavaScript. Il est clair que ces trois balises viennent marcher sur les plate-bandes de Flash. Les éléments média disposent des attributs :</p><ul><li><code>controls</code> pour activer l&#8217;affichage de l&#8217;interface de contrôle du navigateur</li><li><code>autobuffer</code> pour activer le chargement automatique de la ressource en cache</li><li><code>autoplay</code> pour activer le lancement automatique de la lecture</li><li><code>loop</code> pour lire le ou les médias en boucle</li><li><code>src</code> pour fournir l&#8217;url du fichier média à lire</li></ul><p>La balise <code>source</code> placée à l&#8217;intérieure d&#8217;une balise <code>audio</code> ou <code>video</code> permet aussi de définir l&#8217;url (<code>@src</code>), le type mime et le codec (<code>@type</code>) d&#8217;une ressource média. Il suffit de mettre plusieurs <code>source</code> pour créer une playlist.</p><pre class="brush: xml; title: ; notranslate">
&lt;audio controls autobuffer autoplay loop&gt;
  &lt;source src=&quot;elvis.ogg&quot; /&gt;
  &lt;source src=&quot;elvis.mp3&quot; /&gt;
&lt;/audio&gt;
&lt;video src=&quot;video.ogg&quot; controls&gt;
  &lt;source src='video.mp4' type='video/mp4; codecs=&quot;avc1.42E01E, mp4a.40.2&quot;'&gt;
  &lt;!-- Un texte alternatif pour les anciens navigateurs --&gt;
  Your browser does not support the &lt;code&gt;video&lt;/code&gt; element.
&lt;/video&gt;
</pre><p>Si le navigateurs n&#8217;arrivent pas à lire le fichier ogg, il tentera de lire le fichier H.264. De même, si le navigateur ne supporte pas l&#8217;élément <code>video</code>, il affichera le texte alternatif. Il suffit donc de placer un lecteur Flash à la place du texte pour que la vidéo reste lisible dans un ancien navigateur.</p><p>Si vous ne voulez pas utiliser l&#8217;interface native, ou que vous souhaitez simplement cacher le lecteur audio, vous pouvez utiliser l&#8217;API standard JavaScript pour créer un lecteur, et profiter des méthodes <code>play()</code>, <code>pause()</code>, et <code>load()</code> pour charger la prochaine ressource média. Une dernière méthode : <code>canPlayType(type)</code>, permet de demander au navigateur si il supporte le format vidéo ou audio fournit en paramètre. Cela sera très utile pour gérer les incompatibilités de format.</p><p>De plus l&#8217;interface <code>HTMLMediaElement</code> fournit quantité de propriétés allant du volume à l&#8217;état du buffer en passant par le temps de lecture courant. Le tout est, bien sûr, accompagné d&#8217;une batterie d&#8217;événements qui permettent de suivre l&#8217;avancement du chargement, l&#8217;état du lecteur, et les action lancées par l&#8217;utilisateur.</p><p>Pour plus de détail sur le sujet, je vous invite à lire la <a
title="spécification W3C des éléments média" href="http://www.w3.org/TR/html5/video.html">spécification W3C des éléments média</a> et à tester la démo de <a
title="jPlayer" href="http://www.happyworm.com/jquery/jplayer/latest/demos.htm">jPlayer</a> un lecteur audio pour jQuery.</p><h4><a
name="LaguerredesCodecs"></a>La guerre des Codecs</h4><p>Venons en au problème des codecs. Le W3C se contente de citer un certain nombre de formats allant du H.264 au DIRAC pour la vidéo en passant par mpeg-4 et Theora; même chose pour l&#8217;audio avec AAC, FLAC, Vorbis, &#8230; La spécification laisse le libre choix aux navigateurs et table sur la création d&#8217;extensions propres à ces derniers pour apporter le support de nouveaux formats. Si aujourd&#8217;hui <a
title="YouTube" href="http://www.youtube.com/html5">YouTube</a> et <a
title="Vimeo" href="http://vimeo.com/blog:268">Vimeo</a> ont choisi le H.264, <a
title="DailyMotion" href="http://www.dailymotion.com/openvideodemo">DailyMotion</a> joue les fidèles Mozilla avec sa démo basée sur Ogg et ne supportant que Firefox.</p><p>Chrome et Safari poussent H.264 tandis que Mozilla le rejette totalement et pousse les formats libres Vorbis et Theora (Ogg). Le gros avantage d&#8217;H.264, à mon sens, tient au fait qu&#8217;il est parfaitement adapté à l&#8217;embarqué et beaucoup plus optimisé que Theora. Malgré le barrage de Firefox (25% de parts de marché), avec Apple et Google le codec H.264 semble avoir de beaux jours devant lui. Google qui est justement le plus gros contributeur de Mozilla, fournira peut-être une extension, sinon ce sera probablement du codec pack pour tous.</p><p>Codecs supportés par navigateurs</p><table
style="border: 1px solid black" border="0" cellspacing="0" cellpadding="5"><tbody><tr><td
style="color: #ffffff; border: 1px solid black" bgcolor="#663366"><strong>Navigateur</strong></td><td
style="color: #ffffff; border: 1px solid black" bgcolor="#663366"><strong>Ogg</strong></td><td
style="color: #ffffff; border: 1px solid black" bgcolor="#663366"><strong>MP3</strong></td><td
style="color: #ffffff; border: 1px solid black" bgcolor="#663366"><strong>WAV</strong></td><td
style="color: #ffffff; border: 1px solid black" bgcolor="#663366"><strong>MP4</strong></td></tr><tr><td
style="border: 1px solid black"><strong>Firefox 3.5</strong></td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">-</td></tr><tr><td
style="border: 1px solid black"><strong>Safari 4</strong></td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">Ok</td></tr><tr><td
style="border: 1px solid black"><strong>Chrome 3</strong></td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">Ok</td></tr><tr><td
style="border: 1px solid black"><strong>Opera 10</strong></td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">-</td></tr><tr><td
style="border: 1px solid black"><strong>IE</strong></td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">-</td></tr></tbody></table><p>Internet Explorer est pour le moment hors-jeu, sauf si on installe <a
title="Google Chrome Frame" href="http://code.google.com/intl/fr-FR/chrome/chromeframe/">Google Chrome Frame</a>. Mais il semblerait que Microsoft s&#8217;intéresse au sujet pour l&#8217;avenir et participe à la rédaction de la spécification. En attendant, Flash conserve une avance confortable et profite de sa très large base installée. Le changement arrive bizarrement par l&#8217;embarqué, iPhone et iPod Touch en tête, qui, d&#8217;une part, supportent pleinement les balises <code>audio</code>, et <code>video</code>, et d&#8217;autre part prouvent que les utilisateurs peuvent se passer de Flash sur le web.</p><h4><a
name="LeCanvas"></a>Le Canvas</h4><p>Passons maintenant au <code>canvas</code>. Inventé par Apple pour le Dashboard d&#8217;OS X et ses widgets, le <code>canvas</code> fournit une API JavaScript pour le dessin 2D. La balise définit une aire de dessins avec sa hauteur et sa largeur. L&#8217;objet DOM donne accès au contexte graphique qui possède les primitives de dessins. Outre les formes géométriques standards, l&#8217;API permet de faire de la composition, des transformations, de manipuler des images et d&#8217;afficher du texte formaté. Avec un timeout ou un intervalle sur l&#8217;objet et un peu de JavaScript, il devient possible d&#8217;animer les dessins. Les implémentations ne sont pas encore très optimisées. Un simple gif animé reste pour le moment plus performant en terme d&#8217;animation. Il existe déjà un tas de librairie JS construites autour de l&#8217;élément <code>canvas</code> pour générer des graphes et des charts par exemple (<a
title="Flotr" href="http://solutoire.com/flotr/">Flotr</a>, <a
title="ProtoChart" href="http://www.deensoft.com/lab/protochart/">ProtoChart</a>, <a
title="fgCharting" href="http://www.filamentgroup.com/lab/jquery_visualize_plugin_accessible_charts_graphs_from_tables_html5_canvas/">fgCharting</a>).</p><pre class="brush: xml; title: ; notranslate">
&lt;canvas id=firstCanvas&quot;&gt;Browser does not support the canvas element.&lt;/canvas&gt;
&lt;script type=&quot;text/JavaScript&quot;&gt;
var canvas=document.getElementById('myCanvas');
var ctx=canvas.getContext('2d');
ctx.fillStyle='#FF0006';
ctx.fillRect(0,0,80,120);
&lt;/script&gt;
</pre><p>Les détracteurs déplorent l&#8217;utilisation d&#8217;une API procédurale, et l&#8217;absence d&#8217;éléments crées dans l&#8217;arbre DOM de la page comme le fait SVG. Autre inconvénient, <code>canvas</code> travaille la composition directement en pixels et non en calques. SVCKit a donc implémenté en grande partie SVG dans <code>canvas</code> dans <a
title="SVGCanvas" href="http://svgkit.sourceforge.net/web/SVGCanvas.html">SVGCanvas</a>. Il existe déjà beaucoup de documentations et tutoriels autour de <code>canvas</code> qui rencontre, malgré ses défauts (de jeunesse ?), un grand succès. Mozilla a même développé un IDE en ligne basé sur <code>canvas</code>, nom de code : <a
title="BeSpin" href="https://bespin.mozilla.com/">BeSpin</a>.</p><p>Voilà pour les domaines d&#8217;application, passons maintenant à la question des navigateurs. Avec Apple pour inventeur et Mozilla comme évangéliste, <code>canvas</code> est déjà supporté nativement sur Safari, Firefox, Chrome et Opéra. Comme d&#8217;habitude IE est à la traine, mais il existe des contournements comme le plugin <a
title="IECanvas" href="http://hg.mozilla.org/users/vladimir_mozilla.com/iecanvas">IECanvas</a>, ou le portage Flash <a
title="ExplorerCanvas" href="http://code.google.com/p/explorercanvas/">ExplorerCanvas</a>.</p><h3><a
name="Conclusion"></a>Conclusion</h3><p>Nous voici à la fin de ce tour d&#8217;horizon des nouveautés d&#8217;HTML5, côté contenu du moins.<br
/> Avec les grands du web dans la poche, HTML5 est déjà promis à un bel avenir, malgré son jeune age. La prochaine échéance du W3C devrait être le passage en recommandation dans le courant de cette année peut-être. Si les WebForms ne sont pas pour tout de suite, le multimédia et le canvas sont déjà suffisamment supportés pour être utilisés aujourd&#8217;hui. Il faudra attendre la sortie d&#8217;IE 9 pour connaître les plans concrets de Microsoft sur le sujet. A mon humble avis, Microsoft intégrera HTML5 au fur et à mesure qu&#8217;il s&#8217;imposera sur le web. Il faudra aussi regarder de près l&#8217;évolution du standard CSS car HTML5 ne va pas sans CSS3. De ce côté, pas de crainte à avoir puisque même IE est dans la course.</p><p>Il reste un problème d&#8217;outillage, car il n&#8217;existe pas pour le moment de WYSIWYG compatible HTML5. Et il ne faut sans doute pas compter sur Adobe pour le faire rapidement. Apple propose déjà DashCode pour créer des widgets ou des applications web iPhone avec un éditeur graphique bien monté. Mais l&#8217;export vers d&#8217;autres navigateurs est presque impossible tant les applications construites reposent sur des fonctionnalités spécifiques de Safari.</p><p>Dans le prochain article, je vous présenterai les nouveautés JavaScript poussées par HTML5 et leur état actuel d&#8217;implémentation.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>Pourquoi tant de vagues autour de Google Wave ?</title><link>http://blog.xebia.fr/2009/11/20/pourquoi-tant-de-vagues-autour-de-google-wave/</link> <comments>http://blog.xebia.fr/2009/11/20/pourquoi-tant-de-vagues-autour-de-google-wave/#comments</comments> <pubDate>Fri, 20 Nov 2009 12:07:59 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Divers]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Google Wave]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3238</guid> <description><![CDATA[Depuis un peu plus d&#8217;un mois, Google a lancé un test grandeur nature (on parle de 100 000 bêta testeurs) de sa plate-forme de communication centralisée, Wave. Après une grande frénésie de chasse à l&#8217;invitation, le soufflet retombe peu à peu : on sent bien qu&#8217;il y a quelque chose à tirer de cet agrégat [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/google-wave-logo.png" border="0" alt="" style="float:right;" /><br
/> Depuis un peu plus d&#8217;un mois, Google a lancé un test grandeur nature (on parle de 100 000 bêta testeurs) de sa plate-forme de communication centralisée, Wave. Après une grande frénésie de chasse à l&#8217;invitation, le soufflet retombe peu à peu : on sent bien qu&#8217;il y a quelque chose à tirer de cet agrégat d&#8217;outils devenus &#8216;temps réel&#8217;, mais on ne sait pas encore quoi. On voit apparaître de nombreux prototypes (traduction temps réel, interfaçage avec des mobiles&#8230;), mais peu de choses très concrètes. Il faudra pour cela attendre d&#8217;atteindre une masse critique (si plusieurs entreprises décident par exemple de remplacer l&#8217;intégralité de leurs outils de communication par Wave) mais aussi compter sur la communauté pour explorer les possibilités d&#8217;extension de Wave et proposer des robots attractifs.</p><p>Malgré tout, l&#8217;outil de Google a attisé notre curiosité, principalement grâce à son architecture ouverte et à ses possibilités d&#8217;extension.</p><h3><a
name="TroisprotocolesdeuxAPIS"></a>Trois protocoles, deux APIS</h3><h4><a
name="GoogleWaveFederationProtocol"></a>Google Wave Federation Protocol</h4><p>C&#8217;est là tout l&#8217;intérêt et le cœur du produit de Google. En effet, grâce à ce nouveau protocole ouvert et standardisé, l&#8217;hébergement d&#8217;un serveur Wave peut se faire indépendamment de Google. Et c&#8217;est là le nerf de la guerre pour l&#8217;entreprise : contrairement à Google Docs, qui centralise les documents sur une plateforme hébergée chez l&#8217;éditeur, l&#8217;aspect ouvert du protocole de fédération entre serveurs Wave va permettre à chaque entreprise de garder la maîtrise sur ses Waves, et sur les documents qui les composent. Certains imaginent déjà la très belle utopie d&#8217;un client passant commande à son fournisseur via une Wave commune, gérant des processus complexes (passage de commande, envoi de devis automatisé, workflow humain de validation et facturation automatique&#8230;).</p><p>Si l&#8217;on s&#8217;intéresse d&#8217;un peu plus près à ce protocole, on constate qu&#8217;il s&#8217;agit d&#8217;une extension du protocole bien connu XMPP (précédemment nommé Jabber). Google s&#8217;est appuyé sur le mécanisme d&#8217;extension de ce protocole (XEP 114) pour renforcer en particulier la sécurisation des échanges inter-serveurs mais aussi l&#8217;authentification forte d&#8217;un utilisateur auprès de ses waves.</p><p>Schématiquement, ce protocole s&#8217;appuie sur des mécanismes de Gateway / Proxy. Chaque serveur possède une Gateway, qui s&#8217;occupe des modifications locales de chaque Wavelet hébergée. Cette Gateway <em>pousse</em> ensuite ces modifications vers les Proxys des autres serveurs participant à la Wave.</p><p>Ce protocole étant ouvert, vous pourrez trouver une documentation riche sur le site de Google, via le <a
href="http://www.waveprotocol.org/draft-protocol-specs/draft-protocol-spec" title="draft de spécifications" >draft de spécifications</a> et de <a
href="http://www.waveprotocol.org/whitepapers" title="nombreux white papers" >nombreux white papers</a>.</p><p>Et si vous voulez vous lancer dans l&#8217;expérience, Google propose, outre le serveur Wave servant à la bêta, <a
href="http://code.google.com/p/wave-protocol/" title="un serveur prototype implment en Java" >un serveur prototype implémenté en Java</a>.</p><h4><a
name="Protocoleclientserveur"></a>Protocole client-serveur</h4><p>Pour interagir avec une Wave, chaque participant doit s&#8217;équiper d&#8217;un client. Pour l&#8217;instant, il n&#8217;en existe qu&#8217;un seul, le client web créé par Google et disponible sur https://wave.google.com/wave/ (ou une des ses encapsulations, comme <a
href="http://www.getwaveboard.com/" title="WaveBoard" >WaveBoard</a>). Le protocole qui permet d&#8217;échanger avec le serveur Wave n&#8217;est pour l&#8217;instant pas encore spécifié, mais <a
href="http://groups.google.com/group/wave-protocol/browse_thread/thread/184b66dfb3b9a24d?pli=1" title="des tentatives en ce sens existent" >des tentatives en ce sens existent</a>.</p><p>Le client web de Google est une application HTML 5, développée avec GWT. Il communique avec le serveur suivant un protocole GWT propriétaire, porté par HTTP.</p><p>L&#8217;espoir de standardisation du côté des clients est cependant tangible : la société ProcessOne a réalisé <a
href="http://www.process-one.net/en/blogs/article/processone_wave_server_ejabberd_extension_video/" title="un client prototype bas sur XMPP" >un client prototype basé sur XMPP</a>.</p><h4><a
name="APIRobotetJSonRPC"></a>API Robot et JSonRPC</h4><p>Dernier protocole, et non des moindres, le protocole qui permet aux robots (pour les fans d&#8217;irc, on parle de bot) d&#8217;intervenir dans une Wave. Pour se faire, ils utilisent JSon-RPC, sur HTTP.<br
/> Ces robots fonctionnent sur une programmation événementielle. Ils sont donc à priori agnostiques vis à vis du langage. Il existe actuellement 2 API fournies par Google : <a
href="http://code.google.com/intl/fr/apis/wave/extensions/robots/java-tutorial.html" title="une pour Java" >une pour Java</a>, que nous détaillerons dans un prochain article, et <a
href="http://code.google.com/intl/fr/apis/wave/extensions/robots/python-tutorial.html" title="une pour Python" >une pour Python</a>.<br
/> Les robots peuvent interagir avec la Wave (ajout de participants, modification du contenu de la Wave, envois d&#8217;alertes) en étant déclenchés par des évènements internes à la Wave (arrivée d&#8217;un nouveau participant, publication de texte, déclenchement par mot clé).</p><h4><a
name="APIGadget"></a>API Gadget</h4><p>Il existe une autre façon d&#8217;enrichir les fonctionnalités de la Wave : <a
href="http://code.google.com/intl/fr/apis/wave/extensions/gadgets/guide.html" title="les gadgets" >les gadgets</a>. Les gadgets sont des briques de code (HTML + javascript), bien connus des utilisateurs de iGoogle, embarqués dans le client Wave. Ils sont similaires à ceux de <a
href="http://code.google.com/intl/fr/apis/opensocial/" title="lAPI OpenSocial" >l&#8217;API OpenSocial</a>, même si curieusement celle-ci n&#8217;est pas officiellement compatible. La différence avec les gadgets statiques est que les gadgets Wave tirent profit de l&#8217;aspect &#8216;live&#8217; de la Wave et peuvent interagir avec celle-ci. Ils comportent une gestion d&#8217;état, ont connaissance de l&#8217;utilisateur en cours de visualisation et des utilisateurs connectés et s&#8217;intègrent au mécanisme de playback.<br
/> Nous reviendrons là aussi plus en détail sur l&#8217;écriture de gadget.</p><h3><a
name="Synthse"></a>Synthèse</h3><p>Pour résumer ces différents protocoles, le plus simple est encore de les représenter sur un schéma.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/wave_protocols.png" border="0" alt="" /></div><p>source : <a
href="http://www.cubiclemuses.com/cm/articles/2009/08/09/waves-web-of-protocols/" title="J Aaron Farr" >J Aaron Farr</a></p><p>Avec des extensions correctement pensées et développées, Wave semble pouvoir être un énorme atout dans la communication interne de l&#8217;entreprise.<br
/> Alors, serez-vous les premiers à installer un serveur Wave en remplacement de votre bon vieil SMTP ?</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/20/pourquoi-tant-de-vagues-autour-de-google-wave/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/11/16/revue-de-presse-xebia-134/</link> <comments>http://blog.xebia.fr/2009/11/16/revue-de-presse-xebia-134/#comments</comments> <pubDate>Mon, 16 Nov 2009 17:47:49 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Google App Engine]]></category> <category><![CDATA[Google Wave]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[SOA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3140</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Innovation permanente chez Google Java SE 5 en fin de vie, JDK 7 en approche SOA 10 mythes au sujet des SOA Evènements de notre communauté en France et à l&#8217;étranger Soirée Google au LyonJUG Actualité éditeurs / SSII Innovation [...]]]></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/16/revue-de-presse-xebia-134/#InnovationpermanentechezGoogle">Innovation permanente chez Google</a></li><li><a
href="http://blog.xebia.fr/2009/11/16/revue-de-presse-xebia-134/#JavaSEenfindevieJDKenapproche">Java SE 5 en fin de vie, JDK 7 en approche</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/11/16/revue-de-presse-xebia-134/#mythesausujetdesSOA">10 mythes au sujet des SOA</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/16/revue-de-presse-xebia-134/#SoireGoogleauLyonJUG">Soirée Google au LyonJUG</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="InnovationpermanentechezGoogle"></a>Innovation permanente chez Google</h4><p>Google est encore une fois au cœur de l&#8217;actualité cette semaine avec la mise à disposition d&#8217;un nouveau langage de programmation et d&#8217;un protocole destiné à remplacer HTTP.</p><p><a
href="http://golang.org/" title="Le langage Go" >Le langage Go</a> est à la croisée de C, Java et Pascal et est annoncé comme ayant des performances proches du C. Go se distingue par le fait que son compilateur produise directement du code natif, et qu&#8217;il ne requiert donc pas de machine virtuelle. Il apporte toutefois un ramasse-miette et un ensemble d&#8217;abstractions permettant de simplifier la programmation parallèle.</p><p>Très rapidement, plusieurs opinions et résultats d&#8217;expérimentations sont apparus. Ainsi, <a
href="http://timyang.net/programming/c-erlang-java-performance/" title="Tim Yang montre les performances" >Tim Yang montre les performances</a> obtenues par une application serveur développée en Java (en utilisant Mina), C (avec Nginx) et Go. Les résultats qu&#8217;il obtient montre que Go est en retrait par rapport aux deux autres solutions. Ces résultats doivent toutefois être relativisés par la maturité acquise par le système d&#8217;entrée / sortie de la JVM, le design très performant offert par Mina, la réputation de performance de Nginx et enfin, bien sûr, par le stade embryonnaire de Go.</p><p>Google a également diffusé les spécifications de <a
href="http://dev.chromium.org/spdy/spdy-protocol" title="SPDY" >SPDY</a> (prononcer Speedy), un protocole visant à remplacer HTTP. On le sait, HTTP n&#8217;est pas adapté au Web moderne. En particulier il n&#8217;est pas optimisé pour obtenir une latence minimale. SPDY ne redéfinit pas tout, il se base sur HTTP et y ajoute un ensemble de possibilités supplémentaires telles que la compression d&#8217;en-têtes, le multiplexage de flux ou encore la priorisation de requêtes.</p><p>Des tests sur le transport du contenu des sites Web les plus populaires, permettent à Google d&#8217;annoncer un gain moyen de 55%.</p><p>L&#8217;entreprise américaine continue donc d&#8217;impressionner par son innovation permanente, n&#8217;hésitant pas à remettre en cause régulièrement des technologies considérées comme incontournables.</p><h4><a
name="JavaSEenfindevieJDKenapproche"></a>Java SE 5 en fin de vie, JDK 7 en approche</h4><p>Sur la <a
href="http://java.sun.com/javase/downloads/index_jdk5.jsp" title="page ddie  J2SE 50" >page dédiée à J2SE 5.0</a>, Sun notifie depuis début novembre les utilisateurs de l&#8217;arrivée en fin de vie <em>(End of Service Life)</em> de cette version de Java.</p><p>Arrivé <a
href="http://java.sun.com/j2se/codenames.html" title="il y a 5 ans" >il y a 5 ans</a>, Java 5 avait constitué la mise à jour la plus importante de la plate-forme et de son langage depuis sa création. Son adoption en entreprise fut longue, mais s&#8217;est concrétisée au fil du temps. Ainsi aujourd&#8217;hui, on ne compte plus qu&#8217;une minorité de projets fonctionnant encore exclusivement avec la version 1.4 ou inférieure de Java.</p><p>Il en est tout autrement pour Java 6.0. En effet, contrairement à la version 5.0 dont l&#8217;adoption était indispensable pour profiter des technologies d&#8217;entreprise les plus récentes, les principales motivations pour passer à la version 6.0 concernent la JVM elle-même et les améliorations qu&#8217;elle a connue.</p><p>L&#8217;arrivée en EOSL pourrait accélérer les choses dans certaines entreprises, tandis que d&#8217;autres préfèreront se tourner vers l&#8217;offre <a
href="http://www.sun.com/software/javaforbusiness/" title="Java for Business" >Java for Business</a> de Sun qui permet de continuer de bénéficier du support de l&#8217;éditeur.</p><p>Une autre possibilité pourrait se trouver dans l&#8217;arrivée de JDK 7. En effet, la <a
href="http://openjdk.java.net/projects/jdk7/milestones/" title="roadmap" >roadmap</a> du projet promet un début de phase <em>Release Candidate</em> débutant à la fin du premier trimestre 2010 pour une durée d&#8217;un à deux mois, ce qui permettrait donc l&#8217;arrivée d&#8217;une version finale dans 6 mois. Si la confiance dans les dates de finalisation annoncées de JDK 7 s&#8217;est évaporée au fil des reports successifs, la situation semble maintenant se stabiliser : <a
href="http://blogs.sun.com/mr/entry/jdk7_m5" title="Mark Reinhold vient dannoncer" >Mark Reinhold vient d&#8217;annoncer</a> la disponibilité de la M5 de JDK 7, en accord avec le calendrier prévisionnel de la <em>roadmap</em>. Quatre des fameuses évolutions du langage apportées par le projet Coin y sont implémentées et peuvent donc être d&#8217;ores et déjà testées.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="mythesausujetdesSOA"></a>10 mythes au sujet des SOA</h4><p><a
href="http://www.ebizq.net/webinars/11585.html" title="Yefim Natis de Gartner a expos durant lvnement SOA in Action dix mythes communs" >Yefim Natis, de Gartner, a exposé durant l&#8217;évènement <em>SOA in Action</em>, dix mythes communs</a> <em>(et la réponse qu&#8217;il faut leur apporter)</em> sur la mise en place d&#8217;une SOA.<br
/> Là où l&#8217;article porte à sourire, c&#8217;est que, pour une fois, la faute est partagée : cinq de ces mythes sont propagés par les fanatiques de la SOA, et sont mis en regard de cinq autres portés par les allergiques.</p><p>Pour les fanatiques, nous avons :</p><ul><li>Les services sont portés par l&#8217;IT et propagés vers les acteurs fonctionnels.<br
/> Pour Yefim Natis, une SOA est un moyen pour l&#8217;IT de mieux comprendre et appréhender les problématiques métier.</li><li>Les plate formes orientées services reposent sur des briques pré-fabriquées.<br
/> Les SOA ne reposent pas uniquement sur des applications &#8216;services&#8217;, mais aussi sur des batchs et des applications héritées.</li><li>Partager et réutiliser sont les principaux apports d&#8217;une SOA.<br
/> C&#8217;est en effet un des bénéfices attendus, mais c&#8217;est loin d&#8217;être le seul. On peut citer : meilleure exploitation, meilleure montée en charge &#8230;</li><li>Mettre en place une SOA permet de s&#8217;abstenir de réaliser une phase d&#8217;intégration.<br
/> Même si la SOA permet d&#8217;introduire une stabilité dans les interactions entre services, elle ne dispense pas de réaliser de vrais tests d&#8217;intégration, bien au contraire.</li><li>Une SOA réduit les coûts du SI.<br
/> Sur le long terme, peut être &#8230; Mais dans un premier temps, une SOA peut s&#8217;avérer couteuse : nouvelle façon de penser, nouveaux outils, formations à prévoir&#8230;</li></ul><p>Pour les allergiques, la liste est la suivante :</p><ul><li>Une SOA introduit une grande complexité et de nouveaux problèmes.<br
/> La plupart des problèmes liés à la mise en place d&#8217;une SOA sont des problèmes existants partout ailleurs dans le monde de l&#8217;informatique distribuée. La mise en œuvre d&#8217;une SOA ne fait souvent que mettre en exergue des problèmes existants.</li><li>SOA n&#8217;est pas nouveau, c&#8217;est juste un effet de mode.<br
/> Il faut voir au delà de l&#8217;aspect technique : certes SOA repose sur les principes de l&#8217;informatique distribué, mais c&#8217;est l&#8217;ensemble de la démarche qui est nouvelle et qui a au moins l&#8217;avantage de crystaliser certaines bonnes pratiques.</li><li>Une SOA est vouée à l&#8217;échec, parce que les Web Services sont un standard trop instable.<br
/> SOA et SOAP sont deux choses complètement différentes. Les Web Services sont &#8216;juste&#8217; un moyen d&#8217;exposer des services.</li><li>Il est difficile de vendre une SOA, car les acteurs fonctionnels n&#8217;en voient pas les bénéfices.<br
/> Certains bénéfices sont apparents de manières quasi instantanée <em>(on pense aux indicateurs BAM)</em>, et les acteurs fonctionnels gagnent rapidement une nouvelle compréhension de leur environnement IT.</li><li>SOA est déjà dépassé, il faut passer à la suite.<br
/> Le challenge d&#8217;une SOA basique est en effet dépassé. Mais il reste de nombreux enjeux à adresser, notamment dans les architectures les plus complexes.</li></ul><p><a
href="http://www.infoq.com/news/2009/11/SOA10" title="via InfoQ" >via InfoQ</a></p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SoireGoogleauLyonJUG"></a>Soirée Google au LyonJUG</h4><p>Lundi 23 Novembre, le <a
href="http://www.lyonjug.org/bin/view/Main/" title="LyonJUG" >LyonJUG</a> organise une soirée dédiée aux technologies Google. L&#8217;occasion de découvrir, démonstration à l&#8217;appui, Google Web Toolkit, Google App Engine, Android et le dernier né Google Wave. L&#8217;objectif est aussi de présenter l&#8217;architecture globale de ces produits pour mieux en saisir le fonctionnement et le but.<br
/> Pour faciliter l&#8217;organisation de la soirée dans les locaux d&#8217;EPITECH, vous devez vous inscrire <a
href="http://www.jugevents.org/jugevents/event/show.html?id=21154" title="ici" >ici</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/16/revue-de-presse-xebia-134/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/11/09/revue-de-presse-xebia-133/</link> <comments>http://blog.xebia.fr/2009/11/09/revue-de-presse-xebia-133/#comments</comments> <pubDate>Mon, 09 Nov 2009 18:26:49 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[Atmosphere]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[JRuby]]></category> <category><![CDATA[Mule]]></category> <category><![CDATA[Paris JUG]]></category> <category><![CDATA[Subversion]]></category> <category><![CDATA[Tomcat]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3080</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Subversion, le nouveau projet de la Fondation Apache MuleSoft annonce Mule Data Integrator Des nouvelles de Tomcat 7 RIA Atmosphere, atmosphere ? Le coin de la technique Sortie de JRuby 1.4.0 Le mouvement NoSQL divise et intrigue Evènements de notre [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/11/09/revue-de-presse-xebia-133/#SubversionlenouveauprojetdelaF">Subversion, le nouveau projet de la Fondation Apache</a></li><li><a
href="http://blog.xebia.fr/2009/11/09/revue-de-presse-xebia-133/#MuleSoftannonceMuleDataIntegra">MuleSoft annonce Mule Data Integrator </a></li><li><a
href="http://blog.xebia.fr/2009/11/09/revue-de-presse-xebia-133/#DesnouvellesdeTomcat">Des nouvelles de Tomcat 7</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/11/09/revue-de-presse-xebia-133/#Atmosphereatmosphere">Atmosphere, atmosphere ?</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/11/09/revue-de-presse-xebia-133/#SortiedeJRuby">Sortie de JRuby 1.4.0</a></li><li><a
href="http://blog.xebia.fr/2009/11/09/revue-de-presse-xebia-133/#LemouvementNoSQLdiviseetintrig">Le mouvement NoSQL divise et intrigue</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/09/revue-de-presse-xebia-133/#SoiresGoogleetAtmosphereauPari">Soirées Google et Atmosphere au Paris JUG</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="SubversionlenouveauprojetdelaF"></a>Subversion, le nouveau projet de la Fondation Apache</h4><p>C&#8217;est <a
href="http://www.open.collab.net/news/press/2009/svn-asf.html" title="officiel" >officiel</a>, Subversion fait maintenant partie <a
href="http://svn.haxx.se/dev/archive-2009-11/0209.shtml" title="des projets de la fondation Apache" >des projets de la fondation Apache</a>. Avant de pouvoir devenir projet top-level, Subversion doit d&#8217;abord passer par l&#8217;<a
href="http://incubator.apache.org/" title="incubateur" >incubateur</a>. Durant cette période, CollabNet continuera d&#8217;héberger le projet sur <a
href="http://subversion.tigris.org" title="httpsubversiontigrisorg" >http://subversion.tigris.org</a>. De plus, les différents binaires continueront d&#8217;être publiés sur ce site au-delà de la période d&#8217;incubation. Nous sommes donc en droit de nous demander ce que cette nouvelle va finalement changer ?</p><p>Certains <a
href="http://best-practice-software-engineering.blogspot.com/2009/11/misc-subversion-is-apache-project-so.html" title="imaginent la refonte" >imaginent la refonte</a> de Subversion pour lui ajouter des fonctionnalités de gestionnaire de sources distribué, comme <a
href="http://fr.wikipedia.org/wiki/Git" title="GIT" >GIT</a> ou <a
href="http://fr.wikipedia.org/wiki/Mercurial" title="Mercurial" >Mercurial</a>. Il est pourtant difficile de croire à une telle transformation, Subversion étant connu comme le gestionnaire centralisé star du moment. Un tel virement de bord signifierait la fin de ce modèle centralisé.</p><p>D&#8217;autres perçoivent au contraire cette nouvelle <a
href="http://blog.red-bean.com/sussman/?p=272" title="comme une fiert" >comme une fierté</a> personnelle et voient l&#8217;arrivée de Subversion dans l&#8217;ASF comme un aboutissement. Le projet est assez mature pour rentrer dans une nouvelle phase et Apache est la maison idéale pour le faire vivre sur le long terme tout en pérennisant la communauté.</p><p>Au final, la véritable réponse à cette question se situe probablement entre ces deux visions. Pourquoi le projet ne continuerait pas tout simplement à avancer sur le chemin qu&#8217;il suit depuis sa création ? Il lui reste du trajet à parcourir : performances, intégration avec les IDEs, outillage &#8230;</p><h4><a
name="MuleSoftannonceMuleDataIntegra"></a>MuleSoft annonce Mule Data Integrator</h4><p>MuleSoft annonce aux abonnés de sa <em>newsletter</em> l&#8217;arrivée en version beta de <a
href="http://www.mulesoft.com/sites/all/themes/mulesource/downloads/mule-data-integrator.pdf" title="Mule Data Integrator" >Mule Data Integrator</a>, un outil permettant de définir facilement des <em>mappings</em> de données de toutes formes (XML, JavaBeans, WSDL, base de données, fichier simple, &#8230;). Ces modèles d&#8217;intégration de données peuvent ensuite être exploités directement par un <em>transformer</em> spécifique pour Mule ESB. L&#8217;outil se présente sous la forme d&#8217;une application Eclipse.</p><p>Il s&#8217;agit là d&#8217;une réponse à une problématique courante puisque Mule ESB simplifie l&#8217;intégration entre protocoles mais laisse au développer le soin d&#8217;apporter sa solution de transformation de données en se basant sur XSLT ou Java. On appréciera donc une telle possibilité offerte sur un ESB Open Source, même si aucun détail n&#8217;est pour le moment fourni quant à la licence pratiquée sur Mule Data Integrator.</p><p>Cette annonce fait suite à une <a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#iBeanslasolutiondintgrationpou">activité très dense de l&#8217;éditeur</a> ces derniers mois qui avait déjà créé la surprise avec iBeans et son offre Tcat Server. Fort de ce <em>portfolio</em> plus dense et plus riche, MuleSoft cherche donc à devenir un éditeur pour solutions d&#8217;entreprise à part entière, et non plus simplement l&#8217;entreprise derrière l&#8217;ESB à succès.</p><h4><a
name="DesnouvellesdeTomcat"></a>Des nouvelles de Tomcat 7</h4><p>A l&#8217;occasion des festivités organisées à l&#8217;<a
href="http://us.apachecon.com/c/acus2009/" title="ApacheCon2009" >ApacheCon2009</a> pour les <a
href="http://www.youtube.com/watch?v=DVhz1mSWEIQ" title="10 ans d'Apache" >10 ans d&#8217;Apache</a>, les annonces furent nombreuses. Nous avons déjà parlé de l&#8217;arrivée du projet Subversion, dans le giron de la fondation. Outre l&#8217;utilisation par la maison blanche du projet Drupal, ce fût aussi l&#8217;occasion d&#8217;annoncer l&#8217;arrivée prochaine de Tomcat 7.  Mark Thomas, interviewé par Dzone sur le sujet, parle d&#8217;une version alpha pour la fin de l&#8217;année. Voilà qui serait un beau cadeau de Noël pour la communauté. Dans l&#8217;interview, Mark revient sur les nouveautés attendues dans cette nouvelle version, le but principal étant bien sûr d&#8217;implémenter l&#8217;<a
href="http://blog.xebia.fr/2009/09/15/servlet-3-0-les-3-points-marquants/" title="API Servlet 30" >API Servlet 3.0</a>. Tomcat supportera les web fragments et la déclaration dynamique de Servlet et Filter.</p><p>Côté sécurité, Mark annonce le SSL session tracking pour utiliser les identifiants de session SSL, une plus grande séparation des rôles utilisés pour l&#8217;administration (par script, par le web ou par JMX), et l&#8217;utilisation de jetons temporaires (nonce) en protection contre les attaques de type Cross Site Request Forgery. Une autre nouveauté majeure annoncée par Mark est la capacité de Tomcat 7 à être embarqué dans une application. Selon ses dires il suffit de 8 lignes de codes pour lancer Tomcat et configurer son application web.</p><p>Restent les logs asynchrones, l&#8217;ajout d&#8217;alias permettant d&#8217;héberger des répertoires du système de fichier hors du contexte standard de l&#8217;application, et de nouvelles protections contre les fuites mémoires. <a
href="http://java.dzone.com/articles/mark-thomas-apache-tomcat-7" title="Linterview complte sur Dzone" >L&#8217;interview complète sur Dzone&#8230;</a></p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="Atmosphereatmosphere"></a>Atmosphere, atmosphere ?</h4><p>Pas mal de <em>buzz</em> en ce moment autour du framework web <a
href="http://atmosphere.dev.java.net/" title="Atmosphere" >Atmosphere</a> (via <a
href="http://www.theserverside.com/news/thread.tss?thread_id=58340" title="TSS pour la sortie du produit en version 04" >TSS pour la sortie du produit en version 0.4</a>) qui permet de créer des applications RESTful et Ajax Push/Comet.<br
/> Le framework supporte entre autres Java, JRuby, Groovy et Scala. Plusieurs exemples sont disponibles pour ce dernier avec notamment l&#8217;intégration d&#8217;Atmosphere avec <a
href="http://wiki.github.com/jboner/akka" title="Akka" >Akka</a> et Jersey (<a
href="http://klangism.blogspot.com/2009/07/atmosphere-on-akka.html" title="ici" >ici</a>).</p><p>Au menu des nouveautés depuis la 0.3, une intégration avec Wicket et GWT, une intégration simplifiée avec des applications existantes (servlet based), le support des derniers protocoles bayeux, le support d&#8217;EJB 3.1, et OSGi ready <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8230;</p><p>Si ce framework vous intéresse, allez donc faire un petit tour au <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20091112" title="Paris JUG" >Paris JUG</a> !</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SortiedeJRuby"></a>Sortie de JRuby 1.4.0</h4><p>L&#8217;équipe du projet JRuby <a
href="http://www.jruby.org/2009/11/02/jruby-1-4-0.html" title="annonce une nouvelle version" >annonce une nouvelle version</a> de l&#8217;interpréteur Ruby full-Java. Parmi les avancées :</p><ul><li>Compatibilité avec Ruby 1.8.7 patchlevel 174</li><li>Nouveau parser YAML, portage complet de Syck!</li><li>Meilleure intégration de Java, plus rapide</li><li>Installeur Windows</li><li>Avancée du support de Ruby 1.9</li><li>307 bugs corrigés depuis la version 1.3.1</li></ul><p>Le support de <a
href="http://rubyonrails.org/" title="Rails" >Rails</a> dans sa dernière version est pleinement assuré et les objectifs pour le futur sont axés sur le support complet de Ruby 1.9.</p><h4><a
name="LemouvementNoSQLdiviseetintrig"></a>Le mouvement NoSQL divise et intrigue</h4><p>Le nom <em>NoSQL</em> est apparu courant 2009 pour qualifier un mouvement initié depuis longtemps mais qui a pris une importance et une visibilité particulière ces derniers mois. Il regroupe <a
href="http://en.wikipedia.org/wiki/NoSQL" title="lensemble des projets" >l&#8217;ensemble des projets</a> proposant une solution de persistance de données non relationnelle qui se caractérisent par un <em>design</em> favorisant la scalabilité et la flexibilité. On reconnaît dans ces deux caractéristiques les besoins du Web, dont les grands acteurs que sont Google, Amazon et Facebook ont joué un rôle important en apportant leur propre solution (respectivement <a
href="http://labs.google.com/papers/bigtable.html">BigTable</a>, <a
href="http://aws.amazon.com/simpledb/">SimpleDB</a> et <a
href="http://incubator.apache.org/cassandra/">Cassandra</a>).</p><p>Remettre en question le stockage relationnel exclusif qui s&#8217;était imposé presque comme une évidence dans le monde de l&#8217;entreprise ne pouvait se faire sans initier de nombreux débats. La dernière intervention en date est <a
href="http://cacm.acm.org/blogs/blog-cacm/50678-the-nosql-discussion-has-nothing-to-do-with-sql/fulltext" title="celle de Michael Stonebraker" >celle de Michael Stonebraker</a> qui critique vivement cette initiative en avançant :</p><ul><li>Le choix du NoSQL comme solution de persistance est en général amené par un besoin de performance et de flexibilité. Ces deux caractéristiques peuvent être assurée par les RDBMS traditionnelle par la mise en place de bonnes pratiques épaulées d&#8217;un éventuel <em>sharding</em></li><li>Les systèmes NoSQL souffrent eux aussi de certaines des problématiques des RDBMS et ne sont donc pas une solution parfaite</li><li>L&#8217;utilisation de procédures stockées permet d&#8217;obtenir la performance voulue dans de nombreuse situations</li></ul><p>Ces arguments, assez classiques à l&#8217;encontre du NoSQL, sont opposés à ceux <a
href="http://debasishg.blogspot.com/2009/11/nosql-movement-excited-with-coexistence.html" title="mis en avant par Debasish Ghosh" >mis en avant par Debasish Ghosh</a>, l&#8217;auteur du prochain <a
href="http://manning.com/ghosh/" title="DSLs in action" >DSLs in action</a> à paraître chez Manning :</p><ul><li>Le <em>sharding</em>, solution souvent mise en avant pour sauver la scalabilité des RDBMS, est une solution très lourde à mettre en place, qui évolue mal et qui est très intrusive dans la logique métier ; elle est appliquée à des systèmes qui n&#8217;ont pas été prévus pour une telle utilisation</li><li>Le <a
href="http://www.infoq.com/presentations/availability-consistency" title="thorme CAP" >théorème CAP</a> montre que seule une approche différente des RDBMS classiques permet d&#8217;obtenir les performances voulues</li><li>Une coopération intéressante se met en place entre les projets NoSQL afin de permettre des interopérabilités (tel que <a
href="http://neo4j.org/">Neo4j</a> s&#8217;appuyant sur Cassandra ou <a
href="http://riak.basho.com/">Riak</a> sur CouchDB)</li></ul><p>La remise en question apportée par le NoSQL est forcément bénéfique et ne peut amener qu&#8217;une innovation. Si le mouvement est encore récent et qu&#8217;il doit gagner en maturité, il amènera probablement à se poser plus naturellement la question de la ou des meilleure(s) solution(s) de persistance pour les données d&#8217;une application ou d&#8217;un système d&#8217;information.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SoiresGoogleetAtmosphereauPari"></a>Soirées Google et Atmosphere au Paris JUG</h4><p>Pour rebondir sur la news ci-dessus concernant le framework Atmosphere, le <a
href="http://www.parisjug.org/xwiki/bin/view/Main/WebHome" title="Paris JUG" >Paris JUG</a> nous propose ce jeudi 12 novembre une <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20091112" title="soire spciale Atmosphere" >soirée spéciale Atmosphere</a>.<br
/> A l&#8217;heure où nous écrivons ces lignes, il reste encore quelques places donc c&#8217;est <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20091112" title="maintenant ou jamais pour vous inscrire" >maintenant ou jamais pour vous inscrire</a> !</p><p>Toujours par le Paris JUG, la deuxième soirée de la semaine, mardi 10 novembre, autour de <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20091110" title="Google Wave  Android  App Engine" >Google Wave / Android / App Engine</a> affiche complet :p !<br
/> La remise à disposition des places des personnes non présentes 5 minutes avant le début de la session reste envisageable mais l&#8217;abonnement à la newsletter / rss / autre reste quand même le meilleur moyen d&#8217;être averti à temps !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/09/revue-de-presse-xebia-133/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/10/26/revue-de-presse-xebia-131/</link> <comments>http://blog.xebia.fr/2009/10/26/revue-de-presse-xebia-131/#comments</comments> <pubDate>Mon, 26 Oct 2009 18:32:17 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Exploitation]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Artifactory]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Grails]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[Play!]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[VisualVM]]></category> <category><![CDATA[WADL]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3036</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. SOA SOA Manifesto : pragmatisme utopique ? WADL devient une Submission W3C Le coin de la technique Play! Framework 1.0 Mise à jour de VisualVM en 1.2 Comment concevoir un datacenter, &#8230; par Google Ca bouge dans la communauté Groovy/Grails Votre application web est [...]]]></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>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/26/revue-de-presse-xebia-131/#SOAManifestopragmatismeutopiqu">SOA Manifesto : pragmatisme utopique ?</a></li><li><a
href="http://blog.xebia.fr/2009/10/26/revue-de-presse-xebia-131/#WADLsurlavoiedelastandardisati">WADL devient une <em>Submission</em> W3C</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/26/revue-de-presse-xebia-131/#PlayFramework">Play! Framework 1.0</a></li><li><a
href="http://blog.xebia.fr/2009/10/26/revue-de-presse-xebia-131/#MisejourdeVisualVMen">Mise à jour de VisualVM en 1.2</a></li><li><a
href="http://blog.xebia.fr/2009/10/26/revue-de-presse-xebia-131/#Commentconcevoirundatacenterpa">Comment concevoir un datacenter, &#8230; par Google</a></li><li><a
href="http://blog.xebia.fr/2009/10/26/revue-de-presse-xebia-131/#CabougedanslacommunautGroovyGr">Ca bouge dans la communauté Groovy/Grails</a></li><li><a
href="http://blog.xebia.fr/2009/10/26/revue-de-presse-xebia-131/#Votreapplicationwebestellevuln">Votre application web est elle vulnérable ?</a></li><li><a
href="http://blog.xebia.fr/2009/10/26/revue-de-presse-xebia-131/#ArtifactoryvolutionsetmodeSaaS">Artifactory : évolutions et mode SaaS</a></li></ul><h3><a
name="SOA"></a>SOA</h3><h4><a
name="SOAManifestopragmatismeutopiqu"></a>SOA Manifesto : pragmatisme utopique ?</h4><p>La communauté SOA vient de publier son <a
href="http://soa-manifesto.org/" title="SOA Manifesto" >SOA Manifesto</a>. Les valeurs sont très consensuelles, on pourrait même les trouver trop lisses quand on a vécu un naufrage SOA (avec l&#8217;oubli des objectifs métier, sa perfection naïve initiale, ses services faussement partagés qui finalement ne satisfont même pas le premier consommateur et autres ESB passe-plats).</p><p>Saluons tout de même cette initiative. SOA est une réalité. Les projets utopistes sont aujourd&#8217;hui minoritaires face à tous les projets qui intègrent des web services pour interconnecter les applications.<br
/> Le Manifeste SOA en français :<br
/> <strong>Valeur métier</strong> plutôt que stratégie technique,<br
/> <strong>Objectifs stratégiques</strong> plutôt que bénéfices spécifiques à un projet,<br
/> <strong>Interopérabilité intrinsèque</strong> plutôt qu&#8217;intégration propriétaire,<br
/> <strong>Services partagés</strong> plutôt qu&#8217;implémentation spécifique à un besoin particulier,<br
/> <strong>Flexibilité</strong> plutôt qu&#8217;optimisation,<br
/> <strong>Amélioration incrémentale</strong> plutôt que recherche de la perfection initiale.</p><p>Et rassurons-nous, ce n&#8217;est pas un manifesto qui empêchera les zélotes SOA de se déchirer. La guerre SOAP versus REST bat (toujours) son plein <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p><p>Ils parlent du SOA Manifesto : <a
href="http://www.innoq.com/blog/st/2009/10/soa_manifesto.html" title="InfoQ SOA Manifesto" >InfoQ SOA Manifesto</a>, <a
href="http://www.innoq.com/blog/st/2009/10/comments_on_the_soa_manifesto.html" title="Stefan Tilkovs Weblog  Comments on SOA Manifesto" >Stefan Tilkov&#8217;s Weblog : Comments on SOA Manifesto</a>.</p><p>Allez, je retourne à mes web services Contract First avec CXF <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p><h4><a
name="WADLsurlavoiedelastandardisati"></a>WADL devient une <em>Submission</em> W3C</h4><p>Marc Hadley, auteur de la spécification <a
href="http://www.w3.org/Submission/2009/SUBM-wadl-20090831/" title="WADL" >WADL</a> et <em>spec-lead</em> de la JSR-311 (JAX-RS), <a
href="http://weblogs.java.net/blog/mhadley/archive/2009/10/23/wadl-submitted-w3c" title="a annonc" >a annoncé</a> que WADL venait d&#8217;être accepté en tant que <em>Submission</em> W3C.</p><p>Cette spécification portée par Sun a pour but de définir un format XML de description de services REST. Il s&#8217;agit donc d&#8217;un équivalent à WSDL pour REST. Alors que REST-*, porté par JBoss, a récemment <a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#LinitiativeRESTfaitdbat" title="relanc le dbat" >relancé le débat</a> sur la tendance récurrente à vouloir intégrer dans REST les fonctionnalités des très controversés WS-*, la soumission de WADL au W3C fait réapparaître la question de l&#8217;intérêt de définir des contrats pour des services REST.</p><p>Joe Gregorio <a
href="http://bitworking.org/news/193/Do-we-need-WADL" title="sopposait vivement" >s&#8217;opposait vivement</a> à l&#8217;initiative WADL il y a deux ans déjà. Il reprochait principalement :</p><ul><li>l&#8217;insuffisance de WADL pour définir élégamment tous les types de services REST</li><li>la fragilité du client qui ne fonctionne plus lorsque le contrat change comme c&#8217;est déjà le cas avec WSDL</li><li>le manque de réalisme de l&#8217;approche WADL2Java qui ne permettrait pas la pleine exploitation de REST. Il préférait donc une approche d&#8217;écriture du client REST manuelle, en se basant sur un socle commun.</li></ul><p>Toutefois, l&#8217;approche &laquo;&nbsp;REST avec un contrat&nbsp;&raquo; est séduisante pour les applications d&#8217;entreprise dont les services sont souvent aussi nombreux que les consommateurs variés.<br
/> C&#8217;est dans cette logique que de nombreux projets lèvent les ambiguïtés de leurs services REST en préférant XSD à JSON. Les URL et paramètres d&#8217;appel restant alors décrits uniquement dans une documentation annexe.</p><p>Par ailleurs, on peut regretter que WADL n&#8217;ait pas mieux adressé que WSDL des problèmes aussi important que le <em>versioning</em> des services alors qu&#8217;un projet comme <a
href="http://incubator.apache.org/thrift/" title="Apache Thrift" >Apache Thrift</a> a su être innovant sur le sujet.</p><p>La soumission de WADL au W3C n&#8217;implique donc pas forcément son succès à venir. La disponibilité en masse d&#8217;outils et de <em>frameworks</em> permettant de gérer ce format pourrait en revanche attirer une partie des adeptes de SOAP.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="PlayFramework"></a>Play! Framework 1.0</h4><p><a
href="http://www.theserverside.com/" title="The Server Side" >The Server Side</a> nous annonce la sortie de <a
href="http://www.playframework.org/" title="Play! Framework" >Play! Framework</a> en version 1.0.</p><p>Play! est un framework web de haute productivité (tout comme <a
href="http://grails.org/" title="Grails" >Grails</a> ou <a
href="http://www.springsource.org/roo" title="Spring Roo" >Spring Roo</a>) qui simplifie la création et le développement d&#8217;applications Web en langage Java. Ce framework <em>full stack</em> inclut tout une batterie de composants tels que Groovy (pour le <em>templating</em>), Apache Mina mais aussi Hibernate. Quant à l&#8217;architecture de vos projets Play!, elle sera de type RESTful.</p><p>Cette <a
href="http://vimeo.com/7087610" title="vido" >vidéo</a> nous donne un bon aperçu du produit, surtout en ce qui concerne le fameux <em>Fix the bug and hit reload !</em> c&#8217;est à dire pas de compilation, de déploiement ou de redémarrage serveur suite à la modification de vos classes Java, juste un rafraîchissement de votre navigateur pour voir vos modifications.</p><p>A noter que l&#8217;équipe travaille déjà sur la version 1.1 et, entre autres, sur le support de <a
href="http://www.scala-lang.org/" title="Scala" >Scala</a></p><p>Pour les liens utiles, la documentation complète du produit se trouve sur cette <a
href="http://www.playframework.org/documentation" title="page" >page</a>. Le téléchargement se passe par <a
href="http://download.playframework.org/" title="ici" >ici</a>. Et, comme le rappelle TSS, n&#8217;oubliez pas la présentation <a
href="http://www.devoxx.com/display/DV09/Play+framework+in+practice" title="Play! framework in practice" >Play! framework in practice</a> à Devoxx, en tous cas nous y serons !</p><h4><a
name="MisejourdeVisualVMen"></a>Mise à jour de VisualVM en 1.2</h4><p>8 mois après la sortie de la version 1.1, l&#8217;équipe nous gratifie d&#8217;une nouvelle version de son outil de monitoring de JVM. Avec un passage de 1.1.1 à 1.2, il ne faut pas s&#8217;attendre à de grandes révolutions. Une liste de <a
href="https://visualvm.dev.java.net/issues/buglist.cgi?Submit+query=Submit+query&#038;issue_type=DEFECT&#038;component=visualvm&#038;resolution=FIXED&#038;target_milestone=1.2&#038;email1=&#038;emailtype1=exact&#038;emailassigned_to1=1&#038;email2=&#038;emailtype2=exact&#038;emailreporter2=1&#038;issueidtype=include&#038;issue_id=&#038;changedin=&#038;votes=&#038;chfield=creation_ts&#038;chfieldfrom=&#038;chfieldto=Now&#038;chfieldvalue=&#038;short_desc=&#038;short_desc_type=fulltext&#038;long_desc=&#038;long_desc_type=fulltext&#038;issue_file_loc=&#038;issue_file_loc_type=fulltext&#038;status_whiteboard=&#038;status_whiteboard_type=fulltext&#038;field0-0-0=noop&#038;type0-0-0=noop&#038;value0-0-0=&#038;cmdtype=doit&#038;order=Reuse+same+sort+as+last+time" title="31 bugs corrigs" >31 bugs corrigés</a>, suivie de quelques nouvelles fonctionnalités notables:</p><ul><li>Un sampling profiler CPU et mémoire</li><li>Support de plusieurs instances de JStatd</li><li>Amélioration de l&#8217;API de génération de graphes</li><li>Sauvegarde d&#8217;un snapshot de l&#8217;application dans un fichier nps pouvant-être utilisé plus tard pour analyse</li></ul><p>Nous vous passons les améliorations de GUI et le support des proxys qui peut toujours s&#8217;avérer utile pour les analyses à distance. La vraie grande nouveauté c&#8217;est le plugin permettant de profiler l&#8217;application par sampling. Il ne faut pas s&#8217;attendre à la précision des outils instrumentant l&#8217;application comme <a
href="http://www.jinspired.com/products/jxinsight/" title="JXInsight" >JXInsight</a>. Cependant, cela permettra une analyse assez poussée sans impact sur les performances.</p><h4><a
name="Commentconcevoirundatacenterpa"></a>Comment concevoir un datacenter, &#8230; par Google</h4><p>Lors de la conférence Ladis 2009 (<b>La</b>rge Scale <b>Di</b>stributed <b>S</b>ystems and Middleware), <a
href="http://research.google.com/people/jeff/index.html" title="Jeff Dean" >Jeff Dean</a>, du groupe infrastructure chez Google, a présenté <a
href="http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf" title="les manires de concevoir un systme distribu" >les manières de concevoir un système distribué</a>.</p><p>Il passe en revue différentes problématiques :</p><ul><li>Infrastructure</li><li>Stockage</li><li>Clustering</li><li>Échange de données sur le réseau</li><li>Communication entre applications</li><li>Construction d&#8217;application sur de telles infrastructures</li></ul><p>Il est intéressant de voir les problématiques posées et les solutions proposées, sur des problématiques que nous avons trop tendance à oublier en tant que développeurs. Citons entre autres :</p><ul><li>Latence réseau : un critère important, car difficile à optimiser</li><li>Bande passante du réseau</li><li>Capacité de stockage (mémoire et disque)</li></ul><p>Il est donc très important même pour un <a
href="http://surana.wordpress.com/2009/01/01/numbers-everyone-should-know/" title="dveloppeur davoir ces chiffres en tte" >développeur d&#8217;avoir ces chiffres en tête</a>.</p><p>Par retour d&#8217;expérience, Jeff Dean montre les joies d&#8217;interagir avec du matériel physique. Les applications ne doivent pas supposer que le matériel est infaillible, il y a différentes erreurs que nos applications doivent gérer. Quand on voit les nombres d&#8217;occurrences de ce type de problème et leur nature, leur gestion par l&#8217;application n&#8217;est pas aussi triviale qu&#8217;il y parait :</p><ul><li>Problème DNS</li><li>Plantage de serveur</li><li>Perte de connections</li><li>&#8230;</li></ul><p>Cette présentation est très riche, et elle permet de voir les tenants et aboutissants d&#8217;une bonne infrastructure mais aussi les impacts que cela peut avoir dans nos développements de tous les jours.</p><p>Les contraintes que s&#8217;est imposé Google en terme de disponibilité, dimensionnement, &#8230;  ont amené plusieurs innovations technologiques en terme d&#8217;infrastructure qui ont des impacts sur le développement applicatif :</p><ul><li>Protocol Buffer</li><li>MapReduce</li><li>Google File System</li><li>Big Table</li></ul><p>Les lecteurs intéressés par les innovations mises en place par Google sur ses infrastructures noteront que Gregor Hohpe (auteur de <a
href="http://www.eaipatterns.com/" title="Enterprise Integration Patterns" >Enterprise Integration Patterns</a>) présentera à Devoxx une session <a
href="http://www.devoxx.com/display/DV09/Distributed+Programming+the+Google+Way" title="Distributed Programming the Google Way" >Distributed Programming the Google Way</a>.</p><h4><a
name="CabougedanslacommunautGroovyGr"></a>Ca bouge dans la communauté Groovy/Grails</h4><p>Pour commencer, on peut noter <a
href="http://www.infoq.com/presentations/Web-Development-Grails-Graeme-Rocher" title="la longue prsentation de Grails" >la longue présentation de Grails</a> faite par Graeme Rocher sur InfoQ. Le &laquo;&nbsp;papa&nbsp;&raquo; de Grails revient sur de nombreux points relatifs à ce très bon framework permettant de créer des applications web rapidement en bénéficiant de la puissance de Java, Groovy, Hibernate, Spring&#8230;</p><p>Ensuite, et c&#8217;est la rançon du succès, il y a beaucoup de discussions et d&#8217;interrogations autour des besoins auxquels répondent Groovy et Grails. <a
href="http://blog.peterdelahunty.com/2009/10/grails-iron-man-suit-for-tony-stark.html" title="Sur son blog" >Sur son blog</a>, Peter Delahunty précise par exemple que, pour lui, Grails n&#8217;est l&#8217;arme absolue que si on a une bonne connaissance des technologies sous-jacentes (Spring, Hibernate&#8230;). Il ne faut pas débuter par Grails sans s&#8217;attendre à bloquer sur des problèmes relatifs à ces technologies.</p><p><a
href="http://www.danielhonig.info/index.php?/archives/1-Groovy-and-Grails-Java-Skills-Not-Directly-Relevant.html" title="Cet article" >Cet article</a> va dans le même sens et rappelle qu&#8217;à partir du moment où l&#8217;on parle de &laquo;&nbsp;la magie Groovy&nbsp;&raquo; il faut être conscient que des choses qui n&#8217;ont rien de magique (cela reste du code !) se passent. Les &laquo;&nbsp;dynamic finders&nbsp;&raquo;, le MOP (Meta Object Protocol) et la magie des closures font rêver mais s&#8217;expliquent bel et bien ! Ensuite, il y est noté que la proximité de Groovy et Java fait que de nombreuses personnes pensent que l&#8217;on peut passer de Java à Groovy sans formation particulière. Si l&#8217;on ne comprend pas les principes de ces choses magiques et que l&#8217;on se contente de les accepter comme tels, on s&#8217;expose tôt ou tard à des retours de flamme sévères qui se matérialisent généralement sous la forme de StackTraces incompréhensibles. Enfin, le manque de support professionnel pour Groovy/Grails est évoqué. Sur ce point, je pense que l&#8217;auteur se trompe. On note en effet que Springsource semble fournir un <a
href="http://www.springsource.com/services/enterprisesupport" title="support commercial pour ces technologies" >support commercial pour ces technologies</a>. Mais, il y a peu, Groovy et Grails n&#8217;étaient pas encore dans le giron de Springsource et l&#8217;on devait &laquo;&nbsp;se contenter&nbsp;&raquo; du support de la communauté. Néanmoins, celui-ci a toujours été assez réactif et de bon niveau.</p><p>Toujours concernant Groovy, on peut noter la version Community Edition de l&#8217;IDE IntelliJ, tout récemment publiée, semble <a
href="http://mrhaki.blogspot.com/2009/10/groovy-intentions-in-intellij-idea.html" title="bien lotie" >bien lotie</a> au niveau du support de ce langage. Malheureusement, le support de Grails, lui, n&#8217;est <a
href="http://www.jetbrains.com/idea/nextversion/editions_comparison_matrix.html" title="pas prsent dans cette version" >pas présent dans cette version</a>.</p><h4><a
name="Votreapplicationwebestellevuln"></a>Votre application web est elle vulnérable ?</h4><p>Le Web Application Security Consortium (WASC) estime que 87% des applications de la toile sont vulnérables. Tout le monde ne peut pas s&#8217;offrir les services d&#8217;un expert en sécurité, et un développeur ne peut pas écrire du code sécurisé s&#8217;il ne connaît ou ne comprends pas les risques auxquels il s&#8217;expose. C&#8217;est pour cette raison que DeveloperWorks revient sur les principales failles de sécurité qui nous guettent, et quelques outils simples pour analyser notre code.<br
/> Les points de faiblesse les plus connus sont :</p><ul><li>le cross site scripting : le pirate injecte, via un autre site (de type forum par exemple), un script (de type javascript) vers le site visé. Ce script lui permet de récupérer des informations de connexion, des cookies&#8230;</li><li>l&#8217;injection de SQL : le pirate saisit du code SQL dans un formulaire web. Celui-ci est poussé jusqu&#8217;à la base, exécuté et donne (le plus souvent) accès à la base &#8216;en direct&#8217; au pirate (l&#8217;un des exemples le plus connus est l&#8217;injection de <em>OR 1=1-</em> dans un formulaire d&#8217;authentification, qui retourne alors toujours TRUE).</li></ul><p>Et <a
href="http://blog.xebia.fr/2009/06/30/jazoon-jour-3-agile-et-securite/" title="lon reparle de lOWASP" >l&#8217;on reparle de l&#8217;OWASP</a>, qui propose un outil open source pour détecter ces erreurs de conception : WebScarab. WebScarab s&#8217;utilise comme un proxy HTTP (qui se place entre votre browser et votre serveur d&#8217;applications, par simple redirection des ports). Ensuite, un simple fichier .txt permet d&#8217;injecter votre site avec quelques-uns des plus célèbres cas de cross site scripting ou d&#8217;injection SQL. Un autre outil open source est présenté, d&#8217;un fonctionnement similaire, Paros Proxy.<br
/> Reste ensuite à détecter les faux positifs, opération généralement manuelle.</p><p>On notera que la section <a
href="http://www.ibm.com/developerworks/web/library/wa-appsecurity/?S_TACT=105AGX01&#038;S_CMP=HP&#038;ca=drs-#resources" title="Ressources" >Ressources</a> de l&#8217;article original est richement fournie, et permet de réellement comprendre les risques auxquels sont exposées les applications accessibles sur internet.</p><p>Saurez-vous trouver les failles du site de test <a
href="http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project" title="Webgoat" >Webgoat</a> ?</p><h4><a
name="ArtifactoryvolutionsetmodeSaaS"></a>Artifactory : évolutions et mode SaaS</h4><p><a
href="http://www.jfrog.org/products.php" title="Artifactory" >Artifactory</a> est un <em>repository</em> Maven dont la principale particularité est de s&#8217;appuyer sur <a
href="http://en.wikipedia.org/wiki/Content_repository_API_for_Java" title="Java Content Repository (JCR)" >Java Content Repository (JCR)</a> pour assurer le stockage des artefacts. Le choix de JCR plutôt qu&#8217;un simple système de fichiers n&#8217;avait pas fait l&#8217;unanimité car il rend les tâches courantes d&#8217;administration plus délicates. En effet, lorsque l&#8217;on veut supprimer, remplacer ou déplacer un ensemble d&#8217;artefacts, l&#8217;action est triviale lorsque le système de fichier est utilisé alors qu&#8217;elle devient plus complexe avec JCR, qui n&#8217;est pas aussi directement manipulable.</p><p>Conscient de ce problème <a
href="http://www.jfrog.org" title="JFrog" >JFrog</a>, l&#8217;éditeur derrière Artifactory, a peu à peu intégré un certain nombre de fonctionnalités permettant d&#8217;effectuer ces tâches courantes d&#8217;administration des artefacts directement depuis l&#8217;interface Web. Ainsi, la dernière version du projet permet même le déplacement d&#8217;artefacts entre plusieurs <em>repository</em>.</p><p>Début septembre, JFrog a également lancé <a
href="http://www.jfrog.org/art-online.php" title="ArtifactoryOnline" >ArtifactoryOnline</a>, un service d&#8217;hébergement de <em>repository</em> Maven Artifactory en mode SaaS (Software as a Service). Ce type d&#8217;offre répond clairement à un besoin puisque la présence d&#8217;un <em>repository</em> Maven est souhaitable pour de nombreux cas d&#8217;utilisation et que cette infrastructure nécessite du temps et du matériel dont ne disposent pas toujours les équipes de taille réduite.</p><p>Par ces innovations, le <em>repository</em> Maven de JFrog saura sûrement séduire les utilisateurs déçus par les solutions concurrentes que sont <a
href="http://nexus.sonatype.org/" title="Nexus" >Nexus</a> et <a
href="http://archiva.apache.org/" title="Archiva" >Archiva</a>.</p><p><em>Article mis à jour le 26/10/2009 à 21h25</em></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/10/26/revue-de-presse-xebia-131/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/</link> <comments>http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#comments</comments> <pubDate>Mon, 05 Oct 2009 16:06:26 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[j2me]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[MIDP]]></category> <category><![CDATA[MSA]]></category> <category><![CDATA[NDK]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Web Beans]]></category> <category><![CDATA[Weld]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2972</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Google essuie les plâtres et met à jour l&#8217;Android NDK MIDP 3 et MSA 2 pour sauver J2ME ? Agilité Départs de la Scrum Alliance : bruits de couloirs RIA Sécurité : 13 choses que les agresseurs d&#8217;applications web ne [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Googleessuielespltresetmetjour">Google essuie les plâtres et met à jour l&#8217;Android NDK</a></li><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#MIDPetMSApoursauverJME">MIDP 3 et MSA 2 pour sauver J2ME ?</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#DpartsdelaScrumAlliancebruitsd">Départs de la Scrum Alliance : bruits de couloirs</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Scuritchosesquelesagresseursda">Sécurité : 13 choses que les agresseurs d&#8217;applications web ne vous diront pas</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Lesroadmapsdesimplmentationsde">Les roadmaps des implémentations de JPA 2.0</a></li><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#WebBeansestmortLonguevieaWeld">Web Beans est mort ! Longue vie a Weld !</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Googleessuielespltresetmetjour"></a>Google essuie les plâtres et met à jour l&#8217;Android NDK</h4><p>Pour rappel, le NDK est un environnement de développement complémentaire au SDK qui permet d&#8217;utiliser des langages autres que Java pour développer sur Android. Ce NDK est principalement dédié au développement C et C++. Parmi les nouveautés de la version 1.6, vous trouverez :</p><ul><li>Les librairies OpenGL ES 1.1 qui rapprochent encore un peu Android de l&#8217;IphoneOS.</li><li>Ciblage de version Android pour garantir le fonctionnement de votre application.</li><li>Possibilité de mélanger les sources Java et le code natif dans un même projet.</li></ul><p>Mais la semaine passée fût aussi l&#8217;occasion d&#8217;une joute entre Google et certains développeurs Android. Sujet de la discorde, le <a
href="http://www.cyanogenmod.com/" title="CyanogenMod" >CyanogenMod</a> une version libre, modifiée, d&#8217;Android. Google n&#8217;a pas apprécié le fait que son développeur ait la riche idée de distribuer avec son mod, les applications propriétaires qui lui sont chères. Citons par exemple : GMail, YouTube, Maps et Market. Nul besoin de dire que le système perd de son intérêt quand il est privé de ces outils estampillés Google&#8230;</p><p>Le spécialiste de la recherche a donc demandé l&#8217;interruption de toute distribution de ce mod, en attendant que le développeur trouve un moyen de livrer de l&#8217;Android sans aucune des G-Apps. C&#8217;est un baptême du feu pour ce système que Google a voulu ouvert. D&#8217;aucun disent que Google avait la possibilité de créer une alternative libre au jardin d&#8217;Eden d&#8217;Apple entouré de hauts remparts, à la place ce sera un autre jardin avec des murs un peu plus bas.</p><h4><a
name="MIDPetMSApoursauverJME"></a>MIDP 3 et MSA 2 pour sauver J2ME ?</h4><p><a
href="http://java.sun.com/products/midp/" title="Mobile Information Device Profile" >Mobile Information Device Profile</a> <em>(MIDP)</em>, associé à <a
href="http://java.sun.com/products/cldc/" title="Connected Limited Device Configuration" >Connected Limited Device Configuration</a> <em>(CLDC)</em> constitue l&#8217;API de base de J2ME, c&#8217;est cette architecture qui constitue le parc de 2 milliards de <em>devices</em> revendiqués par SUN.</p><p>La <a
href="http://jcp.org/en/jsr/detail?id=248" title="JSR-248 (Mobile Service Architecture)" >JSR-248 (Mobile Service Architecture)</a>, quant à elle, définit un ensemble d&#8217;APIs additionnelles pour les environnements MIDP J2ME apportant chacune un service particulier permettant souvent d&#8217;accéder à des fonctionnalités matérielles sous-jacentes (Bluetooth, GPS, Camera, &#8230;).</p><p>Ces deux piliers de J2ME sont en train d&#8217;évoluer avec la finalisation de <a
href="http://jcp.org/en/jsr/detail?id=271" title="MIDP 3" >MIDP 3</a> et <a
href="http://jcp.org/en/jsr/detail?id=249" title="MSA 2" >MSA 2</a>. Tandis que le premier apportera un rafraichissement de l&#8217;API de base de J2ME, le second poussera plus loin les possibilités d&#8217;intégration des applications mobiles J2ME.</p><p>Alors que les valeurs montantes du moment dans le monde du développement mobile sont clairement les plates-formes Android et iPhone, le rafraîchissement des APIs J2ME vieillissantes est le bienvenue et viendra épauler JavaFX Mobile dans son hypothétique ascension. On peut toutefois douter que cela suffira à inverser la tendance même si J2ME, fort de son parc colossal, n&#8217;est clairement pas menacé à court terme.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="DpartsdelaScrumAlliancebruitsd"></a>Départs de la Scrum Alliance : bruits de couloirs</h4><p>Vous le savez surement, la fin de l&#8217;été a marqué un tournant au sein de la Scrum Alliance.<br
/> Le 15 Septembre, dans un <a
href="http://www.scrumalliance.org/news_items/75" title="communiqu laconique" >communiqué laconique</a> <em>(et très américain &#8211; nous remercions &#8230; blablabla pour son excellent travail &#8230; blabla)</em>, il nous était annoncé le départ de deux éminents membres de la Scrum Alliance, Ken Schwaber <em>(son CEO)</em> et Jim Cundiff <em>(son Managing Director)</em>.<br
/> Après une enquête acharnée et au détour de quelques indiscrétions de sources <em>(que nous ne citerons pas)</em>, il s&#8217;avère que Ken a eu un grave accident de vélo et que Jim a été démissionné compte tenu de ses manquements dans la refonte du processus de certification dont il était en charge.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="Scuritchosesquelesagresseursda"></a>Sécurité : 13 choses que les agresseurs d&#8217;applications web ne vous diront pas</h4><p>Le Denim Group regroupe dans <a
href="http://denimgroup.typepad.com/denim_group/2009/09/13-things-a-web-application-attacker-wont-tell-you.html" title="13 Things a Web Applications Attacker Wont Tell You" >13 Things a Web Applications Attacker Won&#8217;t Tell You</a> les principales failles de sécurité de nos applications web :</p><ol><li>Transformer une requête GET en POST ne cachera pas les paramètres même s&#8217;ils n&#8217;apparaissent plus dans la barre d&#8217;adresse du navigateur <em>(vérifiez avec <a
href="http://www.charlesproxy.com/" title="Charles Proxy" >Charles Proxy</a> ou <a
href="http://www.fiddler2.com/fiddler2/" title="Fiddler" >Fiddler</a> si vous en doutez)</em>.</li><li>Utiliser un champ de formulaire <code>hidden</code> ne permet ni de cacher une information ni d&#8217;empêcher sa modification.</li><li>Idem pour les cookies <em>(voir #1)</em>.</li><li>Contrôler les données coté client avec du javascript ne m&#8217;empêchera pas de modifier leur valeur.</li><li>J&#8217;aime vous entendre dire &laquo;&nbsp;Cela n&#8217;arrivera jamais en production&nbsp;&raquo;.</li><li>Et j&#8217;adore quand vous dites &laquo;&nbsp;Un pirate ne ferait jamais ça&nbsp;&raquo;.</li><li>Je déteste les validations strictes cote serveur.</li><li>Cette page d&#8217;erreur avec le message détaillé me facilite tellement la vie.</li><li>La plupart des bannières &laquo;&nbsp;Sécurité Garantie !&nbsp;&raquo; ne me servent qu&#8217;a voir que vous n&#8217;avez pas compris les bases de la sécurité.</li><li>Ce scanneur d&#8217;application web que vous avez lancé, il n&#8217;a rien trouvé. Il n&#8217;a même pas effleuré les failles de votre application.</li><li>Ce scanneur réseau que vous avez lancé, il n&#8217;a même pas commencé a tester la sécurité de votre application.</li><li>Je connais AJAX (et toutes les nouvelles technologies a la mode) mieux que vous et mieux que vous ne pouvez imaginer.</li><li>Le plus astucieux vous vous croyiez, le mieux je me sens.</li></ol><p>Moralité, soyons humble et rigoureux, nous ne pourrons pas dire que nous ne savions pas, ces conseils sont répétés par la plupart des tutoriaux de frameworks web <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Lesroadmapsdesimplmentationsde"></a>Les roadmaps des implémentations de JPA 2.0</h4><p>Alors que la <a
href="http://jcp.org/en/jsr/detail?id=317" title="JSR-317 (Java Persistence API 2.0)" >JSR-317 (Java Persistence API 2.0)</a> vient de diffuser une <em>Proposed Final Draft 2</em> et que sa finalisation approche, nous souhaitions faire un tour d&#8217;horizon des principales implémentations en préparation. Comme c&#8217;est souvent le cas avec les JSRs, les développeurs n&#8217;attendent pas la finalisation des spécifications pour commencer à les implémenter. Ainsi, on se souvient que JPA 1.0, intégré à la <a
href="http://jcp.org/en/jsr/summary?id=220" title="JSR-220 (Enterprise JavaBeans 3.0)" >JSR-220 (Enterprise JavaBeans 3.0)</a> avait fait l&#8217;objet d&#8217;implémentations alpha chez JBoss dès la diffusion des <em>early drafts</em>, ce qui avait permis la stabilisation du conteneur peu après la finalisation de la JSR.</p><ul><li><strong>Hibernate</strong> : l&#8217;équipe de développement Hibernate <a
href="http://relation.to/12153.lace" title="a annonc" >a annoncé</a> fin aout la disponibilité d&#8217;une version 3.5 beta 1 qui implémentait la majorité des nouveautés de JPA 2.0. Aucune indication n&#8217;était alors donnée sur la date de finalisation, mais le bon avancement permet de supposer qu&#8217;elle arrivera rapidement. A noter toutefois que certaines optimisations importantes telles que la compilation des requêtes <em>criteria</em> n&#8217;arriveront que dans une version ultérieure.</li><li><strong>EclipseLink</strong> : la fondation Eclipse <a
href="http://www.eclipse.org/org/press-release/20080317_Eclipselink.php" title="avait annoncé" >avait annoncé</a> fièrement en début d&#8217;année 2008 qu&#8217;EclipseLink serait l&#8217;implémentation JPA 2.0 de référence. Une <a
href="http://wiki.eclipse.org/EclipseLink/RoadMap" title="roadmap" >roadmap</a> mise à jour en avril dernier fait état d&#8217;une version 2.0 d&#8217;EclipseLink implémentant JPA 2.0 pour l&#8217;automne 2009.</li><li><strong>Apache OpenJPA</strong> : le projet OpenJPA maintient <a
href="http://openjpa.apache.org/jpa-20-roadmap.html" title="une roadmap" >une roadmap</a> très rigoureuse tablant sur un démarrage de phase <em>release candidate</em> pour la fin de l&#8217;année. Il s&#8217;agira de la version 2.0 d&#8217;OpenJPA, elle est actuellement développée sur le <em>trunk</em> du projet.</li></ul><p>La première version de la spécification JPA a été un succès puisque de nombreux développeurs ont reconnu sa légitimité et l&#8217;ont adopté dans leurs projets plutôt que de se reposer sur l&#8217;API propre à leur <em>framework</em> de persistance. Toutefois, pour certaines fonctionnalités telles que les requêtes <em>criteria</em> ou des options de <em>mapping</em> évoluées, il était jusqu&#8217;alors nécessaire de contourner JPA. Dès lors, on imagine aisément que JPA 2.0, comblant les manques de son ainée, bénéficiera d&#8217;une large adoption. La disponibilité des moteurs JPA 2.0 qui seront utilisés par JBoss AS, Glassfish et WebSphere autour de la fin de l&#8217;année devrait par ailleurs accélérer l&#8217;omniprésence de cette nouvelle API.</p><h4><a
name="WebBeansestmortLonguevieaWeld"></a>Web Beans est mort ! Longue vie a Weld !</h4><p>Apres les bruits de couloir de la Scrum Alliance, nous continuons la rubrique people avec une fois encore Web Beans. Après le changement de nom de la <a
href="http://jcp.org/en/jsr/detail?id=299" title="JSR 299" >JSR 299</a> en Java Contexts and Dependency Injection, voici que la Reference Implementation se <a
href="http://in.relation.to/Bloggers/TheJSR299ReferenceImplementationGetsANewName" title="rebaptise Weld" >rebaptise Weld</a>.<br
/> Pendant ce temps, la <a
href="http://www.jcp.org/en/jsr/summary?id=330" title="JSR 330: Dependency Injection for Java" >JSR 330: Dependency Injection for Java</a> continue son chemin avec son implémentation partielle dans <a
href="http://blog.springsource.com/2009/09/29/spring-framework-3-0-rc1-released/" title="Spring Framework 3.0 RC1" >Spring Framework 3.0 RC1</a> et son intégration dans <a
href="http://code.google.com/p/google-guice/issues/detail?id=424" title="Google Guice" >Google Guice</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de presse</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>Google Guice : Injection avancée</title><link>http://blog.xebia.fr/2009/06/19/google-guice-injection-avancee/</link> <comments>http://blog.xebia.fr/2009/06/19/google-guice-injection-avancee/#comments</comments> <pubDate>Fri, 19 Jun 2009 07:41:47 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[annotation]]></category> <category><![CDATA[dépendances]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Guice]]></category> <category><![CDATA[IoC]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2268</guid> <description><![CDATA[Dans le cadre d&#8217;un article d&#8217;introduction à Guice, nous avions vu une injection de dépendance simple, répondant à un besoin relativement basique. Dans ce second article, nous allons découvrir des outils d&#8217;injection plus évolués, qui devraient nous permettre de réaliser par la suite notre premier exemple &#8216;réel&#8217; d&#8217;implémentation Guice. Injection &#8216;nommée&#8217; Reprenons l&#8217;exemple simple utilisé [...]]]></description> <content:encoded><![CDATA[<p>Dans le cadre d&#8217;<a
href="http://blog.xebia.fr/2009/04/15/google-guice-les-bases-de-linjection-de-dependances/" title="un article dintroduction  Guice" >un article d&#8217;introduction à Guice</a>, nous avions vu une injection de dépendance simple, répondant à un  besoin relativement basique.</p><p>Dans ce second article, nous allons découvrir des outils d&#8217;injection plus évolués, qui devraient nous permettre de réaliser par la suite notre premier exemple &#8216;réel&#8217; d&#8217;implémentation Guice.</p><h3><a
name="Injectionnomme"></a>Injection &#8216;nommée&#8217;</h3><p>Reprenons l&#8217;exemple simple utilisé dans l&#8217;article précédent pour en augmenter la difficulté.<br
/> Nous partons du postulat que notre DAO ne possède plus une seule, mais deux implémentations distinctes : <code>MyBasicDaoImpl</code>, précédemment utilisée, et <code>MyBasicDaoMock</code>, une nouvelle implémentation utilisant une base volatile.<br
/> Nous allons utiliser ces deux implémentations successivement dans notre service, et donc injecter deux implémentations différentes de la même interface dans notre service :</p><pre class="brush: java; title: ; notranslate">
@Override
public void displaySample() {
	try {
		recorder.append(&quot;Calling DAOn&quot;);
		String daoResult = basicDao.select();
		recorder.append(&quot;Result from DAO : &quot; + daoResult + &quot;n&quot;);
		recorder.append(&quot;Calling memory DAOn&quot;);
		daoResult = memoryDao.select();
		recorder.append(&quot;Result from memory DAO : &quot; + daoResult + &quot;n&quot;);
	} catch (IOException e) {
		e.printStackTrace();
	}
}
</pre><p>Premier point à noter, pour notre DAO existant rien ne change, Guice utilisera la première implémentation déclarée pour résoudre la dépendance.<br
/> Pour notre seconde dépendance, nous utiliserons l&#8217;injection nommée.<br
/> Première solution, créer une annotation, <code>@Memory</code>, en utilisant la <code>BindingAnnotation</code> de Guice :</p><pre class="brush: java; title: ; notranslate">
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.PARAMETER})
@BindingAnnotation
public @interface Memory {}
</pre><p>Il suffit alors d&#8217;annoter le constructeur du service :</p><pre class="brush: java; title: ; notranslate">
@Inject
public MyServiceImpl(MyBasicDao basicDao, @Memory MyBasicDao memoryDao) {
	super();
	this.basicDao = basicDao;
	this.memoryDao = memoryDao;
}
</pre><p>et d&#8217;annoter la déclaration de dépendance dans la classe <code>Module</code></p><pre class="brush: java; title: ; notranslate">
binder.bind(MyBasicDao.class).annotatedWith(Memory.class)
    .to(MyBasicDaoMemoryImpl.class);
</pre><p>Cette solution est relativement élégante, mais comporte le défaut de multiplier les classes d&#8217;annotation.<br
/> Le même résultat peut être atteint en utilisant une classe Guice permettant de nommer ses classes, mais sans créer d&#8217;annotation spécifique, à l&#8217;aide de l&#8217;annotation <code>@Named</code> et de la méthode <code>Names.named(String)</code><br
/> Le code ci-dessus est équivalent à :</p><pre class="brush: java; title: ; notranslate">
// Dans MyModule
binder.bind(MyBasicDao.class).annotatedWith(Names.named(&quot;Memory&quot;))
    .to(MyBasicDaoMemoryImpl.class);
// Dans MyServiceImpl
@Inject
public MyServiceImpl(MyBasicDao basicDao, @Named(&quot;Memory&quot;) MyBasicDao memoryDao) {
    ...
}
</pre><h3><a
name="Utiliserunedpendanceconditionn"></a>Utiliser une dépendance conditionnelle à l&#8217;aide de l&#8217;annotation @Provides</h3><p>Continuons à affiner notre injection de dépendance, en la conditionnant à des conditions runtime.<br
/> Imaginons que nous voulions injecter une implémentation de notre DAO en dépendant d&#8217;un paramètre runtime (nous nous baserons simplement sur un nombre aléatoire).<br
/> Pour cela, nous allons utiliser une méthode <code>@Provides</code> (à ne pas confondre avec les <code>Providers</code> de la version 1 de Guice).<br
/> Cette méthode doit être placée dans un module (où elle sera auto-découverte et retournera une instance de la classe injectée).</p><pre class="brush: java; title: ; notranslate">
// Dans MyModule
/**
 * Provides method
 */
@Provides
@Inject
private @Named(&quot;Random&quot;)
MyBasicDao provideRandomDao(MyBasicDao basicDao,
		@Named(&quot;Memory&quot;) MyBasicDao memoryDao) {
	if (RandomUtils.randomBoolean()) {
		return basicDao;
	}
	return memoryDao;
}
</pre><p>On peut noter que cette méthode peut elle-même être injectée (avec les instances de Dao précédemment utilisées).</p><h3><a
name="Conclusion"></a>Conclusion</h3><p>Nous avons maintenant une certaine souplesse dans l&#8217;injection, qui va nous permettre d&#8217;aborder dans un prochain billet un exemple plus concret.<br
/> À noter que durant la rédaction de ce billet, <a
href="http://code.google.com/p/google-guice/" title="la version 20 de Google Guice" >la version 2.0 de Google Guice</a> a été officiellement releasée, et que les prochains billets se baseront sur cette version stable.</p><p><a
href="http://code.google.com/p/xebia-france/source/browse/google-guice/hands-on/tags/1.2/" title="Tlchargez le projet Eclipse sur le Google Code de Xebia" >Téléchargez le projet Eclipse sur le Google Code de Xebia</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/19/google-guice-injection-avancee/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/</link> <comments>http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#comments</comments> <pubDate>Tue, 02 Jun 2009 10:52:21 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[Flash]]></category> <category><![CDATA[Flash Catalyst]]></category> <category><![CDATA[FlashBuilder]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[FlexUnit]]></category> <category><![CDATA[G1]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Google IO]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[Jetty]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SmartGWT]]></category> <category><![CDATA[Tellerium]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2094</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. RIA Sortie de SmartGWT 1.1 FlashBuilder 4 supportera FlexUnit 4 JavaFX 1.2 est arrivé Le coin de la technique G1 Payant ! Oracle sonne-t-il le glas des machines virtuelles Java gratuites ? Jetty dévoile sa roadmap Sortie de Tellerium 0.6.0 RC1 Evènements de notre [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#SortiedeSmartGWT">Sortie de SmartGWT 1.1</a></li><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#FlashBuildersupporteraFlexUnit">FlashBuilder 4 supportera FlexUnit 4</a></li><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#JavaFXestarriv">JavaFX 1.2 est arrivé</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#GPayantOraclesonnetilleglasdes">G1 Payant ! Oracle sonne-t-il le glas des machines virtuelles Java gratuites ?</a></li><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#Jettydvoilesaroadmap">Jetty dévoile sa roadmap</a></li><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#SortiedeTelleriumRC">Sortie de Tellerium 0.6.0 RC1</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#ConfrenceGoogleIO">Conférence Google  IO 2009</a></li><li><a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#AdobeprsenteFlashCatalystParis">Adobe présente Flash Catalyst à Paris</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="SortiedeSmartGWT"></a>Sortie de SmartGWT 1.1</h4><p>Il aura fallu attendre près de 6 mois pour pouvoir apprécier la nouvelle version de <a
href="http://code.google.com/p/smartgwt/" title="SmartGWT" >SmartGWT</a>, le wrapper GWT de <a
href="http://www.smartclient.com/" title="SmartClient" >SmartClient</a> par <a
href="http://www.jroller.com/sjivan/" title="Sanjiv Jivan" >Sanjiv Jivan</a> (<a
href="http://blog.xebia.fr/2008/12/01/revue-de-presse-xebia-85/#SortiedeSmartGWT" title="sortie de la version 1.0 lors d'une précédente revue de presse" >sortie de la version 1.0 lors d&#8217;une précédente revue de presse</a>), information relayée par l&#8217;<a
href="http://www.jroller.com/sjivan/entry/smartgwt_out_of_beta_v1" title="auteur" >auteur</a> et par <a
href="http://www.theserverside.com/news/thread.tss?thread_id=54747" title="The Server Side" >The Server Side</a>.</p><p>Cette version 1.1 apporte de nombreuses nouveautés (liste exhaustive sur la <a
href="http://www.smartclient.com/smartgwt/release_notes.html" title="release note" >release note</a>) :</p><ul><li>Correction de <a
href="http://code.google.com/p/smartgwt/issues/list?can=1&#038;q=label:SmartGWT-1.0b3" title="plus de 50 bugs" >plus de 50 bugs</a>.</li><li>Amélioration générale des performances des composants et des skins.</li><li>Champs de <a
href=" http://www.smartclient.com/smartgwt/showcase/#grid_formula_sumamry_builder_new_category" title="formules et rsums" >formules et résumés</a> (wizards, bindable avec des DataBoundComponent&#8230;).</li><li>Support du <em>GWT-RPC DataSource</em> avec les <em>DataBoundComponent</em> (tableaux, arbres, menus&#8230;).</li><li>Nombreuses documentations <em>Javadoc</em> (le gros défaut de <a
href="http://code.google.com/p/gwt-ext/" title="GWTExt" >GWT-Ext</a>).</li><li>API de récupération d&#8217;état de la vue depuis le serveur (pour de nombreux composants).</li><li>Nouveaux exemples dans le <a
href="http://www.smartclient.com/smartgwt/showcase" title="Showcase" >Showcase</a> au niveau de <em>New Samples</em>.</li><li>Un projet <em>Helloworld</em> pour SmartGWT avec GWT 1.6 &#8230;</li></ul><p>Une librairie open source <em>gratuite dans son intégralité</em> (<a
href="http://www.smartclient.com/product/index.jsp" title="licence LGPL" >licence LGPL</a>), <a
href="http://www.smartclient.com/product/download.jsp" title="ça ne se refuse pas" >ça ne se refuse pas</a> ou au moins <a
href="http://www.smartclient.com/smartgwt/showcase/#grid_grouping_custom_new_category" title="a se teste" >ça se teste</a> !</p><h4><a
name="FlashBuildersupporteraFlexUnit"></a>FlashBuilder 4 supportera FlexUnit 4</h4><p>Bonne nouvelle pour les développeurs Flex, nous apprenons par <a
href="http://www.insideria.com/2009/05/flashbuilder4-will-support-fle.html" title="InsideRIA" >InsideRIA</a> que FlexUnit 4 pourra être utilisé sur -FlexBuilder 4- <a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#FlexBuilderdevientFlashBuilder" title="FlashBuilder 4" >FlashBuilder 4</a>.<br
/> Dans cet article, l&#8217;auteur nous présente les nouvelles fonctionnalités que propose FlexUnit 4 telles que :</p><ul><li>Création simplifiée de suites de tests.</li><li>Création et intégration facile de test runner à d&#8217;autres frameworks.</li><li>Utilisation de l&#8217;intégration continue grâce à une automatisation de l&#8217;intégration.</li><li>Meilleure gestion des tests asynchrones.</li><li>Meilleure gestion des exceptions.</li><li>Comme les annotations en Junit 4, les tests peuvent être gérés par les <a
href="http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_3.html" title="Metadata" >Metadata</a>.</li></ul><p>La prochaine étape maintenant est d&#8217;intégrer le projet à FlashBuilder 4. Il est d&#8217;ailleurs possible de <a
href="http://bugs.adobe.com/jira/browse/FB-18873" title="voter pour ce projet" >voter pour ce projet</a>. Si cela vous intéresse n&#8217;hésitez pas à voter vous aussi.</p><h4><a
name="JavaFXestarriv"></a>JavaFX 1.2 est arrivé</h4><p>En accord avec le planning annoncé dès décembre dernier lors de <a
href="http://devoxx.com/" title="Devoxx" >Devoxx</a>, une nouvelle version de JavaFX vient d&#8217;être <a
href="http://javafx.com/" title="mise à disposition" >mise à disposition</a>. Les apports sont nombreux et comblent certains manques de la version 1.1. Le site de JavaFX propose <a
href="http://javafx.com/docs/articles/javafx1-2.jsp" title="un tour d'horizon" >un tour d&#8217;horizon</a> très complet des nouveautés et Stephen Chin en présente <a
href="http://steveonjava.com/2009/05/31/javafx-1-2-top-10/" title="un rsum accompagn dun guide de migration" >un résumé accompagné d&#8217;un guide de migration</a>. On retiendra :</p><ul><li>Ajout de <em>widgets</em> propres à JavaFX, <em>skinnables</em> et disponibles sur toute les plate-formes. Il n&#8217;est donc plus nécessaire de faire appel à des composants Swing (qui étaient inaccessibles sur mobile). L&#8217;ensemble des composants simples sont disponibles (bouton, checkbox, &#8230;), par contre la <code>ListView</code> est le seul composant de haut niveau à être fourni, pas de <em>table</em>, ni de <em>tree</em>.</li><li>Ajout de composants dédiés à la création de graphiques de type <em>Area, Bar, Bubble, Line, Pie, Scatter</em> et <em>X/Y</em>.</li><li>Ajout de <a
href="http://java.sun.com/developer/technicalArticles/javafx/v1_2_newlayouts/" title="nouveaux layouts " >nouveaux <em>layouts</em> </a> en supplément des <code>VBox</code> et <code>HBox</code> déjà disponibles.</li><li>Support de Linux et Solaris.</li></ul><p>La compatibilité des binaires générés par JavaFX n&#8217;est pas assurée entre cette nouvelle version 1.2 et ses prédécesseurs. Il sera donc nécessaire de recompiler les applications pour assurer la migration.</p><p>Le nouveau JavaFX sera donc sorti dans les temps pour être le sujet de nombreuses présentations et annonces lors de <a
href="http://java.sun.com/javaone/" title="JavaOne" >JavaOne</a> qui débute aujourd&#8217;hui même à San Fransisco. Comme <a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#JavaFXinformationsetcontrovers" title="nous vous en parlions" >nous vous en parlions</a> il y a quelques semaines, le support des TVs <em>pourrait</em> y faire l&#8217;objet d&#8217;une démonstration.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="GPayantOraclesonnetilleglasdes"></a>G1 Payant ! Oracle sonne-t-il le glas des machines virtuelles Java gratuites ?</h4><p>Oracle va-t-il rendre Java payant ? Cette question que tous posaient après l&#8217;annonce du rachat de Sun revient aujourd&#8217;hui au premier plan avec une phrase sibylline de l&#8217;annonce de la <a
href="http://java.sun.com/javase/6/webnotes/6u14.html" title="version 6 update 14 de la JVM de Sun" >version 6 update 14 de la JVM de Sun</a> :<br
/> <quote><br
/> <em>&laquo;&nbsp;Although G1 is available for use in this release, note that <strong>production use of G1 is only permitted where a Java support contract has been purchased</strong>&#8230;&nbsp;&raquo;</em><br
/> </quote><br
/> En théorie, la fonctionnalité concernée est encore expérimentale et le rachat de Sun par Oracle n&#8217;est pas clos : Oracle n&#8217;a pas à s&#8217;immiscer dans la gestion au quotidien de Sun  ; il n&#8217;y aurait donc pas de raison que Sun change de stratégie sur la JVM.<br
/> Cependant, on n&#8217;a jamais vu de telles limitations contractuelles sur la JVM de Sun. Si les JVM mobile et temps réel ont toujours été payantes chez Sun comme IBM et BEA/Oracle, les JVMs serveur et poste de travail étaient traditionnellement gratuites &#8230;  à un détails près : la JVM JRockit de BEA était devenue payante dès le rachat par Oracle ; on avait alors invoqué des considérations contractuelles qui empêchaient Oracle de distribuer gratuitement une JVM.</p><p>C&#8217;est aujourd&#8217;hui la très répandue JVM de Sun qui est menacée ; une fois de plus à la suite d&#8217;un rachat par Oracle. Faut-il craindre la fin des JVM gratuites ? Pour le poste de travail, cela parait très improbable faute de modèle économique crédible mais pour les serveurs, un revirement d&#8217;Oracle semble possible et dans la lignée de la nouvelle politique de JRockit. Il resterait alors disponibles gratuitement les JVM <a
href="http://www.ibm.com/developerworks/java/jdk/index.html" title="IBM J9" >IBM J9</a> et <a
href="http://openjdk.java.net/" title="Open JDK" >Open JDK</a>, le projet Open Source dont la gouvernance par Sun a été sujette à polémique ces derniers mois. Nous noterons au passage que G1 sera inclus dans la <a
href="http://openjdk.java.net/projects/jdk7/features/#f230" title="version 7 dOpen JDK" >version 7 d&#8217;Open JDK</a>.</p><p>Pour revenir sur les nouveautés de la JVM 6 update 14, nous retiendrons : la compression des pointeurs (<code>-XX:+UseCompressedOops</code>) pour les JVM 64 bits (cf. <a
href="http://blog.xebia.fr/2008/05/26/revue-de-presse-xebia-58/#Javabitspassisouventunebonneid" title="Java 64 bits, pas si souvent une bonne idée" >Java 64 bits, pas si souvent une bonne idée</a>), l&#8217;optimisation des accès aux variables utilisées sur un seul thread ( <code>-XX:+DoEscapeAnalysis</code> ) et ce <a
href="http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/" title="Garbage First (G1) Garbage Collector" >Garbage First (G1) Garbage Collector</a> optimisé pour la gestion de grands volumes de mémoire mais réservé en production aux souscripteurs d&#8217;un contrat de support.</p><h4><a
name="Jettydvoilesaroadmap"></a>Jetty dévoile sa roadmap</h4><p>Comme tous les conteneurs Servlet / JSP du marché, <a
href="http://www.eclipse.org/jetty/" title="Jetty" >Jetty</a> se prépare à l&#8217;arrivée de la <a
href="http://www.jcp.org/en/jsr/detail?id=315" title="JSR-315 (Servlet 3.0)" >JSR-315 (Servlet 3.0)</a> prévue pour cet été. Par ailleurs, il opère également divers changements dûs à sa récente <a
href="http://www.eclipse.org/proposals/jetty/" title="intgration  la fondation Eclipse" >intégration à la fondation Eclipse</a>.</p><p>Greg Wilkins a présenté <a
href="http://blogs.webtide.com/gregw/entry/jetty_6_jetty_7_and" title="une roadmap dtaille" >une roadmap détaillée</a> des fonctionnalités qui seront présentes dans les futures versions de Jetty.</p><p><strong>Jetty 6</strong> reste la version stable en attendant l&#8217;arrivée de son successeur.</p><p><strong>Jetty 7</strong> est la branche de développement que Greg Wilkins conseille d&#8217;adopter pour les projets débutant actuellement. Elle marquera la migration vers le package <code>org.eclipse.jetty</code>, et apportera une remodularisation accompagnée d&#8217;un packaging en bundle OSGi en supplément des artifacts Maven, et une préparation à Servlet 3.0 dont il proposera une <em>preview</em>.</p><p><strong>Jetty 8</strong> ne différera guère de son prédécesseur, il s&#8217;agira avant tout d&#8217;un <em>rebuild</em> en Java 1.6 exclusivement, accompagné d&#8217;une conformance stricte à Servlet 3.0 dont la spécification sera alors finalisée.</p><p>Aucune date précise n&#8217;est indiquée par l&#8217;auteur, mais il semble que la finalisation de la spécification Servlet 3.0 constituera le principal régulateur du calendrier de Jetty.</p><h4><a
name="SortiedeTelleriumRC"></a>Sortie de Tellerium 0.6.0 RC1</h4><p><a
href="http://code.google.com/p/aost/" title="Tellerium" >Tellerium</a> est un framework de tests unitaires d&#8217;interface utilisateur. Le projet s&#8217;appuie sur <a
href="http://seleniumhq.org/" title="Selenium" >Selenium</a>, est compatible avec JUnit et TestNG et permet d&#8217;écrire les tests en Java, Groovy ou par un DSL.</p><p>Les nouvelles fonctionnalités entre la version 0.5.0 et cette 0.6.0 sont <a
href="http://code.google.com/p/aost/wiki/WhatsNewInTellurium_0_6_0#New_Features" title="plutt nombreuses" >plutôt nombreuses</a>, on notera ainsi :</p><ul><li>Ajout du sélecteur <a
href="http://jquery.com/" title="jQuery" >jQuery</a> (et du jQuery Cache).</li><li>Support de Selenium 1.0 Beta 2 et Groovy 1.6.</li><li>Core (<em>Include</em>, <em>setCustomConfig</em>, <em>Dump method</em> &#8230;).</li><li>Selenium Grid (tests en parallèle).</li><li>Archetype Maven (JUnit et TestNG) &#8230;</li></ul><p>Plusieurs nouvelles fonctionnalités donc mais surtout de nombreuses optimisations de performances, des tests plus rapides et plus faciles à écrire, le tout utilisant les versions les plus récentes des projets dont il dépend. A noter aussi le plugin pour FireFox <a
href="http://code.google.com/p/aost/wiki/announcements#Tellurium_UI_Model_Plugin_(TrUMP)_0.1.0_is_released" title="TrUMP" >TrUMP</a> (Tellerium UI Model Plugin) permettant d&#8217;écrire plus rapidement les tests (enregistrement des clicks, validation et customisation, export Groovy&#8230;).</p><p>Le téléchargement se passe <a
href="http://code.google.com/p/aost/downloads/list" title="par ici" >par ici</a>, et pour les <em>pom</em> ça se passe <a
href="http://code.google.com/p/aost/wiki/announcements#Tellurium_0.6.0_RC1_is_out" title="en bas de page par l" >en bas de page par là</a>.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="ConfrenceGoogleIO"></a>Conférence Google  IO 2009</h4><p><a
href="http://code.google.com/events/io/" title="Google IO 2009" >Google I/O 2009</a> s&#8217;est tenu la semaine dernière à San Francisco. Il s&#8217;agit d&#8217;une des conférences destinées aux développeurs utilisateurs des applications et des API de Google. L&#8217;actualité autour de cette conférence étant relativement importante, nous avons décidé de traiter celle-ci dans un article séparé.</p><p>En voici les grandes lignes de ce qui s&#8217;est vu à Google I/O :</p><ul><li>Le futur du Web, avec les premières <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#HTMLlepremierwhaoueffect" title="dmonstrations moustillantes Html 5" >démonstrations émoustillantes Html 5</a>.</li><li><a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#GoogleWavelagrosseannoncedelac" title="Google Wave" >Google Wave</a>, le prochain outil de communication et collaboration made in Google.</li><li>La <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#GWTaucurdelastratgieGoogle" title="rconciliation de Google avec GWT" >réconciliation de Google avec GWT</a>, sortie de <strong>Gwt Query</strong>.</li><li>Le futur d&#8217;Android, avec l&#8217;annonce de la branche <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#AndroidDonutrecherchesetfiltre" title="Android 20  Donut" >Android 2.0 : Donut</a>.</li><li><a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#JavasurGoogleAppEngineouvertto" title="Java et Google App Engine" >Java et Google App Engine</a> en GA.</li><li><a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#GoogleWebElementswidgetspourvo" title="Google Web Elements" >Google Web Elements</a>, comment intégrer les services Google dans vos pages web.</li><li>Les macros dans Google Document, avec <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#GoogleAppsScriptscriptezvosGoo" title="Google Apps Script" >Google Apps Script</a>.</li><li>Arrivée des <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#Chromearrivedesextensions" title="extensions dans Chrome" >extensions dans Chrome</a>.</li></ul><p>Pour en savoir plus, vous pouvez lire <a
href="http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/" title="notre billet ddi" >notre billet dédié</a> au sujet.</p><h4><a
name="AdobeprsenteFlashCatalystParis"></a>Adobe présente Flash Catalyst à Paris</h4><p>Mercredi 3 Juin 2009 à 16h, Adobe propose une présentation de Flash Catalyst. Cet outil destiné aux designers permet de concevoir des composants graphiques riches sans programmation. Ces créations peuvent ensuite être fournies à un développeur Flex pour que ce dernier se charge de la programmation intelligente.<br
/> Cette présentation va se diviser en deux sessions sous formes de conférences et d&#8217;ateliers :</p><ul><li>Une session développeur.</li><li>Une session designer.</li></ul><p>Elle se clôtura par un cocktail à 19h30.<br
/> Pour plus d&#8217;informations ou pour vous inscrire ça se passe <a
href="http://events.adobe.co.uk/cgi-bin/event.cgi?country=fr&#038;eventid=8236" title="ici" >ici</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/</link> <comments>http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#comments</comments> <pubDate>Mon, 11 May 2009 16:48:58 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[@Inject]]></category> <category><![CDATA[annotation]]></category> <category><![CDATA[Datagrid]]></category> <category><![CDATA[ESB]]></category> <category><![CDATA[Fuji]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Guice]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[JSon]]></category> <category><![CDATA[JSR-299]]></category> <category><![CDATA[OpenESB]]></category> <category><![CDATA[Paris JUG]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[SpringSource]]></category> <category><![CDATA[Tapestry]]></category> <category><![CDATA[Wicket]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1985</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. SOA Fuji, le futur d&#8217;OpenESB Le coin de la technique Concevoir des APIs efficaces JavaFX : informations et controverses Sortie de Wicket 1.3.6 @Inject standardisation de l’injection de dépendances Sortie de Tapestry 5.1 Trucs et astuces Json &#8211; Restfull Evènements de notre communauté en [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#FujilefuturdOpenESB">Fuji, le futur d&#8217;OpenESB</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#ConcevoirdesAPIsefficaces">Concevoir des APIs efficaces</a></li><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#JavaFXinformationsetcontrovers">JavaFX : informations et controverses</a></li><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#SortiedeWicket">Sortie de Wicket 1.3.6</a></li><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#Inject">@Inject standardisation de l’injection de dépendances</a></li><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#SortiedeTapestry">Sortie de Tapestry 5.1</a></li><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#TrucsetastucesJsonRestfull">Trucs et astuces Json &#8211; Restfull</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/#SoireDatagridauParisJug">Soirée Datagrid au Paris Jug</a></li></ul><h3><a
name="SOA"></a>SOA</h3><h4><a
name="FujilefuturdOpenESB"></a>Fuji, le futur d&#8217;OpenESB</h4><p>La prochaine version d&#8217;OpenESB, qui sera estampillée &#8216;v3&#8242;, est en cours de développement sous le nom de code &#8216;Project Fuji&#8217;. Ce projet a été récemment mis en avant par Andi Egloff, dans <a
href="http://www.java-tv.com/2009/05/07/fuji-the-next-generation-of-openesb/" title="un webcast" >un webcast</a> qui fait le tour des nombreuses nouveautés. Les principales d&#8217;entre elles sont :</p><ul><li><a
href="http://wiki.open-esb.java.net/Wiki.jsp?page=IntegrationFlowLanguageOverview" title="Integration Flow Language (IFL)" >Integration Flow Language (IFL)</a> : il s&#8217;agit d&#8217;un <a
href="http://martinfowler.com/bliki/DomainSpecificLanguage.html" title="DSL externe" >DSL externe</a> permettant de définir des flux d&#8217;intégrations. Le rôle de ce langage est donc le même que le DSL interne offert par Apache Camel.</li><li><a
href="http://wiki.open-esb.java.net/Wiki.jsp?page=FujiDJBI" title="Distributed JBI" >Distributed JBI</a> : La spécification JBI (<a
href="http://www.jcp.org/en/jsr/detail?id=208" title="JSR208" >JSR-208</a>) ne couvre pas la problématique de distribution des composants JBI sur plusieurs noeuds. Fuji apporte une extension propriétaire pour permettre cette distribution.</li><li><a
href="http://wiki.open-esb.java.net/Wiki.jsp?page=FujiRunningOJCComponentsOSGi" title="Utilisation de composants OpenJBI" >Utilisation de composants OpenJBI</a> : ces composants seront utilisables directement dans OpenESB v3. Le projet prévoit de mettre les composants dont la compatibilité aura été validée dans le <em>repository</em> Maven du projet.</li><li><a
href="http://wiki.open-esb.java.net/Wiki.jsp?page=FujiEIP" title="Enterprise Integration Patterns" >Enterprise Integration Patterns</a> : un certain nombre d&#8217;EIP sera supporté en standard et configurable via le langage IFL.</li></ul><p>La version finale d&#8217;OpenESB v3 est prévue pour le second semestre 2009, l&#8217;équipe du projet annonce une probable <em>preview</em> pour JavaOne en juin.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="ConcevoirdesAPIsefficaces"></a>Concevoir des APIs efficaces</h4><p>John De Goes vient de publier une série de deux articles (<a
href="http://jdegoes.squarespace.com/journal/2009/5/2/good-api-design-part-1.html" title="première partie" >première partie</a> et <a
href="http://jdegoes.squarespace.com/journal/2009/5/6/good-api-design-part-2.html" title="deuxime partie" >deuxième partie</a>) portant sur les bonnes pratiques de conception d&#8217;APIs. Il s&#8217;appuie sur un exemple d&#8217;API de configuration pour illustrer son propos. Les points qu&#8217;il met particulièrement en avant sont :</p><ul><li>Il est important de sélectionner le niveau d&#8217;abstraction approprié et d&#8217;assurer l&#8217;uniformité de celui-ci sur l&#8217;ensemble de l&#8217;API, ainsi que de définir et respecter une responsabilité pour chaque classe. Ceci concerne la granularité des méthodes, le type d&#8217;objets manipulés en entrée et en sortie, ainsi que la présence et le type d&#8217;exception éventuellement renvoyée.</li><li>N&#8217;offrir qu&#8217;une seule possibilité pour chaque besoin, afin d&#8217;éviter la confusion chez l&#8217;utilisateur de cette API.</li><li>S&#8217;appuyer sur les possibilités offertes par le langage pour empêcher certaines mauvaises utilisations d&#8217;une API.</li><li>L&#8217;API doit être la plus intuitive possible afin de minimiser autant que possible le besoin pour l&#8217;utilisateur d&#8217;avoir à se plonger dans une documentation.</li></ul><p>Certaines de ces idées sont déjà partagées par de nombreux développeurs, mais comme c&#8217;est souvent le cas dans l&#8217;énonciation de bonnes pratiques ou de <em>patterns</em>, tout l&#8217;intérêt réside ici dans la formalisation apportée par l&#8217;auteur.</p><p>Les lecteurs intéressés par cette problématique pourront se tourner vers le livre de Jaroslav Tulach, <a
href="http://apress.com/book/view/1430209739" title="Practical API Design" >Practical API Design</a>, qui apporte l&#8217;intéressant retour d&#8217;expérience d&#8217;un architecte de NetBeans, ou encore <a
href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf" title="How to Design a Good API and Why it Matters" >How to Design a Good API and Why it Matters</a> par Joshua Bloch (auteur de <a
href="http://java.sun.com/docs/books/effective/" title="Effective Java" >Effective Java</a>).</p><h4><a
name="JavaFXinformationsetcontrovers"></a>JavaFX : informations et controverses</h4><p>Depuis plusieurs mois, nous vous rapportons les différentes <a
href="http://blog.xebia.fr/2009/02/16/revue-de-presse-xebia-96/#JavaFxsurmobile" title="informations" >informations</a> et <a
href="http://blog.xebia.fr/2009/03/09/revue-de-presse-xebia-99/#LepositionnementdeJavaFXtoujou" title="controverses" >controverses</a> à propos de JavaFX. Cette technologie RIA, développée par Sun, et introduite en décembre 2008 fait beaucoup parler d&#8217;elle car personne ne sait dire aujourd&#8217;hui ce qu&#8217;il adviendra de JavaFX dans les mois et années à venir.</p><p>Les propos particulièrement négatifs dont JavaFX a été victime à ses débuts se font moins nombreux, non pas parce que cette technologie a convaincu, mais parce qu&#8217;elle n&#8217;est plus au centre des débats. En fait, ceci est bénéfique puisque cela permet d&#8217;observer plus sereinement les différents exemples postés régulièrement par la communauté JavaFX naissante. Il ressort de ce tour d&#8217;horizon que les capacités actuelles de JavaFX ne prêtent pas à critique : les fonctionnalités de graphisme et d&#8217;animations qui sont offertes <a
href="http://java.dzone.com/articles/javafx-im-starting-believe" title="semblent satisfaire" >semblent satisfaire</a> de nombreux développeurs. Le problème porte principalement sur les manques et les promesses non tenues à ce jour :</p><ul><li>la portabilité de JavaFX sur plusieurs environnements (_desktop_, web, mobile, et TV, le fameux &#8216;<em>All the screens of your life</em>&#8216;) n&#8217;est pas assuré puisque le déploiement est impossible sur mobile, faute de <em>device</em> compatible. Le fonctionnement sur téléviseur est lui toujours prévu dans une version ultérieure.</li><li>les composants graphiques de haut niveau sont absents. Il s&#8217;agit pourtant d&#8217;un élément indispensable pour le développement d&#8217;applications RIA.</li></ul><p>Joshua Marinacci, un des meneurs de JavaFX chez Sun, a été interviewé par Scott Hanselman <a
href="http://www.hanselminutes.com/default.aspx?showID=178" title="dans un podcast" >dans un podcast</a>. Il annonce que la démonstration de JavaFX sur TV <em>pourrait</em> être faite lors de JavaOne 2009, en juin. Il reconnaît par ailleurs le marketing excessif entourant cette technologie.</p><p>Outre ces réflexions d&#8217;ordre technique, le rachat de Sun par Oracle constitue une autre source de débats. Personne ne sait quelle décision Oracle prendra quant à JavaFX : soutenir ce projet qui nécessite encore un investissement lourd pour prétendre réellement concurrencer les autres acteurs RIA ou abandonner ce marché. Les différentes opinions sur ce sujet sont présentées et argumentées dans <a
href="http://lescastcodeurs.com/2009/05/les-cast-codeurs-podcast-episode-3/" title="le dernier podcast" >le dernier podcast</a> des Cast Codeurs.</p><h4><a
name="SortiedeWicket"></a>Sortie de Wicket 1.3.6</h4><p><a
href="http://wicket.apache.org/" title="Wicket" >Wicket</a>, le framework orienté composant de la <em>Fondation Apache</em>, sort en version <a
href="http://wicket.apache.org/news.html#News-wicket1.3.6" title="1.3.6" >1.3.6</a> (1.4 toujours en <a
href="http://www.apache.org/dyn/closer.cgi/wicket/1.4-rc2" title="release candidate 2" >release candidate 2</a>).</p><p>Malgré les 7 mois d&#8217;écart avec la version précédente, il ne faut pas s&#8217;attendre à une révolution pour cette nouvelle mouture. Il s&#8217;agit en effet d&#8217;une version de stabilisation et d&#8217;amélioration. On notera donc de nombreux <a
href="http://wicket.apache.org/news.html#News-Bug" title="correctifs de bugs" >correctifs de bugs</a> et <a
href="http://wicket.apache.org/news.html#News-Improvement" title="plusieurs amliorations" >plusieurs améliorations</a>.</p><p>Cette version est téléchargeable sur le <a
href="http://www.apache.org/dyn/closer.cgi/wicket/1.3.6" title="site dApache" >site d&#8217;Apache</a> ou en changeant votre version de <em>pom.xml</em> en 1.3.6.</p><p>A noter, toujours autour de Wicket, le retour critique de <a
href="http://www.tomsquest.com" title="Tom's Quest" >Tom&#8217;s Quest</a> sur <a
href="http://www.tomsquest.com/blog/les-limites-de-wicket/" title="Wicket et ses limites" >Wicket et ses limites</a> après la présentation, chez Zenika, de Martin Dashorst, un des committers principaux de Wicket et coauteur du livre <a
href="http://wicketinaction.com/" title="Wicket In Action" >Wicket In Action</a>.</p><h4><a
name="Inject"></a>@Inject standardisation de l’injection de dépendances</h4><p>Pas mal de bruit la semaine dernière dans la blogosphère Java avec l&#8217;annonce par Google et <a
href="http://www.springsource.com/" title="SpringSource" >SpringSource</a> d&#8217;une nouvelle proposition de JSR dédiée à l&#8217;injection de dépendances : <a
href="http://code.google.com/p/atinject/" title="@Inject ("Annotations for Dependency Injection")" >@Inject (&laquo;&nbsp;Annotations for Dependency Injection&nbsp;&raquo;)</a>.<br
/> Comme le <a
href="http://google-code-updates.blogspot.com/2009/05/javaxinjectinject.html" title="souligne 'Crazy' Bob Lee" >souligne &#8216;Crazy&#8217; Bob Lee</a>, l&#8217;auteur principal de <a
href="http://code.google.com/p/google-guice/" title="Google Guice" >Google Guice</a>, la sortie de Spring 1.0, il y a déjà 5 ans, a apporté l&#8217;injection de dépendances aux masses, via un fichier de configuration propriétaire. Il y a 3 ans, Google Guice a proposé la même chose via des annotations (et SpringSource propose la même chose depuis Spring 2.5).<br
/> Si le succès de Google Guice est assez limité face au raz de marée Spring, le constat est là : il manque un standard. Comme les deux librairies ne sont pas compatibles, si vous exposez à un autre projet/équipe une librairie contenant des dépendances injectées par Google Guice, et que l&#8217;autre équipe utilise Spring, elle devra redéfinir tous les beans et leurs dépendances dans un fichier de configuration Spring (ou des annotations Spring).<br
/> @Inject propose donc de standardiser les annotations, afin de rendre portables sur différents frameworks (<a
href="http://blog.xebia.fr/2009/04/15/google-guice-les-bases-de-linjection-de-dependances/" title="Guice" >Guice</a>, Spring, <a
href="http://blog.xebia.fr/2009/04/24/commencer-linjection-de-dependances-avec-tapestry-ioc" title="Tapestry IOC" >Tapestry IOC</a>, etc.) des classes injectables.</p><p><a
href="http://blog.xebia.fr/2009/05/11/inject-standardisation-de-linjection-de-dependances" title="@Inject standardisation de l’injection de dépendances" >Lire notre article à ce sujet : @Inject standardisation de l’injection de dépendances</a>.</p><h4><a
name="SortiedeTapestry"></a>Sortie de Tapestry 5.1</h4><p>Tapestry, dont on parlait récemment dans l&#8217;article <a
href="http://blog.xebia.fr/2009/04/24/commencer-linjection-de-dependances-avec-tapestry-ioc/" title="linjection de dpendances avec Tapestry IoC" >l&#8217;injection de dépendances avec Tapestry IoC</a>, passe en version 5.1 en respectant à la lettre son nouveau planning d&#8217;une version tout les 4 à 6 mois.<br
/> Outre les améliorations de performance et les nombreux bugs corrigés, la mise à jour embarque des nouveautés sur le support JavaScript, à la traîne par rapport au prédécesseur Tapestry 4.<br
/> Le rafraîchissement de plusieurs zones d&#8217;une page en une seule requête Ajax est maintenant supporté. Tapestry embarque maintenant la console JavaScript <a
href="http://www.gscottolson.com/blackbirdjs/" title="Blackbird" >Blackbird</a>.<br
/> Du côté des améliorations sur les templates, le chargement et le rendu des pages ont été optimisés, ce qui rend T5 plus rapide que jamais.<br
/> Vous pourrez aussi apprécier l&#8217;amélioration substantielle de l&#8217;archetype quickstart qui offre désormais une jolie interface, avec un design css intégré.<br
/> L&#8217;intégration de Spring est maintenant à double sens : on peut injecter des services Tapestry dans un Bean Spring.<br
/> Pour la prochaine version, qui sortira sans doute à la rentrée 2009, l&#8217;accent sera mis sur l&#8217;intégration de Spring Web Flow, et la possibilité d&#8217;utiliser une application Tapestry en tant que Portlet.</p><ul><li><a
href="http://tapestry.apache.org/tapestry5.1/release-notes.html" title="Release note" >Release note</a></li><li><a
href="http://tapestry.apache.org/tapestry5.1/" title="Site Maven du projet" >Site Maven du projet</a></li></ul><h4><a
name="TrucsetastucesJsonRestfull"></a>Trucs et astuces Json &#8211; Restfull</h4><p><a
href="http://www.linkedin.com/in/edwink" title="Edwin Khodabakchian" >Edwin Khodabakchian</a>, fondateur de Collaxa (aujourd&#8217;hui au coeur de la stratégie SOA d&#8217;Oracle), nous donne quelques <a
href="http://blog.feedly.com/2009/05/06/best-practices-for-building-json-rest-web-services/" title="bonnes pratiques pour crire des services web REST en utilisant Json" >bonnes pratiques pour écrire des services web REST en utilisant Json</a> (un couple qui a le vent en poupe). Actuellement lancé dans l&#8217;écriture de Feedly, une extension Firefox qui agrège des tweets et des entrés Google Reader, Edwin fera régulièrement profiter ses lecteurs de son expérience. Sans entrer dans les détails de ces bonnes pratiques, nous retiendrons l&#8217;astucieux découpage en 7 phases d&#8217;implémentation :</p><ul><li>Definir un service ou une ressource <strong>simple</strong> : définir le modèle Json et les 4 opérations REST et le servlet qui les fournit.</li><li>Ecrire un client : utiliser le service avec un javascript simple. Cette possibilité est offerte par de nombreux frameworks, dont JQuery.</li><li>Ajouter une étape de validation : modifier le service pour valider les ressources Json et utiliser les codes retour HTTP.</li><li>Complexifier les ressources : modifier la hiérarchie d&#8217;Url pour servir des ressources plus riches. Tester la pérennité des ressources simples (phase 2).</li><li>Ajouter un cache : améliorer les performances et la scalabilité de votre système.</li><li>Implémenter la sécurité : utiliser une authentification web.</li><li>Publier des événements business : pour découpler les processus REST des processus back-end. Les ressources REST sont traitées, un évènement business est lancé, qui déclenche le ou les traitements back-end.</li><li>Gérer un cycle de vie pour les ressources : coupler un état de la ressource avec la phase de validation et la phase de publication des évènements.</li></ul><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SoireDatagridauParisJug"></a>Soirée Datagrid au Paris Jug</h4><p>Le <a
href="http://blog.xebia.fr/2009/05/06/paris-jug-soiree-grid-computing-le-12-mai/" title="DataGrid au Paris Jug" >DataGrid au Paris Jug</a>, c&#8217;est demain.<br
/> <a
href="http://www.jugevents.org/jugevents/event/16041" title="Pensez  rserver" >Pensez à réserver</a> si ce n&#8217;est déjà fait.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/05/11/revue-de-presse-xebia-108/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>@Inject standardisation de l&#8217;injection de dépendances</title><link>http://blog.xebia.fr/2009/05/11/inject-standardisation-de-linjection-de-dependances/</link> <comments>http://blog.xebia.fr/2009/05/11/inject-standardisation-de-linjection-de-dependances/#comments</comments> <pubDate>Mon, 11 May 2009 16:46:47 +0000</pubDate> <dc:creator>Guillaume Carre</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[@Inject]]></category> <category><![CDATA[annotation]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Guice]]></category> <category><![CDATA[Injection de dépendances]]></category> <category><![CDATA[JSR-299]]></category> <category><![CDATA[JSR-330]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[SpringSource]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1979</guid> <description><![CDATA[Pas mal de bruit la semaine dernière dans la blogosphère Java avec l&#8217;annonce par Google et SpringSource d&#8217;une nouvelle proposition de JSR dédiée à l&#8217;injection de dépendances : @Inject (&#171;&#160;Annotations for Dependency Injection&#160;&#187;). Comme le souligne &#8216;Crazy&#8217; Bob Lee, l&#8217;auteur principal de Google Guice, la sortie de Spring 1.0, il y a déjà 5 ans, [...]]]></description> <content:encoded><![CDATA[<p>Pas mal de bruit la semaine dernière dans la blogosphère Java avec l&#8217;annonce par Google et <a
href="http://www.springsource.com/" title="SpringSource" >SpringSource</a> d&#8217;une nouvelle proposition de JSR dédiée à l&#8217;injection de dépendances : <a
href="http://code.google.com/p/atinject/" title="@Inject ("Annotations for Dependency Injection")" >@Inject (&laquo;&nbsp;Annotations for Dependency Injection&nbsp;&raquo;)</a>.<br
/> Comme le <a
href="http://google-code-updates.blogspot.com/2009/05/javaxinjectinject.html" title="souligne 'Crazy' Bob Lee" >souligne &#8216;Crazy&#8217; Bob Lee</a>, l&#8217;auteur principal de <a
href="http://code.google.com/p/google-guice/" title="Google Guice" >Google Guice</a>, la sortie de Spring 1.0, il y a déjà 5 ans, a apporté l&#8217;injection de dépendances aux masses, via un fichier de configuration propriétaire. Il y a 3 ans, Google Guice a proposé la même chose via des annotations (et SpringSource propose la même chose depuis Spring 2.5).</p><p>Si le succès de Google Guice est assez limité face au raz de marée Spring, le constat est là : il manque un standard. Comme les deux librairies ne sont pas compatibles, si vous exposez à un autre projet/équipe une librairie contenant des dépendances injectées par Google Guice, et que l&#8217;autre équipe utilise Spring, elle devra redéfinir tous les beans et leurs dépendances dans un fichier de configuration Spring (ou des annotations Spring).</p><p>@Inject propose donc de standardiser les annotations, afin de rendre portables sur différents frameworks (<a
href="http://blog.xebia.fr/2009/04/15/google-guice-les-bases-de-linjection-de-dependances/" title="Guice" >Guice</a>, Spring, <a
href="http://blog.xebia.fr/2009/04/24/commencer-linjection-de-dependances-avec-tapestry-ioc" title="Tapestry IOC" >Tapestry IOC</a>, etc.) des classes injectables.</p><h3><a
name="Pourquoiautantdebruit"></a>Pourquoi autant de bruit ?</h3><p>Une autre JSR qui parle d&#8217;injection de dépendances a déjà passé le stade de la proposition, la <a
href="http://jcp.org/en/jsr/detail?id=299" title="JSR 299" >JSR 299</a>, ex-Web Beans, portée en particulier par Gavin King de Red Hat, auteur d&#8217;Hibernate. La JSR 299 va beaucoup plus loin (trop?) que l&#8217;injection de dépendances, sujet abordé dans <a
href="http://blog.xebia.fr/2009/01/26/revue-de-presse-xebia-93/#JSRexWebBeansUneJSRDependencyI" title="de précédentes" >de précédentes</a> <a
href="http://blog.xebia.fr/2009/03/16/revue-de-presse-xebia-100/#WebBeanslimplementationdelaJSR" title="revues de presse" >revues de presse</a>.</p><p>La JSR 299 a déjà beaucoup fait parler d&#8217;elle, car elle a récemment été remaniée, afin d&#8217;être intégrée à temps à Java EE 6 (dont la spécification doit être terminée dans 3 mois). Vous pouvez <a
href="http://blog.xebia.fr/2009/01/26/revue-de-presse-xebia-93/#comment-10207" title="lire les commentaires sur notre revue de presse du 26 Janvier dernier" >lire les commentaires sur notre revue de presse du 26 Janvier dernier</a>, dans laquelle nous nous étonnions de l&#8217;absence de SpringSource dans la JSR 299.</p><p>Quelques extraits de ces commentaires :</p><blockquote><p> Emmanuel Bernard (JBoss) : &laquo;&nbsp;<em>&#8230;SpringSource n&#8217;a jamais demandé à faire partie du groupe d&#8217;expertise&#8230;</em>&nbsp;&raquo;<br
/> Emmanuel Bernard : &laquo;&nbsp;<em>&#8230;JBoss a passé un temps énorme à construire JSR 299&#8230;</em>&nbsp;&raquo;<br
/> Antonio Goncalves (Java EE 6 Expert Group) : &laquo;&nbsp;<em>&#8230;la JSR 299 ne se transforme pas radicalement, je dirais plutôt qu&#8217;elle réduit sa voilure et se concentre sur son but initial : un contexte unifié entre les EJBs et JSF&#8230;</em>&nbsp;&raquo;<br
/> Cyrille Le Clerc (Xebia) : &laquo;&nbsp;<em>&#8230;une JSR qui se transforme radicalement, au point de changer de nom, pendant la phase de Public Review, après deux années et demie de travail intensif, cela me parait exceptionnel et peu rassurant&#8230;</em>&nbsp;&raquo;</p></blockquote><h3><a
name="Bonneidemauvaistiming"></a>Bonne idée, mauvais timing ?</h3><p>C&#8217;est dans ce contexte que Google et SpringSource décident de proposer @Inject. L&#8217;intention est légitime, et les deux acteurs sont sans aucun doute les plus expérimentés sur le sujet de l&#8217;injection de dépendances. Il semble en effet beaucoup plus aisé pour Guice, Spring ou autre framework d&#8217;implémenter une JSR de la taille de l&#8217;éventuelle JSR @Inject, alors qu&#8217;on les voit mal implémenter rapidement la JSR 299. Google et SpringSource suggèrent donc à la JSR 299 de ne plus spécifier l&#8217;injection de dépendances, et de réutiliser les annotations définies dans @Inject (extrait de la proposition : &laquo;&nbsp;<em>JSR 299 is defining a dependency injection framework for Java EE, and might support these annotations.</em>&laquo;&nbsp;).</p><p>En revanche le timing nous semble vraiment mal choisi : cette spécification est proposée à quatre mois de la validation de Java EE 6 (Septembre 2009). Cela semblait déjà compliqué pour la JSR 299 (dont l&#8217;inclusion à Java EE 6 n&#8217;a toujours pas été votée), et @Inject ajoute très tard son grain de sel.<br
/> Même si Bob Lee pense pouvoir faire valider @Inject par le JCP en cinq mois, ou moins dans le cadre de Java EE 6, il est peu probable qu&#8217;@Inject fasse partie de Java EE 6 ; on n&#8217;a jamais vu de JSR consensuelle validée aussi rapidement, comment ferait une JSR polémique ? La JSR 299 fait quant à elle face à un planning de plus en plus serré. Le résultat des courses est sans appel : on &laquo;&nbsp;risque&nbsp;&raquo; donc de voir arriver une spécification Java EE 6 sans JSR d&#8217;injection de dépendances.</p><p>Hormis Gavin King (JSR 299 &#8211; JBoss) et Bob Lee (@Inject &#8211; Google) qui ont <a
href="http://in.relation.to/Bloggers/CommentsOnAnnotationsForDependencyInjection" title="âprement débattu sur la blogosphère" >âprement débattu sur la blogosphère</a>, les membres des expert groups de JSR 299 et Java EE 6 sont restés silencieux &#8230; comme Rod Johnson, co-inspirateur de @Inject (qui était sans doute <a
href="http://www.springsource.com/node/1547" title="bien occup la semaine dernire" >bien occupé la semaine dernière</a>).</p><p>Enfin, je vous suggère de prendre quelques minutes pour lire le &laquo;&nbsp;brouillon&nbsp;&raquo; de proposition de JSR @Inject. On y voit de nombreux noms connus et reconnus parmi les supporters de cette JSR (Joshua Bloch, Paul Hammant &#8211; ThoughtWorks &#038; PicoContainer founder, Doug Lea, Tim Peierls, James Strachan, Hani Suleiman, Jason van Zyl &#8211; Maven Plexus, Thiago H de Paula Figueiredo &#8211; Tapestry IoC). @Inject ne propose que de standardiser les annotations, et ne décrit pas la manière dont les dépendances vont être résolues, ce sera à la charge du conteneur. Le périmètre fonctionnel de la proposition est donc très focalisé.</p><h3><a
name="Sousvosyeuxbahisuneinjectionde"></a>Sous vos yeux ébahis, une injection de dépendance sans Spring, sans Guice et sans JSR</h3><p>Pour rappel, même si aucune JSR d&#8217;injection de dépendances n&#8217;est intégrée dans le futur à Java EE 6, vous avez le droit d&#8217;injecter vos dépendances vous même, sans Spring, sans Guice, par exemple avec un simple constructeur Java ! <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><pre class="brush: java; title: ; notranslate">
public class MyService {
	private MyDAO myDAO;
	public MyService(MyDAO myDAO) {
		this.myDAO = myDAO;
	}
}
</pre><p>Ce qui vous permettra d&#8217;y injecter bouchons ou mocks depuis vos <a
href="http://blog.xebia.fr/2008/04/11/les-10-commandements-des-tests-unitaires/" title="tests unitaires" >tests unitaires</a>.</p><h3><a
name="Quelqueslienssurlesujet"></a>Quelques liens sur le sujet</h3><ul><li><a
href="http://crazybob.org/2009/05/announcing-javaxinjectinject.html" title="lannonce sur le blog de Bob Lee" >l&#8217;annonce sur le blog de Bob Lee</a></li><li><a
href="http://in.relation.to/Bloggers/CommentsOnAnnotationsForDependencyInjection" title="la raction de Gavin King" >la réaction de Gavin King et les échanges avec Bob Lee dans les commentaires</a></li><li><a
href="http://code.google.com/p/atinject/" title="le projet Inject sur Google Code" >le projet @Inject sur Google Code</a></li><li><a
href="http://docs.google.com/Doc?id=dd2fhx4z_13cw24s7dj" title="Proposition de la JSR Inject" >Proposition de la JSR @Inject</a></li><li><a
href="http://www.theserverside.com/news/thread.tss?thread_id=54499" title="quelques (rares) commentaires intéressants sur TSS" >quelques (rares) commentaires intéressants sur TSS</a></li><li><a
href="http://twitter.com/#search?q=inject" title="Inject sur twitter" >@Inject sur twitter</a></li></ul><div
align="center"> <a
href="http://twitter.com/gcarre"><br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/04/twitter4.png" alt="twitter guillaume carré" title="twitter guillaume carré"  /><br
/> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/05/11/inject-standardisation-de-linjection-de-dependances/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Google Guice 2 &#8211; Les bases de l&#8217;injection de dépendances</title><link>http://blog.xebia.fr/2009/04/15/google-guice-les-bases-de-linjection-de-dependances/</link> <comments>http://blog.xebia.fr/2009/04/15/google-guice-les-bases-de-linjection-de-dependances/#comments</comments> <pubDate>Wed, 15 Apr 2009 15:53:30 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[annotation]]></category> <category><![CDATA[dépendances]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Guice]]></category> <category><![CDATA[IoC]]></category> <category><![CDATA[Spring]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1768</guid> <description><![CDATA[Guice (prononcez Juice) est le framework d&#8217;injection de dépendances de Google. La configuration des dépendances se fait par code, à l&#8217;aide d&#8217;annotations, et nécessite donc l&#8217;utilisation de Java 5. Google travaille actuellement sur la V2 de son framework, qui tarde à sortir. Cependant, une mise à jour régulière du Wiki du projet et la publication [...]]]></description> <content:encoded><![CDATA[<p>Guice (prononcez <em>Juice</em>) est le framework d&#8217;injection de dépendances de Google. La configuration des dépendances se fait par code, à l&#8217;aide d&#8217;annotations, et nécessite donc l&#8217;utilisation de Java 5.<br
/> Google travaille actuellement sur la V2 de son framework, qui tarde à sortir. Cependant, une mise à jour régulière du Wiki du projet et la publication de snapshots permettent d&#8217;ores et déjà de se faire une bonne idée de cette alternative à l&#8217;injection de dépendance &#8216;à la Spring&#8217;.</p><p>Nous entamons aujourd&#8217;hui une série d&#8217;articles qui a pour but de vous faire toucher du doigt la grande liberté qu&#8217;offre l&#8217;injection de dépendance par code. Nous irons progressivement des concepts de base de Guice 2.0, vers une utilisation avancée du framework.</p><h3><a
name="Dclarerunedpendanceaveclannota"></a>Déclarer une dépendance avec l&#8217;annotation <em>@Inject</em>.</h3><p>Prenons le postulat de départ suivant : la classe <em>MyServiceImpl</em> (qui implémente l&#8217;interface <em>MyService</em>) doit recevoir l&#8217;injection de la classe <em>MyBasicDaoImpl</em> (qui implémente l&#8217;interface <em>MyBasicDao</em>).<br
/> Dans le code source de la classe à injecter, nous allons donc indiquer que Guice doit s&#8217;occuper de cette injection, en utilisant l&#8217;annotation <em>com.google.inject.Inject</em>. Dans ce premier exemple, nous positionnerons cette annotation au niveau du constructeur.</p><p>En outre, nous déclarons un <em>Appendable</em> qui nous permettra de réaliser des traces. Cet appendable sera injecté directement dans la variable.</p><pre class="brush: java; title: ; notranslate">
public class MyServiceImpl implements MyService {
	@Inject
	private Appendable recorder;
        private final MyBasicDao basicDao;
	@Inject
	public MyServiceImpl(MyBasicDao basicDao) {
		super();
		this.basicDao = basicDao;
	}
}
</pre><p>Vous remarquerez que grâce à l&#8217;injection par constructeur, nous sommes en mesure de déclarer la variable <em> basicDao</em> finale.</p><p>L&#8217;injection peut être réalisée au niveau du constructeur, d&#8217;une méthode voire même de la variable elle-même. Quelques avantages / inconvénients de ces différentes méthodes :</p><ul><li>Constructeur</li><ul><li>+ Les variables peuvent être déclarées finales</li><li>- Ne peut être utilisé si l&#8217;objet est instancié hors de Guice</li></ul><li>Méthode</li><ul><li>+ Permet d&#8217;injecter un objet instancié hors de Guice</li><li>+ Les classes filles n&#8217;ont pas besoin de connaître les dépendances des classes mères.</li></ul><li>Variable</li><ul><li>+ Syntaxe la plus compacte</li><li>- Réduit la testabilité et l&#8217;encapsulation</li></ul></ul><p>La méthode recommandée par Google est l&#8217;injection par constructeur.</p><h3><a
name="Lieruneinterfacesonimplmentati"></a>Lier une interface à son implémentation réelle, dans un <em>Module</em></h3><p>Il nous faut maintenant lier l&#8217;interface <em>MyBasicDao</em> à l&#8217;implémentation que nous souhaitons utiliser dans un premier temps, à savoir <em>MyBasicDaoImpl</em>.<br
/> Ceci se fait dans un module de configuration étendant <em>com.google.inject.Module</em> à l&#8217;aide d&#8217;un DSL relativement explicite.</p><pre class="brush: java; title: ; notranslate">
public class MyModule implements com.google.inject.Module {
	@Override
	public void configure(com.google.inject.Binder binder) {
		// Bind to class
		binder.bind(MyBasicDao.class).to(MyBasicDaoImpl.class);
		binder.bind(MyService.class).to(MyServiceImpl.class);
		// Bind to instance
		binder.bind(Appendable.class).toInstance(System.out);
	}
}
</pre><p>Le <em>Module</em> permet de lier des interfaces à des classes que Guice se chargera d&#8217;instancier (_bind &#8230; to_) mais aussi à des classes déjà instanciées (_bind &#8230; toInstance_) comme c&#8217;est le cas pour notre <em>Appendable</em>, qui sera lié à la console <em>System.out</em>.</p><h3><a
name="RcupreruneinstanceauprsdelInje"></a>Récupérer une instance auprès de l&#8217;<em>Injector</em></h3><p>Dernière étape, il nous faut obtenir une instance injectée de notre service.<br
/> C&#8217;est auprès de la classe <em>com.google.inject.Injector</em> que nous la récupérerons. Cet injecteur est créé de manière statique, à partir d&#8217;un ou plusieurs <em>Module</em>.<br
/> Dans cet exemple, nous réaliserons cette opération à partir d&#8217;un <em>main</em>.</p><pre class="brush: java; title: ; notranslate">
public class MyMain {
	public static void main(String[] args) throws IOException {
		Injector injector = Guice.createInjector(new MyModule());
		MyService myService = injector.getInstance(MyService.class);
		myService.displaySample();
	}
}
</pre><h3><a
name="EtSpringdanstoutca"></a>Et Spring dans tout ca ?</h3><p>La question qui se pose dès que l&#8217;on aborde l&#8217;injection de dépendances est bien sûr &#8216;Oui, mais par rapport à Spring ?&#8217;.<br
/> Essayons d&#8217;éviter la réponse de normand, même si Spring et Guice ne jouent pas dans la même cour : Guice se concentre exclusivement sur l&#8217;injection de dépendances, alors que Spring vise à offrir une stack complète.<br
/> L&#8217;équipe de Guice répond d&#8217;ailleurs elle-même à <a
href="http://code.google.com/p/google-guice/wiki/SpringComparison" title="la question sur son wiki" >la question sur son wiki</a>.<br
/> Cependant, pour donner un point de vue plus pragmatique :</p><ul><li>le footprint du Jar du Guice est bien inférieur à celui (ceux) de Spring Core.</li><li>le chaînage des Beans est plus rapide avec Guice, même si cet argument pèse peu, la majorité des dépendances étant chargées à l&#8217;initialisation de l&#8217;application.</li><li>Guice est plus intrusif (apparition d&#8217;annotations dans le code source des services métier)</li><li>la programmation orientée aspect de Guice est au stade embryonnaire.</li></ul><p>Dans la suite de cette série d&#8217;articles, nous essayerons de montrer que la différence d&#8217;approche entre Guice et Spring offre plus de libertés aux développeurs (mais conduit peut-être aussi à plus de chaos).</p><h3><a
name="Lasuite"></a>La suite ?</h3><p>C&#8217;est déjà la fin de ce premier tutoriel, et vous savez maintenant injecter simplement une classe. Cependant, dans le projet tel qu&#8217;écrit aujourd&#8217;hui, la classe <em>MyBasicDaoImpl</em> sera injectée dans toutes les classes nécessitant un <em>MyBasicDao</em>. Dans un prochain article, nous verrons comment lever cette limite.</p><p><a
href=" http://code.google.com/p/xebia-france/source/browse/google-guice/hands-on/tags/1.1/" title="Tlchargez le projet Eclipse sur le Google Code de Xebia " >Téléchargez le projet Eclipse sur le Google Code de Xebia </a></p><h3><a
name="Ressources"></a>Ressources</h3><p><a
href=" http://code.google.com/p/google-guice/" title="Site officiel " >Site officiel </a><br
/> <a
href="http://www.javalobby.org/articles/guice-vs-spring/?source=archives" title="Un comparatif de performances Spring  Guice bas sur les versions prcdentes" >Un comparatif de performances Spring / Guice, basé sur les versions précédentes</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/04/15/google-guice-les-bases-de-linjection-de-dependances/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/02/09/revue-de-presse-xebia-95/</link> <comments>http://blog.xebia.fr/2009/02/09/revue-de-presse-xebia-95/#comments</comments> <pubDate>Mon, 09 Feb 2009 17:52:23 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Ajax]]></category> <category><![CDATA[Flash]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Jigsaw]]></category> <category><![CDATA[LiquidTest]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[OpenJDK]]></category> <category><![CDATA[Paris JUG]]></category> <category><![CDATA[RIA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1471</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Agilité LiquidTest : un outil de test des applications web RIA Statut 2009 du Web et de l&#8217;Ajax vu par des superstars Google Analytics enfin pour les applications Flash Le coin de la technique Jigsaw, un petit nouveau de l&#8217;OpenJDK Sortie de GWT 1.6 [...]]]></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/2009/02/09/revue-de-presse-xebia-95/#LiquidTestunoutildetestdesappl">LiquidTest : un outil de test des applications web</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/02/09/revue-de-presse-xebia-95/#StatutduWebetdelAjaxvupardessu">Statut 2009 du Web et de l&#8217;Ajax vu par des superstars</a></li><li><a
href="http://blog.xebia.fr/2009/02/09/revue-de-presse-xebia-95/#GoogleAnalyticsenfinpourlesapp">Google Analytics enfin pour les applications Flash</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/02/09/revue-de-presse-xebia-95/#JigsawunpetitnouveaudelOpenJDK">Jigsaw, un petit nouveau de l&#8217;OpenJDK</a></li><li><a
href="http://blog.xebia.fr/2009/02/09/revue-de-presse-xebia-95/#SortiedeGWTMilestone">Sortie de GWT 1.6 Milestone 1</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/02/09/revue-de-presse-xebia-95/#ParisJUGdemainsoir">Paris JUG demain soir !</a></li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="LiquidTestunoutildetestdesappl"></a>LiquidTest : un outil de test des applications web</h4><p><a
href="http://www.theserverside.com/news/thread.tss?thread_id=53535" title="LiquidTest" >LiquidTest</a> est un outil entièrement écrit en <a
href="http://www.eclipsetotale.com/articles/Eclipse_RCP.html" title="RCP" >RCP</a> qui permet de tester une application web en jouant des scénarios directement dans le navigateur.</p><p>Les scénarios sont rédigés soit sous forme de tables HTML, soit sous forme de programmes qui pilotent le navigateur (Java, Ruby, Groovy, C#).</p><p>L&#8217;outil permet de générer des tests cases en Java, JUnit et TestNG, C# NUnit.</p><p>Les fonctionnalités suivantes sont proposées :</p><ul><li>Enregistrement automatique des actions sur Firefox et Internet Explorer.</li><li>Écriture rapide et simple des scénarios de tests.</li><li>Une exécution en parallèle des tests sur plusieurs serveurs.</li><li>Intégration avec JUnit, Eclipse (Plugin), .Net et d&#8217;autres frameworks.</li><li>Support des langages de programmation Java, C#, Groovy et Ruby.</li><li>Support du Drag and Drop.</li></ul><p>L&#8217;outil LiquidTest est fourni en 3 éditions : une édition Développeur, une édition Testeur et une édition Serveur.</p><p>Une version d&#8217;essai de 30 jours est <a
href="http://www.jadeliquid.com/?tss" title="disponible" >disponible</a>.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="StatutduWebetdelAjaxvupardessu"></a>Statut 2009 du Web et de l&#8217;Ajax vu par des superstars</h4><p>Matt Raible, nous propose sur son blog, une retranscription de deux conférences intéressantes :</p><ul><li><a
href="http://raibledesigns.com/rd/entry/the_state_of_the_web" title="The State of the Web 2009" >The State of the Web 2009</a></li><li><a
href="http://raibledesigns.com/rd/entry/ajax_the_state_of_the" title="Ajax The State of the Art with Dion and Ben" >Ajax: The State of the Art with Dion and Ben</a></li></ul><p>Chris Wilson, employé de Microsoft, fait remarquer que même si il y a des efforts de standardisation les développeurs Web doivent apprendre à utiliser plusieurs types de navigateur. De manière générale, la tendance est à des plateformes et des environnements clients de plus en plus variés (Windows, Mac, iPhone). Les développements doivent tenir compte de tous ces environnements pour construire des applications de plus en plus dimensionnables (scalables).</p><p>Lars Erik Bolstad, employé Opera, ajoute que le WAP n&#8217;a pas réussi et que les navigateurs (même pour les mobiles) font se focaliser sur les standards du Web CSS/HTML. Les performances seront aussi un axe d&#8217;amélioration des mobiles mais aussi des différents moteurs (navigateur, javascript, framework).</p><p>Dan Connolly, membre du groupe de travail du W3C HTML, indique qu&#8217;il y a aussi des axes de travail qui vont avoir de nouveau de l&#8217;intérêt après avoir été un peu ignorés :</p><ul><li>Le Web Semantique.</li><li>Sécurité Javascript : actuellement la sécurité des navigateurs sur les scripts Javascript est faible. On constate souvent que le Javascript est désactivé par les équipes de sécurité ce qui freinent la portabilité des applications Web. (A voir sur google code le framework : <a
href="http://code.google.com/p/google-caja/" title="Caja" >Caja</a>).</li></ul><p>Sur l&#8217;axe développement, Scott Fegette, employé à Adobe, remarque une évolution importante dans le développement Web. Les IDE <a
href="http://fr.wikipedia.org/wiki/WYSIWYG" title="WYSIWYG" >WYSIWYG</a> sont dépréciés en faveur des frameworks. D&#8217;ailleurs, c&#8217;est <a
href="http://jquery.com/" title="JQuery" >JQuery</a> qui semble avoir le plus les faveurs des développeurs Javascript. Un des grands axes d&#8217;intérêt d&#8217;Adobe est le RIA. Ajax est mature. L&#8217;idée de <a
href="http://www.adobe.com/fr/products/air/" title="AIR" >AIR</a> est de développer des applications Bureau par des développeurs Web. Ainsi on développera des applications bureau comme des applications Web, avec des environnements, des techniques et des outils semblables. Ainsi Flash et Flex sont souvent trop riches pour de simples applications Web (hormis pour des composants multimédia &#8211; audio &#8211; vidéo) et sont plus destinés à des applications bureaux.</p><p>Une des orientations importantes est le développement des applications bureaux qui passera par ce que l&#8217;on a connu sur le développement d&#8217;applications Web.</p><h4><a
name="GoogleAnalyticsenfinpourlesapp"></a>Google Analytics enfin pour les applications Flash</h4><p>Google Analytics est un excellent outil pour analyser le trafic sur un site web. Mais jusqu&#8217;à présent cet outil n&#8217;était disponible qu&#8217;en JavaScript.</p><p>Pour étendre les fonctionnalités sur les applications RIA, l&#8217;équipe de Google Analytics a sorti récemment une nouvelle API Gaforflash. Cet API est une implémentation native pour ActionScript3. Matthew McNeely nous présente sur le blog d&#8217;InsideRIA <a
href="http://www.insideria.com/2009/02/using-google-analytics-within.html" title="Gaforflash et des exemples d'utilisation" >Gaforflash et des exemples d&#8217;utilisation</a>. Un nouveau pas franchit pour les applications Flex, si vous voulez avoir plus d&#8217;informations sur cet API voici le lien : <a
href="http://code.google.com/p/gaforflash/" title="httpcodegooglecompgaforflash" >http://code.google.com/p/gaforflash/</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="JigsawunpetitnouveaudelOpenJDK"></a>Jigsaw, un petit nouveau de l&#8217;OpenJDK</h4><p>Une <a
href=" http://mail.openjdk.java.net/pipermail/announce/2009-February/000067.html" title="nouvelle étape" >nouvelle étape</a> a été franchie cette semaine avec l&#8217;arrivée du <a
href="http://openjdk.java.net/projects/jigsaw/" title="projet Jigsaw" >projet Jigsaw</a> dans l&#8217;<a
href="http://openjdk.java.net/" title="OpenJDK" >OpenJDK</a>.<br
/> Cette approbation fait suite au vote positif de 6 des 8 membres du <a
href="http://openjdk.java.net/groups/compiler/" title="Compiler Group" >Compiler Group</a>.</p><p>Basé sur <a
href="http://blog.xebia.fr/2008/02/27/jsr-294-les-superpackages/" title="la JSR-294" >la JSR-294</a> dont il reprend les grands principes, Jigsaw a pour but d&#8217;ajouter la notion de modules au JDK. Ce projet, <a
href="http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/#Javacenestpaspourtoutdesuite" title="dernièrement créé" >dernièrement créé</a>, se doit de <a
href="http://blog.xebia.fr/2008/10/13/revue-de-presse-xebia-78/#JSROSGimatuerStanleyHo" title="recoller les morceaux" >recoller les morceaux</a> du <a
href="http://www.osgi.org/blog/2008/12/project-jigsaw.html" title="trs polmique puzzle" >très polémique puzzle</a> de la modularité Java.</p><p>Il devrait permettre :</p><ul><li>De modulariser le JDK. Il était temps de remettre le JDK au sport. Il n&#8217;a cessé de s&#8217;engraisser à chaque nouvelle version au fil de ses 15 ans d&#8217;évolutions. Découper celui-ci en modules permettra, d&#8217;une part de mettre à plat les différentes dépendances de celui-ci, d&#8217;autre part de réduire les consommations mémoires et le temps de démarrage.</li><li>D&#8217;offrir un moyen simple aux développeurs de modulariser leurs propres applications.</li></ul><p>Nous présenterons prochainement le fonctionnement de ces nouveautés, un article dédié est en cours d&#8217;élaboration.</p><h4><a
name="SortiedeGWTMilestone"></a>Sortie de GWT 1.6 Milestone 1</h4><p>Nous vous parlions mi-décembre des futures orientations de GWT  avec la <a
href="http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/#LesorientationsdeGWTRoadmapGWT" title="roadmap de GWT 16" >roadmap de GWT 1.6</a>, prévu pour le premier trimestre 2009.</p><p>C&#8217;est donc sans surprise qu&#8217;est sortie fin de semaine dernière cette version <a
href="http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/3e7e6cc3b35ad98a" title="16 en milestone 1" >1.6 en milestone 1</a>. Cette version confirme entre autre :</p><ul><li>La <a
href="http://code.google.com/p/google-web-toolkit/wiki/WAR_Design_1_6" title="structure de projet en WAR" >structure de projet en WAR</a>.</li><li>Les nouveaux composants graphiques comme le <a
href="http://gwt-incubator-lib.googlecode.com/svn/trunk/GWT-Incubator-Demo/com.gwtincubator.TimePickerEntryPoint/TimePickerEntryPoint.html" title="DateTime Picker" >DateTime Picker</a> (à la manière du <a
href="http://haineault.com/media/jquery/ui-timepickr/page/#d-demo-wrapper-1" title="composant équivalent jQuery" >composant équivalent jQuery</a>) ou le <a
href="http://googlewebtoolkit.blogspot.com/2008/11/improving-performance-with-on-demand.html" title="LazyPanel" >LazyPanel</a>.</li><li>Le <em>Hosted Mode</em> qui passe de <a
href="http://tomcat.apache.org/" title="Tomcat" >Tomcat</a> à <a
href="http://www.mortbay.org/jetty/" title="Jetty" >Jetty</a> avec l&#8217;ajout d&#8217;une fonctionnalité <em>Restart</em>.</li><li>Un nouveau système de gestion des évènements.</li></ul><p>Le téléchargement de cette version se passe <a
href="http://code.google.com/p/google-web-toolkit/downloads/list?can=1&#038;q=1.6.0" title="par ici" >par ici</a>, le blog rappel toutefois que cette version n&#8217;est pas <em>production ready</em>.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="ParisJUGdemainsoir"></a>Paris JUG demain soir !</h4><p>Dernier rappel, le <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20090210" title="Paris JUG" >Paris JUG</a> fête son 1er anniversaire demain soir à la <a
href="http://www.parisjug.org/xwiki/bin/view/Location/Fiapp" title="Fiap" >Fiap</a> à partir de 19h45. Pour plus de détails, regardez le <a
href="http://blog.xebia.fr/2009/02/06/paris-jug-exceptionnel-le-10-fevrier-2009-un-an-deja/" title="programme" >programme</a>.<br
/> Et n&#8217;oubliez pas de vous <a
href="http://www.jugevents.org/jugevents/event/registration.form?event.id=13566" title="inscrire" >inscrire</a>. On espère vous voir nombreux !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/02/09/revue-de-presse-xebia-95/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/</link> <comments>http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#comments</comments> <pubDate>Mon, 22 Dec 2008 18:34:27 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[Alchemy]]></category> <category><![CDATA[BlazeDS]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Native Client]]></category> <category><![CDATA[OpenXava]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Spring]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1183</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposé par Xebia. Agilité Les bases de Scrum, en 10 minutes, avec le sourire. RIA Native Client de Google et Alchemy d&#8217;Adobe Spring BlazeDS Integration 1.0.0.M1 Choisir sa solution RIA Le coin de la technique OpenXava 3.1 est disponible Java Persistence API 2.0 Public Draft Agilité Les [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /></p><p><em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposé par Xebia.</em></p><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#LesbasesdeScrumenminutesavecle">Les bases de Scrum, en 10 minutes, avec le sourire.</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#NativeClientdeGoogleetAlchemyd">Native Client de Google et Alchemy d&#8217;Adobe</a></li><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#SpringBlazeDSIntegrationM">Spring BlazeDS Integration 1.0.0.M1</a></li><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#ChoisirsasolutionRIA">Choisir sa solution RIA</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#OpenXavaestdisponible">OpenXava 3.1 est disponible</a></li><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#JavaPersistenceAPIPublicDraft">Java Persistence API 2.0 Public Draft</a></li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="LesbasesdeScrumenminutesavecle"></a>Les bases de Scrum, en 10 minutes, avec le sourire.</h4><p>En 2009, je vais tenter de comprendre ce que Xebia raconte dans la partie Agilité de sa revue de presse. Si vous faites cette bonne résolution, alors la vidéo suivante est pour vous ! Hamid Shojaee (Axosoft) résume en 8 minutes les principaux concepts de Scrum.</p><p><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/"><em>Cliquer ici pour voir la vidéo.</em></a></p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="NativeClientdeGoogleetAlchemyd"></a>Native Client de Google et Alchemy d&#8217;Adobe</h4><p><a
title="Google annonce la sortie de Native Client" href="http://google-code-updates.blogspot.com/2008/12/native-client-technology-for-running.html">Google annonce la sortie de Native Client</a>, une technologie permettant d&#8217;exécuter du code natif directement dans le navigateur. Le but de Native Client est d&#8217;exploiter le processeur et la carte graphique du poste client pour pouvoir mettre en place des applications web plus performantes. Google rassure en disant que cette exploitation ne remettra en cause ni la neutralité du navigateur, ni la sécurité, ni la portabilité des applications sur les différents systèmes d&#8217;exploitation.</p><p>Il est possible de <a
title="tester une version expérimentale de Native Client" href="http://code.google.com/p/nativeclient/?tbbrand=GZEZ&amp;utm_campaign=en&amp;utm_source=en-et-osrcblog&amp;utm_medium=et">tester une version expérimentale de Native Client</a>. À noter pour le moment que cette version n&#8217;est compatible qu&#8217;avec les navigateurs suivants : Firefox, Safari, Opera et Google Chrome; et sur les systèmes d&#8217;exploitations suivants : Windows, Mac et Linux qui ont un processeur x86.</p><p>Coïncidence ou pas, Adobe a présenté, lors de ses <a
title="journées Adobe MAX" href="http://max.adobe.com/">journées Adobe MAX</a>, <a
title="Alchemy" href="http://labs.adobe.com/wiki/index.php/Alchemy">Alchemy</a> qui offre les mêmes fonctionnalités que Native Client.</p><p>Alchemy est un projet d&#8217;Adobe Labs permettant d&#8217;intégrer du code C ou C++ dans une machine virtuelle ActionScript. Le code C/C++ est d&#8217;abord compilé en ActionScript3 dans un swc ou swf. Il peut ensuite fonctionner sur Flash Player 10 ou AIR 1.5, sécurisé par les protections Flash Player.</p><p>Quoi qu&#8217;il en soit, le but de ces technologies reste le même : faire en sorte que les applications web deviennent plus puissantes. Cela ne devrait donc pas concerner l&#8217;informatique de gestion. Mais pour les applications qui demandent beaucoup de ressources, telles que les jeux en ligne par exemple, cela pourrait changer la donne.</p><p>Une question reste cependant en suspend. Pourquoi Google a t&#8217;il décidé de sortir cette technologie ? Java Applets, ActiveX, Flash, Flex, Air, Silverlight, JavaFX, ce ne sont pas les technologies concurrentes qui manquent. Native Client ressemble d&#8217;ailleurs plus à une nouvelle version d&#8217;ActiveX cross-browser qu&#8217;à une nouvelle technologie RIA au sens Flex ou SilverLight. <a
title="Certains pensent" href=" http://www.theregister.co.uk/2008/12/15/dziubba_nativ_client/">Certains pensent</a> que cette technologie est le fruit d&#8217;un travail indépendant ne répondant à aucune vision technique cohérente à long terme. <a
title="D'autres" href="http://gigaom.com/2008/12/13/native-client-an-os-in-your-browser/">D&#8217;autres</a>, au contraire, pensent qu&#8217;il s&#8217;agit d&#8217;un pas de plus vers un système d&#8217;exploitation <em>made in</em> Google. Le débat est ouvert, difficile de s&#8217;avancer pour le moment &#8230; Une fois de plus, Google est arrivé à faire le buzz autour de ses technologies.</p><p>Pour ceux qui voudraient tester Quake made in Native Client, <a
title="voici le lien" href="http://nativeclient.googlecode.com/svn/trunk/nacl/googleclient/native_client/tests/quake/quake.html">voici le lien</a> <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p><h4><a
name="SpringBlazeDSIntegrationM"></a>Spring BlazeDS Integration 1.0.0.M1</h4><p>Nous en parlions <a
title="la semaine dernière" href="http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/#CooprationentreSpringSourceetA">la semaine dernière</a>, c&#8217;est maintenant <a
title="officiel" href=" http://www.springsource.org/node/904">officiel</a>, <a
title="le premier milestone de Spring BlaseDS Integration est maintenant disponible" href="http://blog.springsource.com/2008/12/17/using-spring-blazeds-integration-m1/">le premier milestone de Spring BlaseDS Integration est maintenant disponible</a>.<br
/> Alors à quoi ressemble cette intégration ? Elle vous permettra de mixer les configurations BlaseDS et Spring à votre guise. L&#8217;idée est de laisser les configurations statiques d&#8217;infrastructure dans le fichier de configuration BlaseDS et d&#8217;externaliser le reste dans les fichiers de configuration Spring. Cette solution devrait donc plaire à tout le monde : les utilisateurs de BlaseDS ne devraient pas être perdus, le mécanisme général restant inchangé ; les utilisateurs Spring s&#8217;y retrouveront également  avec une configuration standard Spring MVC et Spring Remoting.</p><p>Voici quelques détails de cette configuration :</p><ul><li>Seule la configuration de la <code>DispatcherServlet</code> de Spring MVC est nécessaire</li><li>L&#8217;exposition du <code>MessageBroker</code> de BlazeDS  passe par :<ul><li>la déclaration d&#8217;un <em>FactoryBean</em> dans le fichier de configuration XML de Spring MVC : <code>MessageBrokerFactoryBean</code></li><li>le routage des requêtes de la <code>DispatcherServlet</code> vers le <code>MessageBroker</code> via la configuration d&#8217;un <code>HandlerMapping</code></li></ul></li><li>À la manière de <a
title="Spring Remoting" href=" http://static.springframework.org/spring/docs/2.5.x/reference/remoting.html">Spring Remoting</a>, il ne vous reste plus qu&#8217;à exposer vos services Spring au <code>MessageBroker</code> avec la configuration d&#8217;un nouveau type <em>d&#8217;Exporter</em> : le <code>FlexRemotingServiceExporter</code></li></ul><p>Même si nous n&#8217;avons pas encore testé cette solution, cette intégration aussi simple qu&#8217;élégante rapproche sans conteste les développeurs Java au développement d&#8217;applications Flex.</p><h4><a
name="ChoisirsasolutionRIA"></a>Choisir sa solution RIA</h4><p>Les solutions RIA sont de plus en plus nombreuses et il devient difficile de trancher catégoriquement pour l&#8217;une ou l&#8217;autre lors du démarrage d&#8217;un projet. Très souvent, une librairie est choisie par sa côte de popularité alors qu&#8217;elle ne correspond pas forcément au besoin client.<br
/> Au final, l&#8217;énergie dépensée pour apprendre, utiliser et adapter ces widgets/actions/effets dans le projet se révèle très coûteuse en temps, en maintenance&#8230;</p><p>Robbie Cheng (développeur principal de <a
title="ZK Mobile pour Android" href="http://sourceforge.net/forum/forum.php?forum_id=815522">ZK Mobile pour Android</a>) éclaircit nos esprits avec l&#8217;article <a
title="How to Choose an RIA Solution" href="http://java.sys-con.com/node/781133">How to Choose an RIA Solution</a> sur Sys-Con avec un Top 10 des critères <em>architecte</em> et <em>manager</em> à prendre en compte lors du choix de sa solution.</p><p>Sans surprise, côté architecte, on se retrouve avec :</p><ul><li>de nombreux widgets, simples, des fonctionnalités comme le lazy loading ou le drag &amp; drop, des pop-up&#8230;,</li><li>facilité de développement,</li><li>parfaite intégration dans l&#8217;entreprise,</li><li>sécurité et scalabilité,</li><li>et bien évidemment multiplateforme.</li></ul><p>Côté manager, les besoins ne sont pas les mêmes :</p><ul><li>solution standard ? utilisée par d&#8217;autres projets ? Open Source ?,</li><li>bien évidemment le coût de formation, entre une solution JavaScript et Java il n&#8217;y a pas qu&#8217;un pas <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ,</li><li>outils associés à la solution (plugins, éditeur, WYSIWYG&#8230;),</li><li>dépendante d&#8217;autres librairies / d&#8217;autres plugins ?,</li><li>un background solide i.e. qui est derrière la solution ! Adobe, Google, un développeur dans son garage ? Mais aussi un support de qualité, des corrections de bugs et des mises à jour régulières.</li></ul><p>Selon tous ces aspects, l&#8217;auteur nous donne 4 catégories de solutions RIA / frameworks :</p><ul><li>Snippet : amélioration légère avec quelques effets, des pages plus rapides à l&#8217;affichage, des nouvelles petites fonctions de ci de là&#8230; avec peu de changement au niveau de l&#8217;architecture ou du design. <a
title="Script.aculo.us " href="http://script.aculo.us/">Script.aculo.us </a> et <a
title="Prototype" href="http://www.prototypejs.org/">Prototype</a> sont de bons exemples,</li><li>Widget : vous avez dit Web 2.0 ? C&#8217;est clairement ce que tout le monde a vu avec l&#8217;arrivée de librairies comme <a
title="YUI" href="http://developer.yahoo.com/yui/">YUI</a> ou <a
title="ExtJS" href="http://extjs.com/">ExtJS</a> : une nouvelle expérience utilisateur au niveau de l&#8217;interface graphique avec des composants travaillés, très beaux, du drag &amp; drop, de l&#8217;animation&#8230; ces frameworks s&#8217;appuient donc sur une libraire de widgets solides,</li><li>Client : réécriture de l&#8217;application côté client dans une nouvelle technologie, nouvelle interface utilisateur, amélioration de la productivité mais un gros travail de refonte côté client. Nous parlons bien sûr des <a
title="GWT" href="http://code.google.com/intl/fr/webtoolkit/">GWT</a>, <a
title="Flex" href="http://www.adobe.com/fr/products/flex/">Flex</a> et Cie,</li><li>Full : la solution complète, riche, MVC, patterns de développement, à la fois une nouvelle expérience utilisateur mais aussi une réelle valeur ajoutée pour l&#8217;entreprise&#8230; mais nécessite des plateformes/technologies spécifiques côté client et serveur. On citera les <a
title="ZK" href="http://www.zkoss.org/">ZK</a> ou <a
title="Wicket" href="http://wicket.apache.org/">Wicket</a>.</li></ul><p>La conclusion sans surprise à la question (alors, laquelle ???) est bien sûr : <em>ça dépend&#8230;</em><br
/> En effet :</p><ul><li>tous les projets n&#8217;ont pas la même cible d&#8217;utilisateur,</li><li>et les technologies passent du Java au XML en passant par du JavaScript, autrement dit les compétences ne sont clairement pas les mêmes d&#8217;un framework à un autre.</li></ul><p>Alors entre <a
title="jQuery" href="http://jquery.com/">jQuery</a>, <a
title="ExtJS" href="http://extjs.com/">ExtJS</a>, <a
title="GWT" href="http://code.google.com/intl/fr/webtoolkit/">GWT</a> et <a
title="Flex" href="http://www.adobe.com/fr/products/flex/">Flex</a>, ce sera à vous et vous seul de choisir !</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="OpenXavaestdisponible"></a>OpenXava 3.1 est disponible</h4><p><a
title="OpenXava" href="http://www.gestion400.com/web/guest/home">OpenXava</a> est un ensemble d&#8217;outils et de composants destinés à simplifier le développement d&#8217;applications Web Java.</p><p><a
title="OpenXava" href="http://www.gestion400.com/web/guest/home">OpenXava</a> permet de générer des formulaires <a
title="CRUD" href="http://fr.wikipedia.org/wiki/CRUD">CRUD</a> à partir des POJOs et des annotations JPA. Il vous propose également d&#8217;intégrer des fonctionnalités avancées : la génération des rapports PDF, exports Excel, formulaire de recherche, tri, impression&#8230; Avec <a
title="OX" href="http://www.gestion400.com/web/guest/home">OX</a>, vous pouvez aussi créer des applications sophistiquées avec une logique complexe et des IHM avancées.</p><p>La nouvelle version 3.1 apporte AJAX dans vos applications générées. Pour ceux qui utilisent déjà <a
title="OX" href="http://www.gestion400.com/web/guest/home">OX</a> le passage à la version 3.1 permet &laquo;&nbsp;d&#8217;ajaxifier&nbsp;&raquo; vos applications sans toucher une seule ligne de code.</p><p>Le projet est fourni sous licence LGPL.</p><p>Plusieurs <a
title="démos" href="http://www.gestion400.com/web/guest/demos">démos</a> sont disponibles.</p><h4><a
name="JavaPersistenceAPIPublicDraft"></a>Java Persistence API 2.0 Public Draft</h4><p>La spécification <a
title="JSR 317: JavaTM Persistence 2.0" href="http://jcp.org/en/jsr/detail?id=317">JSR 317: JavaTM Persistence 2.0</a> est un public draft, comme l&#8217;annonce sur son blog la specification lead, Linda Demichiel (Sun Microsystems) : <a
title="Java Persistence 2.0 Public Draft" href="http://blogs.sun.com/ldemichiel/entry/java_persistence_2_0_public">Java Persistence 2.0 Public Draft</a>.</p><p>Une entrée précédente de la revue de de presse de Xebia : <a
title="JPA 2.0, la nouvelle version d'une API bien portante" 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>, annonçait l&#8217;ajout de l&#8217;API Criteria à la version 2 de JPA.</p><p>Linda Demichiel décrit sur son blog le fonctionnement possible de cette API Criteria : <a
title="Java Persistence 2.0 Public Draft: Criteria API" href="http://blogs.sun.com/ldemichiel/entry/java_persistence_2_0_public1">Java Persistence 2.0 Public Draft: Criteria API</a>.</p><p>Celle ci permet de construire des requêtes SQL en Java de manière programmatique. Cette technique présente les intérêts suivant :</p><ul><li>Les requêtes dynamiques sont plus faciles à construire et leurs constructions peuvent dépendre de données évaluées à l&#8217;exécution</li><li>Les fonctions des IDE permettent d&#8217;assister le développeur comme par exemple le refactoring, la complétion</li></ul><p>Cependant les requêtes sont plus difficiles</p><ul><li>A optimiser</li><li>A maintenir (plus difficile à lire)</li></ul><p>Ces requêtes sont construites à partir d&#8217;un object QueryDefinition obtenu à partir d&#8217;un EntityManager :</p><pre class="brush: java; title: ; notranslate">
EntityManager em = ... ;
QueryBuilder queryBuilder = em.getQueryBuilder();
</pre><p>Exemple de création de requête sur l&#8217;entité Customer :</p><pre class="brush: java; title: ; notranslate">
DomainObject customer = queryBuilder.createQueryDefinition(Customer.class);
</pre><p>En manipulant l&#8217;objet JPA DomainObject, on peut charger, par jointure, la relation customer-&gt;orders-&gt;items:</p><pre class="brush: java; title: ; notranslate">
DomainObject item = customer.join(&quot;orders&quot;).join(&quot;items&quot;);
</pre><p>Voici un exemple complet :</p><pre class="brush: java; title: ; notranslate">
DomainObject customer = queryBuilder.createQueryDefinition(Customer.class);
DomainObject item = customer.join(&quot;orders&quot;).join(&quot;items&quot;);
customer.where(item.get(&quot;productType&quot;).equal(&quot;printer&quot;))
.select(customer.get(&quot;name&quot;));
</pre><p>Comme le fait remarquer Gavin King dans l&#8217;article <a
title="A typesafe criteria query API for JPA" href="http://in.relation.to/Bloggers/ATypesafeCriteriaQueryAPIForJPA">A typesafe criteria query API for JPA</a>, il est dommage de manipuler des chaînes de caractères afin d&#8217;obtenir un attribut d&#8217;une classe. On perd un des intérêts de l&#8217;API Criteria : le refactoring et la complétion fournis par les IDE.</p><p>Ainsi, en reprenant l&#8217;exemple complet, si l&#8217;on renomme l&#8217;attribut name de la classe customer en firstName (avec notre IDE préféré), notre IDE sera incapable de changer le requête précédente de customer.get(&laquo;&nbsp;name&nbsp;&raquo;) à customer.get(&laquo;&nbsp;firstName&nbsp;&raquo;).</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/</link> <comments>http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/#comments</comments> <pubDate>Mon, 15 Dec 2008 18:02:24 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Grizzly]]></category> <category><![CDATA[Guice]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[PicoContainer]]></category> <category><![CDATA[SpringSource]]></category> <category><![CDATA[tc Server]]></category> <category><![CDATA[Tomcat]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1121</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Coopération entre SpringSource et Adobe tc Server : SpringSource signe la première offre open source professionnelle sur Tomcat Le coin de la technique Les orientations de GWT : Roadmap GWT 1.6 Java 7, ce n&#8217;est pas pour tout de suite&#8230; [...]]]></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/12/15/revue-de-presse-xebia-87/#CooprationentreSpringSourceetA">Coopération entre SpringSource et Adobe</a></li><li><a
href="http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/#tcServerSpringSourcesignelapre">tc Server : SpringSource signe la première offre open source professionnelle sur Tomcat</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/#LesorientationsdeGWTRoadmapGWT">Les orientations de GWT : Roadmap GWT 1.6</a></li><li><a
href="http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/#Javacenestpaspourtoutdesuite">Java 7, ce n&#8217;est pas pour tout de suite&#8230;</a></li><li><a
href="http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/#SortiedeGrizzly">Sortie de Grizzly 1.9</a></li><li><a
href="http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/#PrsentationdeGoogleGuice">Présentation de Google Guice 2.0</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="CooprationentreSpringSourceetA"></a>Coopération entre SpringSource et Adobe</h4><p>SpringSource renforce son positionnement sur les RIA en signant un accord de partenariat avec Adobe Systems. Un partenariat dont l&#8217;objectif est de simplifier le développement et le déploiement des applications RIA se basant sur Adobe Flex et Spring.</p><p>Adobe et SpringSource se sont alliés pour travailler sur Spring BlazeDS Integration, un projet open source qui vise à simplifier l&#8217;intégration de Spring avec Adobe&#8217;s BlazeDS. Une version bêta est prévue dans une ou deux semaines.</p><p>SpringSource a prévu pour l&#8217;année prochaine un nouvel adaptateur pour Adobe LiveCycle Data Services ES, qui permet d&#8217;instaurer un moteur d&#8217;échanges de données entre les applications RIA basées sur Flex et Spring.</p><p>Ce rapprochement permet à SpringSource de renforcer son positionnement sur les RIA.</p><h4><a
name="tcServerSpringSourcesignelapre"></a>tc Server : SpringSource signe la première offre open source professionnelle sur Tomcat</h4><p>Philip Hanik présente dans <a
href="http://www.springsource.com/node/1116" title=""SpringSource tc Server - The Tomcat you know. The enterprise capabilities you need."" >&laquo;&nbsp;SpringSource tc Server &#8211; The Tomcat you know. The enterprise capabilities you need.&nbsp;&raquo;</a> le périmètre du nouvellement annoncé tc Server.</p><p>On y retrouve tous les ingrédients de la version commerciale d&#8217;un produit open source professionnel :</p><ul><li>Support : de l&#8217;entrée de gamme &laquo;&nbsp;heures ouvrées&nbsp;&raquo; à la formule &laquo;&nbsp;mission critique 24&#215;365&#8243; avec une réponse dans l&#8217;heure</li><li>Packaging : livraison packagée avec les patchs nécessaires au client et des configurations et scripts de démarrage optimisés pour les différentes plateformes (32 vs 64 bits, etc).</li><li>Indemnisation : en cas de problème juridique concernant la nature Open Source de Tomcat.</li><li>Administration centralisée : ajout de mécanismes de gestion centralisée de serveurs Tomcat (configuration des serveurs, déploiement d&#8217;applications clusterisées [1] )</li><li>Audit : suivi des opérations réalisées sur les serveurs.</li><li>Monitoring et alertes : reprise des fonctionnalités de <a
href="http://www.springsource.com/files/SpringSource%20Application%20Management%20Suite%20Datasheet.pdf" title="SpringAMS" >SpringAMS</a> ( <a
href="http://www.hyperic.com/products/open-source-systems-monitoring.html" title="Hyperic HQ" >Hyperic HQ</a> + extensions de monitoring de Spring Framework).</li><li>Diagnostique : détection de thread lock, corrélation des erreurs avec les urls et les threads, mécanisme de <a
href="http://blog.springsource.com/2008/01/07/capturing-failures-and-system-state-part-i/" title="First Failure Data Capture (FFDC)" >First Failure Data Capture (FFDC)</a>.</li></ul><p>Si les premiers points étaient déjà couverts par des offres de support commercial (e.g. <a
href="http://www.springsource.com/products/ers" title="SpringSource Enterprise Ready Server" >SpringSource Enterprise Ready Server</a>), c&#8217;est la première offre de type <a
href="http://blogs.the451group.com/opensource/2008/09/01/andrew-lampitt-defines-open-core-licensing/" title="Open Core Licensing" >Open Core Licensing</a> pour Tomcat (noyau open source + extensions commerciales orientées administration).<br
/> Les éditeurs incitaient jusqu&#8217;à présent leurs clients intéressés par un support Tomcat à faire un <em>upsale</em> sur serveur plus sophistiqué (JBoss App. Server, Websphere App. Server Community Edition, Spring dm Server, etc).</p><p>Quel intérêt de payer 500$/an/cpu pour tc Server plutôt que d&#8217;utiliser Tomcat ? Outre le support qui sera important pour de nombreux exploitants, les fonctionnalités d&#8217;exploitations et de supervision présentent un intérêt à prendre en compte.</p><p>Nous noterons pour conclure que l&#8217;ensemble des fonctionnalités annoncées ne sera pas disponible dès la version 1.0 de tc Server.</p><p>[1] tc Server permet notamment des opérations install/update/start/stop/uninstall/rollback <em>phasées</em> sur des clusters pour mettre à jour les noeuds les uns après les autres sans arrêt du service.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="LesorientationsdeGWTRoadmapGWT"></a>Les orientations de GWT : Roadmap GWT 1.6</h4><p>La version actuelle de <a
href="http://code.google.com/intl/fr/webtoolkit/" title="GWT" >GWT</a> est la 1.5.3. L&#8217;équipe GWT a présenté sur son blog officiel les orientations de GWT 1.6 et des prochaines versions : <a
href="http://googlewebtoolkit.blogspot.com/2008/12/whats-ahead-for-google-web-toolkit_10.html" title="What's ahead for Google Web Toolkit" >What&#8217;s ahead for Google Web Toolkit</a>.</p><p>Ainsi, on observe que l&#8217;équipe GWT s&#8217;attaque à différents points :</p><ul><li><strong>Performance</strong></li><ul><li>De compilation pour améliorer la productivité du cycle de développement</li><li>D&#8217;exécution : optimisation de l&#8217;utilisation de la classe <code>StringBuilder</code> par exemple, des composants (cf <em>LazyPanel</em> plus bas)</li></ul><li>S&#8217;approcher des <strong>bonnes pratiques éprouvées dans la communauté Java</strong> : voici la spécification : <a
href="http://code.google.com/p/google-web-toolkit/wiki/WAR_Design_1_6" title="Design Doc for 1.6 WAR structure" >Design Doc for 1.6 WAR structure</a>. Ainsi, il sera possible de livrer les fichiers statiques (images, css) dans un répertoire hors de la WebApps. Actuellement tout est chargé via le <em>classpath</em>. Ces ressources statiques pourront être &laquo;&nbsp;<a
href="http://www.akamai.fr/" title="akamai" >akamai</a>-llisées&nbsp;&raquo; et aussi relivrées indépendamment de la WebApp.</li><li><strong>Richesse des composants</strong> : intégration de nouveaux composants qui étaient dans l&#8217;<a
href="http://code.google.com/intl/fr/docreader/#p=google-web-toolkit-incubator&#038;s=google-web-toolkit-incubator&#038;t=google-web-toolkit-incubator" title="incubateur de composants GWT" >incubateur de composants GWT</a></li><ul><li>Un calendrier : <a
href="http://code.google.com/intl/fr/docreader/#p=google-web-toolkit-incubator&#038;s=google-web-toolkit-incubator&#038;t=DatePicker" title="DatePicker" >DatePicker</a></li><li>Un <em>Panel</em> qui permet l&#8217;affichage du contenu d&#8217;un <em>Panel</em> lorsqu&#8217;on le souhaite afin d&#8217;améliorer les performances d&#8217;affichage : <a
href="http://code.google.com/intl/fr/docreader/#p=google-web-toolkit-incubator&#038;s=google-web-toolkit-incubator&#038;t=LazyPanel" title="LazyPanel" >LazyPanel</a></li></ul><li>Migration de Tomcat à Jetty pour le <em>Hosted Mode Server</em>.</li></ul><p>Cette version 1.6 est prévue pour le premier trimestre 2009.</p><p>Ils parlent aussi de la Roadmap GWT :</p><ul><li>Marwan KHELIF avec <a
href="http://www.mkhelif.fr/2008/12/11/gwt-16-quoi-de-neuf.html" title="GWT 1.6 : quoi de neuf" >GWT 1.6 : quoi de neuf ?</a></li><li>Thomas Recloux avec <a
href="http://blog.tartachuc.org/2008/12/11/roadmap-gwt-16/" title="Roadmap GWT 1.6" >Roadmap GWT 1.6</a></li><li>A voir aussi sur le site officiel de GWT <a
href="http://code.google.com/intl/fr/webtoolkit/makinggwtbetter.html" title="Making Gwt Better" >Making Gwt Better</a></li></ul><h4><a
name="Javacenestpaspourtoutdesuite"></a>Java 7, ce n&#8217;est pas pour tout de suite&#8230;</h4><p>Initialement prévu pour début 2009, nous n&#8217;avons toujours pas (peu) eu de détails officiels concernant celui-ci. Vous vous en doutiez, Java 7 ne sortira pas demain. Suite à une des conférences de Devoxx, nous en savons désormais un peu plus sur ce sujet : sa sortie décalée à <strong>début 2010</strong>.</p><p>Est-ce si lointain ? Pas vraiment,  à la vue de tous les différents qui tournent autour du Jdk 7 (modularité, closures &#8230;), il ne sera probablement pas trop d&#8217;une année pour résoudre tous ces sujets de discordes. Pour y arriver, des choix rapides et judicieux devront être pris, cette même conférence en a d&#8217;ailleurs laissé sous-entendre quelques-uns, en voici <a
href="http://hamletdarcy.blogspot.com/2008/12/java-7-update-from-mark-reinhold-at.html" title="les grandes lignes" >les grandes lignes</a>.</p><ul><li><strong>Modularité</strong> : point central de Java7, après la <a
href="http://blog.xebia.fr/2008/10/13/revue-de-presse-xebia-78/#JSROSGimatuerStanleyHo" title="mort programmée de la JSR-277" >mort programmée de la JSR-277</a>, la réconciliation avec OSGi devra sans doute passer par la <a
href="http://jcp.org/en/jsr/detail?id=294" title="JSR-294" >JSR-294</a> (sous-jacente) &#8211; <a
href="http://blog.xebia.fr/2008/02/27/jsr-294-les-superpackages/" title="les superpackages" >les superpackages</a>. Si quelques changements récents offrent des perspectives de réconciliation, l&#8217;aventure ne fait que commencer pour le sujet le plus <a
href="http://www.touilleur-express.fr/2008/12/13/devoxx-que-contiendra-java-7/" title="sensible du Jdk 7" >sensible du Jdk 7</a>. Le nouveau <a
href="http://blogs.sun.com/mr/entry/jigsaw" title="projet Jigsaw" >projet Jigsaw</a> qui doit permettre de partager à la communauté l&#8217;avancement des travaux <a
href="http://neilbartlett.name/blog/2008/12/08/hope-fear-and-project-jigsaw/" title="est déjà fortement controversé" >est déjà fortement controversé</a>.</li><li><strong>Les closures</strong> : la grande blague ; le jdk7 ne proposera finalement pas cette fonctionnalité. Aucun consensus n&#8217;ayant été trouvé à ce sujet par la communauté : celles-ci sont pour le moment <em>déscopées</em>.</li><li><strong>Les nouvelles API</strong> :  aucun scoop à ce sujet. Nous en connaissions déjà les principales : nio2 (<a
href="http://jcp.org/en/jsr/detail?id=203" title="JSR-203" >JSR-203</a>) et JodaTime (<a
href=" http://jcp.org/en/jsr/detail?id=310" title="JSR-310" >JSR-310</a>).</li><li><strong>Évolutions du langage</strong> : C&#8217;est Joseph D. Darcy qui sera chargé de définir et regrouper les <a
href="http://blogs.sun.com/darcy/entry/guidance_measure_language_change_size" title="petites" >petites</a> évolutions du langage pour le Jdk 7. Pour <a
href=" http://blogs.sun.com/darcy/entry/small_language_changes_jdk_7" title="cette future nouvelle JSR" >cette future nouvelle JSR</a> (sa 3e après <a
href="http://jcp.org/en/jsr/detail?id=13" title="JSR-13" >JSR-13</a> et <a
href="http://jcp.org/en/jsr/detail?id=269" title="JSR-269" >JSR-269</a>), il a prévu d&#8217;impliquer d&#8217;avantage la communauté pour ce point facilement sujet à controverse. Son idée est de proposer et demander les retours de la communauté en amont du processus pour éviter toute controverse.  Avant même que la JSR ne soit proposée en draft, les grandes lignes de celles-ci devraient en être définies, disponibles et discutées sur un <a
href="http://mail.openjdk.java.net/pipermail/announce/2008-December/000065.html" title="projet spécifique de l'open JDK" >projet spécifique de l&#8217;open JDK</a>. Cette JSR est prévue pour sortir au cours du premier semestre 2009.</li></ul><p>À ce propos, vous vous demandez peut-être comment va-t-il s&#8217;y prendre pour intégrer ces changements ? C&#8217;est peut-être également l&#8217;occasion de revenir sur un de ces anciens articles présentant les différentes étapes à suivre pour <a
href="http://blogs.sun.com/darcy/entry/so_you_want_to_change" title="ajouter des fonctionnalités dans le jdk " >ajouter des fonctionnalités dans le jdk </a>.</p><h4><a
name="SortiedeGrizzly"></a>Sortie de Grizzly 1.9</h4><p><a
href="http://weblogs.java.net/blog/jfarcand/archive/2008/12/grizzly_190_is.html" title="Grizzly 1.9 est sorti" >Grizzly 1.9 est sorti</a>, à noter que la version 2.0 est prévue pour la fin de l&#8217;année. <a
href="https://grizzly.dev.java.net/" title="Grizzly" >Grizzly</a> est un framework Sun pour aider les développeurs à <strong>construire des serveurs robustes et scalables</strong> en utilisant l&#8217;API Java NIO (et NIO 2). Il met aussi à disposition le support de différents protocoles :</p><ul><li><strong><a
href="http://en.wikipedia.org/wiki/Comet_(programming)" title="<strong>Comet</strong>&nbsp;&raquo; ><strong>Comet</strong></a></strong>, qui permet à un serveur de pousser des informations au client.</li><li>Bayeux Protocol, qui permet une communication continue et bilatérale entre un serveur et un client</li><li>Servlet (support partiel)</li></ul><p>Il est aussi possible de développer un client serveur sur HTTP plus classique (sans push de donnée serveur). Cependant, ce n&#8217;est plus la vocation première du framework Grizzly.</p><p>À titre d&#8217;exemple, le serveur d&#8217;applications <a
href="https://glassfish.dev.java.net/" title="Glassfish" >Glassfish</a> utilise Grizzly comme HTTP Listener.</p><p>Les nouveautés de cette version sont :</p><ul><li>Support des I/O asynchrones (NIO2, <a
href="http://blog.xebia.fr/2008/07/21/revue-de-presse-xebia-66/#JSRMoreNewIOAPIsfortheJavaPlat" title="Xebia en avait parlé" >Xebia en avait parlé</a>), cela permet d&#8217;améliorer grandement les performances</li><li>Support des <em>HTTP write</em> asynchrones</li><li><code>GrizzlyAdapterChain</code> supporte maintenant plusieurs adapteurs et peut transformer les requêtes d&#8217;entrées à la volée</li><li>Le framework Comet a amélioré ses performances. À voir aussi un exemple d&#8217;implémentation utilisant GrizzlyComet : <a
href="http://weblogs.java.net/blog/jfarcand/archive/2008/11/writing_a_twitt.html" title="Writing a Twitter like application using Grizzly Comet part 1: The Servlet" >Writing a Twitter like application using Grizzly Comet part 1: The Servlet</a>.</li></ul><h4><a
name="PrsentationdeGoogleGuice"></a>Présentation de Google Guice 2.0</h4><p>La sortie Guice 2.0 est attendue pour décembre 2008 donc très prochainement.</p><p>À l&#8217;image de Spring, Guice est un framework d&#8217;injection de dépendances. Cependant, Guice se démarque de Spring dans la mesure où Guice fonctionne sans aucun XML. La configuration et le tissage des dépendances se font de manière programmatique. Il utilise les annotations du langage Java 5.</p><p>Guice se veut être un framework léger et facile à intégrer. Il existe d&#8217;ailleurs un plugin Struts pour gérer l&#8217;injection de dépendances en Guice.</p><p>L&#8217;article <a
href="http://www.ibm.com/developerworks/java/library/j-guice.html" title="Dependency injection with Guice" >Dependency injection with Guice</a> de Nicholas Lesoecki, employé à Google, présente le fonctionnement de Guice.</p><p>Voici le fonctionnement du Guice d&#8217;un point de vue programmatique :</p><pre class="brush: java; title: ; notranslate">
@Inject
public FrogMan(Vehicle vehicle) {
  this.vehicle = vehicle;
}
</pre><p>Le tissage s&#8217;effectue aussi de manière programmatique, ce qui le différencie radicalement de Spring :</p><pre class="brush: java; title: ; notranslate">
public class HeroModule implements Module {
  public void configure(Binder binder) {
    binder.bind(Vehicle.class).to(FrogMobile.class);
  }
}
</pre><p>Le tissage est donc réalisé dans un <code>Module</code>.</p><p>Ensuite le contexte Guice se démarre comme suit :</p><pre class="brush: java; title: ; notranslate">
public class Adventure {
  public static void main(String[] args){
    Injector injector = Guice.createInjector(new HeroModule());
    FrogMan hero = injector.getInstance(FrogMan.class);
    hero.fightCrime();
  }
}
</pre><p>Il est possible d&#8217;injecter une dépendance par :</p><ul><li>Constructeur, c&#8217;est la méthode la plus simple, par forcément la plus élégante en Spring</li><li>Méthode</li><li>Attribut de classe</li></ul><p>Cependant, un problème peut se poser par rapport à l&#8217;exemple précédent : comment injecter plusieurs véhicules ? Solution : il faut nommer les cibles en créant ses propres annotations pour l&#8217;injection :</p><pre class="brush: java; title: ; notranslate">
@Inject
public WeaselGirl(@Fast Vehicle vehicle) {
  this.vehicle = vehicle;
}
</pre><p>Code source du tissage :</p><pre class="brush: java; title: ; notranslate">
public class HeroModule implements Module {
 public void configure(Binder binder) {
    binder.bind(Vehicle.class).to(FrogMobile.class);
    binder.bind(Vehicle.class).annotatedWith(Fast.class).to(WeaselCopter.class);
  }
}
</pre><p>Code source de la déclaration de l&#8217;annotation :</p><pre class="brush: java; title: ; notranslate">
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.PARAMETER})
@BindingAnnotation
public @interface Fast {}
</pre><p>Les nouveautés de cette version sont présentées sur le site officiel : <a
href="http://code.google.com/p/google-guice/wiki/Changes20" title="Changes in Guice 2" >Changes in Guice 2</a>. On y trouve entre autre :</p><ul><li>Implémentation de l&#8217;AOP</li><li>Surcharge du binding d&#8217;un module à un autre</li><li>Binding des éléments d&#8217;un tableau <code>Set</code> ({{Multibinding}}) ou <code>Map</code> ({{Mapbinding}})</li><li>Convertisseur de type branchable, par exemple, pour convertir une chaîne de caractères en date</li></ul><p>Même si Guice est loin d&#8217;avoir la maturité de Spring ou même autant de fonctionnalités que ce dernier, il propose une approche de l&#8217;injection de dépendances très pragmatique.</p><p>Une étude sur la comparaison des versions Guice 1.0 et Spring 2.0.2 (<a
href="http://www.jroller.com/habuma/entry/guice_vs_spring_javaconfig_a" title="Guice vs. Spring JavaConfig: A comparison of DI styles" >Guice vs. Spring JavaConfig: A comparison of DI styles</a>) arrive aux conclusions suivantes :</p><ul><li>Performance : Guice est plus rapide, mais est-ce vraiment important car généralement les dépendances sont chargées au démarrage de l&#8217;application ?</li><li>Modèle de programmation Guice plus intrusif : il est dommage de devoir mettre un <code>@inject</code> dans les objets Guice qui peuvent être injectés</li><li>Spring AOP est plus puissante</li><li>Guice est plus facile à intégrer (il y a seulement 2 <em>Jars</em> à intégrer)</li></ul><p>À voir également : deux liens intéressants sur l&#8217;injection de dépendance issus de la documentation de <a
href="http://www.picocontainer.org/" title="PicoContainer" >PicoContainer</a>, autre implémentation pour l&#8217;injection de dépendance :</p><ul><li><a
href="http://picocontainer.org/patterns.html" title="Design patterns" >Design patterns</a>, règles a avoir en tête lorsque l&#8217;on fait de l&#8217;injection de dépendance</li><li><a
href="http://picocontainer.org/inversion-of-control-history.html" title="Inversion of Control history" >Inversion of Control history</a>, tout sur l&#8217;injection de dépendance</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> </channel> </rss>
