<?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/"
	>

<channel>
	<title>Blog Xebia France &#187; scala</title>
	<atom:link href="http://blog.xebia.fr/tag/scala/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xebia.fr</link>
	<description>J2EE, Agilité et SOA</description>
	<lastBuildDate>Thu, 09 Sep 2010 07:48:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Revue de Presse Xebia</title>
		<link>http://blog.xebia.fr/2010/07/20/revue-de-presse-xebia-168/</link>
		<comments>http://blog.xebia.fr/2010/07/20/revue-de-presse-xebia-168/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 05:41:44 +0000</pubDate>
		<dc:creator>Xebia France</dc:creator>
				<category><![CDATA[Revue de presse]]></category>
		<category><![CDATA[AMQP]]></category>
		<category><![CDATA[BigPipe]]></category>
		<category><![CDATA[Camel]]></category>
		<category><![CDATA[Cassandra]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[liferay]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[Saas]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Tibco]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://blog.xebia.fr/?p=5129</guid>
		<description><![CDATA[
La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.
Actualité  éditeurs / SSII

Du BI en SaaS gratuit pendant un an avec Tibco
Sortie de la version 6 du portail open-source Liferay
Spring facilite l&#8217;adoption d&#8217;AMQP

SOA

Sortie d&#8217;Apache Camel 2.4

Le coin de la  technique

Scala 2.8 enfin finale !
BigPipe : L&#8217;optimisation du temps de chargement selon FaceBook
Twitter [...]]]></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/07/20/revue-de-presse-xebia-168/#DuBIenSaaSgratuitpendantunanav">Du BI en SaaS gratuit pendant un an avec Tibco</a></li>
<li><a href="http://blog.xebia.fr/2010/07/20/revue-de-presse-xebia-168/#Sortiedelaversionduportailopen">Sortie de la version 6 du portail open-source Liferay</a></li>
<li><a href="http://blog.xebia.fr/2010/07/20/revue-de-presse-xebia-168/#SpringfaciliteladoptiondAMQP">Spring facilite l&#8217;adoption d&#8217;AMQP</a></li>
</ul>
<p><strong>SOA</strong></p>
<ul>
<li><a href="http://blog.xebia.fr/2010/07/20/revue-de-presse-xebia-168/#SortiedApacheCamel">Sortie d&#8217;Apache Camel 2.4</a></li>
</ul>
<p><strong>Le coin de la  technique</strong></p>
<ul>
<li><a href="http://blog.xebia.fr/2010/07/20/revue-de-presse-xebia-168/#Scalaenfinfinale">Scala 2.8 enfin finale !</a></li>
<li><a href="http://blog.xebia.fr/2010/07/20/revue-de-presse-xebia-168/#BigPipeLoptimisationdutempsdec">BigPipe : L&#8217;optimisation du temps de chargement selon FaceBook</a></li>
<li><a href="http://blog.xebia.fr/2010/07/20/revue-de-presse-xebia-168/#TwitterabandonnelestockagesurC">Twitter abandonne le stockage sur Cassandra</a></li>
</ul>
<h3><a name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3>
<h4><a name="DuBIenSaaSgratuitpendantunanav"></a>Du BI en SaaS gratuit pendant un an avec Tibco</h4>
<p>Tibco vient de mettre à disposition sa suite Spotfire Business Intelligence en mode SaaS gratuitement pendant une année.  Cette nouvelle solution permet d&#8217;importer des données depuis diverses sources, telles que les feuilles excel, les bases de données Access, Oracle, &#8230; et de les présenter dans des rapports interactifs, facilitant ainsi leur analyse.</p>
<p>Spotfire présente deux principaux avantages :</p>
<ul>
<li>Le mode SaaS de la solution accélère la construction  des rapports BI et par conséquence leur mise à disposition au business,  en éliminant tout le temps de mise en place des infrastructures habituellement nécessaires pour ce genre de projet.</li>
</ul>
<ul>
<li>L&#8217;autre grande nouveauté mise en avant par l&#8217;éditeur est le côté social de sa solution. L&#8217;utilisateur de Spotfire, pourra partager ses rapports avec ses collaborateurs situés n&#8217;importe où dans le monde pour une plus grande interactivité.</li>
</ul>
<p>Plus de détails sur <a title="le site" href="http://spotfire.tibco.com/silverspotfire/">le site</a> de l&#8217;éditeur.</p>
<h4><a name="Sortiedelaversionduportailopen"></a>Sortie de la version 6 du portail open-source Liferay</h4>
<p><a title="Brian Chan" href="http://www.liferay.com/about-us/leadership">Brian Chan</a>, fondateur du projet <a title="Liferay" href="http://www.liferay.com/">Liferay</a>, vient d&#8217;annoncer sur le blog de l&#8217;entreprise <a title="la sortie de la 6me version" href="http://www.liferay.com/web/brian.chan/blog/-/blogs/liferay-portal-6-ga-released">la sortie de la 6ème version</a> du portail open-source.</p>
<p>Cette nouvelle version apporte son lot de nouveautés :</p>
<p><strong>Gestion de contenu :</strong></p>
<ul>
<li>Possibilité de partager du contenu entre différentes communautés grâce à l&#8217;ajout d&#8217;un scope Global, et d&#8217;un nouveau portlet d&#8217;administration (<a title="Asset Publisher Portlet" href="http://www.liferay.com/community/wiki/-/wiki/Main/Asset%20Publisher%20Portlet">Asset Publisher Portlet</a>).</li>
<li>Utilisation de <a title="tags et de catgories" href="http://www.liferay.com/community/wiki/-/wiki/Main/Tags%20and%20Categories">tags et de catégories</a> pour une meilleure organisation et une recherche plus précise des informations.</li>
<li>Gestion de la validation et de la parution des articles à l&#8217;aide d&#8217;un Workflow pouvant s&#8217;appuyer sur <a title="jBPM 3.0" href="http://jboss.org/jbpm">jBPM 3.0</a>, puis prochainement sur la <a title="solution BPMS dIntalio" href="http://www.intalio.com/bpms">solution BPMS d&#8217;Intalio</a>.</li>
</ul>
<p><strong>Administration du portail :</strong></p>
<ul>
<li>Mise en place d&#8217;indicateur JMX pour le monitoring des performances des différents portlets déployés sur le portail.</li>
<li>Ajout d&#8217;un système d&#8217;audit permettant d&#8217;enregistrer un certain nombre de mesures, pouvant être traitées ultérieurement (Audit Framework).</li>
<li>Intégration avec les systèmes de reporting <a title="Jasper Reports" href="http://www.jaspersoft.com/jasperreports">Jasper Reports</a> et <a title="BIRT" href="http://www.eclipse.org/birt">BIRT</a> à travers le nouveau module Report Engine Framework.</li>
<li>Simplification de l&#8217;administration du portail grâce à l&#8217;ajout d&#8217;une nouvelle console basée sur l&#8217;exécution de scripts.</li>
</ul>
<p><strong>Interfaces utilisateur :</strong></p>
<ul>
<li>Ajout d&#8217;un nouveau composant appelé <a title="Dockbar" href="http://www.liferay.com/community/wiki/-/wiki/Main/Dockbar">Dockbar</a> qui améliore la navigation au sein des différentes communautés du portail.</li>
<li>Possibilité de créer en un clic une nouvelle communauté ou une nouvelle page, en indiquant simplement le Template de page à utiliser.</li>
<li>Réorganisation du portlet <a title="Document Library" href="http://www.liferay.com/community/wiki/-/wiki/Main/Document%20Library%20Portlet">Document Library</a> afin de simplifier la gestion des documents au sein du portail.</li>
</ul>
<p><strong>Extension et intégration :</strong></p>
<ul>
<li>Ajout du module Generic Asset Framework, permettant d&#8217;interagir simplement avec les Workflows internes du portail ainsi que sur les options de sécurité.</li>
<li>Intégration avec le framework Web <a title="Alloy UI" href="http://alloyui.com/">Alloy UI</a>, permettant de créer simplement des interfaces en HTML 5 s&#8217;appuyant sur les standards du W3C.</li>
<li>Mise en place d&#8217;un framework de script permettant d&#8217;étendre les applications créées en dehors du portail.</li>
<li>Nouvelle intégration native du portlet Document Library avec les solutions de gestion de documents et notamment <a title="Documentum" href="http://france.emc.com/products/family/documentum-family.htm">Documentum</a>, ainsi que l&#8217;amélioration de l&#8217;intégration avec <a title="Sharepoint" href="http://sharepoint.microsoft.com">Sharepoint</a>.</li>
</ul>
<p>Avec cette nouvelle version de Liferay Portal, Liferay continu d&#8217;étoffer son offre Portail et montre qu&#8217;il reste parmi les leaders du domaine. L&#8217;intégration avec les outils de BPM, de reporting et de gestion de documents du marché montre la volonté de la société de se diriger de plus en plus vers une solution ouverte et inter-connectée.</p>
<p>Pour plus d&#8217;information sur les nouveautés :</p>
<p><a title="Toutes les nouvelles fonctionnalits de la version 60" href="http://www.liferay.com/community/wiki/-/wiki/Main/New+Features+in+Liferay+Portal+v6.0">Toutes les nouvelles fonctionnalités de la version 6.0</a><br />
<a title="La liste des changements sur le JIRA du projet" href="http://issues.liferay.com/browse/LPS/fixforversion/10612">La liste des changements sur le JIRA du projet</a></p>
<h4><a name="SpringfaciliteladoptiondAMQP"></a>Spring facilite l&#8217;adoption d&#8217;AMQP</h4>
<p>Comme on pouvait s&#8217;y attendre avec le <a title="rachat de RabbitMQ par VMWare" href="http://blog.xebia.fr/2010/04/19/revue-de-presse-xebia-155/#RabbitMQrachetparSpringSource">rachat de RabbitMQ par VMWare</a>, Spring intégre petit à petit des fonctionnalités facilitant l&#8217;adoption d&#8217;<a title="AMQP" href="http://blog.xebia.fr/2010/02/23/amqp-une-alternative-a-jms/">AMQP</a>.</p>
<p>Le premier milestone de <a title="Spring AMQP 100" href="http://www.springsource.org/node/2715">Spring AMQP 1.0.0</a> matérialise cet effort. Un gros point de satisfaction, Spring ne s&#8217;est pas contenté de fournir la partie cliente Java de RabbitMQ mais propose une réelle abstraction du protocole AMQ. Par contre la gestion des versions de la spécification reste un peu flou. Elle semble caler sur la version 0.8 tout en étant compatible avec la 0.9.1.</p>
<p>La distribution vient avec 4 modules : spring-amqp, spring-rabbit,spring-rabbit-admin et spring-erlang. Ce dernier est le plus inattendu et la <a title="documentation" href="http://static.springsource.org/spring-amqp/docs/1.0.x/reference/htmlsingle/">documentation</a> semble indiquer que le projet est expérimental. Pour rappel le serveur de RabbitMQ est implémenté en Erlang, un langage très perfomant sur les aspects concurrentiels.</p>
<p>La documentation, bien qu&#8217;incomplète, a la bonne idée de proposer plusieurs cas d&#8217;utilisation et laisse entrevoir un bon support pour Spring Integration. Cette nouvelle est quoiqu&#8217;il en soit une très bonne nouvelle pour l&#8217;adoption d&#8217;AMQP dans le monde Java. Par ailleurs Spring propose également une version .Net.</p>
<h3><a name="SOA"></a>SOA</h3>
<h4><a name="SortiedApacheCamel"></a>Sortie d&#8217;Apache Camel 2.4</h4>
<p>La version 2.4.0 du projet <a title="Apache Camel" href="http://camel.apache.org/">Apache Camel</a> est mise à disposition moins de 2 mois seulement après la sortie de la version 2.3.0. Elle vient compléter un changelog déjà très fourni sur la version précédente et apporte un certain nombre de corrections, d&#8217;améliorations et de nouveautés:</p>
<ul>
<li>Le support d&#8217;OSGI Blueprint via la création d&#8217;un namespace XML adapté permettant de définir des routes Camel. Ce namespace est pour le moment uniquement exploitable via l&#8217;implémentation Blueprint <a title="'Apache Aries'" href="http://incubator.apache.org/aries/">&#8216;Apache Aries&#8217;</a> utilisée par le projet <a title="Apache Karaf" href="http://karaf.apache.org/">&#8216;Apache Karaf&#8217;</a>. A noter que la définition d&#8217;errorHandler n&#8217;est pas possible pour le moment.</li>
</ul>
<ul>
<li>Un <a title="moteur de routage asynchrone" href="http://camel.apache.org/asynchronous-processing.html">moteur de routage asynchrone</a> non bloquant complet: tous les patterns d&#8217;intégration sont supportés ainsi que différents composants: JBI, NMR, CXF, Jetty et Netty.</li>
<li>La version de Spring utilisée par Camel passe à la 3.0.3 marquant ainsi  la fin du support de la branche 2.0 (La version 2.5 étant encore  supportée). Le support de Spring Security pour sa part change également de version et passe à la 3.0.3.RELEASE.</li>
</ul>
<p>La version 2.3.0 proposait déjà de nombreuses améliorations majeures telles que le support des <a title="Property placeholders" href="http://camel.apache.org/using-propertyplaceholder.html">Property placeholders</a> qui manquaient cruellement, ainsi que le support d&#8217;un nombre conséquent de nouveaux composants (camel-exec, camel-nagios, camel-netty, camel-spring-spring-security, camel-crypto, &#8230;). Le projet Camel devrait à coup sûr continuer à faire parler de lui dans les prochains mois, tout en s&#8217;imposant un peu plus comme un acteur majeur dans le milieu des <a title="frameworks dintgration" href="http://blog.xebia.fr/2007/12/17/spring-integration-lavenement-des-lightweight-esb/">frameworks d&#8217;intégration</a>.</p>
<h3><a name="Lecoindelatechnique"></a>Le coin de la  technique</h3>
<h4><a name="Scalaenfinfinale"></a>Scala 2.8 enfin finale !</h4>
<p>Après plusieurs mois de bêtas et de release candidates, voici enfin venir la toute dernière version de Scala en finale à savoir la 2.8.0 ! Cette version quasi majeure est considérée par beaucoup comme une 3.0 tellement les nouveautés sont nombreuses.</p>
<p>Au menu : la nouvelle API collection, la spécialisation de type, une nouvelle implémentation des <code>Array</code>, les arguments nommés et par défaut, les <code>Package Objects</code>, le support des continuations ou bien encore le REPL amélioré. Les nouveautés étant nombreuses, je pense que cette nouvelle version mériterait bien son petit article, n&#8217;est-il pas ? <img src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>La mise à jour de Scala par votre IDE est <a title="possible" href="http://www.scala-lang.org/node/91#ide_plugins">possible</a>, pour les autres le téléchargement de la distribution se passe par <a title="ici" href="http://www.scala-lang.org/downloads">ici</a>.</p>
<h4><a name="BigPipeLoptimisationdutempsdec"></a>BigPipe : L&#8217;optimisation du temps de chargement selon FaceBook</h4>
<p>Après les outils Yahoo (YSlow) et Google (Google Speed), c&#8217;est au tour de facebook de sortir de son chapeau une arme secrète pour réduire le temps de chargement des pages. Cette fois la solution est tout autre, ni Sprite CSS, ni JavaScript compacté, il faut paralléliser le chargement des pages par blocs. Avec BigPipe, le serveur envoi un bloc d&#8217;en-tête HTML qui s&#8217;occupe de charger la librairie BigPipe et fournit un template pour positionner les blocs appelés &#8216;pagelet&#8217;. Le serveur va ensuite envoyer toujours dans la même réponse, un bloc JavaScript par pagelet invoquant une méthode de chargement. L&#8217;objet Json fournit en paramètre contient le contenu HTML, l&#8217;URL de la CSS et celle du JavaScript nécessaire. Pendant que le navigateur charge une CSS et affiche un nouveau bloc HTML, le serveur est encore en train d&#8217;injecter ses pagelets.<br />
Avec ce système, facebook a réussi à réduire le temps de chargement perçu par les utilisateurs. Ils précisent diviser par deux le temps de chargement pour la plupart des navigateurs. A l&#8217;exception de Firefox 3.6 qui n&#8217;a gagné que 22% de temps de chargement.</p>
<ul>
<li><a title="Larticle sur facebook engineering" href="http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919">L&#8217;article sur facebook engineering</a></li>
<li><a title="Larticle sur InfoQ" href="http://www.infoq.com/news/2010/07/bigpipe-facebook-optimize">L&#8217;article sur InfoQ</a></li>
</ul>
<h4><a name="TwitterabandonnelestockagesurC"></a>Twitter abandonne le stockage sur Cassandra</h4>
<p>L&#8217;affaire avait fait grand bruit en février : <a title="Twitter abandonne MySql pour stocker ses tweets sous Cassandra" href="http://www.informationweek.com/news/software/open_source/showArticle.jhtml?articleID=223100894">Twitter abandonne MySql pour stocker ses tweets sous Cassandra</a>. Cet abandon donnait à Cassandra une légitimé hors des murs de Facebook. Malheureusement, le soufflet vient de brutalement retomber. Twitter fait machine arrière (ou plutot clarifie son propos, car il y a eu <em>incompréhension</em> (sic)) : les tweets sont stockés et continueront à l&#8217;être sous MySql. Cassandra est utilisé au sein de l&#8217;entreprise, mais pour d&#8217;autres besoins (via <a title="TechCrunch" href="http://techcrunch.com/2010/07/09/twitter-analytics-mysql/">TechCrunch</a>). Il se murmure que Cassandra serait au cœur de la prochaine étape de la monétisation de Twitter, un moteur d&#8217;analyse <em>public</em> en temps réel. Cette utilisation de Cassandra en interne est <a title="confirme sur le blog de Twitter" href="http://engineering.twitter.com/2010/07/cassandra-at-twitter-today.html">confirmée sur le blog de Twitter</a>.</p>
<p>Alors, pourquoi ce changement de stratégie ? Nous n&#8217;allons certainement pas hurler avec la meute qui, dès cette annonce a fait fleurir des analyses plus ou moins fantaisistes sur la tenue à la charge de Cassandra, son exploitabilité, et sur tous les défauts que l&#8217;on peut prêter à un tel produit. Nous nous rangeons plutôt du coté de ceux qui pense que le timing est mauvais. Tout d&#8217;abord parce que Twitter subit actuellement de fréquents pic de charge qui entrainent des coupures de service. Cet effet Coupe du monde de football devrait néanmoins commencer à retomber. La continuité de service semble être la priorité actuellement en terme d&#8217;évolutions techniques et architecturales. Ensuite, nous l&#8217;avons déjà évoqué, Twitter entre dans une phase où l&#8217;entreprise tente de monétiser son service. C&#8217;est là aussi, n&#8217;en doutons pas, un poste de développement important, avec de nombreux services à créer et à roder.</p>
<p>Pour conclure, nous conservons notre confiance à Cassandra. Son abandon par Twitter (sur une fonctionnalité identifiée, celle du stockage des tweets) est une information stratégique d&#8217;importance (MySql garde la confiance d&#8217;un des plus grand <em>stockeur</em> du monde web), mais reste un choix stratégique et pas forcément technique. Nous continuerons donc à suivre avec attention les développements de Cassandra, et du NoSql en général.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.fr/2010/07/20/revue-de-presse-xebia-168/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Deuxième soirée Paris Scala User Group chez Xebia</title>
		<link>http://blog.xebia.fr/2010/06/22/deuxieme-soiree-paris-scala-user-group-chez-xebia/</link>
		<comments>http://blog.xebia.fr/2010/06/22/deuxieme-soiree-paris-scala-user-group-chez-xebia/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 08:13:39 +0000</pubDate>
		<dc:creator>Romain Maton</dc:creator>
				<category><![CDATA[Java / JEE]]></category>
		<category><![CDATA[Paris Scala User Group]]></category>
		<category><![CDATA[PSUG]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://blog.xebia.fr/?p=4949</guid>
		<description><![CDATA[
Après une première soirée très réussie, le Paris Scala User Group remet le couvert pour une deuxième session le mercredi 30 juin à 19h30 (inscription ici) !
Et, comme la dernière fois, cela se passera chez Xebia dans nos locaux d&#8217;Haussmann.
Voici le menu de la soirée avec une présentation d&#8217;Alexis Agahi et une autre de François [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.xebia.fr/wp-content/uploads/2010/05/scala-logo.png" border="0" alt="" style="margin: 1em 1em 1em 2em; float: right;" /><br />
Après une <a href="http://groups.google.com/group/paris-scala-user-group/browse_thread/thread/a5b085446972d34e" title="première soirée" >première soirée</a> <a href="http://jduchess.org/duchess-france/blog/psug1-la-premiere-du-scala-user-group/" title="très réussie" >très réussie</a>, le <a href="http://groups.google.com/group/paris-scala-user-group" title="Paris Scala User Group" >Paris Scala User Group</a> remet le couvert pour une <a href="http://groups.google.com/group/paris-scala-user-group/browse_thread/thread/da5eb7882fac8da9" title="deuxième session" >deuxième session</a> le mercredi 30 juin à 19h30 <em>(inscription <a href="http://doodle.com/zds5ka5qqa3ndnp5" title="ici" >ici</a>)</em> !</p>
<p>Et, comme la <a href="http://blog.xebia.fr/2010/05/18/xebia-accueille-le-paris-scala-user-group/" title="dernire fois" >dernière fois</a>, cela se passera chez Xebia dans nos locaux d&#8217;Haussmann.</p>
<p>Voici le menu de la soirée avec une présentation d&#8217;Alexis Agahi et une autre de François Armand <em>(annonce disponible <a href="http://groups.google.com/group/paris-scala-user-group/browse_thread/thread/da5eb7882fac8da9" title="ici" >ici</a>)</em> :</p>
<p>&#8212;</p>
<p>La seconde session aura lieu chez Xebia à 19h30 le mercredi 30 juin (et non plus le 17 ou le 24 comme prévu initialement, désolé pour la confusion).</p>
<p>Nous avons prévu deux présentations: </p>
<ul>
<li>La 1ère présentation sera &laquo;&nbsp;De Java à Scala : premier retour d&#8217;expérience&nbsp;&raquo; présentée par <a href="http://twitter.com/aagahi" title="Alexis Agahi" >Alexis Agahi</a>. La présentation <em>(entre 40min et 1h)</em> sera orientée developpeur Java et sera donc abordable pour tous. </li>
<li>La seconde présentation, par <a href="http://fanf42.blogspot.com/" title="Franois Armand" >François Armand</a>, abordera les collections de Scala 2.8. Ce sera une présentation assez générale, avec les différentes classes et tout le bonheur qu&#8217;elles apportent.</li>
</ul>
<p>Notez bien l&#8217;adresse :<br />
Xebia<br />
156 boulevard haussmann à Paris<br />
Immeuble A<br />
7e étage </p>
<p>Les places étant limitées, veuillez vous inscrire à l&#8217;adresse suivante : <a href="http://doodle.com/zds5ka5qqa3ndnp5">http://doodle.com/zds5ka5qqa3ndnp5</a>.</p>
<p>&#8212;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.fr/2010/06/22/deuxieme-soiree-paris-scala-user-group-chez-xebia/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Xebia accueille le Paris Scala User Group</title>
		<link>http://blog.xebia.fr/2010/05/18/xebia-accueille-le-paris-scala-user-group/</link>
		<comments>http://blog.xebia.fr/2010/05/18/xebia-accueille-le-paris-scala-user-group/#comments</comments>
		<pubDate>Tue, 18 May 2010 11:19:39 +0000</pubDate>
		<dc:creator>Romain Maton</dc:creator>
				<category><![CDATA[Java / JEE]]></category>
		<category><![CDATA[Paris Scala User Group]]></category>
		<category><![CDATA[PSUG]]></category>
		<category><![CDATA[SBT]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://blog.xebia.fr/?p=4693</guid>
		<description><![CDATA[
Xebia est très heureux d&#8217;accueillir la première soirée du Paris Scala User Group.
Elle se déroulera ce soir à partir de 19h30.
Le programme de cette soirée live coding par Alexandre Bertails est le suivant (disponible ici) :
&#8212;
Il s&#8217;agit d&#8217;une présentation que j&#8217;ai déjà faite au Boston Area User Group il y a quelques temps (et amélioré [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.xebia.fr/wp-content/uploads/2010/05/scala-logo.png" border="0" alt="" style="margin: 1em 1em 1em 2em; float: right;" /><br />
Xebia est très heureux d&#8217;accueillir la première soirée du <a href="http://groups.google.com/group/paris-scala-user-group" title="Paris Scala User Group" >Paris Scala User Group</a>.<br />
Elle se déroulera <a href="http://groups.google.com/group/paris-scala-user-group/browse_thread/thread/a5b085446972d34e" title="ce soir  partir de 19h30" >ce soir à partir de 19h30</a>.<br />
Le programme de cette soirée <em>live coding</em> par <a href="http://www.parisjug.org/xwiki/bin/view/Speaker/BertailsAlexandre" title="Alexandre Bertails" >Alexandre Bertails</a> est le suivant <em>(disponible <a href="http://groups.google.com/group/paris-scala-user-group/msg/8fedc112850efb03" title="ici" >ici</a>)</em> :</p>
<p>&#8212;</p>
<p>Il s&#8217;agit d&#8217;une présentation que j&#8217;ai déjà faite au Boston Area User Group il y a quelques temps (et amélioré depuis). Pour le PSUG, j&#8217;aurai deux heures au lieu d&#8217;une. Je prévois donc de rendre cette présentation accessible à des purs java-istes ou des débutants Scala. J&#8217;utiliserai tout de même à la fin des fonctionnalités avancées de Scala, mais que je prétends faciles à l&#8217;utilisation.</p>
<p>Je ne ferai que du live-coding et je n&#8217;utiliserai aucun slide. Ce sera l&#8217;occasion de revenir sur des outils qui n&#8217;ont pas été vraiment explorés pendant la soirée Scala au ParisJUG (en particulier sbt).</p>
<p>Voici le plan de la présentation :</p>
<ul>
<li>je reviendrai d&#8217;abord sur le concept d&#8217;injection de dépendances et comment on fait ça à l&#8217;ancienne (ou plutôt, comment on ferait en Java). Je parlerai rapidement d&#8217;immutabilité et de typage statique ici.</li>
<li>ensuite, je montrerai que les frameworks classiques venant du monde Java fonctionnent très bien avec Scala. Je laisse aux participants le choix du framework sur ce lien [1]. Je reviendrai notamment sur leurs limites dans le contexte de Scala.</li>
<li>enfin, retour à du Scala pur (et pas forcément dur). Nous reviendrons entre autres sur le Cake Pattern. Mais surtout, nous jouerons ensemble avec le cocktail détonnant suivant : traits, mixins, structural typing et closures.</li>
</ul>
<p>&#8212;</p>
<p>A noter toutefois que nous n&#8217;avions pas couvert <a href="http://code.google.com/p/simple-build-tool/" title="sbt" >sbt</a> lors de la soirée <a href="http://blog.xebia.fr/2010/04/20/merci-paris-jug/" title="Scala du Paris JUG" >Scala du Paris JUG</a> mais que cet oubli <em>(volontaire <img src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</em> a été rattrapé par 2 fois avec une <a href="http://blog.xebia.fr/2010/05/06/sbt-simple-build-tool-pour-scala/" title="présentation générale du produit" >présentation générale du produit</a> ainsi qu&#8217;un exemple de <a href="http://blog.xebia.fr/2010/05/11/configurer-vos-projets-sbt-pour-eclipse-ou-intellij-idea/" title="configuration pour Eclipse et IDEA" >configuration pour Eclipse et IDEA</a>.</p>
<p>Malheureusement pour les retardataires, la soirée affiche <strong>complet</strong> depuis plusieurs jours&#8230; Donc, pour ne pas rester sur la touche la prochaine fois, n&#8217;oubliez pas de vous abonner à <a href="http://groups.google.com/group/paris-scala-user-group" title="la mailinglist du PSUG" >la mailing-list du PSUG</a> !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.fr/2010/05/18/xebia-accueille-le-paris-scala-user-group/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'outil sbt pour Scala, ce second article s'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 [...]]]></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'outil sbt pour Scala, ce second article s'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'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'autres en tant que répertoires de tests, définir _lib_managed_ en tant que dossier de librairies... Il est donc tout à fait possible de faire tout ceci à la main en quelques minutes. L'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'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...)</em> afin que le projet soit importable et intégralement configuré. Il n'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'abord, nous allons récupérer le projet à l'aide de la commande <code>git clone</code> :</p>
<div class="syntax_hilite">
<div id="java-11">
<div class="java">$ git clone http:<span style="color: #808080; font-style: italic;">//github.com/musk/SbtEclipsify.git </span></div>
</div>
</div>
<p></p>
<p>Ensuite, nous allons démarrer sbt et faire un <code>update</code> pour mettre à jour toutes les dépendances du projet :</p>
<div class="syntax_hilite">
<div id="java-12">
<div class="java">$ sbt<br />
$ update</div>
</div>
</div>
<p></p>
<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'aide de la commande <code>publish-local</code> <em>(image tronquée)</em> :</p>
<div class="syntax_hilite">
<div id="java-13">
<div class="java">$ publish-local</div>
</div>
</div>
<p></p>
<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>
<div class="syntax_hilite">
<div id="java-14">
<div class="java"><span style="color: #a1a100;">import sbt._</span></p>
<p>&nbsp;<span style="color: #000000; font-weight: bold;">class</span> MySbtProjectPlugins<span style="color: #66cc66;">&#40;</span>info: ProjectInfo<span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">extends</span> PluginDefinition<span style="color: #66cc66;">&#40;</span>info<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;lazy val eclipse = <span style="color: #ff0000;">"de.element34"</span> % <span style="color: #ff0000;">"sbt-eclipsify"</span> % <span style="color: #ff0000;">"0.5.2-SNAPSHOT"</span><br />
&nbsp;<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<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'aide du trait <code>Eclipsify</code> :</p>
<div class="syntax_hilite">
<div id="java-15">
<div class="java"><span style="color: #a1a100;">import sbt._</span><br />
<span style="color: #a1a100;">import de.element34.sbteclipsify._</span></p>
<p><span style="color: #000000; font-weight: bold;">class</span> MyProject<span style="color: #66cc66;">&#40;</span>info: ProjectInfo<span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">extends</span> DefaultProject<span style="color: #66cc66;">&#40;</span>info<span style="color: #66cc66;">&#41;</span> with Eclipsify <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #808080; font-style: italic;">// ...</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<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'aide de la commande <code>update</code>)</em> :</p>
<div class="syntax_hilite">
<div id="java-16">
<div class="java">$ sbt<br />
$ update<br />
$ eclipse</div>
</div>
</div>
<p></p>
<div align="center">
    <img src="http://blog.xebia.fr/wp-content/uploads/2010/05/3-update-eclipse.png" border="0" alt="" />
</div>
<p>That's all ! Il n'y a plus qu'à 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'autres plugins existent :</p>
<ul>
<li><a href="http://github.com/frank06/sbt-eclipse-plugin/" title="sbteclipseplugin" >sbt-eclipse-plugin</a> : ce plugin n'est ni plus ni moins qu'un container de type classpath qui pointe vers le dossier <code>lib_managed</code>. L'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'est disponible pour l'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'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'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'il faudra ajouter à sa classe projet qui lui permettra d'avoir la commande <code>idea</code> disponible dans le shell.</p>
<p>Il faut donc tout d'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>
<div class="syntax_hilite">
<div id="java-17">
<div class="java">val repo = <span style="color: #ff0000;">"GH-pages repo"</span> at <span style="color: #ff0000;">"http://mpeltonen.github.com/maven/"</span><br />
val idea = <span style="color: #ff0000;">"com.github.mpeltonen"</span> % <span style="color: #ff0000;">"sbt-idea-plugin"</span> % <span style="color: #ff0000;">"0.1-SNAPSHOT"</span></div>
</div>
</div>
<p>
Maintenant que notre plugin est prêt à l'emploi, nous allons l'ajouter dans la configuration de notre projet <em>(toujours au niveau de <code>project/build/MyProject.scala</code>)</em>. Cela nous donne :</p>
<div class="syntax_hilite">
<div id="java-18">
<div class="java"><span style="color: #a1a100;">import sbt._</span><br />
<span style="color: #a1a100;">import de.element34.sbteclipsify._</span></p>
<p><span style="color: #000000; font-weight: bold;">class</span> MainProject<span style="color: #66cc66;">&#40;</span>info: ProjectInfo<span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">extends</span> ParentProject<span style="color: #66cc66;">&#40;</span>info<span style="color: #66cc66;">&#41;</span> with IdeaPlugin <span style="color: #66cc66;">&#123;</span><br />
&nbsp; lazy val myProject = project<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"myproject"</span>, <span style="color: #ff0000;">"My Project"</span>, <span style="color: #000000; font-weight: bold;">new</span> DefaultProject<span style="color: #66cc66;">&#40;</span>_<span style="color: #66cc66;">&#41;</span> with IdeaPlugin<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp;<span style="color: #808080; font-style: italic;">// ...</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p>
Grosse différence avec Eclipse : le plugin fonctionne par défaut, même si l'on a qu'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}}...)</em>.<br />
Notez que les deux projets utilisent le trait <code>IdeaPlugin</code>. En effet, IntelliJ IDEA gère parfaitement l'arborescence de projets. Nous aurons donc les deux projets importés dans l'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>
<div class="syntax_hilite">
<div id="java-19">
<div class="java">$ sbt<br />
$ update<br />
$ idea</div>
</div>
</div>
<p></p>
<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'un à l'autre selon votre humeur <em>(tiens aujourd'hui j'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'il accueille ces deux environnements de développement. La configuration finale sera un mix de ce que l'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>
<div class="syntax_hilite">
<div id="java-20">
<div class="java"><span style="color: #000000; font-weight: bold;">class</span> MainProject<span style="color: #66cc66;">&#40;</span>info: ProjectInfo<span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">extends</span> ParentProject<span style="color: #66cc66;">&#40;</span>info<span style="color: #66cc66;">&#41;</span> with IdeaPlugin <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp;lazy val myProject = project<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"myproject"</span>, <span style="color: #ff0000;">"My Project"</span>, <span style="color: #000000; font-weight: bold;">new</span> MyProject<span style="color: #66cc66;">&#40;</span>_<span style="color: #66cc66;">&#41;</span> with IdeaPlugin with Eclipsify<span style="color: #66cc66;">&#41;</span></p>
<p>&nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">class</span> MyProject<span style="color: #66cc66;">&#40;</span>info: ProjectInfo<span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">extends</span> DefaultProject<span style="color: #66cc66;">&#40;</span>info<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// Put here MyProject dependencies</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<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'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'aurez plus qu'à 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'IntelliJ IDEA standalone : notez  la  différence concernant le sous-projet <code>MyProject</code> avec non plus l'utilisation directe d'une nouvelle instance de <code>DefaultProject</code> mais la création et l'instanciation d'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'ajouter plusieurs sous-projets à <code>MainProject</code> et ainsi se retrouver avec le même type d'arborescence de modules que l'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>Revue de Presse Xebia</title>
		<link>http://blog.xebia.fr/2010/05/11/revue-de-presse-xebia-158/</link>
		<comments>http://blog.xebia.fr/2010/05/11/revue-de-presse-xebia-158/#comments</comments>
		<pubDate>Tue, 11 May 2010 05:12:47 +0000</pubDate>
		<dc:creator>Xebia France</dc:creator>
				<category><![CDATA[Revue de presse]]></category>
		<category><![CDATA[GemStone]]></category>
		<category><![CDATA[Google Labs]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Jarlsberg]]></category>
		<category><![CDATA[JUG]]></category>
		<category><![CDATA[Project Coin]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[SpringSource]]></category>
		<category><![CDATA[VMWare]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://blog.xebia.fr/?p=4611</guid>
		<description><![CDATA[
La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.
Actualité éditeurs / SSII

SpringSource se dote d'un cache distribué

Le coin de la technique

Jarlsberg, la sécurité en s'amusant
Multi-Catch confirmé dans le projet Coin 

Evènements de notre communauté en France et à l'étranger

C'est le printemps, les User Groups fleurissent

Actualité éditeurs / SSII
SpringSource se dote d'un cache distribué
VMware [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br />
<em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p>
<p><strong>Actualité éditeurs / SSII</strong></p>
<ul>
<li><a href="http://blog.xebia.fr/2010/05/11/revue-de-presse-xebia-158/#SpringSourcesedoteduncachedist">SpringSource se dote d'un cache distribué</a></li>
</ul>
<p><strong>Le coin de la technique</strong></p>
<ul>
<li><a href="http://blog.xebia.fr/2010/05/11/revue-de-presse-xebia-158/#Jarlsberglascuritensamusant">Jarlsberg, la sécurité en <em>s'amusant</em></a></li>
<li><a href="http://blog.xebia.fr/2010/05/11/revue-de-presse-xebia-158/#MultiCatchconfirmdansleprojetC">Multi-Catch confirmé dans le projet Coin </a></li>
</ul>
<p><strong>Evènements de notre communauté en France et à l'étranger</strong></p>
<ul>
<li><a href="http://blog.xebia.fr/2010/05/11/revue-de-presse-xebia-158/#CestleprintempslesUserGroupsfl">C'est le printemps, les User Groups fleurissent</a></li>
</ul>
<h3><a name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3>
<h4><a name="SpringSourcesedoteduncachedist"></a>SpringSource se dote d'un cache distribué</h4>
<p>VMware vient de faire l'acquisition de la société GemStone Systems, éditeur de la solution de cache distribué GemFire.  Elle sera gérée désormais sous la houlette de SpringSource.  Ce nouveau rapprochement s'inscrit dans <a title="la stratgie affiche" href="http://blog.xebia.fr/2010/05/03/revue-de-presse-xebia-157/#VMwareSpringSalesForceVMforce">la stratégie affichée</a> de la firme de fournir une plateforme complète de cloud destinée aux applications Java.</p>
<p>Par ailleurs, dans une <a title="interview" href="http://www.infoq.com/news/2010/05/gemstone">interview</a> donnée à InfoQ, Rod  Johnson affirme que le <em>framework</em> Spring développera les abstractions nécessaires à l'intégration de ce type de produit, comme c'est déjà le cas pour les RDBMS, les broker JMS, etc via les <em>Templates</em> Spring, et pourrait permettre l'intégration d'autres solutions de data-grid comme Oracle Coherence ou encore Terracotta.</p>
<h3><a name="Lecoindelatechnique"></a>Le coin de la technique</h3>
<h4><a name="Jarlsberglascuritensamusant"></a>Jarlsberg, la sécurité en <em>s'amusant</em></h4>
<p>Xss, DoS, Xsrf... Des acronymes barbares qui désignent des failles de sécurité courantes dans nos applications Web. Si vous voulez mieux les connaitre, et ainsi vous en protéger, le nouveau projet de Google Labs, <a title="Jarlsberg" href="http://jarlsberg.appspot.com/">Jarlsberg</a> (fromage norvégien), est pour vous.<br />
Et comme le meilleur moyen d'apprendre est de faire, Google met à votre disposition un site truffé de failles de sécurité que vous pourrez hacker à loisir.<br />
Les failles sont organisées en fonction de leur type :</p>
<ul>
<li>Cross-site Scripting (XSS)</li>
<li>Cross-site Request Forgery (XSRF)</li>
<li>Cross-site Script Inclusion (CSSI)</li>
<li>Manipulation de l'état du client</li>
<li>Traversée d'arborescence</li>
<li>Déni de Service (DoS)</li>
<li>Exécution de code</li>
<li>Vulnérabilité de la configuration</li>
<li>Vulnérabilités AJAX</li>
</ul>
<p>Pour venir à bout de ces failles, il existe trois types de tests :</p>
<ul>
<li>Tests boite noire : l'utilisateur ne connait pas le fonctionnement interne du site, il tente de hacker le site en passant par les pages exposées</li>
<li>Tests boite blanche : le code de l'application en python est connu par le hacker</li>
<li>Tests boite grise : un panaché des deux précédentes méthodes</li>
</ul>
<p>Ces tests sont servis pour une large variété d'outils de hacker :</p>
<ul>
<li>Snippets HTML</li>
<li>Upload de fichier</li>
<li>Administration du site</li>
<li>création de nouveaux comptes utilisateur</li>
<li>Language de templating Jarlsberg</li>
<li>Injection AJAX</li>
</ul>
<p>L'approche est très pédagogique, avec une succession de challenges à résoudre. Par exemple, le premier de ceux ci : pouvez vous uploader sur le site un fichier qui vous permettra d'exécuter un script sur le serveur d'application ? Chaque challenge propose des indices, une manière d'exploiter la faille et une correction.<br />
Une plongée passionnante dans l'univers des hackers.</p>
<p>Avant de vous lancer dans ce Google Lab, nous vous conseillons la lecture de <a title="larticle de Christian Heilmann" href="http://www.smashingmagazine.com/2010/01/14/web-security-primer-are-you-part-of-the-problem/">l'article de Christian Heilmann</a>.</p>
<p>Bien sûr, ces trucs et astuces ne doivent pas être reproduits <em>à la maison</em>, vous pourriez tomber sous le coup de la loi.</p>
<h4><a name="MultiCatchconfirmdansleprojetC"></a>Multi-Catch confirmé dans le projet Coin</h4>
<p>Finalement, après plusieurs hésitations, <a title="Joe Darcy" href="http://blogs.sun.com/darcy/entry/project_coin_multi_catch_rethrow">Joe Darcy</a> confirme la possibilité de rassembler plusieurs <em>catch</em> d'exceptions dans une même clause dans Java 7. Ainsi il sera possible d'écrire:</p>
<div class="syntax_hilite">
<div id="java-25">
<div class="java"><span style="color: #000000; font-weight: bold;">try</span><span style="color: #66cc66;">&#123;</span><br />
<span style="color: #808080; font-style: italic;">// code</span><br />
<span style="color: #66cc66;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #66cc66;">&#40;</span>ExceptionA|ExceptionB ex<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
<span style="color: #808080; font-style: italic;">// code</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p>Les discussions portaient sur la deuxième partie de cette proposition, le renvoi ( <em>rethrow</em> ) des exceptions. En effet il peut arriver qu'une exception soit renvoyée après avoir été attrapée. Dans ce cas elle doit apparaître dans la signature si c'est une exception vérifiée ( <em>checked</em> ). Par exemple :</p>
<div class="syntax_hilite">
<div id="java-26">
<div class="java"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #993333;">void</span> myMethod<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <a href="http://www.google.com/search?q=allinurl%3AException+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Exception</span></a> <span style="color: #66cc66;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">try</span><span style="color: #66cc66;">&#123;</span><br />
<span style="color: #808080; font-style: italic;">// A hérite d'Exception</span><br />
<span style="color: #000000; font-weight: bold;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> A<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AException+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Exception</span></a> e<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
<span style="color: #808080; font-style: italic;">// code: par exemple un log</span><br />
<span style="color: #000000; font-weight: bold;">throw</span> e;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p>Ce que propose le projet Coin, c'est de vérifier les exceptions possibles dans le bloc <em>try</em> et de donner la possibilité dans la signature de la méthode de renvoyer le type précis des exceptions. Pour cela on utilise le <em>modifier</em> <em>final</em>. Ce qui donne :</p>
<div class="syntax_hilite">
<div id="java-27">
<div class="java"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #993333;">void</span> myMethod<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> A <span style="color: #66cc66;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">try</span><span style="color: #66cc66;">&#123;</span><br />
<span style="color: #808080; font-style: italic;">// A hérite d'Exception</span><br />
<span style="color: #000000; font-weight: bold;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> A<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> <a href="http://www.google.com/search?q=allinurl%3AException+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Exception</span></a> e<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
<span style="color: #808080; font-style: italic;">// code: par exemple un log</span><br />
<span style="color: #000000; font-weight: bold;">throw</span> e;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p>Ceci permet d'avoir une signature plus précise et de pouvoir remonter une exception facilement. Les difficultés de cette proposition ont tourné autour du type d'exception qui se trouve dans la clause catch dans le cas où le type n'est connu qu'au Runtime.</p>
<p>Cette proposition en ravira plus d'un mais fera aussi sourire ceux qui prônent la suppression des exceptions vérifiées. Pour finir, un petit cas limite amusant de cette proposition, relevé par <a title="Stephen Colebourne" href="http://mail.openjdk.java.net/pipermail/coin-dev/2010-May/002749.html">Stephen Colebourne</a> :</p>
<div class="syntax_hilite">
<div id="java-28">
<div class="java"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #993333;">void</span> myMethod<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">try</span><span style="color: #66cc66;">&#123;</span><br />
<span style="color: #808080; font-style: italic;">//&nbsp; du code sans exception</span><br />
<span style="color: #66cc66;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> <a href="http://www.google.com/search?q=allinurl%3AException+java.sun.com&amp;bntl=1"><span style="color: #aaaadd; font-weight: bold;">Exception</span></a> e<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
<span style="color: #808080; font-style: italic;">// on envoie une exception vérifiée qui n'est pas dans la signature!</span><br />
<span style="color: #000000; font-weight: bold;">throw</span> e;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<h3><a name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l'étranger</h3>
<h4><a name="CestleprintempslesUserGroupsfl"></a>C'est le printemps, les User Groups fleurissent</h4>
<p>Avec notre plateforme de prédilection, Java, qui s'ouvre de plus en plus à de nouveaux langages, il fallait bien que la communauté suive. Nous assistons donc ces derniers temps à l'éclosion de nouveaux User Groups. Le premier à bourgeonner fut le <a title="Scala User Group" href="http://groups.google.com/group/paris-scala-user-group">Scala User Group</a> (attention, pas "SUG" car le nom <a title="est déjà pris" href="http://www.frenchsug.org">est déjà pris</a>) qui a pris ses racines lors de la <a title="soirée scala" href="http://www.parisjug.org/xwiki/bin/view/Meeting/20100413">soirée Scala</a> organisée par le Paris JUG. Cette semaine, c'est Guillaume Laforge, Groovy project lead et <a title="Cast Codeur émérite" href="http://lescastcodeurs.com/equipe/">Cast Codeur émérite</a>, qui <a title="a annoncé" href="https://parisjug.dev.java.net/servlets/ReadMsg?list=users&amp;msgNo=828">a annoncé</a> sur la mailing liste du Paris JUG la création du Groovy User Group. La première rencontre est d'ores et déjà prévue <a title="le 10 juin" href="http://www.meetup.com/Paris-Groovy-Grails/calendar/13379668/">le 10 juin</a>.<br />
Ces nouveautés s'inscrivent dans la lignée de ce que nous avons déjà observé avec <a title="la multiplication des JUGs" href="http://blog.developpez.com/christophej/p7447/java/la-multiplication-des-jug/">la multiplication des JUGs</a>: la communauté s'organise pour partager, lier connaissance et évoluer. Après les différents JUGs centrés sur Java, il n'est pas étonnant de voir des User Groups se créer pour rassembler les personnes intéressées par les nouveaux langages de cette plateforme.<br />
Par la suite, ces langages resteront-ils sous la coupe des divers JUGs ou allons nous assister à la création du "Marseille Groovy User Group" ou du "Lyon Scala User Group" ? <img src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.fr/2010/05/11/revue-de-presse-xebia-158/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
