<?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; jdk-7</title> <atom:link href="http://blog.xebia.fr/tag/jdk-7/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/03/01/revue-de-presse-xebia-200/</link> <comments>http://blog.xebia.fr/2011/03/01/revue-de-presse-xebia-200/#comments</comments> <pubDate>Tue, 01 Mar 2011 14:00:44 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[DevOps]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[Jdk7]]></category> <category><![CDATA[JRuby]]></category> <category><![CDATA[LiveRebel]]></category> <category><![CDATA[Netbeans]]></category> <category><![CDATA[Secteur Public]]></category> <category><![CDATA[Zeroturnaround]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=7096</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Zeroturnaround ouvre la bêta de LiveRebel JDK 7, Developper Preview SOA Integration sur le cloud Le coin de la technique NetBeans 7 ne supporte plus Ruby : la communauté, si Evènements de notre communauté en France et à l&#8217;étranger DevOps [...]]]></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/2011/03/01/revue-de-presse-xebia-200/#ZeroturnaroundouvrelabtadeLive">Zeroturnaround ouvre la bêta de LiveRebel</a></li><li><a
href="http://blog.xebia.fr/2011/03/01/revue-de-presse-xebia-200/#JDKDevelopperPreview">JDK 7, Developper Preview</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/03/01/revue-de-presse-xebia-200/#Integrationsurlecloud">Integration sur le cloud</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/03/01/revue-de-presse-xebia-200/#NetBeansnesupporteplusRubylaco">NetBeans 7 ne supporte plus Ruby : la communauté, si</a></li></ul><p><strong>Evènements  de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/03/01/revue-de-presse-xebia-200/#DevOpsDayBostonleetmars">DevOps Day à Boston le 7 et 8 mars</a></li><li><a
href="http://blog.xebia.fr/2011/03/01/revue-de-presse-xebia-200/#NominationdunDSIGroupedeltat">Nomination d&#8217;un &laquo;&nbsp;DSI Groupe&nbsp;&raquo; de l&#8217;état</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="ZeroturnaroundouvrelabtadeLive"></a>Zeroturnaround ouvre la bêta de LiveRebel</h4><p>ZeroTurnaround est la société auteur du fameux <a
title="JRebel" href="http://www.zeroturnaround.com/jrebel">JRebel</a>. Cette librairie, qui a déjà quelques années et rencontre un certain succès, permet de changer &laquo;&nbsp;à chaud&nbsp;&raquo; le code Java. Pendant le développement, on évite donc d&#8217;avoir à attendre un redéploiement et l&#8217;on peut tester rapidement ses modifications. Si le <em>hot-reload</em> (nommé Hotswap) existe de base en Java, il a des limitations que JRebel permet en grande partie <a
title="de contourner" href="http://java.dzone.com/articles/reloading-java-classes-401">de contourner</a>.<br
/> Les petits malins de ZeroTurnaround continuent donc dans la même direction et <a
title="nous sortent LiveRebel" href="http://www.zeroturnaround.com/blog/zeroturnaround-opens-liverebel-public-beta">nous sortent LiveRebel</a>, équivalent de JRebel mais pour la <strong>production</strong>. Le bêta-test est donc ouvert à tous et cette version permet de contrôler jusqu&#8217;à trois serveurs. Comme JRebel, la version définitive sera payante.</p><p>Grâce à sa console tournant sur son propre serveur, <a
title="LiveRebel" href="http://www.zeroturnaround.com/liverebel/">LiveRebel</a>, permet de:</p><ul><li>prendre en charge des nouvelles versions des applis (jar, ear, war) avec prise en charge:<ul><li>des modifications de code (sauf remplacement d&#8217;interface et changement de superclasse)</li><li>des changements dans les ressources</li></ul></li><li>lister les différences entre 2 versions</li><li>déployer une nouvelle version ou effectuer un <em>rollback</em> du code</li><li>utiliser une API REST pour automatiser le contrôle des différentes actions</li></ul><p>Pour plus de renseignements, la <a
title="FAQ" href="http://www.zeroturnaround.com/liverebel/faq">FAQ</a> ainsi qu&#8217;un <a
title="walkthrough" href="http://www.zeroturnaround.com/liverebel-private-beta/installation-and-configuration-walkthrough">walkthrough</a> sont à votre disposition.</p><p>La console avec les différences entre 2 déploiements:</p><p
style="text-align: center;"><img
class="aligncenter" src="http://www.zeroturnaround.com/wp-content/uploads/2010/10/prepareActivation.png" alt="La console avec les différences entre 2 déploiements" /></p><p>Tout cela donne envie et on a tendance à se demander &laquo;&nbsp;mais pourquoi ça n&#8217;existait pas encore. ?!&nbsp;&raquo;. Néanmoins, on se gardera de se réjouir trop vite. Il serait très risqué de s&#8217;aventurer à tester du code en production en pensant que l&#8217;on pourra toujours le patcher à la volée. En effet le versionnement des données reste a prendre en compte: si un code bancal enregistre des données en base avec une erreur, il faudra y remédier en prévoyant:</p><ul><li>soit une verrue dans le code traitant ces cas particuliers</li><li>soit un update correctif de la base</li></ul><p>C&#8217;est donc certes faisable et LiveRebel reste une belle évolution, ne serait-ce que pour remédier rapidement aux bugs sans impact sur les données. Mais, et sans remettre en cause la qualité de la librairie, ce n&#8217;est pas l&#8217;arme absolue. Si l&#8217;on peut se permettre de faire abstraction de certaines problématiques sur un poste de développeur, il faudra bien se garder de toute précipitation sur &laquo;&nbsp;la prod&#8217;&nbsp;&raquo;. Par ailleurs, et c&#8217;est étonnant, le <a
title="forum" href="http://www.zeroturnaround.com/forum/">forum</a> du produit semble encore bien vide. Est-ce à dire que le produit est déjà parfait et sans bugs ?</p><h4><a
name="JDKDevelopperPreview"></a>JDK 7, Developper Preview</h4><p>JDK 7 est à présent <a
title="disponible" href="http://blogs.sun.com/mr/entry/jdk7_preview">disponible</a> pour les développeurs. Alors que le dernier <em>milestone</em> avait pour objectif de finaliser la liste des nouvelles fonctionnalités, cette version ( <em>milestone 12</em> ) est relativement proche de la version finale et les développeurs sont invités à se l’approprier afin de faire la chasse aux bugs. La <a
title="page de rapport de bug d’Oracle" href="http://bugreport.sun.com/bugreport/">page de rapport de bug d’Oracle</a> ou ses <a
title="forums" href="http://www.java.net/forums/jdk/java-se-snapshots-project-feedback">forums</a> sont à votre disposition pour toutes remarques. Alors à vous de jouer en téléchargeant le dernier build <a
title="ici" href="http://jdk7.java.net/preview/">ici</a>.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="Integrationsurlecloud"></a>Integration sur le cloud</h4><p>Mulesoft a ouvert au public il y a quelques jours une version bêta de Mule iON, sa nouvelle <em>plateforme d&#8217;intégration en tant que service</em> (iPAAS). L&#8217;idée est de mettre à disposition un ESB qui fera le lien entre l&#8217;entreprise et ses différentes applications (voire services) sur le cloud.<br
/> Les principaux freins au déplacement <a
title="des ESB vers les nuages" href="http://blog.xebia.fr/2010/09/02/des-esbs-et-des-nuages/">des ESB vers les nuages</a> restent  les grandes inconnues du cloud : la sécurité, la répudiation, l&#8217;identification, la prise de contrôle&#8230; Mule iON tente de résoudre ces problématiques, en fournissant une gateway sécurisée, pour permettre à vos applications hébergées de communiquer avec vos clouds et les réseaux sociaux.<br
/> Il va de soit qu&#8217;une telle solution ne s&#8217;adresse qu&#8217;à de gros consommateurs de clouds (ceux qui ont plusieurs hébergeurs) ou des réseaux sociaux, avec d&#8217;importants besoins d&#8217;orchestration. Néanmoins, cela permet de s&#8217;abstraire de la gestion d&#8217;une infrastructure complexe dédiée à cette intégration de plus en plus difficile. Cette tendance, à surveiller, est peut être appelée à se développer fortement ces prochaines années, la multiplication des SaaS aidant.<br
/> MuleSoft ne propose pour l&#8217;instant pas d&#8217;élément de prix. La bêta de Mule iON se trouve <a
title="ici" href="http://www.mulesoft.com/mule-ion-signup">ici</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="NetBeansnesupporteplusRubylaco"></a>NetBeans 7 ne supporte plus Ruby : la communauté, si</h4><p>Fin janvier, Oracle annonçait la fin du support Ruby dans l&#8217;IDE NetBeans. Cependant, la communauté des développeurs Ruby utilisant NetBeans ne s&#8217;y résout pas. Tom Enebo, l&#8217;un des committers principaux du projet JRuby, a annoncé dans <a
title="un article sur DZone" href="http://netbeans.dzone.com/news/ruby-netbeans-lives">un article sur DZone</a>, le lancement du NetBeans Ruby Project. Cette initiative vise à assurer la continuité du support de Ruby au sein de l&#8217;IDE Oracle. Tom travaille à plein temps sur le développement de JRuby, sur lequel NetBeans a basé son support du langage jusqu&#8217;ici. Il a déjà annoncé que certains de ses camarades, piliers de JRuby, participeraient également au projet : Charles Nutter, Nick Sieger et Yoko Harada.</p><p>Tom Enebo a également été <a
title="interview par DZone" href="http://netbeans.dzone.com/interview-tom-enebo-nb-1">interviewé par DZone</a> à ce sujet pour fournir plus de détails. L&#8217;appel est donc lancé à la communauté pour toutes les bonnes volontés qui souhaitent continuer à utiliser Ruby au sein de NetBeans. La structure du projet n&#8217;est pas encore complètement définie mais le projet existe. Merci à Tom et à tous les futurs contributeurs.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements  de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="DevOpsDayBostonleetmars"></a>DevOps Day à Boston le 7 et 8 mars</h4><p><a
title="DevOps" href="http://en.wikipedia.org/wiki/DevOps">DevOps</a>, a pour objectif de réduire le mur d&#8217;incompréhensions entre les équipes de développement et les équipes d&#8217;exploitation.<br
/> Le premier évènement de l&#8217;année (DevOps Day) qui lui est consacré s&#8217;est tenu à <a
title="Los Angeles" href="http://www.socallinuxexpo.org/scale9x/special-events/devops-day-los-angeles">Los Angeles</a> la semaine dernière. L&#8217;une des présentations <a
title="DevOps  State Of the Union" href="http://www.socallinuxexpo.org/scale9x/presentations/devops-state-union">&laquo;&nbsp;DevOps : State Of the Union&nbsp;&raquo;</a> est un recueil d&#8217;interview d&#8217;experts du secteur sur &laquo;&nbsp;où nous en sommes&nbsp;&raquo; et &laquo;&nbsp;où nous allons&nbsp;&raquo;. Ces experts parlent de leurs outils et de leurs idées pour faire de DevOps une réalité.<br
/> Le prochain évènement aura lieu à Boston, les 7 et 8 mars prochains. <a
title="Le programme" href="http://www.devopsdays.org/events/2011-boston/program/">Le programme</a> alterne des Open Spaces et des présentations formelles.<br
/> Un de ses organisateurs, <a
title="Patrick Debois" href="http://twitter.com/patrickdebois">Patrick Debois</a>, en a d&#8217;ailleurs effectué fait hier soir au <a
title="3me anniversaire du ParisJug" href="http://www.parisjug.org/xwiki/bin/view/Meeting/20110228">3ème anniversaire du ParisJug</a>. Il a rappelé que la priorité devait être toujours la satisfaction du client. Au travers de petites phrases comme &laquo;&nbsp;le développement n&#8217;a aucune valeur avant que ça fonctionne en production&nbsp;&raquo;, il insiste pour que toutes les équipes travaillent ensemble. Pour ce faire, l&#8217;un des principaux moyens est de mieux s&#8217;outiller pour, à terme, obtenir des déploiements reproductibles.</p><h4><a
name="NominationdunDSIGroupedeltat"></a>Nomination d&#8217;un &laquo;&nbsp;DSI Groupe&nbsp;&raquo; de l&#8217;état</h4><p>Le conseil des ministres vient de nommer un &laquo;&nbsp;DSI Groupe&nbsp;&raquo; de l&#8217;état : Jérôme Filippini. Il va être en charge de la coordination des différentes DSI de chaque administration et de l&#8217;optimisation de leur fonctionnement, notamment par la mutualisation de moyens. En tant que société de services, il est intéressant de savoir ce qui se cache derrière la mutualisation des moyens et quelles vont en en être les conséquences. Réduction des postes dans les DSI ? Création de cellules transverses ? De centre de compétences ? Mutualisation des infrastructures ? Nouvelles applications communes à toutes les administrations ? Affaire à suivre&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/03/01/revue-de-presse-xebia-200/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/</link> <comments>http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#comments</comments> <pubDate>Mon, 23 Nov 2009 19:07:04 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[JEE 6]]></category> <category><![CDATA[Maven 3.0]]></category> <category><![CDATA[owasp]]></category> <category><![CDATA[Quartz]]></category> <category><![CDATA[Terracotta]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3296</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Terracotta a faim d&#8217;Open Source : acquisition de Quartz JDK 7, JEE 6, et Maven 3.0 : les annonces de Devoxx RIA GWT version 2.0 RC1 Le coin de la technique OWASP Security Top Ten, la cuvée 2010 est arrivée [...]]]></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/23/revue-de-presse-xebia-135/#TerracottaafaimdOpenSourceacqu">Terracotta a faim d&#8217;Open Source : acquisition de Quartz</a></li><li><a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#JDKJEEetMavenlesannoncesdeDevo">JDK 7, JEE 6, et Maven 3.0 : les annonces de Devoxx</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#GWTversionRC">GWT version 2.0 RC1</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#OWASPSecurityTopTenlacuveestar">OWASP Security Top Ten, la cuvée 2010 est arrivée</a></li><li><a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#QuedevientSpringRichClient">Que devient Spring Rich Client ?</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/23/revue-de-presse-xebia-135/#Devoxx">Devoxx 2009</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="TerracottaafaimdOpenSourceacqu"></a>Terracotta a faim d&#8217;Open Source : acquisition de Quartz</h4><p>Terracotta a annoncé cette semaine <a
href=" http://terracotta.org/news/terracotta-acquires-quartz" title="l'acquisition de Quartz" >l&#8217;acquisition de Quartz</a>, le scheduler open source le plus connu est le mieux intégré du marché. Cette acquisition est <a
href="http://blog.xebia.fr/2009/08/24/revue-de-presse-xebia-123/#AcquisitiondEhcacheparTerracot" title="lexacte copie de celle opre cet t avec Ehcache" >l&#8217;exacte copie de celle opérée cet été avec Ehcache</a>. Tout comme ehCache, Quartz est un projet open source, largement utilisé et bien intégré avec la plupart des solutions stars de leur secteur &#8230; et porté par un seul homme (James House). Cible idéale pour Terracotta ? Probablement. Mais il se pose toujours la question suivante : comment Terracotta compte t&#8217;il rentabiliser cette acquisition, quand on sait a quel point la monétisation d&#8217;un projet open source est difficile. Quoi qu&#8217;il arrive, d&#8217;ici la prochaine acquisition, Terracotta touche, par ce biais, une communauté de plus en plus large. Cela sera-t-il suffisant pour séduire un éventuel racheteur ?</p><p>D&#8217;autre part, comme le signale <a
href="http://puredanger.com/tech/2009/11/19/terracotta-acquires-quart/" title="Alex Miller" >Alex Miller</a>, Quartz c&#8217;est :</p><ul><li>Un nouveau <a
href="http://www.quartz-scheduler.org/" title="site web" >site web</a>.</li><li>Un nouveau <a
href="http://svn.terracotta.org/svn/quartz/" title="gestionnaire de sources" >gestionnaire de sources</a>.</li><li>Un nouveau <a
href="http://jira.terracotta.org/jira/browse/QTZ" title="gestionnaire danomalies" >gestionnaire d&#8217;anomalies</a>.</li><li>Un nouveau <a
href=" http://forums.terracotta.org/forums/forums/show/17.page" title="forum" >forum</a>.</li><li>Mais toujours la même licence, Apache 2.</li></ul><h4><a
name="JDKJEEetMavenlesannoncesdeDevo"></a>JDK 7, JEE 6, et Maven 3.0 : les annonces de Devoxx</h4><p>La conférence Devoxx ayant eu lieu la semaine dernière a été l&#8217;occasion de plusieurs annonces importantes qui ont rapidement fait le tour de la blogosphère.</p><p><strong>JDK 7 avec les closures, mais retardé à nouveau</strong></p><p>C&#8217;est surement l&#8217;annonce qui à fait le plus de bruit. Elle s&#8217;est répandue comme une trainée de poudre tant elle était inattendue. Lors d&#8217;une présentation en apparence sans surprise sur les nouveautés du JDK 7, Mark Reinhold explique que le temps est venu pour Java de supporter les <em>closures</em>. Afin de permettre leur implémentation, la finalisation du JDK 7 est repoussée à septembre 2010. Trois nouveaux <em>milestones</em> sont donc ajoutés au calendrier initial avec une finalisation des fonctionnalités <em>(features complete)</em> prévue pour Juin 2010. Ce nouveau délai permet donc à l&#8217;équipe du JDK de travailler sereinement sur la finalisation de Jigsaw, d&#8217;implémenter les <em>closures</em>, et devrait vraisemblablement permettre également l&#8217;inclusion du <a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000003.html" title="multicatch pour les exceptions" >multi-catch pour les exceptions</a>.</p><p>En fait ce délai semble laisser la possibilité à de nombreuses autres fonctionnalités et spécifications qui avaient été mises de coté de prétendre de nouveau intégrer le JDK 7. On peut ainsi imaginer :</p><ul><li>JMX 2, qui avait <a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#QuedevientJMX" title="t repouss au JDK 8" >été repoussé au JDK 8</a></li><li>La <a
href="http://www.jcp.org/en/jsr/detail?id=310" title="JSR-310 (Date and Time API)" >JSR-310 (Date and Time API)</a> qui avait connu des difficultés par manque de contributions et <a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#EnfinuneroadmapdtaillepourleJD" title="navait finalement pas t incluse" >n&#8217;avait finalement pas été incluse</a> à la liste <em>finale</em> des fonctionnalités du JDK 7</li><li>La <a
href="http://www.jcp.org/en/jsr/detail?id=296" title="JSR-296 (Swing Application Framework)" >JSR-296 (Swing Application Framework)</a> dont le retrait du JDK 7 <a
href="http://blog.xebia.fr/2009/08/24/revue-de-presse-xebia-123/#PasdeSwingApplicationFramework" title="avait t annonc cet t" >avait été annoncé cet été</a></li><li>Le <a
href="http://www.jroller.com/scolebourne/entry/java_7_properties_terminology" title="support des proprits" >support des propriétés</a></li></ul><p>Questionné à Devoxx sur l&#8217;étendue des fonctionnalités pouvant être concernées par une potentielle inclusion, Mark Reinhold ne ferme la porte à aucune hypothèse. Il explique ainsi qu&#8217;il n&#8217;a pas eu l&#8217;occasion de voir de <em>proposal</em> pour les propriétés qui lui semblait satisfaisante jusqu&#8217;à présent mais n&#8217;exclue pas une telle possibilité d&#8217;ici la finalisation des fonctionnalités du JDK 7.</p><p><strong>JEE 6 finalisé en décembre</strong></p><p>Lors du <em>keynote</em> du premier jour des conférences, Roberto Chinnici (<em>Spec lead</em> JEE 6) a annoncé la finalisation de l&#8217;ensemble des spécifications JEE 6 ainsi que de l&#8217;implémentation de référence associée (<a
href="https://glassfish.dev.java.net/" title="Glassfish V3" >Glassfish V3</a>) pour le 10 décembre 2009.</p><p>Cette nouvelle intervient alors que JEE 6 a été très bien accueilli par le public à Devoxx comme il l&#8217;a été maintes fois répété dans <a
href="http://lescastcodeurs.com/2009/11/les-cast-codeurs-episode-12-special-devoxx-2009/" title="le dernier pisode des Cast Codeurs" >le dernier épisode des Cast Codeurs</a>.</p><p><strong>Maven 3.0 finalisé en Janvier</strong></p><p>Cette annonce est passée plus inaperçue parmi l&#8217;actualité de Sun. Pourtant Jason van Zyl, lors de sa présentation des nouveautés de Maven 3.0, a annoncé une finalisation de la nouvelle version de son outil de <em>build</em> pour la fin janvier 2010.</p><p>Cette nouvelle version apportera le support des <a
href="http://www.sonatype.com/people/2009/11/maven-3x-community-participation-multi-threaded-execution/" title="builds multithreadés" >builds multithreadés</a> ainsi qu&#8217;un <a
href="http://www.sonatype.com/people/2009/11/maven-3x-community-participation-multi-threaded-execution/" title="environnement de base" >environnement de base</a> pour les extensions très intéressantes que sont Polyglot Maven et Maven Shell.</p><p>Nous publierons rapidement un article plus détaillé sur l&#8217;ensemble des nouveautés à venir sur Maven 3.x.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="GWTversionRC"></a>GWT version 2.0 RC1</h4><p>Une nouvelle version majeure du RIA de Google, <a
href="http://code.google.com/intl/fr/webtoolkit/" title="GWT" >GWT</a>, sort en <a
href="http://code.google.com/p/google-web-toolkit/wiki/GWT_2_0_RC" title="version 20 RC 1" >version 2.0 RC 1</a>. Cependant, aucune date de sortie n&#8217;est encore annoncée.<br
/> Cette version s&#8217;accompagne d&#8217;un plugin pour Eclipse, nommé Google Plugin for Eclipse 1.2 RC1, dont l&#8217;on recommande vivement la mise à jour.<br
/> Parmi les nouveautés, on peut citer:</p><ul><li>Utilisation du Development Mode (anciennement appelé Hosted Mode) dans le navigateur de votre choix via un plugin.</li><li>Possibilité de fragmenter le code JavaScript généré en plusieurs morceaux en utilisant GWT.runAsync() va permettre d&#8217;accélérer considérablement les temps de chargement.</li><li>Story Of Your Compile (SOYC) génère un rapport sur le processus de compilation et permet d&#8217;avoir une meilleure vision du code généré.</li><li>Facilitation de la création d&#8217;IHM par déclaration avec Ui Binder.</li><li>Apparition d&#8217;un ClientBundle, similaire au ImageBundle, qui permet la généralisation du sprinting à d&#8217;autres formats les fichiers textes, css, etc.</li><li>Utilisation de HtmlUnit pour les tests unitaires, qui permet maintenant de débugger directement dans le débuggeur Java.</li></ul><p>Les nouveautés sont donc nombreuses et apportent un réel gain de productivité.<br
/> Le combat auquel se livrent actuellement les RIA est loin d&#8217;être terminé&#8230;</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="OWASPSecurityTopTenlacuveestar"></a>OWASP Security Top Ten, la cuvée 2010 est arrivée</h4><p>Après le Beaujolais Nouveau et le calendrier des pompiers, c&#8217;est au tour de l&#8217;OWASP de faire son annonce avec la <a
href="http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project" title="mouture 2010 de son "Security Top Ten"" >mouture 2010 de son &laquo;&nbsp;Security Top Ten&nbsp;&raquo;</a>. En attendant de rédiger un billet complet sur ces failles et leur prévention en Java, voici un <a
href="http://www.slideshare.net/XebiaFrance/xebia-knowledge-exchange-owasp-top-ten-2565878" title="lien vers une prsentation que nous avions fait pour une formation interne" >lien vers une présentation que nous avions fait pour une formation interne</a> et la liste 2010 avec une présentation très succincte des parades dont nous disposons en Java :</p><p><strong>A1 &#8211; Injection :</strong> injection sql, hibernate ql, jpa ql, http, etc.<br
/> Utiliser des prepared statements, les paramètres de commons http, etc.</p><p><strong>A2 &#8211; Cross Site Scripting (XSS)</strong><br
/> Utiliser JSR 303 Bean Validation pour valider les données entrantes et <em>escaper</em> les données sortantes avec JSTL ou un équivalent.</p><p><strong>A3 &#8211; Failles d&#8217;Authentification et de gestion de Gestion de Session</strong><br
/> Utiliser Spring Security ou les mécanismes du moteur de servlet.</p><p><strong>A4 &#8211; Référence Directe Non Sécurisée aux Objets de données</strong><br
/> Revalider tous les ID provenants des requêtes HTTP ou utiliser un <em>aliasing par random</em> (cf. org.owasp.esapi.AccessReferenceMap).</p><p><strong>A5 &#8211; Cross Site Request Forgery (CSRF)</strong></p><p>Protéger les invocations d&#8217;URL par le contrôle d&#8217;un nombre aléatoire généré côté serveur. En cas de risque majeur, utiliser un framework Web de description de flow (Spring Web Flow, JBoss Seam, etc).</p><p><strong>A6 &#8211; Mauvaise configuration de sécurité (Nouveau)</strong><br
/> Utiliser les installation standard des systèmes d&#8217;exploitation et des middlewares, restreindre les droits des utilisateurs unix, etc.</p><p><strong>A7 &#8211; Mauvaise protection des URL</strong></p><p>Utiliser des mécanismes de sécurité déclarative par URL ou par annotation sur les beans controlleurs et de service.</p><p><strong>A8 &#8211; Utilisation de redirects et forwards non controlés (nouveau)</strong></p><p>Ne pas construire l&#8217;url de redirection ou de forward avec des données saisies par l&#8217;internaute. Figer les valeurs possibles de redirection dans le code ou dans des fichiers de configuration.</p><p><strong>A9 &#8211; Failles des systèmes de stockages encryptés</strong></p><p>Ne jamais stocker un mot de passe en clair, éviter de stocker des informations sensibles comme les numéros de carte bleue, . Si c&#8217;est finalement nécessaire, mettre en place un système de stockage dédié avec une gestion très attentive.<br
/> Documenter dans les configurations de logging (e.g. log4j.properties) les loggers à ne pas activer si des informations sensibles ne doivent pas sortir dans les logs (e.g. couche de binding des frameworks web).</p><p><strong>A10 &#8211; Protection insuffisante des canaux de communication</strong></p><p>Ne pas réinventer de canal de transport sécurisé, utiliser SSL quand c&#8217;est possible ; sinon, regarder WS-Security même s&#8217;il est très couteux à mettre en œuvre (debugging, etc).</p><h4><a
name="QuedevientSpringRichClient"></a>Que devient Spring Rich Client ?</h4><p><a
href="http://spring-rich-c.sourceforge.net/1.1.0/index.html" title="Spring Rich Client" >Spring Rich Client</a> est un <em>framework</em> applicatif basé sur Spring. Il permet de créer des applications clients lourds plus facilement qu&#8217;en utilisant l&#8217;environnement Swing de base.</p><p>La promesse est séduisante, toutefois le projet initié en 2004 ne s&#8217;est vu finalisé que 4 ans plus tard, en mars 2008. Dès lors certains doutes planent quant à la santé de cette communauté.</p><p>Lieven Doclo, <em>leader</em> du projet, en a présenté les fonctionnalités lors d&#8217;un <a
href="http://devoxx.com/display/DV09/Spring+Rich+Client" title="BOF  Devoxx" >BOF à Devoxx</a>. Ce fut également l&#8217;occasion d&#8217;un certain nombre de questions quant à la santé et au positionnement de ce projet méconnu :</p><ul><li>Bien qu&#8217;il soit directement référencé au sein du <a
href="http://www.springsource.org/projects" title="portfolio de SpringSource" >portfolio de SpringSource</a>, l&#8217;éditeur n&#8217;investit pas dans ce projet. On notera d&#8217;ailleurs que Lieven Doclo n&#8217;est pas employé par SpringSource mais consultant Java externe.</li><li>Le projet souhaite se positionner face à <a
href="http://www.eclipse.org/community/rcp.php" title="Eclipse RCP" >Eclipse RCP</a> et <a
href="http://platform.netbeans.org/" title="NetBeans RCP" >NetBeans RCP</a> en mettant en avant l&#8217;obligation d&#8217;utiliser SWT pour le premier et le manque de perspectives pour le second du fait des récentes déclarations d&#8217;Oracle.</li><li>Les évolutions lentes du projet s&#8217;expliquent par la taille réduite de l&#8217;équipe. Lieven Doclo appelle d&#8217;ailleurs les volontaires à le rejoindre.</li></ul><p>Si l&#8217;utilisation du <em>framework</em> Spring pour l&#8217;assemblage des composants des applications Spring RC est attirante car elle permet de reproduire les paradigmes de programmation utilisés pour le développement d&#8217;applications Web, Spring Rich Client peine encore à convaincre face aux poids lourds que sont les solutions d&#8217;Eclipse et de Netbeans. Il pourra toutefois intéresser les équipes souhaitant réutiliser des composants Spring existants.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="Devoxx"></a>Devoxx 2009</h4><p>La semaine dernière se tenait <a
href="http://www.devoxx.com/display/DV09/Home" title="ldition 2009 de Devoxx" >l&#8217;édition 2009 de Devoxx</a> à Anvers. Retrouvez nos premiers billets sur cette semaine de conférence&nbsp;:</p><ul><li><a
href="http://blog.xebia.fr/2009/11/17/devoxx-jour-1-adobe-university/" title="Devoxx  Jour 1  Adobe University" >Devoxx &#8211; Jour 1 &#8211; Adobe University</a></li><li><a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-applications-robustes-avec-amazon-ec2/" title="Devoxx  Jour 1  Applications robustes avec Amazon EC2" >Devoxx &#8211; Jour 1 &#8211; Applications robustes avec Amazon EC2</a></li><li><a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-kanban-in-action/" title="Devoxx  Jour 1  Kanban in action" >Devoxx &#8211; Jour 1 &#8211; Kanban in action</a></li><li><a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-jsf-2/" title="Devoxx  Jour 1  JSF 2" >Devoxx &#8211; Jour 1 &#8211; JSF 2</a></li><li><a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-nosql-avec-hbase/" title="Devoxx  Jour 1  NoSQL avec HBase" >Devoxx &#8211; Jour 1 &#8211; NoSQL avec HBase</a></li><li><a
href="http://blog.xebia.fr/2009/11/19/devoxx-jour-2-google-app-engine/" title="Devoxx  Jour 2  Google App Engine" >Devoxx &#8211; Jour 2 &#8211; Google App Engine</a></li><li><a
href="http://blog.xebia.fr/2009/11/19/devoxx-jour-2-les-effets-avec-flex-4/" title="Devoxx  Jour 2  Les effets avec Flex 4" >Devoxx &#8211; Jour 2 &#8211; Les effets avec Flex 4</a></li><li><a
href="http://blog.xebia.fr/2009/11/23/devoxx-jour-2-hibernate-search/" title="Devoxx  Jour 2  Hibernate Search" >Devoxx &#8211; Jour 2 &#8211; Hibernate Search</a></li><li><a
href="http://blog.xebia.fr/2009/11/23/devoxx-jour-2-java-fx-the-developer-guide/" title="Devoxx  Jour 2  Java FX The developer guide" >Devoxx &#8211; Jour 2 &#8211; Java FX The developer guide</a></li><li><a
href="http://blog.xebia.fr/2009/11/23/devoxx-jour-2-soa-en-pratique/" title="Devoxx  Jour 2  SOA en pratique" >Devoxx &#8211; Jour 2 &#8211; SOA en pratique</a></li><li><a
href="http://blog.xebia.fr/2009/11/23/devoxx-jour-2-scala-actors/" title="Devoxx  Jour 2  Scala Actors" >Devoxx &#8211; Jour 2 &#8211; Scala Actors</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/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/10/12/revue-de-presse-xebia-129/</link> <comments>http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#comments</comments> <pubDate>Mon, 12 Oct 2009 16:41:35 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[AIR]]></category> <category><![CDATA[DHTMLX]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jdk-6]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[Jetty]]></category> <category><![CDATA[Maven]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Servlet 3.0]]></category> <category><![CDATA[Sonar]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2984</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII La fondation Eclipse se prépare à Servlet 3.0 avec Jetty 7.0 Sonar 1.11 RIA Air &#8216;Athena&#8217; DHTMLX 2.5 Tips and Tricks Maven 2 Le coin de la technique Sécurité : 5 choses de plus que les agresseurs d&#8217;applications web ne [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#LafondationEclipseseprpareServ">La fondation Eclipse se prépare à Servlet 3.0 avec Jetty 7.0</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#Sonar">Sonar 1.11</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#AirAthena">Air &#8216;Athena&#8217;</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#DHTMLX">DHTMLX 2.5</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#TipsandTricksMaven">Tips and Tricks Maven 2</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#Scuritchosesdeplusquelesagress">Sécurité : 5 choses de plus que les agresseurs d&#8217;applications web ne vous diront pas</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#LesoptimisationsduJDKuactivesp">Les optimisations du JDK 6u14 activées par défaut sur le JDK 7</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="LafondationEclipseseprpareServ"></a>La fondation Eclipse se prépare à Servlet 3.0 avec Jetty 7.0</h4><p>La fondation Eclipse nous livre une nouvelle version de Jetty estampillée 7.0. Côté nouveauté, pas grand chose à vrai dire. Il y a évidemment l&#8217;habituelle série de corrections de bugs et d&#8217;améliorations de performance. Cette nouvelle version marque surtout le début de la route vers l&#8217;implémentation des servlets 3.0 prévue pour Jetty 8.0. C&#8217;est aussi l&#8217;occasion pour Eclipse d&#8217;assimiler un peu plus le projet en changeant principalement le <em>package</em> ancêtre de <code>org.mortbay</code> vers <code>org.eclipse</code>, gare au <em>refactoring</em> donc. A noter tout de même, Jetty est maintenant livré sous une forme modulaire pleinement compatible OSGI. Webtide en profite pour livrer la même version de Jetty, en y intégrant des modules additionnels:</p><ul><li>JSP de glassfish</li><li>JTA d&#8217;atomikos</li><li>plugin maven</li><li>integration d&#8217;ant</li><li>configuration Spring</li></ul><p>Jetty 6 sera encore maintenu pendant quelques temps (aucune précision de la part d&#8217;Eclipse), tous les nouveaux développements seront faits sur Jetty 7, et la branche 8 sera en pré-release dans les prochains mois et supportera l&#8217;API Servlet 3.0.</p><ul><li><a
href="http://dev.eclipse.org/mhonarc/lists/jetty-dev/msg00294.html" title="Lannonce sur la ML" >L&#8217;annonce sur la ML</a></li><li><a
href="http://www.infoq.com/news/2009/10/jetty-7-0-released" title="La news dInfoQ" >La news d&#8217;InfoQ</a></li><li><a
href="http://www.eclipse.org/jetty/" title="La page Jetty chez Eclipse" >La page Jetty chez Eclipse</a></li><li><a
href="http://jetty.mortbay.org/jetty/index.html" title="La page Jetty chez Codehaus" >La page Jetty chez Codehaus</a></li></ul><h4><a
name="Sonar"></a>Sonar 1.11</h4><p>SonarSource nous gratifie d&#8217;une version 1.11 du désormais célèbre outil de suivi de qualité Sonar. Comme souvent, de nombreux de <em>bugs</em> ont été corrigés. Parmi les améliorations, on peut noter les passages à Hibernate 3.3 et GWT 1.7. Au chapitre des nouvelles fonctionnalités, la possibilité de réutiliser les fichiers de configuration PMD et CheckStyle définis dans le <em>pom</em> permettra de plus aisément éviter les doublons.</p><p>SonarSource tente de faciliter la vie des développeurs de <em>plugins</em> avec l&#8217;apparition d&#8217;un archétype Maven pour créer des <em>plugins</em> Sonar. D&#8217;autres nouveautés d&#8217;API, comme le filtrage de widgets suivant différents critères (comme le rôle utilisateur ou la langue choisie), ajoutent de la flexibilité.</p><ul><li><a
href="http://sonar.codehaus.org/sonar-111-in-screenshots/" title="Lannonce sur le blog Sonar" >L&#8217;annonce sur le blog Sonar</a> avec plein de jolies images.</li><li><a
href="http://sonar.codehaus.org/downloads/" title="La release note" >La release note</a>.</li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="AirAthena"></a>Air &#8216;Athena&#8217;</h4><p>Non, ce n&#8217;est pas une nouvelle marque de baskets, mais, comme les flexeurs le savent depuis le Flash Camp de mai, le nom de code de la future version de Adobe Air, la version 2.0. Comme on s&#8217;y attendait, celle-ci fonctionnera avec Flash 10 et Flex 4. Même si aucune date officielle n&#8217;a été avancée, Adobe dévoile peu à peu les principales évolutions de sa plate-forme, <a
href="http://www.insideria.com/2009/10/air-2-enhancements-complete-ov.html" title="nouveauts rpertories par Elad Elrom sur InsideRIA" >nouveautés répertoriées par Elad Elrom sur InsideRIA</a>.<br
/> Commençons par celle qui nous semble vitale dans l&#8217;adoption de AIR / Flex à grande échelle, à savoir une amélioration drastique des performances. Les équipes d&#8217;Adobe ont mis l&#8217;accent sur la réduction des ressources (CPU et mémoire) consommées par le runtime AIR. Les tests effectués sur une mini application montrent en effet une diminution des ressources utilisées (en regard de la version 1.5). Reste à tester ces optimisations sur une application gourmande&#8230; Toujours au chapitre performance, Adobe promet une optimisation de Webkit (le browser open source embarqué par AIR) et une installation Linux native.<br
/> Au menu des nouveautés, nous avons :</p><ul><li>Une meilleure connaissance de la plate-forme matérielle, avec la gestion des devices multi-touch et la gestion des périphériques de stockage USB ou réseau &#8216;à chaud&#8217;.</li><li>Un enrichissement des fonctionnalités des APIs existantes : points de sauvegarde dans les transactions, support IPv6, augmentation de la taille maximale de la fenêtre AIR, manipulation des données de l&#8217;API Microphone, time-out d&#8217;inactivité&#8230;</li><li>De nouvelles fonctionnalités via de nouvelles API, dont la plus étonnante est l&#8217;API File promises. Celle-ci permet de télécharger en local, depuis une application AIR, un ensemble de fichiers par simple Drag &#038; Drop. D&#8217;autres API font également leur apparition, en particulier au niveau du support réseau et de l&#8217;adhérence de AIR à l&#8217;OS (les fichiers peuvent maintenant être ouverts par des processus natifs de l&#8217;OS, par exemple Notepad pour un .txt sous Windows).</li></ul><p>Une évolution assez naturelle donc (correction des gros points de blocage des versions précédentes), mais quelques promesses de fonctionnalités intéressantes, en particulier via <em>l&#8217;adhérence</em> à l&#8217;OS.</p><h4><a
name="DHTMLX"></a>DHTMLX 2.5</h4><p>Des nouvelles de <a
href=" http://dhtmlx.com/" title="DTHMLX" >DTHMLX</a> (la 11ème librairie de notre <a
href="http://blog.xebia.fr/2009/01/26/revue-de-presse-xebia-93/#belleslibrairiesWebUI" title="revue de presse de fin janvier dernier" >revue de presse de fin janvier dernier</a>) qui est sorti il y a quelques semaines en <a
href="http://dhtmlx.com/docs/news/index.shtml?show=44" title="version 25" >version 2.5</a>.</p><p>Cette release apporte plusieurs corrections et améliorations sur tous les composants de la suite. On retiendra plus particulièrement :</p><ul><li>Une API orientée objet (l&#8217;API fonctionnelle est toujours disponible) ,</li><li>Nouvelle skin par défaut avec d&#8217;ici peu (mais non présent dans cette release) un <em>Skin Customizer</em> qui permettra de modifier facilement les couleurs principales du thème standard,</li><li>Nouveau moteur de rendu qui améliore la performance d&#8217;affichage des composants <code>Layout</code>, <code>Windows</code>, <code>Accordion</code> et <code>Tabbar</code>,</li><li>Une API de conteneurs unifiée (toujours pour les <code>Layout</code>, <code>Windows</code>, <code>Accordion</code> et <code>Tabbar</code>),</li><li>Améliorations générales pour les composants <code>Grid</code>, <code>Tree</code> et <code>TreeGrid</code>,</li><li>Révision complète du <a
href="http://www.dhtmlx.com/docs/products/docsExplorer/" title="DocsExplorer" >DocsExplorer</a>.</li></ul><p>Puisque nous sommes sur DHTMLX, notons aussi le composant <a
href="http://www.dhtmlx.com/docs//products/dhtmlxScheduler/index.shtml" title="Scheduler v20" >Scheduler v.2.0</a>, sorti en juillet dernier, qui n&#8217;est pas inclus dans la suite mais qui vaut tout de même le détour si vous avez besoin d&#8217;un composant calendrier haut niveau.</p><p>Les téléchargements se passent par <a
href="http://www.dhtmlx.com/docs/download.shtml" title="ici" >ici</a> et comme d&#8217;habitude vous aurez le choix entre le téléchargement composant par composant ou le téléchargement de la suite complète.<br
/> Chaque composant existe en édition standard ou professionnelle. Pour résumer la version standard contient moins de fonctionnalités et est sous licence GPL alors que la professionnelle contient toutes les fonctionnalités, un support prioritaire en cas de bugs/questions sur le forum et plusieurs centaines d&#8217;exemples de fonctionnalités avancées.<br
/> Pour le détail des licences et des différents prix proposés pour les composants et pour la suite complète, cela se passe sur cette <a
href="http://www.dhtmlx.com/docs/products/licenses.shtml" title="page" >page</a>.</p><h4><a
name="TipsandTricksMaven"></a>Tips and Tricks Maven 2</h4><p>Sonatype nous présente <a
href="http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/" title="ici" >ici</a> quelques nouveautés intéressantes de maven disponibles depuis la version 2.1 concernant les projets multi-modules. Cela se traduit par de nouvelles commandes disponibles telles que:</p><ul><li><code>-rf</code>, <code>-resume-from</code>: permet de spécifier au maven reactor le projet à partir duquel on veut reprendre le build</li><li><code>-pl</code>, <code>-projects</code>: permet de sélectionner une liste de modules d&#8217;un projet multi-modules</li><li><code>-am</code>, <code>-also-make</code>: combinée avec l&#8217;option <code>-pl</code>, elle permet de construire tous les modules dépendants du module passé à l&#8217;option <code>pl</code></li><li><code>-amd</code>, <code>-also-make-dependents</code>: combinée avec l&#8217;option <code>-pl</code>, elle permet de construire tous les modules qui ont une dépendance vers le module passé à l&#8217;option <code>pl</code></li></ul><p>Très bonne nouvelle donc pour les développeurs dont le build prenait beaucoup de temps à cause de la reconstruction de modules non modifiés (et non impactés) par leurs nouveaux développements.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Scuritchosesdeplusquelesagress"></a>Sécurité : 5 choses de plus que les agresseurs d&#8217;applications web ne vous diront pas</h4><p>Le Denim Group continue sa série <a
href="http://denimgroup.typepad.com/denim_group/2009/09/13-things-a-web-application-attacker-wont-tell-you.html" title="13 Things a Web Applications Attacker Won't Tell You" >13 Things a Web Applications Attacker Won&#8217;t Tell You</a> que nous avions <a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Scuritchosesquelesagresseursda" title="traitée la semaine dernière" >traitée la semaine dernière</a> avec <a
href="http://denimgroup.typepad.com/denim_group/2009/10/5-more-things-a-web-application-attacker-wont-tell-you.html" title="5 nouvelles failles de scurit" >5 nouvelles failles de sécurité</a> de nos applications web :</p><ul><li>Ce n&#8217;est pas parce que vous utilisez un framework de sécurité que votre application est sécurisée.</li><li>Je n&#8217;utilise pas un browser pour attaquer votre application web.</li><li>J&#8217;adore quand votre site me permet d&#8217;<em>uploader</em> des fichiers dans l&#8217;arborescence des répertoires servis par l&#8217;application web.</li><li>Je peux intercepter et voler toutes les informations qui passent sur HTTP si elles ne sont pas protégées par SSL ou un mécanisme équivalent.</li><li>Une sécurité obscurantiste n&#8217;en est pas une (ne pas savoir faire ou se dire que ca n&#8217;arrivera pas ne protège pas).</li></ul><p>Si le dernier point est un débat éternel chez les experts de la sécurité les premiers sont en revanche communément admis.</p><h4><a
name="LesoptimisationsduJDKuactivesp"></a>Les optimisations du JDK 6u14 activées par défaut sur le JDK 7</h4><p>Rémi Forax, un contributeur sur <a
href="http://openjdk.java.net/" title="OpenJDK" >OpenJDK</a> et sur la <a
href="http://jcp.org/en/jsr/detail?id=292" title="JSR-292" >JSR-292</a>, <a
href="http://weblogs.java.net/blog/forax/archive/2009/10/06/jdk7-do-escape-analysis-default" title="a fait part de son étonnement" >a fait part de son étonnement</a> en constatant un gain significatif de performance entre deux <em>builds</em> successifs de l&#8217;OpenJDK 7 actuellement en cours de développement. C&#8217;est ainsi qu&#8217;il a pu se rendre compte que deux optimisations majeures du compilateur JIT de la JVM étaient activées par défaut <a
href="http://download.java.net/jdk7/changes/jdk7-b72.html" title="depuis le build 72" >depuis le <em>build</em> 72</a> du projet : l&#8217;<em>escape analysis</em> et la compression de pointeurs. Celles-ci étaient apparues dans le JDK 6u14 mais n&#8217;y étaient pas activées par défaut.</p><p>Pour rappel l&#8217;<em>escape analysis</em> consiste en l&#8217;analyse du bytecode d&#8217;une méthode pour découvrir les références vers les objets qui ne &laquo;&nbsp;s&#8217;échappent&nbsp;&raquo; pas du contexte de la méthode. Grâce à cette analyse, la JVM peut alors décider d&#8217;allouer ces objets directement sur la <em>stack</em> plutôt qu&#8217;en <em>heap</em> comme c&#8217;est normalement le cas. Il en résulte un gain de performance évident puisque le coût d&#8217;allocation et de libération de mémoire est alors supprimé pour ces objets.</p><p>La <a
href="http://wikis.sun.com/display/HotSpotInternals/CompressedOops" title="compression de pointeurs" >compression de pointeurs</a>, quant à elle, concerne uniquement les JVM 64 bits. En effet le passage d&#8217;un adressage de 32 à 64 bits entraîne une consommation plus élevée de la mémoire du fait de l&#8217;augmentation de la taille des pointeurs, induisant elle-même des temps de chargement plus longs et une surconsommation du cache du processeur. Pour palier ce problème, la compression de pointeurs se base sur le fait que la JVM aligne l&#8217;adresse des objets sur 64 bits (ceci afin de simplifier et donc d&#8217;accélérer leur accès en mémoire), pour procéder à un <em>scaling</em> des pointeurs. Ainsi, en limitant l&#8217;espace mémoire adressable à 32 Go, il est possible de contenir un pointeur dans 32 bits et donc de revenir à une consommation mémoire proche de celle d&#8217;une JVM 32 bits.</p><p>L&#8217;activation par défaut de ces deux optimisations sur le JDK 7 montre que l&#8217;équipe du projet estime désormais qu&#8217;elles ne sont plus expérimentales et qu&#8217;elles conviennent dans la majorité des cas. Ismael Juma <a
href="http://weblogs.java.net/blog/forax/archive/2009/10/06/jdk7-do-escape-analysis-default#comment-10698" title="prcise" >précise</a> par ailleurs qu&#8217;il est possible que ces activations par défaut soient reportées également au JDK 6 courant 2010.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de presse</title><link>http://blog.xebia.fr/2009/09/14/revue-de-presse-126/</link> <comments>http://blog.xebia.fr/2009/09/14/revue-de-presse-126/#comments</comments> <pubDate>Mon, 14 Sep 2009 18:17:08 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[AMF]]></category> <category><![CDATA[citcon]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[JavaRebel]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[Paris JUG]]></category> <category><![CDATA[proto]]></category> <category><![CDATA[PrototypeJs]]></category> <category><![CDATA[SoapUI]]></category> <category><![CDATA[Vaadin]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2840</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII JavaRebel et Eclipse RCP deviennent&#8230; Agilité Les clés d&#8217;une rétrospective réussie RIA Prototype 1.6.1, une version pas si mineure Tester vos services AMF avec soapUI Vaadin 6.1.0 Le coin de la technique Ces classes que vous en avez assez de [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#JavaRebeletEclipseRCPdeviennen">JavaRebel et Eclipse RCP deviennent&#8230;</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#Lesclsdunertrospectiverussie">Les clés d&#8217;une rétrospective réussie</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#Prototypeuneversionpassimineur">Prototype 1.6.1, une version pas si mineure</a></li><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#TestervosservicesAMFavecsoapUI">Tester vos services AMF avec soapUI</a></li><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#Vaadin">Vaadin 6.1.0</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#Cesclassesquevousenavezassezde">Ces classes que vous en avez assez de réécrire</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#SoirequalitdulogicielauParisJU">Soirée qualité du logiciel au Paris JUG</a></li><li><a
href="http://blog.xebia.fr/2009/09/14/revue-de-presse-126#ConfrenceCITCONleetseptembre">Conférence CITCON le 18 et 19 septembre</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="JavaRebeletEclipseRCPdeviennen"></a>JavaRebel et Eclipse RCP deviennent&#8230;</h4><p>Des nouvelles de <a
href="http://www.zeroturnaround.com/javarebel/" title="JavaRebel" >JavaRebel</a> et d&#8217;<a
href="http://wiki.eclipse.org/index.php/Rich_Client_Platform" title="Eclipse RCP" >Eclipse RCP</a> dont nous évoquions le processus de changement de nom dans de précédentes revues de presse (<a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#FindeJavaRebelplace" title="ici" >ici</a> et <a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#FindEclipseRCPplace" title="l" >là</a>).</p><p>Nous avons donc (roulement de tambour) JavaRebel qui devient&#8230; <a
href="http://www.zeroturnaround.com/blog/community-renames-javarebel-to-jrebel/" title="JRebel" >JRebel</a> ! Il rejoint donc la longue liste des J* tel que JFreeChart, JUnit&#8230;</p><p>En ce qui concerne Eclipse RCP, les <a
href="http://www.surveymonkey.com/sr.aspx?sm=L5Jap6ce_2fcdXYFsJVUxZhS_2fq23Twd7n_2bwrQHHUpMOvQ_3d" title="votes" >votes</a> nous donnent comme gagnant&#8230; <a
href="http://www.modumind.com/2009/09/09/renaming-eclipse-rcp-final-results/" title="Eclipse RCP" >Eclipse RCP</a> ! Statu quo donc avec 38% des votants pour conserver le nom actuel, suivi d&#8217;Eclipse Platform, Aurora, Corona et Tangram.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Lesclsdunertrospectiverussie"></a>Les clés d&#8217;une rétrospective réussie</h4><p>La rétrospective est l&#8217;un des outils les plus connus et plus utilisés dans le processus d&#8217;amélioration continue. Pour obtenir de meilleurs résultats, quelques principes simples doivent être respectés. Cette semaine, un <a
href="http://www.infoq.com/news/2009/09/key-elements-agile-retrospective" title="article publi sur InfoQ" >article publié sur InfoQ</a> revient sur les éléments clés d&#8217;une rétrospective agile réussie :</p><ul><li><strong>La préparation</strong> : la majorité des gens ont peur de donner leur position à l&#8217;oral et en public, c&#8217;est pourquoi il est important d&#8217;expliquer a priori les règles du jeu et <strong>expliciter</strong> les attentes et les enjeux de ce genre de réunion. L&#8217;efficacité de ce genre de réunion est proportionnelle au taux de participation : il faut tout faire pour éviter les monologues de quelques-uns</li><li><strong>La participation</strong> : il faut absolument éviter que cette séance ne devienne une routine, faire une rétrospective pour faire une rétrospective ne sert à rien : non aux retros théâtrales! C&#8217;est pourquoi il est important d&#8217;en sortir des <strong>actions concrètes</strong> et réalisables. Celles-ci permettent de mesurer leur efficacité et de donner une dynamique positive et concrète au processus d&#8217;amélioration continue.</li></ul><p>Vous pouvez ajouter à ces deux points clés ces quelques conseils de communication :</p><ul><li>N&#8217;hésitez pas à ouvrir le débat et à  poser la question : « Quelqu&#8217;un a t-il d&#8217;autres points à aborder ? »</li><li>Demandez aux participants des pistes d&#8217;amélioration pour la rétrospective elle-même</li><li>Dites merci !</li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="Prototypeuneversionpassimineur"></a>Prototype 1.6.1, une version pas si mineure</h4><p>Parce qu&#8217;il n&#8217;y a pas que <a
href="http://www.jquery.com" title="jQuery" >jQuery</a> dans la vie, voici quelques nouvelles de Prototype qui sort en version <a
href="http://prototypejs.org/2009/9/1/prototype-1-6-1-released" title="1.6.1" >1.6.1</a> (par <a
href="http://ajaxian.com/archives/prototype-161-speed-up-clean-up-and-team-up" title="Ajaxian" >Ajaxian</a>)</p><p>Outre le changement de co-leads, les principales nouveautés portent sur :</p><ul><li>Compatibilité avec les navigateurs et particulièrement le support complet de Chrome 1.0+ et IE8</li><li>Sauvegarde de données sur un élément DOM (la fonction <code>data</code> de jQuery)</li><li>Nouveaux évènements souris <code>mouseenter</code> et <code>mouseleave</code> disponibles pour tous les navigateurs (et plus seulement IE)</li><li>Performances générales : méthodes plus rapides, <code>clean up</code> plus efficaces&#8230;</li><li>Utilisation de <a
href="http://getsprockets.org/" title="Sprockets" >Sprockets</a> pour la gestion de dépendances</li><li>Documentation <a
href="http://api.prototypejs.org/" title="en ligne" >en ligne</a> avec <a
href="http://pdoc.org/" title="PDoc" >PDoc</a></li></ul><p>De nombreux changements donc, à la fois au coeur de la librairie mais aussi au niveau des fonctionnalités, de la documentation&#8230;<br
/> Le téléchargement se passe par <a
href="http://prototypejs.org/assets/2009/8/31/prototype.js" title="ici" >ici</a>.</p><h4><a
name="TestervosservicesAMFavecsoapUI"></a>Tester vos services AMF avec soapUI</h4><p>Dans <a
href="http://www.eviware.com/blogs/oleblog/?p=861" title="cet article" >cet article</a>, nous apprenons qu&#8217;il est possible de tester les applications Flex utilisant le protocole AMF avec soapUI. Pour rappel, AMF (Action Message Format) est un protocole binaire de transfert de données entre le client et le serveur, permettant l&#8217;accès à des objets sur ce dernier (Java par exemple).<br
/> Avec une configuration relativement simple et quelques astuces, il devient très aisé de tester votre flux AMF : avec un simple script Groovy ainsi que les librairies <a
href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/" title="BlazeDS" >BlazeDS</a> et <a
href="http://xstream.codehaus.org/download.html" title="XStream" >XStream</a>, un flux ASObject est généré au format XML, permettant d&#8217;effectuer les tests.<br
/> Cerise sur le gâteau, des tests de charge peuvent être exécutés et démontrent encore une fois les bonnes performances de ce protocole.<br
/> Pour finir, nous apprenons également que la prochaine version de soapUI (3.5) intégrera le support de nouveaux protocoles, dont AMF ! A surveiller.</p><h4><a
name="Vaadin"></a>Vaadin 6.1.0</h4><p><a
href="http://vaadin.com/home" title="Vaadin" >Vaadin</a> continue son petit bonhomme de chemin et sort, fin de semaine dernière, en version <a
href="http://vaadin.com/downloading" title="6.1.0" >6.1.0</a> (par <a
href="http://www.theserverside.com/news/thread.tss?thread_id=57838" title="The Server Side" >The Server Side</a>).</p><p>Après la release majeure de <a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#Vaadin" title="juin dernier" >juin dernier</a>, qui a vu notamment le renommage du produit, le plugin eclipse et l&#8217;éditeur WYSIWYG, cette nouvelle version nous apporte entre autres (<a
href="http://vaadin.com/download/release/6.1/6.1.0/release-notes.html" title="release notes complte" >release notes complète</a>) :</p><ul><li>Disponibilité du produit sur le repository central de Maven</li><li>Support de Google App Engine (le build et le déploiement se font par leur plugin eclipse)</li><li>Correction de <a
href="http://vaadin.com/download/release/6.1/6.1.0/release-notes.html#changelog" title="87 Jiras" >87 Jiras</a></li></ul><p>Le téléchargement se passe par <a
href="http://vaadin.com/downloading" title="ici" >ici</a> et n&#8217;oubliez pas le <a
href="http://vaadin.com/book" title="book of Vaddin" >book of Vaddin</a> qui parcourt le produit de a à z (installation, initialisation d&#8217;un projet, tutoriels&#8230;).</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Cesclassesquevousenavezassezde"></a>Ces classes que vous en avez assez de réécrire</h4><p>Dans le cadre de la sortie du JDK 7, Joe Darcy, de Sun, a demandé à <a
href="http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-September/002572.html" title="un groupe de discussion" >un groupe de discussion</a> de l&#8217;OpenJdk de réfléchir aux méthodes qui pourraient voir le jour dans la classe <code>java.util.Objects</code>. Cette classe (comme son nom ne l&#8217;indique hélas pas du tout) est destinée à regrouper des méthodes utilitaires fréquemment réécrites et utilisées.<br
/> Dans son message initial, il expose sans surprise un <code>equals(arg1, arg2)</code> tolérant la nullité. Un peu plus surprenant, il propose un <code>compareTo(arg1, arg2)</code> pour les primitifs.</p><p>Au premier abord, on sent l&#8217;idée de réintégrer dans le JDK des classes utilitaires déjà présentes dans nos frameworks (<a
href="http://commons.apache.org/lang/api/org/apache/commons/lang/ObjectUtils.html" title="Apache Commons Lang ObjectUtils" >Apache Commons Lang ObjectUtils</a> et <a
href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/util/ObjectUtils.html" title="Spring ObjectUtils" >Spring ObjectUtils</a>) comme on l&#8217;a connu avec succès dans le Collections Framework mais aussi avec des flops comme <code>java.util.logging</code> qui n&#8217;a pas réussi à remplacer log4j ni à innover comme slf4j.</p><p>Si l&#8217;on continue la réflexion, on retrouve cette idée de protection contre les <code>NullPointerException</code> qui nous font tant souffrir comme le rappelle Tony Hoare dans <a
href="http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare" title="Null References The-Billion Dollar Mistake" >Null References The-Billion Dollar Mistake</a>. Sous cet angle de vue, l&#8217;idée de Joe Dary nous ramène à deux autres tentatives pour <em>colmater</em> les nulls en java avec <a
href="http://jcp.org/en/jsr/detail?id=305" title="JSR 305: Annotations for Software Defect Detection" >JSR 305: Annotations for Software Defect Detection</a> et <a
href="http://jcp.org/en/jsr/detail?id=303" title="JSR 303 Bean Validation" >JSR 303: Bean Validation</a> qui proposent respectivement <code>@NonNull</code> et <code>@NotNull</code> !</p><p>Ces efforts pour lutter contre les <code>NullPointerException</code> en Java sont louables mais ils laissent un goût de contournement d&#8217;une limitation structurelle alors que d&#8217;autres langages sont intrinsèquement mieux armés (_safe operators_ à la Groovy, etc). Et nous entrons là dans un débat plus vaste : &laquo;&nbsp;Est-il trop tard pour améliorer le langage java lui-même quitte à perdre en compatibilité ?&nbsp;&raquo;.</p><p><a
href="http://www.infoq.com/news/2009/09/jdk7-java-utils-object" title="Via InfoQ" >Via InfoQ</a></p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SoirequalitdulogicielauParisJU"></a>Soirée qualité du logiciel au Paris JUG</h4><p>Le Paris JUG fait sa rentrée mardi prochain sous le signe de la qualité. Au programme de cette soirée, le JUG nous propose pas moins de quatre présentations:</p><ul><li>Les frameworks opensource (Quels frameworks utiliser ? Quand ? Comment ?)</li><li>Sonar, venez découvrir les 7 péchés capitaux du développeur et les chasser avec Sonar.</li><li>SonarJ community edition, pour contrôler l&#8217;architecture et la qualité technique du code source.</li><li>Squale, la plate-forme open-source de qualimétrie extensible.</li></ul><p><a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/20090915" title="Plus dinformation sur lvnement " >Plus d&#8217;information sur l&#8217;évènement &#8230;</a><br
/> <a
href="http://www.parisjug.org/xwiki/bin/view/Meeting/Next" title="Le programme des prochaines soire " >Le programme des prochaines soirées &#8230;</a></p><h4><a
name="ConfrenceCITCONleetseptembre"></a>Conférence CITCON le 18 et 19 septembre</h4><p>Comme un echo au Paris JUG, la conférence CITCON (Continuous Integration Testing CONference) a lieu à Paris, dans les locaux de l&#8217;ISEP.<br
/> Les sessions, type Open Space, seront organisées vendredi soir pour se dérouler toute la journée du samedi.<br
/> Vous pouvez retrouver les infos utiles sur le <a
href="http://citconf.com/paris2009" title="site de la confrence" >site de la conférence</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/09/14/revue-de-presse-126/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/</link> <comments>http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#comments</comments> <pubDate>Mon, 31 Aug 2009 16:13:33 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[BlazeMonster]]></category> <category><![CDATA[Eclipse RCP]]></category> <category><![CDATA[Gartner]]></category> <category><![CDATA[HornetQ]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[TestSwarm]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2734</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Architecture Gartner adopte le pragmatisme avec l&#8217;Architecture Émergente Actualité éditeurs / SSII JBoss HornetQ RIA BlazeMonster Le coin de la technique Liste finale des évolutions du langage Java apportées par le JDK 7 Fin d&#8217;Eclipse RCP, place à&#8230; TestSwarm Architecture Gartner adopte le pragmatisme [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Architecture</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#Gartneradoptelepragmatismeavec">Gartner adopte le pragmatisme avec l&#8217;Architecture Émergente</a></li></ul><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#JBossHornetQ">JBoss HornetQ</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#BlazeMonster">BlazeMonster</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#Listefinaledesvolutionsdulanga">Liste finale des évolutions du langage Java apportées par le JDK 7</a></li><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#FindEclipseRCPplace">Fin d&#8217;Eclipse RCP, place à&#8230;</a></li><li><a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#TestSwarm">TestSwarm</a></li></ul><h3><a
name="Architecture"></a>Architecture</h3><h4><a
name="Gartneradoptelepragmatismeavec"></a>Gartner adopte le pragmatisme avec l&#8217;Architecture Émergente</h4><p>Gartner nous livre un plaidoyer pour la pragmatisme avec <a
href="http://www.infoq.com/news/2009/08/Emergent-Architecture" title="Emergent Architecture" >Emergent Architecture</a>. La formulation est parfois compliquée mais on se réjouira de trouver la responsabilisation des équipes sur le terrain et des Architectes d&#8217;Entreprise évangélistes de lignes directrices. Pour reprendre une expression chère au Lean Manufacturing, &laquo;&nbsp;Empower the People&nbsp;&raquo; <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> :</p><ol><li><strong>Non déterminisme</strong> &#8211; Dans le passé, les architectes d&#8217;entreprise prenaient des décisions centralisées qui s&#8217;appliquaient à tous. Dans une architecture émergente, ces architectes d&#8217;entreprise doivent au contraire décentraliser la prise de décisions pour permettre l&#8217;innovation.</li><li><strong>Acteurs autonomes</strong> &#8211; Les architectes d&#8217;entreprise ne peuvent plus contrôler tous les aspects de l&#8217;architecture comme ils le faisaient auparavant ; ils doivent désormais reconnaître l&#8217;étendue et la variété du SI ; ils doivent déléguer le contrôle aux équipes sur le terrain.</li><li><strong>Limiter les contraintes aux lignes directrices</strong> &#8211; Jusqu&#8217;à présent, les architectes d&#8217;entreprise ont fourni des spécifications détaillées de tous les aspects de l&#8217;architecture ; ils doivent désormais limiter leurs prescriptions aux lignes directrices et de permettre le choix.</li><li><strong>Acteurs orientés objectif</strong> &#8211; Auparavant, les seuls objectifs qui comptaient étaient les objectifs de l&#8217;entreprise mais cela s&#8217;est maintenant déplacé et chaque acteur agit dans ses propres intérêt. Il ne faut pas pour autant oublier les lignes directrices.</li><li><strong>Influences locales</strong>: Les acteurs sont influencés par des interactions locales et des informations limitées. Les feedbacks au sein de leur sphère de communication modifie leur comportement. Aucun acteur individuel ne possède la vision globale d&#8217;un système émergent. Les architectes d&#8217;entreprise doivent intensifier leur travail coordonner et de transmission de l&#8217;information.</li><li><strong>Systèmes dynamiques et adaptatifs</strong>: le système (les différents acteurs et leur environnement)  changent avec le temps. Les architectes d&#8217;entreprise doivent définir les pourtours des systèmes émergents et ajuster en fonction des changements.</li><li><strong>Environnement aux ressources limitées</strong>: L&#8217;abondance, les budgets illimités, ne permet pas de créer une architecture émergente ; c&#8217;est au contraire la rareté des moyens qui permet une architecture émergente.</li></ol><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="JBossHornetQ"></a>JBoss HornetQ</h4><p>Après 2 ans de développement, le projet JBoss Messaging 2.0 sort enfin dans les bacs sous le nom HornetQ. Ce Message Oriented Middleware n&#8217;est pas une évolution de son prédécesseur qui continue d&#8217;exister dans sa version 1.0, mais belle et bien une réécriture (presque) intégrale. Redhat nous le vend comme un MoM opensource, multi-protocol, embarquable, haute performance, réparti, et asynchrone.<br
/> HornetQ peut-être utilisé en standalone ou bien embarqué dans un serveur d&#8217;application JBoss AS par exemple. Chose appréciable, HornetQ est léger, il dépend uniquement du JDK (5 minimum) pour être complètement fonctionnel.<br
/> Dans sa présentation, Redhat nous annonce que le projet est facile d&#8217;utilisation avec une documentation déjà très complète et la bagatelle de 65 exemples de codes sources. <a
href="http://www.jboss.org/community/wiki/GettingstartedwithHornetQinlessthanfiveminutes" title="Il est mme possible de dmarrer en moins de 5 minutes" >Il est même possible de démarrer en moins de 5 minutes</a>.<br
/> HornetQ bénéficie d&#8217;une conception orientée Pojo qui lui permet d&#8217;être utilisé directement dans Spring ou Guice. La performance a fait l&#8217;objet d&#8217;une attention importante, avec un <a
href="http://hornetq.sourceforge.net/docs/hornetq-2.0.0.BETA5/user-manual/en/html/persistence.html" title="journal haute performance" >journal haute performance</a> et <a
href="http://jboss.org/netty/" title="JBoss Netty" >JBoss Netty</a> pour la scalabilité.<br
/> JBoss nous livre une <a
href="http://www.jboss.org/community/wiki/HornetQFeatures" title="liste sans fin des fonctionnalits embarques" >liste sans fin des fonctionnalités embarquées</a> parmi lesquels on retiendra:</p><ul><li>JMS 1.1</li><li>JTA</li><li>Adaptateur JCA</li></ul><p>Enfin, l&#8217;editeur annonce orienter ses développements vers le support d&#8217;API RestFull qu&#8217;il voit comme le futur du cloud computing. Redhat souhaite donc pousser la porte des clouds privé en tentant de s&#8217;imposer comme le provider de message incontournable dans le nuage.</p><ul><li><a
href="http://jboss.org/hornetq/" title="Site du projet" >Site du projet</a></li><li><a
href="http://www.jboss.org/community/wiki/HornetQ" title="Wiki" >Wiki</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="BlazeMonster"></a>BlazeMonster</h4><p><a
href="http://sujitreddyg.wordpress.com/blazemonster/" title="BlazeMonster" >BlazeMonster</a> vient de sortir dans sa deuxième version. Pour rappel cet outil, basée sur la technologie AIR, permet le support et l&#8217;aide à la génération de code pour consommer/exposer des services Java en tant que service Remote pour BlazeDS ou LCDS (LiveCycle Data Services).<br
/> Parmi les supports, nous avons entre autre :</p><ul><li>Génération des fichiers de configurations : déclarations des services, channels..</li><li>Génération du code appelant le service Remote</li><li>Génération des beans ActionScript (Value Object)</li><li>Visualisation des réponses des services Remote</li></ul><p>Dans cette deuxième version, <a
href="http://sujitreddyg.wordpress.com/blazemonster/" title="BlazeMonster" >BlazeMonster</a> intègre le support de <a
href="http://www.springsource.org/spring-flex" title="Spring BlazeDS" >Spring BlazeDS</a>, permettant la génération de services Remote en utilisant cette librairie. Je vous invite à jeter un coup d&#8217;œil sur les autres corrections et évolutions apportées à ce projet <a
href="http://sujitreddyg.wordpress.com/2009/08/26/blazemonster-v2-with-support-for-spring-blazeds/" title="ici" >ici</a>.<br
/> Facile d&#8217;utilisation, ce projet permet de copier/coller des morceaux de code dans votre application, facilitant le développement.<br
/> Enfin, à travers ce projet nous voyons, une fois de plus, l&#8217;engouement que les technologies Flex et BlazeDS remportent. Peut être pouvons nous espérer l&#8217;intégration de ce type d&#8217;outil dans le Flash Builder 4. Alors messieurs d&#8217;Adobe, qu&#8217;attendez vous ?</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Listefinaledesvolutionsdulanga"></a>Liste finale des évolutions du langage Java apportées par le JDK 7</h4><p>En début d&#8217;année, Sun <a
href="http://blog.xebia.fr/2009/03/16/revue-de-presse-xebia-100/#OpenJdkProjectCoinproposezvosv" title="a initié" >a initié</a> le <a
href="http://openjdk.java.net/projects/coin/" title="Project Coin" >Project Coin</a>, un sous-projet d&#8217;OpenJDK visant à recueillir les propositions d&#8217;évolutions du langage Java pour le JDK 7 prévu pour début 2010. Les soumissions ont été nombreuses et Joseph D. Darcy, <em>leader</em> du projet, informait régulièrement la communauté sur l&#8217;avancement du processus de sélection. C&#8217;est maintenant la liste finale des évolutions <a
href="http://blogs.sun.com/darcy/entry/project_coin_final_five" title="quil annonce" >qu&#8217;il annonce</a>. Sauf problème de planning, il s&#8217;agit donc là de ce que le langage Java sera dans JDK 7 :</p><ul><li>Clause <code>switch</code> utilisable sur les <code>String</code>.</li><li><a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000011.html" title="Gestion automatique des resources" >Gestion automatique des resources</a>. Cette évolution vise à simplifier la gestion de la fermeture des flux ou autre ressources par l&#8217;utilisation d&#8217;une clause <code>try</code> spécifique pour les objets implémentant l&#8217;interface <code>Disposable</code> introduite dans le JDK pour l&#8217;occasion.</li><li><a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000009.html" title="Infrence de type amliore" >Inférence de type améliorée</a> pour la création d&#8217;objets génériques grâce à une syntaxe du type <code>List&lt;String&gt; list = new ArrayList<>()</code>.</li><li>Evolution de la gestion des <em>warnings</em> pour l&#8217;utilisation des <em>generics</em> dans des <em>varargs</em>.</li><li><a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000929.html" title="Autorisation de la notation binaire" >Autorisation de la notation binaire</a> pour les entiers comme en C/C++ et <a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-April/001628.html" title="possibilit de placer des underscores" >possibilité de placer des underscores</a> dans les nombres pour en simplifier la relecture tel que <code>long creditCardNumber = 1234_5678_9012_3456L</code></li><li><a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/001108.html" title="Accès en lecture et écriture aux valeurs des collections Java" >Accès en lecture et écriture aux valeurs des collections Java</a> par la notation <code><a
href="" title="" ></a></code> utilisé jusqu&#8217;alors uniquement pour les tableaux.</li></ul><p>On est loin de la liste d&#8217;évolutions très audacieuses initialement prévue pour JDK 7, mais les évolutions finalement retenues ont l&#8217;avantage d&#8217;être réalistes en terme de temps d&#8217;implémentation, tout en apportant un confort supplémentaire au quotidien pour les développeurs Java.</p><p>Rémi Forax, très au fait des développements sur l&#8217;OpenJDK, <a
href="http://weblogs.java.net/blog/forax/archive/2009/08/29/seven-small-languages-changes-will-be-jdk7" title="propose dailleurs son analyse" >propose d&#8217;ailleurs son analyse</a> des tâches restant à accomplir et de leur complexité pour chacune des évolutions.</p><h4><a
name="FindEclipseRCPplace"></a>Fin d&#8217;Eclipse RCP, place à&#8230;</h4><p>Après <a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#FindeJavaRebelplace" title="Java Rebel" >Java Rebel</a>, c&#8217;est Eclipse RCP qui se trouve sur la voie du <a
href="http://eclipse.dzone.com/articles/renaming-eclipse-rcp-%e2%80%93-vote" title="changement de nom" >changement de nom</a>.<br
/> Cette fois-ci, ce n&#8217;est pas pour une raison de marque déposée mais tout simplement, <a
href="http://eclipse.dzone.com/articles/renaming-eclipse-rcp-%e2%80%93-vote" title="dixit lauteur" >dixit l&#8217;auteur</a>, parce que ce nom est <em>horrible</em> <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .<br
/> Un vote est organisé avec tous les noms remontés par la communauté Eclipse depuis 3 mois.<br
/> Alors, <em>Aurora</em>, <em>Montage</em> ou <em>Tangram</em>, c&#8217;est à vous de voter ! Et ça se passe sur cette <a
href="http://www.surveymonkey.com/s.aspx?sm=D9ZYFUQdiRI4b2kNPE7Rwg_3d_3d" title="page" >page</a>.</p><h4><a
name="TestSwarm"></a>TestSwarm</h4><p><a
href="http://ejohn.org/blog/test-swarm-alpha-open/" title="John Resig" >John Resig</a>, créateur de <a
href="http://jquery.com/" title="jQuery" >jQuery</a>, nous annonce que <a
href="http://testswarm.com/" title="Test Swarm" >Test Swarm</a> est maintenant ouvert au public (par <a
href="http://ajaxian.com/archives/testswarm-crowdsource-your-continuous-tests-for-javascript" title="ajaxian" >ajaxian</a>).</p><p>Test Swarm permet de tester le code Javascript sur différents navigateurs de différentes plateformes de manières continues. A l&#8217;origine utilisé pour jQuery, il est désormais possible de tester son propre code Javascript, moyennant 8 steps d&#8217;installation <a
href="http://wiki.github.com/jeresig/testswarm" title="paragraphe Setting Up Your Own Swarm" >paragraphe Setting Up Your Own Swarm</a>. Les tests (jobs) peuvent être lancés à chaque commits (SVN ou Git) ou bien en appelant une URL spécifique. Les résultats des tests sont résumés dans un <a
href="http://farm4.static.flickr.com/3500/3723002475_d628e85afb.jpg" title="tableau" >tableau</a> avec une colonne pour chaque navigateur/plateforme. Il est possible de rester au niveau projet mais on peut affiner l&#8217;affichage au niveau commit voir au niveau de chaque fichier js de tests. Côté couleur, les tests vert se sont bien passés, les rouges contiennent au moins une erreur, les noirs ont au moins une erreur critiques et les gris sous en cours/en attente. Des logs sont disponibles pour chaque <em>run</em> de tests et permettent de voir ceux qui ne seraient pas passés.</p><p>Les frameworks de tests unitaires Javascript gérés (bien d&#8217;autres suivront) sont pour l&#8217;instant :</p><ul><li>QUnit (jQuery)</li><li>UnitTestJS (Prototype)</li><li>JSSpec (MooTools)</li><li>JSUnit</li><li>Selenium</li><li>Dojo Objective Harness</li></ul><p>Une <a
href="http://www.vimeo.com/6281121" title="vido de type quick tour" >vidéo de type quick tour</a> nous donne un bon aperçu  du site. Plusieurs directions sont possible concernant la <em>roadmap</em> du produit dont l&#8217;intégration à l&#8217;IDE, tests sur encore plus de browser&#8230; Un produit à suivre.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Jazoon &#8211; Jour 2 &#8211; JDK 7</title><link>http://blog.xebia.fr/2009/06/24/jazoon-jour-2-jdk-7/</link> <comments>http://blog.xebia.fr/2009/06/24/jazoon-jour-2-jdk-7/#comments</comments> <pubDate>Wed, 24 Jun 2009 18:54:23 +0000</pubDate> <dc:creator>Guillaume Mathias</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[Jigsaw]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2348</guid> <description><![CDATA[Cette deuxième journée de Jazoon a commencé par une keynote de Danny Coward, qui a établi deux tops 5 distincts, à savoir le top 5 de ce qui va arriver dans le JDK 7, et celui de ce qui existe déjà dans JavaFX 1.2 (on peut noter cette amusante différence d&#8217;échelle). Laissons de coté le [...]]]></description> <content:encoded><![CDATA[<p>Cette deuxième journée de Jazoon a commencé par une keynote de Danny Coward, qui a établi deux tops 5 distincts, à savoir le top 5  de <i>ce qui va arriver</i> dans le JDK 7, et celui de <i>ce qui existe déjà</i> dans JavaFX 1.2 (on peut noter cette amusante différence d&#8217;échelle).<br
/> Laissons de coté le top 5 JavaFX (nous y reviendrons dans un autre billet), pour nous concentrer sur les 5 nouveautés du JDK 7,  &laquo;&nbsp;les plus excitantes&nbsp;&raquo; pour un Sun Fellow.</p><ul><li>La modularité : introduite par le projet <a
href="http://openjdk.java.net/projects/jigsaw/">Jigsaw</a>, actuellement <a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#JigsawvsOSGi">au cœur d&#8217;une polémique</a>, elle devrait permettre de supprimer les principaux reproches faits aux précédents JDKs, à savoir leur lenteur au démarrage, le plat de spaghettis des dépendances, et l&#8217;enfer du classpath.</li><li>La JVM polyglotte : capable d&#8217;exécuter de nombreux langages (la voie a été ouverte par JRuby), elle devrait faciliter l&#8217;émergence des langages dynamiques. C&#8217;est le projet <a
href="http://openjdk.java.net/projects/mlvm/">DaVinci</a>.</li><li>Les ajouts au langage : ils sont listés dans le projet <a
href="http://openjdk.java.net/projects/coin/">Coin</a>. Danny a listé les switch sur les String, la gestion d&#8217;exceptions multiples, une meilleure inférence de type, et <a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000047.html">l&#8217;opérateur Elvis</a></li><li>Plus d&#8217;APIs I/O : le <code>Path</code> remplace le <code>File</code>, manipulation des <code>Directory</code>, recherche en utilisant des <code>FileVisitor</code>, opérations asynchrones. On peut se demander si ce genre de fonctionnalités sera vraiment cross-platform (comportement identique ?).</li><li>Nouveau Garbage collector : le fameux G1 (dont nous avons parlé <a
href="http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/">ici</a>) est disponible en <em>preview</em> dans le JSE 6 update 14 en utilisant l&#8217;option <code>-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC</code></li></ul><p>La <em>final release</em> devrait être disponible (selon la <em>roadmap</em> annoncée) dans le courant du premier trimestre 2010.</p><p>On apprécie les efforts continus faits sur la VM mais nous regrettons que les évolutions du langage restent superficielles (c&#8217;est bien mais pas suffisant). C&#8217;est probablement l&#8217;une des raisons de l&#8217;émergence des langages dynamiques. Comme si Danny Coward avait voulu légitimer <em>l&#8217;opening keynote</em> de James Gosling : &laquo;&nbsp;la force de Java ce n&#8217;est pas son langage, mais sa VM&nbsp;&raquo;.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/24/jazoon-jour-2-jdk-7/feed/</wfw:commentRss> <slash:comments>0</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> <item><title>GC générationnels traditionnels (jdk6) VS GC Garbage First (jdk7)</title><link>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/</link> <comments>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/#comments</comments> <pubDate>Wed, 12 Mar 2008 07:28:56 +0000</pubDate> <dc:creator>Erwan Alliaume</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[GC]]></category> <category><![CDATA[jdk-6]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[JVM]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/</guid> <description><![CDATA[L&#8217;analyse empirique montre que dans une application la très grande majorité des objets créés sont détruits presque immédiatement. C&#8217;est d&#8217;autant plus vrai pour les applications web et/ou stateless où la plupart des objets sont créés pour traiter une requête et peuvent être donc détruits juste après ce traitement. De ce constat résulte l&#8217;idée de ne [...]]]></description> <content:encoded><![CDATA[<p>L&#8217;analyse empirique montre que dans une application la très grande majorité des objets créés sont détruits presque immédiatement. C&#8217;est d&#8217;autant plus vrai pour les applications web et/ou stateless où la plupart des objets sont créés pour traiter une requête et peuvent être donc détruits juste après ce traitement. De ce constat résulte l&#8217;idée de ne pas traiter de la même façon les objets fraîchement créés et ceux qui existent depuis plus longtemps. Les Garbage Collector qui utilisent des implémentations basées sur ce principe sont appelés <strong>GC générationnels</strong>. On peut fixer deux catégories d&#8217;objectifs lorsque l&#8217;on optimise le GC : réduire les pauses ou augmenter le débit. Ces objectifs sont en général orthogonaux (la réduction de la durée des pauses se fait au détriment du débit, et vice-versa), ils dépendent souvent du type d&#8217;applications : dans une application interactive, nous privilégierons les pauses, et au contraire, dans un batch, seul le débit compte.</p><p>La suite du billet est décomposée en deux parties :</p><ul><li>La première décrit le fonctionnement des algorithmes générationnels <em>traditionnels </em>(Implémentation actuelle des JVM Sun)</li><li>La seconde détaille le nouvel algorithme que Sun essaye de pousser pour sa future JVM</li></ul><h3><a
name="jdk6">GC Générationels</a></h3><p>Avant de présenter la nouvelle implémentation que Sun essaye de mettre en avant pour le <a
href="http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview" title="java SE 7" target="_blank">jdk 7</a>, décrivons le cycle de vie des objets dans le tas (heap) tel qu&#8217;il est actuellement implémenté dans les JVM Sun. Le &laquo;&nbsp;heap&nbsp;&raquo; se compose de trois sections principales &laquo;&nbsp;Young&nbsp;&raquo;, &laquo;&nbsp;Tenured&nbsp;&raquo; et &laquo;&nbsp;Perm&nbsp;&raquo;. Au cours de sa vie, un objet est amené à évoluer au sein de ces zones en fonction de son ancienneté, à chaque section correspond une génération d&#8217;objet.</p><div
align="center"> <img
src='http://blog.xebia.fr/wp-content/uploads/2008/03/simple.jpg' alt='generations.jpg' /></div><p>Les nouveaux objets sont stockés dans une première zone de la &laquo;&nbsp;young generation&nbsp;&raquo; appelée &laquo;&nbsp;l&#8217;eden&nbsp;&raquo; (1). Lorsque cette zone est remplie, le garbage collector analyse les objets présents dans cette zone et nettoie les objets devenus inutiles (ne possédant plus de références).</p><p>Les objets ayant résisté à ce passage sont placés dans une seconde partie appelée &laquo;&nbsp;survivor&nbsp;&raquo; (2). Il s&#8217;agit d&#8217;une zone intermédiaire contenant les objets les plus vieux de la &laquo;&nbsp;young generation&nbsp;&raquo;. L&#8217;eden ayant été vidée lors du passage du GC, de nouveaux objets peuvent faire leur apparition dans cette même zone. À ce moment deux zones contiennent alors des objets : l&#8217;eden et le survivor. Dès lors, lors des futurs passages du GC, ces deux zones seront analysées et les objets toujours en activité seront placés dans une 2e zone &laquo;&nbsp;survivor&nbsp;&raquo;. Les deux zones &laquo;&nbsp;survivors&nbsp;&raquo; sont utilisées alternativement par le GC pour stocker les objets utilisés.</p><p>Avant que ces zones ne deviennent également trop petites et lorsqu&#8217;un objet est considéré comme assez âgé, il est déplacé dans la deuxième génération : &laquo;&nbsp;tenured&nbsp;&raquo; (3). Il s&#8217;agit d&#8217;un emplacement permettant de stocker les objets les plus anciens. Lorsque cette zone est remplie, le garbage collector effectue un nettoyage en profondeur des différentes zones et générations : le full GC. Si après un full GC l&#8217;espace disponible n&#8217;est pas suffisant pour gérer la vie de l&#8217;application, une exception est levée : java.lang.OutOfMemoryException.</p><p>Quant à la troisième section : &laquo;&nbsp;la perm&nbsp;&raquo;, celle-ci stocke les objets n&#8217;ayant pas besoin d&#8217;être nettoyés par le GC, comme les classes chargées par le class loader lors de l&#8217;exécution d&#8217;un programme. Ces objets resteront disponibles pendant toute la durée de vie de la JVM. De la même manière, cette zone n&#8217;étant jamais nettoyée, si celle-ci vient à saturer, un OutOfMemory est également lancé : &laquo;&nbsp;java.lang.OutOfMemoryError: PermGen space&nbsp;&raquo; . Son fonctionnement est donc un peu différent : il n&#8217;y a pas de promotion dans cette zone.</p><p>Les zones &laquo;&nbsp;virtual&nbsp;&raquo; ne sont pas utilisées par la machine virtuelle pour stocker des données. Elles correspondent à l&#8217;écart entre la taille réelle et la taille max. Leur réservation n&#8217;a pas encore été faite auprès système. Elles n&#8217;existent que si on a choisi une taille adaptative (Taille Heap Min (-Xms) < Taille Heap Max (-Xmx)).</p><div
align="center"> <img
src='http://blog.xebia.fr/wp-content/uploads/2008/03/gc.jpg' alt='gc.jpg' /></div><p>Pour résumer, les objets sont créés dans &laquo;&nbsp;l&#8217;eden&nbsp;&raquo; (1), puis déplacé dans le &laquo;&nbsp;survivor&nbsp;&raquo; (2) puis dans le &laquo;&nbsp;Tenured&nbsp;&raquo; (3).</p><p>Le GC effectue deux types de traitements :</p><ul><li>Un nettoyage rapide lorsque &laquo;&nbsp;l&#8217;eden&nbsp;&raquo; est rempli, comme il s&#8217;agit d&#8217;un algorithme de copie, la destruction d&#8217;un objet ne coûte rien : zéro inscrution \! Traitement parallélisable.</li><li>Un nettoyage approfondi, plus gourmand en ressources, lorsque le &laquo;&nbsp;tenured est saturé&nbsp;&raquo;. Il faut libérer la mémoire explicitement, et éventuellement la compacter (donc déplacer les objets et mettre à jour les références en conséquence) Plusieurs algo disponibles : <a
href="http://www.brpreiss.com/books/opus5/html/page424.html" title="Mark&#038;Sweep" target="_blank">Mark&#038;Sweep</a>, Concurrent Mark&#038;Sweep, Incremental/train</li></ul><p>L&#8217;un des objectifs de l&#8217;optimisation du GC est donc de limiter la fréquence des FullGC en s&#8217;assurant que le maximum d&#8217;objets sera ramassé avant sa promotion dans la old génération. Pour une application web, cela signifie généralement que l&#8217;intervalle entre 2 fullGC est supérieur au temps de traitement max d&#8217;une requête. Rappelons en passant que la méthode System.gc() déclenche un FullGC et devrait la plupart du temps être proscrite (-XX:+DisableExplicitGC)</p><h3><a
name="jdk7">GC Garbage First</a></h3><p>L&#8217;idée de l&#8217;algorithme G1 (Garbage-First) est d&#8217;utiliser les spécificités des environnements multiprocesseurs afin d&#8217;approcher des performances &#8216;temps réel&#8217; tout en maintenant un débit élevé. Pour parvenir à ce but, le tas n&#8217;est plus divisé en générations, mais en un nombre beaucoup plus grand de petites régions. Désormais, la collecte d&#8217;une génération dans son ensemble n&#8217;est maintenant plus obligatoire, elle peut se limiter à un ensemble précis de régions.</p><div
align="center"> <img
src='http://blog.xebia.fr/wp-content/uploads/2008/03/g1.jpg' alt='g1.jpg' /></div><p>La sélection de ces régions est possible grâce à un marquage spécifique : snapshot-at-the-beginning (<a
href="http://www.memorymanagement.org/glossary/s.html#snapshot-at-the-beginning" title="SATB" target="_blank">SATB</a>). Ce marquage, concurrent et très rapide, fournit au GC une analyse périodique et exhaustive de l&#8217;utilisation des différents objets en mémoire. Toutes les références des différents objets sont suivies. Leur examen permet la détection des objets qui ne sont plus utilisés : ils sont alors considérés comme déchets.</p><p>Un ensemble de métrique est également maintenu afin de permettre d&#8217;évaluer l&#8217;occupation des différentes régions du tas : taille maximale de la région, ancienneté, pourcentage d&#8217;occupation et surtout, pourcentage de déchets. De plus, les collectes passées permettent au GC de connaître relativement précisément le coût de la collecte d&#8217;une région particulière. En croisant ces évaluations (probabilités) avec le recensement des références dans les régions du système, le GC peut effectuer une sélection arbitraire d&#8217;un ensemble de régions nettoyable durant une période prédéfinie. La configuration du GC permet à l&#8217;utilisateur de spécifier une fraction de temps maximale consacrée à la collecte (par exemple : sur 100 secondes d&#8217;exécution de l&#8217;application, le nettoyage des données ne peut pas dépasser 5 secondes (5%)), ce qui revient presque à définir les horaires des collectes par configuration. Les régions privilégiées sont celles qui possèdent les données les plus jeunes et le plus de déchets, car elles proposent généralement un meilleur rendement : voici donc d&#8217;où vient le nom de l&#8217;algorithme &laquo;&nbsp;Garbage First&nbsp;&raquo;. Cette sélection de régions peut être considérée comme une young génération dont le contenu est défini dynamiquement : Garbage First est donc un algorithme générationnel. Par ailleurs, afin d&#8217;éviter de dépasser ce temps &#8216;objectif&#8217;, et donc pour d&#8217;optimiser le débit, la collecte peut-être reportée si nécessaire (dans la mesure du possible), peut être qu&#8217;au prochain passage plus de déchets seront présents dans une des régions.</p><h4>Illustrons ces propos par un exemple :</h4><p>Supposons que le tas est découpé en 12 régions. Les zones vertes sur les schémas suivants représentent des régions vides.</p><p>Le marquage a été effectué, il en résulte le découpage suivant. Le pourcentage affiché dans chacune des cases ci-dessous correspond au pourcentage d&#8217;objets vivants dans leur région associée. Ainsi dans la 2e case, 3% des objets présents dans celle-ci sont toujours utilisés, par conséquent cette région possède 97% de déchets. Les régions qui ne comptent pas d&#8217;objets vivants sont entièrement libérées. La collecte de zone ne contenant que des déchets est très rapide, on peu le comparer à celui utilisé dans les &#8216;survivor&#8217; dans les algorithmes générationnels traditionnels.</p><div
align="center"> <img
src='http://blog.xebia.fr/wp-content/uploads/2008/03/g1-sample1.jpg' alt='jdk7-g1-sample1.jpg' /></div><p>L&#8217;application continue de tourner autant de temps que nécessaire pour remplir une nouvelle région intégralement : les nouveaux objets sont référencés dans une même région (case orange). Si un cycle de collection n&#8217;est pas suffisant pour remplir cette région, le GC ne se lance pas.</p><div
align="center"> <img
src='http://blog.xebia.fr/wp-content/uploads/2008/03/g1-sample2.jpg' alt='jdk7-g1-sample2.jpg' /></div><p>Maintenant que cette nouvelle région est remplie, le GC sélectionne les régions les contenant le plus de déchets qu&#8217;il estime pouvoir traiter simultanément (GabageFirst !). Les données vivantes restant dans ces régions sont copiées et rassemblées dans une autre région. Comme il s&#8217;agit d&#8217;un algorithme de copie, très peu de temps est nécessaire à l&#8217;exécution de cette tâche. Une fois que la copie terminée, les zones sélectionnées ne contiennent plus d&#8217;objets vivants, elles sont alors collectées.</p><div
align="center"> <img
src='http://blog.xebia.fr/wp-content/uploads/2008/03/g1-sample3.jpg' alt='jdk7-g1-sample3.jpg' /></div><p>Au final, si on récapitule, les avantages avancés de ce nouvel algorithme sont les suivants :</p><ul><li>Meilleure prédiction des temps de pauses destinées au GC.</li><li>Courte pause sans fragmentation.</li><li>Nettoyage acceptant la parallélisassions et la concurrence.</li><li>Meilleure utilisation du tas.</li></ul><p>En plus d&#8217;améliorer le débit des collectes, comme le tas n&#8217;est pas divisé en générations, les problèmes de sizing des différentes générations ne sont plus d&#8217;actualité : fini les prises de tête avec le calcul des ratios young / tenured générations.</p><p>Informations complémentaires à propos de ce nouvel algorithme :</p><ul><li><a
href="http://blogs.sun.com/jonthecollector/entry/our_collectors" title="Collectors" target="_blank">Jon Masamitsu&#8217;s Weblog : Our Collectors</a></li><li><a
href="http://research.sun.com/jtech/pubs/04-g1-paper-ismm.pdf" title="GarbageFirst Garbage Collection" target="_blank">GarbageFirst Garbage Collection (pdf)</a></li><li><a
href="http://researchweb.watson.ibm.com/ismm04/slides/detlefs.pdf" title="Low Latency, High Throughput Garbage Collection" target="_blank">GarbageFirst : Low Latency, High Throughput Garbage Collection</a></li></ul><div
align="center"> <a
href="http://twitter.com/ealliaume" ><br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/04/twitter4.png"  alt="twitter erwan alliaume" title="twitter erwan alliaume" border="0" /><br
/> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/feed/</wfw:commentRss> <slash:comments>15</slash:comments> </item> <item><title>JSR 294 &#8211; Les Superpackages</title><link>http://blog.xebia.fr/2008/02/27/jsr-294-les-superpackages/</link> <comments>http://blog.xebia.fr/2008/02/27/jsr-294-les-superpackages/#comments</comments> <pubDate>Wed, 27 Feb 2008 09:06:30 +0000</pubDate> <dc:creator>Erwan Alliaume</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jdk-7]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/02/27/jsr-294-les-superpackages/</guid> <description><![CDATA[Lors de la revue de presse du début décembre, nous annoncions le passage en public draft de la JSR-294 (Improved Modularity Support). Cette JSR fait partie de la liste des évolutions potentielles proposées comme amélioration pour le JDK 7. Ce billet fait le point sur ce qu&#8217;elle propose. Si vous développez en Java depuis plusieurs [...]]]></description> <content:encoded><![CDATA[<p>Lors de la revue de presse du <a
href="http://blog.xebia.fr/2007/12/03/revue-de-presse-xebia-34/#JSR294">début décembre</a>, nous annoncions le passage en public draft de la JSR-294 (Improved Modularity Support). Cette JSR fait partie de la liste des évolutions potentielles <a
href="http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/">proposées comme amélioration pour le JDK 7</a>. Ce billet fait le point sur ce qu&#8217;elle propose.</p><p>Si vous développez en Java depuis plusieurs années, et avez eu l&#8217;occasion de travailler sur des bibliothèques réutilisables, vous avez peut-être été confronté au problème suivant : la publication sélective de classes ou de composants. En clair, vous auriez aimé, dans certaines situations, exposer certaines classes d&#8217;un package à celles d&#8217;un autre package &#8211; typiquement dans une relation de type fabriquant-fabriqué que l&#8217;on retrouve dans le pattern &#8216;Factory&#8217;. Or Java ne vous propose que 2 options pour exposer une classe : elle peut être publique &#8211; donc visible depuis n&#8217;importe quel autre package &#8211; ou &laquo;&nbsp;package private&nbsp;&raquo; &#8211; c&#8217;est-à-dire visible uniquement depuis les classes appartenant au même package. Pour contourner cette gêne, les concepteurs d&#8217;API recourent généralement à des stratégies de contournement :</p><ul><li>Soit ils rendent certaines implémentations internes &laquo;&nbsp;publiques&nbsp;&raquo;, en précisant dans la documentation que leur utilisation n&#8217;est pas garantie, et en indiquant les moyens &laquo;&nbsp;légaux&nbsp;&raquo; de les instancier et de les manipuler. C&#8217;est la philosophie adoptée notamment par les auteurs du framework Eclipse.</li><li>Soit ils simplifient la structure des packages pour regrouper les classes en question. Cette stratégie est plus simple et fiable, mais ne fonctionne pas vraiment avec les API de type SPI (Service Provider Interface), qui ont vocation à être étendues par des tiers.</li></ul><p>La JSR 294 introduit la notion de &laquo;&nbsp;superpackage&nbsp;&raquo; pour s&#8217;attaquer à ce problème. Les superpackages sont destinés à permettre une meilleure organisation interne d&#8217;un composant en comblant un trou dans les différentes visibilités fournies par le langage. Il s&#8217;agit d&#8217;un moyen d&#8217;organiser un module lors de la phase de développement. Cette JSR est souvent associée avec la <a
href="http://jcp.org/en/jsr/detail?id=277">JSR-277 : Java Module System</a> qui propose un nouveau mode de packaging et de déploiement des composants d&#8217;un projet. Les superpackages introduisent un nouveau type de visibilité : plus large que &#8216;default (package)&#8217; mais plus faible que &#8216;public&#8217;.</p><p>Les spécifications de cette JSR sont coécrites par <a
href="http://blogs.sun.com/andreas/entry/edr_of_jsr_294_superpackages">Andreas Sterbenz</a> (membre du &laquo;&nbsp;Java SE Security Group&nbsp;&raquo; chez Sun) et <a
href="http://blogs.sun.com/abuckley/en_US/">Alex Buckley</a> (responsable des spécifications du langage (<a
href="http://java.sun.com/docs/books/jls/">JLS</a>) et de la machine virtuelle java <a
href="http://java.sun.com/docs/books/jvms/">Java VM Specification</a>). Elles sont téléchargeables à <a
href="http://jcp.org/aboutJava/communityprocess/edr/jsr294/">cette adresse</a> et sont présentées sous la forme d&#8217;une mise à jour des chapitres de la JLS impactés par ces modifications.</p><p>Un superpackage est décrit dans un fichier spécial appelé super-package.java. Celui-ci se décompose en 2 parties distinctes :</p><ul><li>Une liste de membres (packages, classes ou superpackages) qui le composent.</li><li>Une liste des membres qu&#8217;il rend visibles depuis l&#8217;extérieur.</li></ul><p>On peut voir les superpackages comme un regroupement virtuel de classes dont tous les membres bénéficient d&#8217;une visibilité mutuelle. La déclaration d&#8217;un superpackage se conforme à la syntaxe générale du langage en introduisant 3 nouveaux mots clé :</p><ul><li><strong>superpackage</strong> : un superpackage est une collection d&#8217;un ou plusieurs package ou superpackage. Les packages ainsi liés peuvent accéder directement à leurs classes et interfaces &#8216;public&#8217; respectives. Pour que ces mêmes classes soient accessibles aux packages extérieurs, les types doivent être exportés.</li><li><strong>member</strong> : les membres d&#8217;un superpackage sont les packages ou superpackages composant celui-ci.</li><li<strong>export</strong> : un type (classe ou interface) est accessible à l&#8217;extérieur d&#8217;un package s&#8217;il est déclaré &#8216;public&#8217;. Un type est accessible à l&#8217;extérieur d&#8217;un superpackage s&#8217;il est déclaré &#8216;plublic&#8217;&nbsp;ET qu&#8217;il est exporté par son superpackage. Les types exportés par un superpackage fils (membre d&#8217;une autre superpackage) sont accessibles dans le superpackage père.</li></ul><div
align="center"><img
src='http://blog.xebia.fr/wp-content/uploads/2008/02/jsr-294_superpackage.jpg' alt='jsr 294 superpackage' /></div><h4>Exemple d&#8217;utilisation</h4><p>Nous désirons mettre à disposition une liste d&#8217;interfaces contenues dans le package &laquo;&nbsp;fr.xebia.jsr294.sample1&#8243; tout en masquant ses implémentations contenues dans le package &laquo;&nbsp;fr.xebia.jsr294.sample1.impl&nbsp;&raquo;. Ce dernier nécessite lui aussi des classes contenues dans un autre package &laquo;&nbsp;fr.xebia.jsr294.sample1.impl.misc&nbsp;&raquo;. En plus de cela, nous voudrions exporter notre classe utilitaire préférée par ce qu&#8217;elle est bien codée et qu&#8217;en plus on a passé du temps à la tester et que l&#8217;on en a envie de montrer notre savoir-faire&#8230; Euh, disons plutôt que nous voulons l&#8217;exporter à titre d&#8217;exemple &#8230;</p><p>Le schéma suivant détaille le contenu des différents packages de cet exemple, toutes les classes sont déclarées &#8216;public&#8217; :</p><div
align="center"><img
src='http://blog.xebia.fr/wp-content/uploads/2008/02/jsr294packages.jpg' alt='jsr294 packages' /></div><p>Et voici le contenu des fichiers &#8216;super-package.java&#8217; :</p><pre class="brush: java; title: ; notranslate">
Fichier : fr/xebia/jsr294/sample1/super-package.java
superpackage fr.xebia.jsr294.sample1 {
	member package fr.xebia.jsr294.sample1;
	member package fr.xebia.jsr294.sample1.utils;
	member superpackage fr.xebia.jsr294.sample1.impl;
	export fr.xebia.jsr294.sample1.utils.MyBeautifulUtils;
	export package fr.xebia.jsr294.sample1;
}
Fichier : fr/xebia/jsr294/sample1/impl/super-package.java
superpackage fr.xebia.jsr294.sample1.impl member fr.xebia.jsr294.sample1 {
	member package fr.xebia.jsr294.sample1.impl;
	member package fr.xebia.jsr294.sample1.impl.misc;
	export  package fr.xebia.jsr294.sample1.impl;
}
</pre><h4>Quelques remarques</h4><ul><li>Un superpackage père référence ses superpackages fils et inversement. Le père doit maîtriser ses fils pour interdire qu&#8217;une classe externe vienne s&#8217;ajouter au superpackage.</li><li>Tout superpackage ne précisant pas de père se retrouve dans un &#8216;superpackage virtuel&#8217;.</li><li>Toute classe n&#8217;appartenant pas à un&nbsp;superpackage est visible dans ce même &#8216;superpackage virtuel&#8217; (ceux qui ont suivi comprendront que ce &#8216;superpackage virtuel&#8217; correspond à ce qui existe aujourd&#8217;hui).</li><li>Il est possible d&#8217;exporter un sous-ensemble des membres d&#8217;un superpackage, dans cet exemple seule la classe fr.xebia.jsr294.sample1.utils.MyBeautifulUtils est exportée alors que tout le package fr.xebia.jsr296.sample1.utils est membre du superpackage.</li><li>Du fait de l&#8217;emplacement des fichiers super-package.java, il ne peut exister qu&#8217;une seule définition de superpackage dans un package. Par contre, un package peut-être membre de plusieurs superpackage.</li></ul><p>Comme à l&#8217;accoutumée, cette JSR possède son lot de détracteurs. Certains proposent de répondre à ce même problème en retournant la solution : au lieu de masquer ce qui est visible par l&#8217;intermédiaire d&#8217;une nouvelle boîte construite par un suc syntaxique plus ou moins élégant, il s&#8217;agirait d&#8217;annoter les classes et méthodes pouvant s&#8217;exporter (<a
href="http://www.jroller.com/matsh/entry/just_say_no_to_jsr">comme le décrit ce post</a>). D&#8217;autres proposent l&#8217;ajout d&#8217;un nouveau mot-clé pour créer un type de visibilité &#8216;package et sous-packages&#8217;. Toute classe présente dans un sous-package serait visible dans le package père. Il ne s&#8217;agit pas du même problème : la version officielle distingue la visibilité (portée par un objet) de la modularité (portée par un système). Pour conclure, je vous laisse découvrir <a
href="http://blogs.sun.com/gbracha/entry/developing_modules_for_development#comment-1144627724000">ce commentaire</a> dans lequel l&#8217;auteur utilise des &#8216;static inner-classes&#8217; pour simuler un superpackage.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/02/27/jsr-294-les-superpackages/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Nagez avec les dauphins ! JDK 7 proposals&#8217; overview</title><link>http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/</link> <comments>http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/#comments</comments> <pubDate>Wed, 20 Feb 2008 08:54:26 +0000</pubDate> <dc:creator>Erwan Alliaume</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[XKE]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/</guid> <description><![CDATA[Xebia a récemment ouvert ses journées de partage de la connaissance au public (XKE). Ce billet présente l&#8217;un des sujets abordés lors de la session de février : les nouveautés du jdk7. À l&#8217;heure où ces mots sont écrits, il n&#8217;existe pas de JSR officielle regroupant les futures fonctionnalités de Java SE 7.0. Il semblerait [...]]]></description> <content:encoded><![CDATA[<p>Xebia a récemment ouvert ses journées de partage de la connaissance au public (<a
href="http://blog.xebia.fr/2008/02/06/xebia-ouvre-ses-journees-de-partage-de-la-connaissance-xke/">XKE</a>). Ce billet présente l&#8217;un des sujets abordés lors de la session de février : les nouveautés du jdk7.</p><p>À l&#8217;heure où ces mots sont écrits, il n&#8217;existe pas de JSR officielle regroupant les futures fonctionnalités de Java SE 7.0. Il semblerait que <a
href="http://blogs.sun.com/dannycoward/">Danny Coward</a> y travaille. Il est Chief Architect chez Sun et représentant Sun du <a
href="http://jcp.org/en/participation/committee#SEEE">Executive Commitee</a> pour le <a
href="http://jcp.org/en/home/index">Java Community Process</a>. La JSR officielle devrait voir le jour dans les prochains mois, peut-être avant la prochaine édition de Java One qui aura lieu en mai 2008 à San Francisco. Aucun des points abordés dans cette présentation n&#8217;est donc officiel, il ne s&#8217;agit que d&#8217;une tendance générale.</p><p>Puisque la communauté Java aime les animaux, étudions rapidement l&#8217;évolution des noms de codes des différents JDK. Le JDK 5 était représenté par un mammifère carnivore (Tiger) qui annonçait la force et le caractère des nouveautés de celui-ci. La puissance et la rapidité du JDK 6 étaient représentées par un cheval du Nord-Ouest américain (Mustang). Les nouveautés du JDK 7 sont elles représentées par un animal beaucoup plus calme : l&#8217;<a
href="http://fr.wikipedia.org/wiki/Dauphin">esprit de la mer</a> (Dolphin). Comme les noms de codes s&#8217;assagissent à chaque version, et vu que celui du JDK 8 n&#8217;est pas encore connu, nous proposons de l&#8217;appeler &#8216;Kitty&#8217;, &#8216;Butterfly&#8217; ou &#8216;Bunny&#8217;.</p><p>Plaisanteries mises à part, la présentation ci-dessous est découpée en 4 parties principales, elle aborde les points suivants :</p><ul><li><strong>Nouveautés du langage</strong> : les sucs syntaxiques et autres modifications du langage</li><li><strong>Modularité</strong> : Superpackage (JSR 294) et Java Module System (JSR 277)</li><li><strong>Nouvelles API</strong> : Nio 2 (JSR 203), Unit and Quantities (JSR 275), Date and Time (JSR 310), Concurrency Utilities Updates (JSR 166y), XQuery (JSR 225), &#8230;</li><li><strong>Nouveautés JVM</strong> : Tiered Compilation, new Script engines, G1 garbage collector, &#8230;</li></ul><p><br/></p><div
style="text-align:center" id="__ss_270612"> <object
style="width:700px;margin:0px" width="650" height="542"><param
name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=2008-02-07-xebia-erwan-alliaume-java7proposals-pps-1203356265430161-3"/><param
name="allowFullScreen" value="true"/><param
name="allowScriptAccess" value="always"/><embed
src="http://static.slideshare.net/swf/ssplayer2.swf?doc=2008-02-07-xebia-erwan-alliaume-java7proposals-pps-1203356265430161-3" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="650" height="542"></embed></object></p><div
style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;text-align:center;" > <a
href="http://www.slideshare.net/?src=embed"><img
src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> <a
href='http://blog.xebia.fr/wp-content/uploads/2008/02/2008-02-07_xebia_erwanalliaume_java7proposals.pdf' title='2008-02-07_xebia_erwanalliaume_java7proposals.pdf'><img
src='http://blog.xebia.fr/wp-content/uploads/2008/02/pdf.miniature.jpg' height="20" border="0" alt="jdk7 proposals" /> T&eacute;l&eacute;charger en PDF</a></div></div><p><br/></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> </channel> </rss>
