<?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; JPA</title> <atom:link href="http://blog.xebia.fr/tag/jpa/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</title><link>http://blog.xebia.fr/2011/07/19/revue-de-presse-xebia-220/</link> <comments>http://blog.xebia.fr/2011/07/19/revue-de-presse-xebia-220/#comments</comments> <pubDate>Tue, 19 Jul 2011 06:19:57 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Cloud / NoSQL]]></category> <category><![CDATA[Hadoop]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[mapreduce]]></category> <category><![CDATA[OGM]]></category> <category><![CDATA[Oozie]]></category> <category><![CDATA[Spring Data]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=8238</guid> <description><![CDATA[La revue de presse de l’actualité Java/JEE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Object Grid Mapping, une alternative à Spring Data? Un flot de projets pour Hadoop JBoss AS 7 est sorti Actualité éditeurs / SSII Object Grid Mapping, une alternative à Spring Data? Il manquait une API haut niveau, à la JPA, [...]]]></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/07/19/revue-de-presse-xebia-220/#ObjectGridMappingunealternativ">Object Grid Mapping, une alternative à Spring Data?</a></li><li><a
href="http://blog.xebia.fr/2011/07/19/revue-de-presse-xebia-220/#UnflotdeprojetspourHadoop">Un flot de projets pour Hadoop</a></li><li><a
href="http://blog.xebia.fr/2011/07/19/revue-de-presse-xebia-220/#JBossASestsorti">JBoss AS 7 est sorti</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="ObjectGridMappingunealternativ"></a>Object Grid Mapping, une alternative à Spring Data?</h4><p>Il manquait une API haut niveau, à la JPA, pour la manipulation des données dans Infinispan. En tant que preuve de concept, Emmanuel Bernard a tenté une adaptation d&#8217;Hibernate Core. Finalement, il s&#8217;avère que l&#8217;idée peut s&#8217;appliquer à de nombreux datastores NoSQL. C&#8217;est la naissance d&#8217;<a
href="http://in.relation.to/Bloggers/HibernateOGMBirthAnnouncement" title="Hibernate Object Grid Mapping" >Hibernate Object Grid Mapping</a>.</p><p>Les opérations CRUD sont stables mais la partie recherche par JP-QL est encore balbutiante. Celle-ci devrait cependant se reposer sur des technologies testées sur le terrain : Lucene et Hibernate Search.</p><p>JBoss par ce projet souhaite faciliter l&#8217;accès aux datastores NoSQL. Ce n&#8217;est certes pas sans rappeler <a
href="http://www.springsource.org/spring-data" title="Spring Data" >Spring Data</a>, l&#8217;initiative de VMware. Pour autant, même si ces deux entreprises sont en effet concurrentes et veulent se positionner en tant que facilitatrices, l&#8217;approche technique diffère.</p><p>JBoss souhaite proposer des implémentations pour une même API : JPA. La question se posera de savoir si JPA est suffisamment flexible pour cela. JPA fournit un vocabulaire commun; encore faut-il que pour chaque store sa sémantique ne varie pas trop.</p><p>VMware suit le principe de Spring : une configuration par POJO tout en ayant accès aux particularités de l&#8217;implémentation sous-jacente, quitte à avoir une API par datastore si cela se révèle être pertinent. On retiendra également que le but est plus large puisque le projet inclus également le support d&#8217;un framework MapReduce : Hadoop.</p><ul><li><a
href="http://www.infoq.com/news/2011/07/hibernateogm" title="httpwwwinfoqcomnews201107hibernateogm" >http://www.infoq.com/news/2011/07/hibernateogm</a></li><li><a
href="http://jduchess.org/duchess-france/blog/hibernons-avec-emmanuel-bernard/" title="httpjduchessorgduchessfrancebloghibernonsavecemmanuelbernard" >http://jduchess.org/duchess-france/blog/hibernons-avec-emmanuel-bernard/</a></li></ul><h4><a
name="UnflotdeprojetspourHadoop"></a>Un flot de projets pour Hadoop</h4><p>C&#8217;est peut-être la fin de la conquête spatiale mais l&#8217;ère du web ne fait que commencer. Et s&#8217;il y a bien quelque chose qui monte en flèche, c&#8217;est le volume des données.</p><p>HDFS vous a permis de stocker de manière distribuée vos données de telle sorte que la perte d&#8217;un noeud n&#8217;ait pas d&#8217;impact.</p><p>Avec l&#8217;API MapReduce, vous avez pu programmatiquement rapprocher vos traitements de vos données et profiter de la vitesse d&#8217;un calcul distribué et parallèle.</p><p>Mais voilà, après l&#8217;implémentation de plusieurs jobs, il vous a peut-être paru qu&#8217;il ne s&#8217;agissait pas nécessairement du bon niveau de granularité. Pig ou Hive vous ont alors permis d&#8217;exprimer vos requêtes avec un niveau d&#8217;abstraction équivalent à SQL pour les bases de données relationnelles.</p><p>Le paradigme relationnel est un acquis pour les entreprises. Passer à Hadoop ne signifie par pour autant que vous avez dû changer complètement votre système d&#8217;information. Avec HBase, vous avez pu disposer d&#8217;une base de données orientée colonne et d&#8217;un accès rapide à de petits fragments d&#8217;information. Et grâce à Sqoop, vos données relationnelles ont pu être importées dans HDFS.</p><p>Enfin Mahout vous a permis d&#8217;extraire de ces données une information pertinente en utilisant des algorithmes classiques de recommandation, clustering et classification.</p><p>Tous ces composants sont des éléments essentiels pour construire sa propre solution d&#8217;informatique décisionnelle que cela soit pour analyser les informations de ses utilisateurs ou pour consolider des sources de données externes. Cependant, au moins un élément manquait : l&#8217;orchestration des différentes étapes.</p><p>Yahoo a contribué à Oozie, une moteur de processus pour Hadoop. L&#8217;approche est classique. Le workflow peut se décrire par une API java ou en XML en utilisant hPDL, un langage similaire à celui utilisé par JBoss Business Process Management (jPBM) : jPDL. Les limitations les plus notables sont l&#8217;absence de support pour HBase et Hive.</p><p>L&#8217;écosystème d&#8217;Hadoop est jeune et en pleine expansion. L&#8217;ensemble des pièces est en construction et se perfectionne. Pour autant, c&#8217;est un écosystème qui a déjà fait ses preuves dans l&#8217;industrie comme le montre Yahoo et Hadoop.</p><ul><li><a
href="http://www.infoq.com/articles/introductionOozie" title="httpwwwinfoqcomarticlesintroductionOozie" >http://www.infoq.com/articles/introductionOozie</a></li><li><a
href="http://yahoo.github.com/oozie/design.html" title="httpyahoogithubcomooziedesignhtml" >http://yahoo.github.com/oozie/design.html</a></li><li><a
href="http://archive.cloudera.com/cdh/3/oozie/DG_Overview.html" title="httparchiveclouderacomcdh3oozieDGOverviewhtml" >http://archive.cloudera.com/cdh/3/oozie/DG_Overview.html</a></li></ul><h4><a
name="JBossASestsorti"></a>JBoss AS 7 est sorti</h4><p>Impossible de passer à côté d&#8217;une des nouvelles les plus twittées de cette semaine : la sortie de la version finale du serveur d&#8217;application de RedHat, JBoss AS 7. Si sa version précédente implementait déjà la spécification Web Profile de JEE 6, il a fallu attendre la sortie de cette dernière release pour avoir l&#8217;implementation complète. L&#8217;équipe de Dan Allen et Pete Muir a travaillé à fond pour améliorer la vitesse de démarrage et le déploiement en réduisant, selon ce qui est annoncé sur le site, la durée par 10 par rapport à sa version précédente. Dans l&#8217;un des forums de JBoss, les meilleurs temps obtenus par ceux qui l&#8217;ont déjà testé sont affichés: ils varient entre une et trois secondes.</p><p>Quelles sont les bases de cette nouvelle release ?</p><p>Légèreté : l&#8217;introduction de la modularité via le Modular Services Container (MSC) permettant le chargement des jars en fonction de la demande.<br
/> Vitesse de démarrage : les services démarrent de façon concurrente pour profiter au maximum de l&#8217;architecture multi-core.</p><p>Par ailleurs la dernière version du serveur d&#8217;applications de Red Hat offre d&#8217;autres avantages tels que :</p><ul><li>Support à la spécification OSGi out-of-the-box</li><li>Simplification de la gestion de la configuration</li><li>Déploiement à chaud des fichiers de configuration</li><li>Orientation à test en facilitant l&#8217;utilisation du modèle de composants Arquilian pour le développement des tests d&#8217;intégration.</li></ul><p>Avec toutes ces caractéristiques, JBoss AS 7 se positionne au même niveau que d&#8217;autres serveurs d&#8217;application rivaux, notamment la référence de JEE 6, Glassfish 3.1.</p><p><a
href="http://community.jboss.org/wiki/AS7StartupTimeShowdown" title="httpcommunityjbossorgwikiAS7StartupTimeShowdown" >http://community.jboss.org/wiki/AS7StartupTimeShowdown</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/07/19/revue-de-presse-xebia-220/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/12/21/revue-de-presse-xebia-190/</link> <comments>http://blog.xebia.fr/2010/12/21/revue-de-presse-xebia-190/#comments</comments> <pubDate>Tue, 21 Dec 2010 08:30:05 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Hibernate]]></category> <category><![CDATA[Hibernate Search]]></category> <category><![CDATA[InnoDB]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Lucene]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[Refcard]]></category> <category><![CDATA[Sonar]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=6295</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII MySQL 5.5 Sonar 2.4 Hibernate Search 3.3 Le coin de la technique Une Refcard sur JPA2 Actualité éditeurs / SSII MySQL 5.5 Après le rachat de MySQL en avril 2009 il y avait des craintes qu’Oracle continue à développer cette [...]]]></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/12/21/revue-de-presse-xebia-190/#MySQL">MySQL 5.5</a></li><li><a
href="http://blog.xebia.fr/2010/12/21/revue-de-presse-xebia-190/#Sonar">Sonar 2.4</a></li><li><a
href="http://blog.xebia.fr/2010/12/21/revue-de-presse-xebia-190/#HibernateSearch">Hibernate Search 3.3</a></li></ul><p><strong>Le coin de la  technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/12/21/revue-de-presse-xebia-190/#UneRefcardsurJPA">Une Refcard sur JPA2</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité  éditeurs / SSII</h3><h4><a
name="MySQL"></a>MySQL 5.5</h4><p>Après le rachat de MySQL en avril 2009 il y avait des craintes qu’Oracle continue à développer cette application. Cette nouvelle <a
title="version 5.5" href="http://dev.mysql.com/downloads/mysql/5.5.html">version 5.5</a> devrait rassurer (un peu) les inquiets car elle vient avec un bon nombre d’améliorations (à lire par ailleurs <a
title="cette interview" href="http://www.infoworld.com/d/data-management/oracle-angles-mysql-web-apps-494">cette interview</a> de Monica Kumar, d’Oracle, sur la complémentarité des deux produits). Parmi les points intéressants à noter:</p><ul><li>InnoDB devient le choix par défaut pour le moteur de stockage à la place de MyISAM. Ce dernier n’était pas transactionnel, entre autres <a
title="dfauts" href="http://blogs.sitepoint.com/2010/11/19/mysql-mistakes-php-developers/">défauts</a>, et la plupart des utilisateurs changeaient leur configuration pour InnoDB.</li><li><a
title="meilleur gestion" href="http://dev.mysql.com/doc/refman/5.5/en/smp-improvements.html">meilleur gestion</a> dans l’utilisation des processeurs multi-coeurs dans le cas d’InnoDB</li><li>amélioration des mécanismes de réplication avec à présent un heartbeat entre le maître et les esclaves ainsi qu’un envoi d&#8217;une confirmation lorsque le premier esclave a fini sa réplication (<a
title="rplication semisynchrone" href="http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html">réplication semi-synchrone</a>).</li><li>un nouveau <em>statement</em> <code>LOAD XML</code> pour charger des données dans un fichier xml.</li><li>il est possible à présent de <em>plugger</em> son système d’authentification, par exemple le LDAP de son entreprise.</li></ul><p>Une liste plus complète des nouvelles fonctionnalités se trouve <a
title="ici" href="http://dev.mysql.com/doc/refman/5.5/en/mysql-nutshell.html">ici</a>. Oracle estime une amélioration de 360% des performances de MySQL comparée à l’ancienne version, à prendre bien sûr avec des pincettes en fonction des différents cas d’utilisation. Sur Windows les chiffres grimpent même jusqu’à 1500% (!) de gain, cette version proposant une meilleure intégration à ce système d’exploitation. Bref cette nouvelle version semble très recommandable.</p><h4><a
name="Sonar"></a>Sonar 2.4</h4><p>La sortie de Sonar 2.4 le <a
title="mois" href="http://www.sonarsource.org/sonar-2-4-in-screenshots/">mois</a> dernier nous avait échappé, profitons d’un rappel d’<a
title="InfoQ" href="http://www.sonarsource.org/sonar-2-4-in-screenshots/">InfoQ</a> cette semaine pour faire un tour des nouveautés:</p><ul><li>Régles d’architecture: une régle consiste à définir des exclusions de référence à un package. Par exemple on peut exclure les packages <code><strong>.web.</strong></code> (couche de présentation) dans les packages <code><strong>.dao.</strong></code> (couche basse  d’accès aux données). On peut aussi exclure des classes de java jugés obsolètes comme <code>Vector</code> ou <code>Hashtable</code>. Parler d’architecture à ce niveau semble un peu exagérer tant les règles sont relativement simple mais ça peut aider à améliorer du code <em>legacy</em>.</li><li>Personnalisation des <em>dashboards</em>: une vue synthétique peuvent être proposés à des chefs de projet ou des <em>managers</em> tandis qu’un développeur utilisera une vue détaillée qui contiendra plus de <em>widgets</em> par exemple. Sonar prévoit par ailleurs d’ajouter de nouvelles <em>widget</em>.</li><li>Un centre de mise à jour des <em>plugins</em>: une page permet à présent de lister les <em>plugins</em> installés, de les mettre à jours, d’en installer d’autres et de vérifier s’il existe une nouvelle version de Sonar.</li><li>Support pour Maven 3.0: cette mise à jour est appréciable. Il est à noter qu’il existe malgrès tout une incompatibilité avec <a
title="Clover" href="http://jira.codehaus.org/browse/SONAR-1985">Clover</a>.</li></ul><p>Dans ce même article, Olivier Gaudin, de l’équipe Sonar, nous informe des prochaines évolutions. Les règles d’architectures devraient se complexifier grâce à l’ajout d’un DSL permettant d’exprimer une règle comme “La couche A ne peut être utiliser que par la couche B et C”. Il identifie également 3 axes pour diminuer sa dette technique: meilleure visibilité de la dynamique d’un projet (ajout ou suppression de violations de certaines règles), une zone de partage d’information pour les revues de code et intégration d’une version légère dans Eclipse pour anticiper avant les <em>commits</em> les éventuelles violations.</p><h4><a
name="HibernateSearch"></a>Hibernate Search 3.3</h4><p>La nouvelle version d’Hibernate Search 3.3 est <a
title="disponible" href="http://in.relation.to/Bloggers/SantaBringsHibernateSearch33">disponible</a>. Elle contient en particulier un nouveau système de requêtes DSL qui permet de faciliter l’écriture des requêtes, Martin Fowler parlera plutôt de <a
title="Fluent Interface" href="http://martinfowler.com/bliki/FluentInterface.html">Fluent Interface</a>. Voici un exemple :</p><pre class="brush: java; title: ; notranslate">
Query luceneQuery = mythQB.keyword()
.onField(&quot;history&quot;)
.andField(&quot;name&quot;)
.boostedTo(5)
.andField(&quot;description&quot;)
.matching(&quot;storm&quot;)
.createQuery();
</pre><p>Ceci allège l’écriture et devrait donc faciliter l’élaboration de requêtes plus complexes.</p><p>Sous le capot, des modifications ont été apportées sur le mécanisme d’envoi de message pour mettre à jour les indexes, améliorant ainsi les performances. De plus ces indexes peuvent également être stockés sur une grille Infinispan (qui appartient à JBoss tout comme Hibernate Search). Pour ne rien gâcher, des nouveaux indicateurs sur les statistiques sont remontés via JMX pour mieux configurer l’outil.</p><p>Enfin Hibernate Search 3.3 est compatible avec Lucene 3.0. Bien que cette dernière version de Lucene contienne des problèmes de rétro-compatibilité, Hibernate Search les masquera. Par ailleurs il supporte le nouveau type <code>@NumericField</code> encore expérimental dans Lucene mais qui améliore beaucoup les performances.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la  technique</h3><h4><a
name="UneRefcardsurJPA"></a>Une Refcard sur JPA2</h4><p>Mike Keith, <a
title="un expert" href="http://jdc2010.egjug.org/node/2#Mike_Keith">un expert</a> en persistance Java nous avait offert la Refcard &laquo;&nbsp;<a
title="Getting started with JPA" href="http://refcardz.dzone.com/refcardz/getting-started-with-jpa">Getting started with JPA</a>&nbsp;&raquo; en septembre 2008. Il vient de récidiver pour notre plus grand plaisir avec &laquo;&nbsp;<a
title="Whats New in JPA 20" href="http://refcardz.dzone.com/refcardz/whats-new-jpa-20">What&#8217;s New in JPA 2.0</a>&nbsp;&raquo;<br
/> Une Refcard sur JPA est une très bonne idée, car qui n&#8217;a jamais pesté de ne pas savoir immédiatement quelles étaient les bonnes façons d&#8217;annoter ses entités. Entre les annotations <em>provider-specific</em> et &laquo;&nbsp;normalisées JPA&nbsp;&raquo;, il y a en effet souvent de quoi se perdre. En effet, on trouve parfois des pièges comme <code>@Mapkey</code> par exemple qui <a
title="se comporte diffremment" href="http://stackoverflow.com/questions/2327971/how-do-you-map-a-map-in-hibernate-using-annotations#2331068">se comporte différemment</a> selon le fournisseur.</p><p>La première Refcard était, tout comme JPA 1, assez basique et nous rappelait des notions comme les <em>entity managers</em> et les <em>transactions</em> (<em>container-managed</em> ou non) ainsi qu&#8217;une petite référence JPQL pour écrire ses requêtes&#8230;<br
/> Dans la nouvelle mouture, nous retrouvons les apports de JPA2 à la persistance comme par exemple:<br
/> - la suppression des orphelins avec l&#8217;attribut <code>orphanRemoval</code> de <code>@OneToMany</code><br
/> - les nouvelles fonctionnalités de JPQL (tiens, on peut utiliser un &#8216;CASE&#8217;, bon à savoir ! <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )<br
/> - les requêtes typées pour ceux qui veulent éviter de caster les valeurs de retour</p><p>Et pour ceux désirant renforcer au maximum le typage de leur requêtes à la compilation, les requêtes Criteria <a
title="fortement types" href="http://www.ibm.com/developerworks/java/library/j-typesafejpa/">fortement typées</a> sont évoquées:</p><pre class="brush: java; title: ; notranslate">
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery c = cb.createQuery(Account.class);
Root acct = c.from(Account.class);
c.select(acct).where(cb.equal(acct.get(Account_.name), “Jim Morrison”));
List result = em.createQuery(c).getResultList();
</pre><p>Certes, la façon de générer la classe du metamodèle canonique (le <code>Account_</code> avec l&#8217;underscore bizarre) n&#8217;est pas évoquée et il vous faudra trouver par vous même comment la générer <a
title="avec Hibernate" href="http://docs.jboss.org/hibernate/jpamodelgen/1.0/reference/en-US/html_single/">avec Hibernate</a> ou <a
title="avec EclipseLink" href="http://wiki.eclipse.org/UserGuide/JPA/Using_the_Canonical_Model_Generator_%28ELUG%29">avec EclipseLink</a>. Mais le principe d&#8217;une RefCard est justement de ne pas être exhaustif, mais de donner les clefs pour un survol rapide des possibilités. Se rafraîchir ainsi la mémoire fait généralement beaucoup de bien et cette nouvelle Refcard mérite donc de rejoindre sa grande sœur et de rester en permanence à porté de main.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/12/21/revue-de-presse-xebia-190/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Xebia en route pour Devoxx !</title><link>http://blog.xebia.fr/2010/11/15/xebia-en-route-pour-devoxx-2/</link> <comments>http://blog.xebia.fr/2010/11/15/xebia-en-route-pour-devoxx-2/#comments</comments> <pubDate>Mon, 15 Nov 2010 07:57:56 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Cloud / NoSQL]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[java]]></category> <category><![CDATA[Jdk7]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[JEE 6]]></category> <category><![CDATA[JPA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5873</guid> <description><![CDATA[Le rendez-vous annuel incontournable de la communauté Java européenne est arrivé ! 3000 participants inscrits et une centaine de speakers pour 5 jours de conférences à Anvers en Belgique : Devoxx s&#8217;annonce cette année comme grandiose après une édition 2009 en léger retrait en raison du contexte économique. Xebia sera présent à cet évènement pour [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://www.devoxx.com/"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/logo.jpeg" alt="Devoxx" style="margin: 1em 1em 1em 1em; float: right;" /></a></p><p>Le rendez-vous annuel incontournable de la communauté Java européenne est arrivé ! 3000 participants inscrits et une centaine de <em>speakers</em> pour 5 jours de conférences à Anvers en Belgique : <a
href="http://www.devoxx.com" title="Devoxx" >Devoxx</a> s&#8217;annonce cette année comme grandiose après une édition 2009 en léger retrait en raison du contexte économique. Xebia sera présent à cet évènement pour vous retransmettre l&#8217;information qui y sera véhiculée.</p><p>Au-delà des connaissances techniques qui y circulent, des échanges et des rencontres qui s&#8217;y font, Devoxx est aussi un formidable baromètre de l&#8217;éco-système Java actuel. Il est donc intéressant d&#8217;observer les sujets les plus en vogue cette année :</p><ul><li><strong>NoSQL</strong> : il s&#8217;agit clairement du sujet majeur dont il sera question cette année. Très peu représenté l&#8217;année dernière (2 sessions seulement), on compte pour cette édition pas moins d&#8217;une douzaine de sessions dédiées à ce thème. Il sera ainsi question de Cassandra, HBase, Hadoop, Hive, Pig, MongoDB ou encore Voldemort.</li><li><strong>Java EE 6 et JPA 2</strong> : déjà très représenté l&#8217;année dernière, ce sujet sera encore d&#8217;actualité cette année à Devoxx, ces APIs n&#8217;ayant pas encore été digérées par les entreprises.</li><li><strong>JDK 7</strong> : le sujet devient récurrent, mais <a
href="http://blog.xebia.fr/2010/10/12/revue-de-presse-xebia-180/#IBMrejointleprojetOpenJDK" title="la rcente actualit" >la récente actualité</a> le concernant le rend incontournable dans une conférence Java de cette envergure. Cette semaine à Anvers sera l&#8217;occasion de faire le point sur les dernières avancées et orientations avec l&#8217;équipe responsable du JDK chez Oracle.</li></ul><p>Outres ces sujets majeurs, on retrouve de nouveaux venus tels que DevOps, ce mouvement prônant le rapprochement des équipes de développement et d&#8217;exploitation, ainsi que des sujets maintenant plus classiques qui présenteront leurs dernières évolutions tels que Grails, Android, Scala, ou HTML5.</p><p>Comme l&#8217;année dernière, vous retrouverez jour après jour sur ce blog et <a
href="http://jduchess.org/duchess-france/" title="celui de Duchess France" >celui de Duchess France</a> nos retours des principales sessions qui se tiendront à Anvers cette semaine. Retrouvez également l&#8217;information en <em>live</em> sur nos comptes Twitter : <a
href="http://twitter.com/dijouxellene" title="dijouxellene" >dijouxellene</a>, <a
href="http://twitter.com/mfiguiere" title="mfiguiere" >mfiguiere</a>, <a
href="http://twitter.com/morlhon" title="morlhon" >morlhon</a> et <a
href="http://twitter.com/rmat0n" title="rmat0n" >rmat0n</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/11/15/xebia-en-route-pour-devoxx-2/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2010/04/26/revue-de-presse-xebia-156/</link> <comments>http://blog.xebia.fr/2010/04/26/revue-de-presse-xebia-156/#comments</comments> <pubDate>Mon, 26 Apr 2010 17:30:01 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Cassandra]]></category> <category><![CDATA[Cloud Computing]]></category> <category><![CDATA[Hadoop]]></category> <category><![CDATA[Hibernate]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[scala]]></category> <category><![CDATA[whirr]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4482</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Apache Whirr, une proposition de librairie pour le Cloud RIA Où l&#8217;on reparle de JavaFX Le coin de la technique Des breaks dans Scala ! Une troisième implémentation de JPA 2 finalisée Actualité éditeurs / SSII Apache Whirr, une proposition [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/04/26/revue-de-presse-xebia-156/#ApacheWhirrunepropositiondelib">Apache Whirr, une proposition de librairie pour le Cloud</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/04/26/revue-de-presse-xebia-156/#OlonreparledeJavaFX">Où l&#8217;on reparle de JavaFX</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2010/04/26/revue-de-presse-xebia-156/#DesbreaksdansScala">Des breaks dans Scala !</a></li><li><a
href="http://blog.xebia.fr/2010/04/26/revue-de-presse-xebia-156/#UnetroisimeimplmentationdeJPAf">Une troisième implémentation de JPA 2 finalisée</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="ApacheWhirrunepropositiondelib"></a>Apache Whirr, une proposition de librairie pour le Cloud</h4><p>Whirr est une <em>proposal</em> intéressante <a
href="http://wiki.apache.org/incubator/WhirrProposal" title="qui vient d'apparaître" >qui vient d&#8217;apparaître</a> au sein de la fondation Apache. Il s&#8217;agit de réunir au sein de ce projet tout un ensemble de scripts et de code source permettant d&#8217;intégrer facilement des services Apache avec les fournisseurs d&#8217;infrastructures de Cloud Computing. Parmi les première applications / services dont il est question, on compte sans grande surprise <a
href="http://hadoop.apache.org/" title="Hadoop" >Hadoop</a> (implémentation Java du modèle MapReduce de Google), <a
href="http://hadoop.apache.org/hbase/" title="HBase" >HBase</a> (implémentation de BigTable de Google au dessus d&#8217;Hadoop), <a
href="http://hadoop.apache.org/zookeeper/" title="ZooKeeper" >ZooKeeper</a> (service de configuration, nommage et synchronisation pour applications distribuées, implémentation Java de Chubby de Google), et <a
href="http://cassandra.apache.org/" title="Cassandra" >Cassandra</a> (base de données hybride BigTable et Dynamo, initialement développée par Facebook). Ces projets ont en effet acquis une grande popularité en quelques mois et font maintenant partie des applications typiques du Cloud Computing.</p><p>La raison d&#8217;être du projet est de mutualiser les efforts fournis par ces projets pour fournir des scripts et des mécanismes d&#8217;intégration de qualité sur les plate-formes de Cloud Computing. Au-delà de ces justifications techniques, on remarquera qu&#8217;il s&#8217;agit d&#8217;une véritable reconnaissance du Cloud Computing en tant qu&#8217;enjeu d&#8217;avenir. En effet cette proposition intervient dans un contexte où les projets liés à ce sujet se multiplient au sein de la fondation Apache, puis acquièrent leur indépendance : après la promotion de Cassandra hors de l&#8217;incubateur Apache, c&#8217;est au tour de HBase d&#8217;être promu <em>top-level project</em> sortant donc de l&#8217;affiliation au projet Hadoop. Enfin, on notera que les acteurs impliqués dans la proposition Whirr sont majeurs : Cloudera, Twitter ou encore HP Labs.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="OlonreparledeJavaFX"></a>Où l&#8217;on reparle de JavaFX</h4><p>JavaFX a beaucoup fait parler d&#8217;elle après sa sortie fin 2008. Elle <a
href="http://blog.xebia.fr/2009/03/09/revue-de-presse-xebia-99/#LepositionnementdeJavaFXtoujou" title="navait gure convaincu" >n&#8217;avait guère convaincu</a> : on lui reprochait de ne pas être mature, de ne pas offrir de composants graphiques de haut niveau, de ne pas tenir ses promesses de déploiement sur plusieurs plates-formes puisqu&#8217;il n&#8217;était alors pas possible de l&#8217;utiliser sur TV et sur mobile comme cela devait être le cas.</p><p>En février 2009, <a
href="http://blog.xebia.fr/2009/02/16/revue-de-presse-xebia-96/#JavaFxsurmobile" title="la version 11" >la version 1.1</a> avait permis le déploiement des applications JavaFX sur mobile (tout du moins théoriquement). La version 1.2, sortie en juin dernier, avait été une autre étape majeure en introduisant enfin des composants graphiques évolués.</p><p>Lors de la conférence Devoxx de novembre dernier, il avait été amusant de constater que les sessions et <em>keynotes</em> dédiés à JavaFX, si présents lors de la précédente édition, avaient été remplacés par leurs équivalents Flex avec l&#8217;annonce en grande pompe d&#8217;Adobe Catalyst. JavaFX disparaissait peu à peu de l&#8217;actualité.</p><p>Oracle vient d&#8217;annoncer l&#8217;arrivée de <a
href="http://javafx.com/docs/articles/javafx1-3.jsp" title="la version 13" >la version 1.3</a>. Les nouveautés sont incontestablement conséquentes :</p><ul><li>Support étendu de CSS pour le design des <em>widgets</em> : JavaFX supportait déjà CSS, il va maintenant plus loin dans l&#8217;intégration de ce langage de style.</li></ul><ul><li>Nouveaux <em>widgets</em> : une liste déroulante (<a
href="http://java.sun.com/javafx/1.3/docs/api/javafx.scene.control/javafx.scene.control.ChoiceBox.html" title="ChoiceBox" >ChoiceBox</a>), un champ de saisie de mots de passe (<a
href="http://java.sun.com/javafx/1.3/docs/api/javafx.scene.control/javafx.scene.control.PasswordBox.html" title="PasswordBox" >PasswordBox</a>), une vue <em>scrollable</em> (<a
href="http://java.sun.com/javafx/1.3/docs/api/javafx.scene.control/javafx.scene.control.ScrollView.html" title="ScrollView" >ScrollView</a>), un séparateur (<a
href="http://java.sun.com/javafx/1.3/docs/api/javafx.scene.control/javafx.scene.control.Separator.html" title="Separator" >Separator</a>) et une bulle d&#8217;information (<a
href="http://java.sun.com/javafx/1.3/docs/api/javafx.scene.control/javafx.scene.control.Tooltip.html" title="ToopTip" >ToopTip</a>).</li></ul><ul><li>Amélioration de <em>widgets</em> existants : divers améliorations des composants <a
href="http://java.sun.com/javafx/1.3/docs/api/javafx.scene.control/javafx.scene.control.ListView.html" title="ListView" >ListView</a>, <a
href="http://java.sun.com/javafx/1.3/docs/api/javafx.scene.control/javafx.scene.control.TextBox.html" title="TextBox" >TextBox</a> et <a
href="http://java.sun.com/javafx/1.3/docs/api/javafx.scene.control/javafx.scene.control.Slider.html" title="Slider" >Slider</a></li></ul><ul><li>Le support des TV fait enfin son apparition : les TV faisaient historiquement partie des plates-formes de déploiement possibles pour JavaFX mais n&#8217;étaient pas accessibles jusqu&#8217;alors. Un émulateur de TV vient compléter ce support.</li></ul><p>Pour <a
href="http://blog.xebia.fr/2009/11/23/devoxx-jour-2-java-fx-the-developer-guide/" title="rappel" >rappel</a>, l&#8217;équipe de développement de JavaFX expliquait que leur vision était qu&#8217;après une certaine période de développement, les différentes plate-formes RIA convergeront vers un niveau de fonctionnalités similaire et que JavaFX pourrait alors briller du fait de son intégration native à Java. Cette version 1.3 semble bien une étape pour rattraper le (grand) retard face à l&#8217;environnement RIA d&#8217;Adobe en terme de fonctionnalités, il sera alors intéressant de voir si JavaFX pourra maintenant rattraper son retard en terme d&#8217;adoption.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="DesbreaksdansScala"></a>Des breaks dans Scala !</h4><p>Avec la sortie de la <a
href="http://www.scala-lang.org/node/5982" title="RC1 de Scala 280" >RC1 de Scala 2.8.0</a>, la communauté est en ébullition et les articles sur les nouveautés de cette <em>release</em> majeure affluent sur la toile.</p><p>Ainsi, Scala ayant une syntaxe très <em>allégée</em> par rapport à Java, certains mots clés avaient tout simplement disparu du langage pour le malheur de certains java-istes. C&#8217;est le cas de <code>break</code>, souvent utilisé pour, par exemple, sortir d&#8217;une boucle, qui n&#8217;était jusqu&#8217;à présent pas disponible dans Scala. Le mot clé fait ainsi <a
href="http://daily-scala.blogspot.com/2010/04/breaks.html" title="son apparition dans cette version 280" >son apparition dans cette version 2.8.0</a>, non pas en tant que mot clé mais en tant que trait/object.</p><p>La syntaxe sera donc un petit peu différente par rapport à ce que nous avions l&#8217;habitude d&#8217;utiliser en Java. Il faudra ainsi englober le code pouvant être arrêté dans un <code>breakable</code>, l&#8217;appel à break restant le même :</p><pre class="brush: java; title: ; notranslate">
// Java
for(int i=0; i&lt;10; i++)
   if(i==5) break;
   i++;
}
//Scala
breakable {
   for(int i=0; i&lt;10; i++)
      if(i==5) break;
      i++;
   }
}
</pre><p>Rendez-vous sur cette <a
href="http://www.scala-lang.org/downloads#ReleaseCandidate" title="page" >page</a> pour télécharger cette RC1 de Scala 2.8.0 et essayer de toute urgence les breaks mais aussi les <code>Package objects</code>, la nouvelle API de collection, les paramètres nommés et par défaut, le tout nouveau REPL ainsi que beaucoup d&#8217;autres nouveautés !</p><h4><a
name="UnetroisimeimplmentationdeJPAf"></a>Une troisième implémentation de JPA 2 finalisée</h4><p>La communauté Java dispose maintenant d&#8217;une troisième implémentation de la <a
href="http://jcp.org/en/jsr/detail?id=317" title="JSR-317 (JPA 2.0)" >JSR-317 (JPA 2.0)</a> : <a
href="http://openjpa.apache.org/2010/04/22/openjpa-200-is-available.html" title="OpenJPA 20" >OpenJPA 2.0</a>. Ce projet de la fondation Apache est utilisé dans WebSphere AS et constitue de ce fait un choix d&#8217;implémentation pertinent.</p><p>OpenJPA succède donc à <a
href="http://www.eclipse.org/eclipselink/" title="EclipseLink" >EclipseLink</a> (qui étant l&#8217;implémentation de référence avait logiquement été finalisée en premier) et <a
href="http://www.hibernate.org" title="Hibernate" >Hibernate</a> (qui a finalisé sa version 3.5 conforme à JPA 2.0 <a
href="http://in.relation.to/15040.lace" title="le mois dernier" >le mois dernier</a>).</p><p>Les nouveautés d&#8217;OpenJPA 2.0 se limitent avant tout au support de JPA 2.0 ce qui inclut :</p><ul><li>La nouvelle API de construction de requêtes, basée sur l&#8217;interface <a
href="http://www.eclipse.org/eclipselink/api/1.2/javax/persistence/criteria/QueryBuilder.html" title="QueryBuilder" >QueryBuilder</a>, qui standardise et étend l&#8217;API Criteria d&#8217;Hibernate.</li><li>L&#8217;intégration à la <a
href="http://jcp.org/en/jsr/detail?id=303" title="JSR-303 (Bean Validation)" >JSR-303 (Bean Validation)</a> qui apporte une logique de validation uniforme pour toutes les couches d&#8217;une application JEE.</li><li>Une API de méta-modèle permettant de naviguer par programmation dans le modèle de données d&#8217;une unité de persistance.</li><li>Diverses améliorations des APIs JPA</li></ul><p>JPA avait connu une très large adoption par la communauté Java, mais on lui reprochait parfois quelques manquements qui nécessitaient de recourir aux APIs propriétaires de son implémentation. Ces ajouts permettent de contourner ces limites et donc de supprimer dans la plupart des cas le recours au fameux <code>entityManager.getDelegate()</code>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/04/26/revue-de-presse-xebia-156/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/</link> <comments>http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#comments</comments> <pubDate>Mon, 28 Dec 2009 19:02:30 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Cloud Computing]]></category> <category><![CDATA[EC2]]></category> <category><![CDATA[GAE]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[Hibernate]]></category> <category><![CDATA[IBM]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[JEE6]]></category> <category><![CDATA[JGroups]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Spring Security]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3665</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Le meilleur de The Server Side Le coin de la technique Spring Security seulement un alignement sur Spring 3.0 ? Tour d&#8217;horizon de JBoss Infinispan JGroups à l&#8217;heure du Cloud Computing Actualité éditeurs / SSII Le meilleur de The Server [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#LemeilleurdeTheServerSide">Le meilleur de The Server Side</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#SpringSecurityseulementunalign">Spring Security seulement un alignement sur Spring 3.0 ?</a></li><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#TourdhorizondeJBossInfinispan">Tour d&#8217;horizon de JBoss Infinispan</a></li><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#JGroupslheureduCloudComputing">JGroups à l&#8217;heure du Cloud Computing</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="LemeilleurdeTheServerSide"></a>Le meilleur de The Server Side</h4><p>Avec les fêtes vient le temps des rétrospectives. Et c&#8217;est TheServerSide qui ouvre le bal, avec son hit parade des neuf fils de discussion les plus vus en 2009. Sans surprise, on retrouve quelques stars de l&#8217;année, dont la popularité ne devrait pas faiblir en 2010 : <a
title="JavaEE 6" href="http://www.theserverside.com/news/thread.tss?thread_id=53459">JavaEE 6</a> et <a
title="Glassfish 3" href="http://www.theserverside.com/news/thread.tss?thread_id=58858">Glassfish 3</a>, la persistance (<a
title="JPA" href="http://www.theserverside.com/news/thread.tss?thread_id=53142">JPA</a>, <a
title="les caches d'Hibernate" href="http://www.theserverside.com/news/thread.tss?thread_id=53716">les caches d&#8217;Hibernate</a>, <a
title="la démarcation transactionnelle avec Spring" href="http://www.theserverside.com/news/thread.tss?thread_id=53529">la démarcation transactionnelle avec Spring</a>)&#8230; Mais aussi les buzz de l&#8217;année : <a
title="Google App Engine" href="http://www.theserverside.com/news/thread.tss?thread_id=54215">Google App Engine</a>, <a
title="les langages next-gen" href="http://www.theserverside.com/news/thread.tss?thread_id=55185">les langages next-gen</a>&#8230; On trouve ensuite un grand article communautaire, <a
title="sur ce que doit savoir un architecte applicatif" href="http://www.theserverside.com/news/thread.tss?thread_id=53819">sur ce que doit savoir un architecte applicatif</a>.<br
/> Enfin, et nous devons bien avouer qu&#8217;à la vue des évènements passés, cela prête à sourire, un très beau fil de prospective : <a
title="IBM parle de racheter Sun" href="http://www.theserverside.com/news/thread.tss?thread_id=54007">IBM parle de racheter Sun</a>.</p><p>Cette première rétrospective reflète pour nous bien les tendances de l&#8217;année passée : pas mal de grandes manœuvres chez les éditeurs, des <em>concurrents</em> à Java de plus en plus présent, un nouvelle spécification très attendue, et des frameworks incontournables qui continuent à mener la danse.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SpringSecurityseulementunalign"></a>Spring Security seulement un alignement sur Spring 3.0 ?</h4><p>Dans la foulée de la sortie de la version 3 de Spring Framework, c&#8217;est au tour de Spring Security de faire <a
title="son annonce" href="http://www.springsource.org/node/2271">son annonce</a>. Le point le plus marquant de cette version est l&#8217;utilisation du Spring Expression Language pour décrire les règles de contrôle d&#8217;accès qui simplifieront des vérifications simples comme <code>@PreAuthorize("#contact.name == principal.name)")</code> et surtout, couplé à des classes java transverses de sécurité, permettra d&#8217;effectuer élégamment des contrôles déclaratifs sophistiqués tels que :</p><pre class="brush: java; title: ; notranslate">
@PreAuthorize(&quot;isPhysician(#patientFile.patient)&quot;)
public void create(PatientFile patientFile);
</pre><p>Bien sûr, il faudra programmer la méthode <code>isPhysician()</code>, Spring Security ne se substituera pas au code métier de votre application, il sera juste une aide précieuse <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .<br
/> Nous noterons au passage que l&#8217;<em>Expression Language</em> apporte à l&#8217;<em>Aspect Oriented Programming</em> le haut niveau d&#8217;abstraction qui permet de programmer des fonctionnalités métiers transverses sans être un spécialiste de la plomberie <code>ProceedingJoinPoint</code> et autres joyeusetés. L&#8217;AOP devient alors beaucoup plus accessible pour les développeurs d&#8217;informatique de gestion.</p><p>Les autres nouveautés que nous garderons en tête : des contrôles pré et post traitement (<code>@PreAuthorize</code> et <code>@PostAuthorize</code>), la restructuration des jars similaire à celle que Spring 2.5 a connu, et une clarification des règles de redirection post authentification.</p><h4><a
name="TourdhorizondeJBossInfinispan"></a>Tour d&#8217;horizon de JBoss Infinispan</h4><p>Le projet <a
title="Infinispan" href="http://www.jboss.org/infinispan.html">Infinispan</a> a été <a
title="initié en milieu d'année 2009" href="http://blog.xebia.fr/2009/05/04/revue-de-presse-xebia-107/#JBossveutsonDataGrid">initié en milieu d&#8217;année 2009</a> chez JBoss. Il s&#8217;agit d&#8217;une évolution de <a
title="JBoss Cache" href="http://www.jboss.org/jbosscache/">JBoss Cache</a> d&#8217;un simple cache vers un DataGrid.</p><p>Dans le <a
title="dernier pisode en date de JBoss Asylum" href="http://asylum.libsyn.com/index.php?post_id=562565">dernier épisode en date de JBoss Asylum</a>, le podcast dédié à la communauté JBoss maintenu par Emmanuel Bernard et Max R Andersen, Mark Surtani, <em>leader</em> du projet Infinispan, était invité pour parler de son projet. Il a pu faire un tour d&#8217;horizon global en commençant par le lien entre JBoss Cache et Infinispan :</p><ul><li>Contrairement à JBoss Cache qui utilisait une organisation arborescente, Infinispan se base uniquement sur une structure clé-valeur à plat.</li><li>Tout comme le faisait JBoss Cache, Inifinispan utilise JGroups pour assurer la découverte de ses instances.</li><li>Une API d&#8217;adaptation permettra d&#8217;assurer la transition entre JBoss Cache et Infinispan, notamment en offrant une arborescence au dessus de la structure de base d&#8217;Infinispan. Des outils seront fournis afin de migrer les fichiers de configuration.</li></ul><p>Manik Surtani a également abordé les fonctionnalités à venir, après la finalisation de la première version, dévoilant ainsi les ambitions de positionnement de ce produit :</p><ul><li>Utilisation de Lucene pour offrir une API de requêtes puissante permettant des recherches dans le DataGrid. Plusieurs possibilités d&#8217;architecture ont été évoquées telles que la réplication d&#8217;un index complet sur l&#8217;ensemble des noeuds ou la distribution de <em>shards</em> de l&#8217;index complet sur les noeuds via l&#8217;utilisation d&#8217;un <code>InfinispanDirectory</code> pour Lucene, actuellement en cours de développement.</li><li>Intégration éventuelle avec Hibernate Search. Infinispan se substituerait à Hibernate Core et Hibernate Search lui apporterait alors la fonctionnalité de recherche.</li><li>Possibilité d&#8217;effectuer des <em>continuous requests</em> pour que les résultats d&#8217;une requête s&#8217;enrichissent au fur et a mesure de l&#8217;arrivée de données sur la grille.</li><li>API de MapReduce permettant de soumettre un <code>Callable</code> et un ensemble de clés d&#8217;objets sur lesquels doivent s&#8217;appliquer le traitement pour obtenir un <code>Future</code> représentant le résultat, à venir, après opération de réduction.</li></ul><p>La plupart des fonctionnalités évoquées sont présentes dans les produits commerciaux que sont <a
title="Oracle Coherence" href="http://www.oracle.com/technology/products/coherence/index.html">Oracle Coherence</a> ou <a
title="IBM eXtreme Scale" href="http://www.ibm.com/software/webservers/appserv/extremescale/">IBM eXtreme Scale</a>. Toutefois, de telles possibilités seraient inédites dans un produit Open Source ce qui devrait faire d&#8217;Inifinispan un produit très intéressant à suivre en 2010&#8230;</p><h4><a
name="JGroupslheureduCloudComputing"></a>JGroups à l&#8217;heure du Cloud Computing</h4><p>JGroups est un <em>framework</em> permettant la communication au sein d&#8217;un groupe de serveurs. Actuellement développé au sein de JBoss, il est à la base de nombreux <em>middlewares</em> et frameworks d&#8217;entreprise permettant un fonctionnement distribué tels que JBoss Cache ou plus récemment Infinispan.</p><p>Après un an sans mise à jour majeure, Bela Ban, <em>leader</em> du projet, <a
title="annonce la version 28" href="http://belaban.blogspot.com/2009/12/jgroups-280ga-released.html">annonce la version 2.8</a>. Outre de nombreuses évolutions améliorant la flexibilité de JGroups, un apport notable s&#8217;est glissé dans la liste : le support d&#8217;Amazon EC2. Il s&#8217;agit là d&#8217;une nouveauté emblématique de cette année 2009 qui va se conclure ; la majorité des <em>frameworks</em> cherche à afficher une compatibilité voire une synergie avec les environnements de Cloud Computing courant.<br
/> En pratique, cette intégration de JGroups à EC2 se fait par l&#8217;ajout d&#8217;un nouveau protocole de découverte de voisinage nommé S3_PING. Comme son nom l&#8217;indique, il utilise un stockage S3 commun dans lequel tous les membres d&#8217;un groupe écrivent leurs coordonnées. Ce mécanisme est particulièrement bien adapté à EC2 qui, de part la topologie réseau qu&#8217;il offre, ne permet pas le <em>multicasting</em> et n&#8217;est guère adapté aux autres protocoles de découvertes qui existaient jusqu&#8217;alors dans JGroups.</p><p>Notons tout de même que la principale nouveauté de cette version 2.8 est l&#8217;ajout du concept d&#8217;adresse logique que Bela Ban <a
title="presentait il y a quelques mois" href="http://belaban.blogspot.com/2009/02/whats-cool-about-logical-addresses.html">présentait il y a quelques mois</a>. Une adresse logique permet de découpler l&#8217;identité d&#8217;un nœud JGroups de son adresse réseau ; l&#8217;association entre adresse logique et physique est résolue lors de la découverte des nœuds. Outre le découplage offert par ce concept, ces adresses permettent également de simplifier la gestion des pertes de messages lors de la ré-incarnation d&#8217;un nœud suite a son indisponibilité temporaire.</p><p>10 ans après sa création, JGroups continue donc de se maintenir à jour et, dans la mesure où il remplit toujours parfaitement son rôle, il devrait rester présent encore des années dans plusieurs <em>middlewares</em> et <em>frameworks</em> majeurs.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/</link> <comments>http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#comments</comments> <pubDate>Mon, 05 Oct 2009 16:06:26 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[j2me]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[MIDP]]></category> <category><![CDATA[MSA]]></category> <category><![CDATA[NDK]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Web Beans]]></category> <category><![CDATA[Weld]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2972</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Google essuie les plâtres et met à jour l&#8217;Android NDK MIDP 3 et MSA 2 pour sauver J2ME ? Agilité Départs de la Scrum Alliance : bruits de couloirs RIA Sécurité : 13 choses que les agresseurs d&#8217;applications web ne [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Googleessuielespltresetmetjour">Google essuie les plâtres et met à jour l&#8217;Android NDK</a></li><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#MIDPetMSApoursauverJME">MIDP 3 et MSA 2 pour sauver J2ME ?</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#DpartsdelaScrumAlliancebruitsd">Départs de la Scrum Alliance : bruits de couloirs</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Scuritchosesquelesagresseursda">Sécurité : 13 choses que les agresseurs d&#8217;applications web ne vous diront pas</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#Lesroadmapsdesimplmentationsde">Les roadmaps des implémentations de JPA 2.0</a></li><li><a
href="http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/#WebBeansestmortLonguevieaWeld">Web Beans est mort ! Longue vie a Weld !</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Googleessuielespltresetmetjour"></a>Google essuie les plâtres et met à jour l&#8217;Android NDK</h4><p>Pour rappel, le NDK est un environnement de développement complémentaire au SDK qui permet d&#8217;utiliser des langages autres que Java pour développer sur Android. Ce NDK est principalement dédié au développement C et C++. Parmi les nouveautés de la version 1.6, vous trouverez :</p><ul><li>Les librairies OpenGL ES 1.1 qui rapprochent encore un peu Android de l&#8217;IphoneOS.</li><li>Ciblage de version Android pour garantir le fonctionnement de votre application.</li><li>Possibilité de mélanger les sources Java et le code natif dans un même projet.</li></ul><p>Mais la semaine passée fût aussi l&#8217;occasion d&#8217;une joute entre Google et certains développeurs Android. Sujet de la discorde, le <a
href="http://www.cyanogenmod.com/" title="CyanogenMod" >CyanogenMod</a> une version libre, modifiée, d&#8217;Android. Google n&#8217;a pas apprécié le fait que son développeur ait la riche idée de distribuer avec son mod, les applications propriétaires qui lui sont chères. Citons par exemple : GMail, YouTube, Maps et Market. Nul besoin de dire que le système perd de son intérêt quand il est privé de ces outils estampillés Google&#8230;</p><p>Le spécialiste de la recherche a donc demandé l&#8217;interruption de toute distribution de ce mod, en attendant que le développeur trouve un moyen de livrer de l&#8217;Android sans aucune des G-Apps. C&#8217;est un baptême du feu pour ce système que Google a voulu ouvert. D&#8217;aucun disent que Google avait la possibilité de créer une alternative libre au jardin d&#8217;Eden d&#8217;Apple entouré de hauts remparts, à la place ce sera un autre jardin avec des murs un peu plus bas.</p><h4><a
name="MIDPetMSApoursauverJME"></a>MIDP 3 et MSA 2 pour sauver J2ME ?</h4><p><a
href="http://java.sun.com/products/midp/" title="Mobile Information Device Profile" >Mobile Information Device Profile</a> <em>(MIDP)</em>, associé à <a
href="http://java.sun.com/products/cldc/" title="Connected Limited Device Configuration" >Connected Limited Device Configuration</a> <em>(CLDC)</em> constitue l&#8217;API de base de J2ME, c&#8217;est cette architecture qui constitue le parc de 2 milliards de <em>devices</em> revendiqués par SUN.</p><p>La <a
href="http://jcp.org/en/jsr/detail?id=248" title="JSR-248 (Mobile Service Architecture)" >JSR-248 (Mobile Service Architecture)</a>, quant à elle, définit un ensemble d&#8217;APIs additionnelles pour les environnements MIDP J2ME apportant chacune un service particulier permettant souvent d&#8217;accéder à des fonctionnalités matérielles sous-jacentes (Bluetooth, GPS, Camera, &#8230;).</p><p>Ces deux piliers de J2ME sont en train d&#8217;évoluer avec la finalisation de <a
href="http://jcp.org/en/jsr/detail?id=271" title="MIDP 3" >MIDP 3</a> et <a
href="http://jcp.org/en/jsr/detail?id=249" title="MSA 2" >MSA 2</a>. Tandis que le premier apportera un rafraichissement de l&#8217;API de base de J2ME, le second poussera plus loin les possibilités d&#8217;intégration des applications mobiles J2ME.</p><p>Alors que les valeurs montantes du moment dans le monde du développement mobile sont clairement les plates-formes Android et iPhone, le rafraîchissement des APIs J2ME vieillissantes est le bienvenue et viendra épauler JavaFX Mobile dans son hypothétique ascension. On peut toutefois douter que cela suffira à inverser la tendance même si J2ME, fort de son parc colossal, n&#8217;est clairement pas menacé à court terme.</p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="DpartsdelaScrumAlliancebruitsd"></a>Départs de la Scrum Alliance : bruits de couloirs</h4><p>Vous le savez surement, la fin de l&#8217;été a marqué un tournant au sein de la Scrum Alliance.<br
/> Le 15 Septembre, dans un <a
href="http://www.scrumalliance.org/news_items/75" title="communiqu laconique" >communiqué laconique</a> <em>(et très américain &#8211; nous remercions &#8230; blablabla pour son excellent travail &#8230; blabla)</em>, il nous était annoncé le départ de deux éminents membres de la Scrum Alliance, Ken Schwaber <em>(son CEO)</em> et Jim Cundiff <em>(son Managing Director)</em>.<br
/> Après une enquête acharnée et au détour de quelques indiscrétions de sources <em>(que nous ne citerons pas)</em>, il s&#8217;avère que Ken a eu un grave accident de vélo et que Jim a été démissionné compte tenu de ses manquements dans la refonte du processus de certification dont il était en charge.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="Scuritchosesquelesagresseursda"></a>Sécurité : 13 choses que les agresseurs d&#8217;applications web ne vous diront pas</h4><p>Le Denim Group regroupe dans <a
href="http://denimgroup.typepad.com/denim_group/2009/09/13-things-a-web-application-attacker-wont-tell-you.html" title="13 Things a Web Applications Attacker Wont Tell You" >13 Things a Web Applications Attacker Won&#8217;t Tell You</a> les principales failles de sécurité de nos applications web :</p><ol><li>Transformer une requête GET en POST ne cachera pas les paramètres même s&#8217;ils n&#8217;apparaissent plus dans la barre d&#8217;adresse du navigateur <em>(vérifiez avec <a
href="http://www.charlesproxy.com/" title="Charles Proxy" >Charles Proxy</a> ou <a
href="http://www.fiddler2.com/fiddler2/" title="Fiddler" >Fiddler</a> si vous en doutez)</em>.</li><li>Utiliser un champ de formulaire <code>hidden</code> ne permet ni de cacher une information ni d&#8217;empêcher sa modification.</li><li>Idem pour les cookies <em>(voir #1)</em>.</li><li>Contrôler les données coté client avec du javascript ne m&#8217;empêchera pas de modifier leur valeur.</li><li>J&#8217;aime vous entendre dire &laquo;&nbsp;Cela n&#8217;arrivera jamais en production&nbsp;&raquo;.</li><li>Et j&#8217;adore quand vous dites &laquo;&nbsp;Un pirate ne ferait jamais ça&nbsp;&raquo;.</li><li>Je déteste les validations strictes cote serveur.</li><li>Cette page d&#8217;erreur avec le message détaillé me facilite tellement la vie.</li><li>La plupart des bannières &laquo;&nbsp;Sécurité Garantie !&nbsp;&raquo; ne me servent qu&#8217;a voir que vous n&#8217;avez pas compris les bases de la sécurité.</li><li>Ce scanneur d&#8217;application web que vous avez lancé, il n&#8217;a rien trouvé. Il n&#8217;a même pas effleuré les failles de votre application.</li><li>Ce scanneur réseau que vous avez lancé, il n&#8217;a même pas commencé a tester la sécurité de votre application.</li><li>Je connais AJAX (et toutes les nouvelles technologies a la mode) mieux que vous et mieux que vous ne pouvez imaginer.</li><li>Le plus astucieux vous vous croyiez, le mieux je me sens.</li></ol><p>Moralité, soyons humble et rigoureux, nous ne pourrons pas dire que nous ne savions pas, ces conseils sont répétés par la plupart des tutoriaux de frameworks web <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Lesroadmapsdesimplmentationsde"></a>Les roadmaps des implémentations de JPA 2.0</h4><p>Alors que la <a
href="http://jcp.org/en/jsr/detail?id=317" title="JSR-317 (Java Persistence API 2.0)" >JSR-317 (Java Persistence API 2.0)</a> vient de diffuser une <em>Proposed Final Draft 2</em> et que sa finalisation approche, nous souhaitions faire un tour d&#8217;horizon des principales implémentations en préparation. Comme c&#8217;est souvent le cas avec les JSRs, les développeurs n&#8217;attendent pas la finalisation des spécifications pour commencer à les implémenter. Ainsi, on se souvient que JPA 1.0, intégré à la <a
href="http://jcp.org/en/jsr/summary?id=220" title="JSR-220 (Enterprise JavaBeans 3.0)" >JSR-220 (Enterprise JavaBeans 3.0)</a> avait fait l&#8217;objet d&#8217;implémentations alpha chez JBoss dès la diffusion des <em>early drafts</em>, ce qui avait permis la stabilisation du conteneur peu après la finalisation de la JSR.</p><ul><li><strong>Hibernate</strong> : l&#8217;équipe de développement Hibernate <a
href="http://relation.to/12153.lace" title="a annonc" >a annoncé</a> fin aout la disponibilité d&#8217;une version 3.5 beta 1 qui implémentait la majorité des nouveautés de JPA 2.0. Aucune indication n&#8217;était alors donnée sur la date de finalisation, mais le bon avancement permet de supposer qu&#8217;elle arrivera rapidement. A noter toutefois que certaines optimisations importantes telles que la compilation des requêtes <em>criteria</em> n&#8217;arriveront que dans une version ultérieure.</li><li><strong>EclipseLink</strong> : la fondation Eclipse <a
href="http://www.eclipse.org/org/press-release/20080317_Eclipselink.php" title="avait annoncé" >avait annoncé</a> fièrement en début d&#8217;année 2008 qu&#8217;EclipseLink serait l&#8217;implémentation JPA 2.0 de référence. Une <a
href="http://wiki.eclipse.org/EclipseLink/RoadMap" title="roadmap" >roadmap</a> mise à jour en avril dernier fait état d&#8217;une version 2.0 d&#8217;EclipseLink implémentant JPA 2.0 pour l&#8217;automne 2009.</li><li><strong>Apache OpenJPA</strong> : le projet OpenJPA maintient <a
href="http://openjpa.apache.org/jpa-20-roadmap.html" title="une roadmap" >une roadmap</a> très rigoureuse tablant sur un démarrage de phase <em>release candidate</em> pour la fin de l&#8217;année. Il s&#8217;agira de la version 2.0 d&#8217;OpenJPA, elle est actuellement développée sur le <em>trunk</em> du projet.</li></ul><p>La première version de la spécification JPA a été un succès puisque de nombreux développeurs ont reconnu sa légitimité et l&#8217;ont adopté dans leurs projets plutôt que de se reposer sur l&#8217;API propre à leur <em>framework</em> de persistance. Toutefois, pour certaines fonctionnalités telles que les requêtes <em>criteria</em> ou des options de <em>mapping</em> évoluées, il était jusqu&#8217;alors nécessaire de contourner JPA. Dès lors, on imagine aisément que JPA 2.0, comblant les manques de son ainée, bénéficiera d&#8217;une large adoption. La disponibilité des moteurs JPA 2.0 qui seront utilisés par JBoss AS, Glassfish et WebSphere autour de la fin de l&#8217;année devrait par ailleurs accélérer l&#8217;omniprésence de cette nouvelle API.</p><h4><a
name="WebBeansestmortLonguevieaWeld"></a>Web Beans est mort ! Longue vie a Weld !</h4><p>Apres les bruits de couloir de la Scrum Alliance, nous continuons la rubrique people avec une fois encore Web Beans. Après le changement de nom de la <a
href="http://jcp.org/en/jsr/detail?id=299" title="JSR 299" >JSR 299</a> en Java Contexts and Dependency Injection, voici que la Reference Implementation se <a
href="http://in.relation.to/Bloggers/TheJSR299ReferenceImplementationGetsANewName" title="rebaptise Weld" >rebaptise Weld</a>.<br
/> Pendant ce temps, la <a
href="http://www.jcp.org/en/jsr/summary?id=330" title="JSR 330: Dependency Injection for Java" >JSR 330: Dependency Injection for Java</a> continue son chemin avec son implémentation partielle dans <a
href="http://blog.springsource.com/2009/09/29/spring-framework-3-0-rc1-released/" title="Spring Framework 3.0 RC1" >Spring Framework 3.0 RC1</a> et son intégration dans <a
href="http://code.google.com/p/google-guice/issues/detail?id=424" title="Google Guice" >Google Guice</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/10/05/revue-de-presse-xebia-128/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/</link> <comments>http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#comments</comments> <pubDate>Mon, 27 Jul 2009 16:02:37 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[DBMS]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[GAE]]></category> <category><![CDATA[Gaelyk]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[Hadoop]]></category> <category><![CDATA[HadoopDB]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[mapreduce]]></category> <category><![CDATA[Mockito]]></category> <category><![CDATA[PostGIS]]></category> <category><![CDATA[RIA]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2584</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. RIA Mockito-Flex Le coin de la technique JPA implementation patterns HadoopDB : un hybride entre MapReduce et DBMS Gaelyk ou Groovy sur AppEngine PostGIS, le SIG Open Source qui monte Evènements de notre communauté en France et à l&#8217;étranger Enquête JavaEE 6 RIA Mockito-Flex [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#MockitoFlex">Mockito-Flex</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#JPAimplementationpatterns">JPA implementation patterns</a></li><li><a
href="http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#HadoopDBunhybrideentreMapReduc">HadoopDB : un hybride entre MapReduce et DBMS</a></li><li><a
href="http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#GaelykouGroovysurAppEngine">Gaelyk ou Groovy sur AppEngine</a></li><li><a
href="http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/#PostGISleSIGOpenSourcequimonte">PostGIS, le SIG Open Source qui monte</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/27/revue-de-presse-xebia-119/#EnquteJavaEE">Enquête JavaEE 6</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="MockitoFlex"></a>Mockito-Flex</h4><p>Un mois après la sortie de la version 1.0, <a
href="http://bitbucket.org/loomis/mockito-flex/wiki/Home" title="MockitoFlex" >Mockito-Flex</a> se met à jour en 1.0.1. Une <em>release</em> mineure donc mais qui apporte toutefois son petit lot de nouveautés (<em>matchers</em> <code>anyOf(type:Class)</code>, <code>notNull()</code> &#8230;).</p><p>Les utilisateurs de <a
href="http://mockito.org/" title="Mockito" >Mockito</a> ne seront pas perdus, le code Flex étant très similaire au code Java que ce soit pour les assertions ou pour le <code>verify</code>:</p><pre class="brush: java; title: ; notranslate">
var list:ArrayCollection = ArrayCollection(mock(ArrayCollection, &quot;collection&quot;, [[]]));
given(list.getItemAt(1)).willReturn(&quot;A&quot;);
assertEquals(&quot;A&quot;, list.getItemAt(1));
assertNull(list.getItemAt(2));
...
var array:Array = mock(Array) as Array;
array.push(&quot;1&quot;);
array.pop();
verify().that(array.push(&quot;1&quot;));
verify().that(array.pop());
</pre><p>Le projet est très récent et néanmoins en bonne voie : article sur <a
href="http://www.infoq.com/news/2009/07/mockito-java-flex" title="InfoQ" >InfoQ</a>, <a
href="http://groups.google.com/group/mockito-flex?pli=1" title="mailing-list" >mailing-list</a>, <a
href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0" title="tutoriel" >tutoriel</a>&#8230; Comme toujours, rendez-vous est pris dans la <a
href="http://bitbucket.org/loomis/mockito-flex/downloads/" title="section tlchargements" >section téléchargements</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="JPAimplementationpatterns"></a>JPA implementation patterns</h4><p>Vincent Partington, collègue de Xebia Hollande, a réalisé <a
href="http://blog.xebia.com/2009/07/13/jpa-implementation-patterns-wrap-up/" title="une srie darticles autour de la spcification JPA" >une série d&#8217;articles autour de la spécification JPA</a>. Ses articles sont un complément à la documentation existante afin de faire le tour sur les fondamentaux et les faux-amis de JPA :</p><ul><li><a
href="http://blog.xebia.com/2009/03/09/jpa-implementation-patterns-data-access-objects/" title="Dao gnrique" >Dao générique</a></li><li><a
href="http://blog.xebia.com/2009/03/23/jpa-implementation-patterns-saving-detached-entities/" title="Persister" >Persister</a>, <a
href="http://blog.xebia.com/2009/04/03/jpa-implementation-patterns-retrieving-entities/" title="retrouver" >retrouver</a>, <a
href="http://blog.xebia.com/2009/04/09/jpa-implementation-patterns-removing-entities/" title="effacer" >effacer</a> une entité</li><li><a
href="http://blog.xebia.com/2009/05/11/jpa-implementation-patterns-service-facades-and-data-transfers-objects/" title="Pattern darchitecture  Pour ou contre les DAO DTO ou facade service " >Pattern d&#8217;architecture : Pour ou contre les DAO, DTO ou facade service, &#8230;</a></li><li>Et bien d&#8217;autres patterns &#8230;</li></ul><p>JPA et ses implémentations (telle qu&#8217;Hibernate) restent une technologie difficile à maitriser, et ces articles vous aideront à prendre des décisions techniques importantes pour vos projets.</p><h4><a
name="HadoopDBunhybrideentreMapReduc"></a>HadoopDB : un hybride entre MapReduce et DBMS</h4><p>Daniel Abadi <a
href="http://dbmsmusings.blogspot.com/2009/07/announcing-release-of-hadoopdb-longer.html" title="a présenté" >a présenté</a> <a
href="http://db.cs.yale.edu/hadoopdb/hadoopdb.html" title="HadoopDB" >HadoopDB</a>, un projet issu des universités de Yale et de Brown, qu&#8217;il qualifie d&#8217;hybride entre MapReduce et DBMS classique. Il s&#8217;agit d&#8217;une extension pour <a
href="http://hadoop.apache.org/" title="Hadoop" >Hadoop</a> et <a
href="http://wiki.apache.org/hadoop/Hive" title="Hive" >Hive</a> qui permet d&#8217;utiliser une base de données en remplacement de HDFS, le <em>file system</em> distribué utilisé par Hadoop.</p><p>Concrètement chaque nœud Hadoop embarque son propre serveur de base de données. HadoopDB reçoit des requêtes SQL qu&#8217;il analyse, traduit en tâches MapReduce qui seront envoyées sur chacun des nœuds du <em>cluster</em> Hadoop, puis retraduites en SQL pour être finalement exécutées par la base de données sous-jacente <em>(SQL to MapReduce to SQL Planner)</em>.</p><p>L&#8217;ensemble du projet est décrit dans la <a
href="http://db.cs.yale.edu/hadoopdb/hadoopdb.pdf" title="publication qui lui est consacrée" >publication qui lui est consacrée</a>. Celle-ci présente en détail les réflexions qui ont accompagné la conception d&#8217;HadoopDB et les performances obtenues faces à des DBMS parallèles dédiés à l&#8217;analyse de données tels que <a
href="http://www.vertica.com/" title="Vertica" >Vertica</a>. Si les performances mesurées d&#8217;HadoopDB sont en léger retrait face à Vertica, l&#8217;auteur met en avant que sa solution repose uniquement sur des technologies Open Source et qu&#8217;une base de données relationnelle (PostgreSQL) a été utilisée : il espère de meilleurs résultats en utilisant une <a
href="http://en.wikipedia.org/wiki/Column-oriented_DBMS" title="base de donnes oriente colonnes" >base de données orientée colonnes</a>.</p><h4><a
name="GaelykouGroovysurAppEngine"></a>Gaelyk ou Groovy sur AppEngine</h4><p>Parmi les sujets traités régulièrement sur notre blog, on retrouve <a
href="http://blog.xebia.fr/?s=groovy" title="Groovy" >Groovy</a> et <a
href="http://blog.xebia.fr/?s=appengine" title="Google AppEngine (GAE)" >Google AppEngine (GAE)</a>. Qu&#8217;obtient-on en mélangeant ? Et bien le dernier projet de <a
href="http://marceloverdijk.blogspot.com/" title="Marcel Overdijk" >Marcel Overdijk</a> et de <a
href="http://glaforge.free.fr/blog/groovy" title="Guillaume Laforge" >Guillaume Laforge</a> à savoir <a
href="http://gaelyk.appspot.com/" title="Gaelyk" >Gaelyk</a> (<a
href="http://www.gg3721.com/list/49/436662.html" title="annonce" >annonce</a>).</p><p>Le toolkit s&#8217;appuie sur <a
href="http://groovy.codehaus.org/Groovlets" title="Groovlets" >Groovlets</a> et <a
href="http://groovy.codehaus.org/Groovy+Templates" title="Groovy Template" >Groovy Template</a>, et permet de déployer rapidement de petites applications sur GAE. Les auteurs rappellent en effet que pour de plus grosses applications, il vaut mieux se tourner vers <a
href="http://www.grails.org/" title="Grails" >Grails</a>.</p><p>Le <a
href="http://gaelyk.appspot.com/tutorial/" title="tutoriel" >tutoriel</a> très complet permet de faire un rapide tour d&#8217;horizon de Gaelyk.<br
/> Celui-ci décrit l&#8217;arborescence d&#8217;un projet Gaelyk, la configuration du <code>web.xml</code> et du <code>appengine-web.xml</code>.<br
/> La partie <em>vues et contrôleurs</em> s&#8217;intéresse :</p><ul><li>aux variables implicites mises en place par la servlet principale (<code>eager</code> avec <code>request, response, context, session</code>&#8230; et <code>lazy</code> avec <code>out, html...</code>),</li><li>aux Groovy Templates, avec plusieurs exemples de <code>gtpl</code>, gestion des <code>incude</code> et <code>redirect</code>,</li><li>aux Groovlets, avec là aussi plusieurs exemples de scripts.</li></ul><p>Enfin, une dernière partie détaille les ajouts de syntaxes/méthodes spécifiques à Google AppEngine (envoi de mails, <code>Entity</code>, <code>withTransaction()</code>&#8230;) et explique comment déployer son application.<br
/> Un exemple d&#8217;application qui utilise Gaelyk est la <a
href="http://groovyconsole.appspot.com/" title="Groovy Web Console" >Groovy Web Console</a>, ou l&#8217;écriture de code Groovy <em>live</em>. Alors, un petit <a
href="http://gaelyk.appspot.com/download/" title="HelloWorld" >HelloWorld</a> ?</p><h4><a
name="PostGISleSIGOpenSourcequimonte"></a>PostGIS, le SIG Open Source qui monte</h4><p>Les <a
href="http://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27information_g%C3%A9ographique" title="SIG (Systèmes d'Information Géographique)" >SIG (Systèmes d&#8217;Information Géographique)</a> prennent de nos jours une nouvelle dimension avec la généralisation progressive de terminaux mobiles connectés à Internet et capables de se géolocaliser ou encore avec les sites Web riches proposant des cartes, des calculs d&#8217;itinéraires ou des recherches du plus proche point de vente. A travers cette évolution, un plus grand nombre d&#8217;entreprises peut potentiellement être intéressé par les SIG.</p><p>Alors que pendant un temps les principaux acteurs sur ce marché étaient des produits commerciaux, <a
href="http://en.wikipedia.org/wiki/List_of_GIS_software" title="on trouve désormais une offre Open Source" >on trouve désormais une offre Open Source</a> : <a
href="http://forge.mysql.com/wiki/GIS_Functions" title="MySQL Spacial" >MySQL Spacial</a>, <a
href="http://geosysin.iict.ch/irstv-trac/wiki/H2spatial/Download" title="H2Spacial" >H2Spacial</a>, <a
href="http://www.gaia-gis.it/spatialite-2.0/index.html" title="SpacialLite" >SpacialLite</a> et <a
href="http://postgis.refractions.net/" title="PostGIS" >PostGIS</a>.<br
/> Au sein de cette offre, <a
href="http://postgis.refractions.net/" title="PostGIS" >PostGIS</a>, une extension de <a
href="http://www.postgresql.org/" title="PostgreSQL" >PostgreSQL</a> qui a fait son apparition il y a 4 ans, se distingue par sa maturité et sa popularité. Ainsi, l&#8217;éditeur Manning a récemment annoncé <a
href="http://manning.com/obe/" title="un ouvrage qui lui sera consacr" >un ouvrage qui lui sera consacré</a> pour début 2010.</p><p>Le site du projet <a
href="http://postgis.refractions.net/news/20090724/" title="vient d'annoncer la disponibilité" >vient d&#8217;annoncer la disponibilité</a> de la version 1.4 de PostGIS apportant son lot d&#8217;améliorations et de corrections. Le driver JDBC dédié, composé principalement d&#8217;extensions à l&#8217;API JDBC standard, est lui aussi mis à jour, on le trouve dans <a
href="http://postgis.refractions.net/download/" title="la mme archive que PostGIS" >la même archive que PostGIS</a>.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="EnquteJavaEE"></a>Enquête JavaEE 6</h4><p>Sun, <a
href="http://www.theserverside.com/news/thread.tss?thread_id=55247" title="via TheServerSide" >via TheServerSide</a>, relance la communauté Java pour <a
href="http://www.sun.com/training/ee6_jtasurvey.html" title="ses cinq enqutes  thme auprs des dveloppeurs JavaEE6" >ses cinq enquêtes à thème auprès des développeurs JavaEE6</a>. Ces enquêtes doivent servir à optimiser les cours et les certifications JavaEE 6. Si vous êtes prêts à donner cinq minutes de votre temps à l&#8217;amélioration de la formation Java, n&#8217;attendez plus, vous avez jusqu&#8217;au 31 juillet.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/07/27/revue-de-presse-xebia-119/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>La persistance dans Google App Engine (Partie une : Le datastore)</title><link>http://blog.xebia.fr/2009/07/16/la-persistance-dans-google-app-engine-partie-une-le-datastore/</link> <comments>http://blog.xebia.fr/2009/07/16/la-persistance-dans-google-app-engine-partie-une-le-datastore/#comments</comments> <pubDate>Thu, 16 Jul 2009 15:45:32 +0000</pubDate> <dc:creator>Romain Schlick</dc:creator> <category><![CDATA[Cloud / NoSQL]]></category> <category><![CDATA[big table]]></category> <category><![CDATA[datanucleus]]></category> <category><![CDATA[datastore]]></category> <category><![CDATA[GAE]]></category> <category><![CDATA[GFS]]></category> <category><![CDATA[Google App Engine]]></category> <category><![CDATA[Google file system]]></category> <category><![CDATA[JDO]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[mapreduce]]></category> <category><![CDATA[persistance]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2549</guid> <description><![CDATA[Google App Engine (GAE) pour Java, sorti récemment, propose une solide offre d&#8217;hébergement de serveur d&#8217;applications Java/JEE. Cette solution de cloud computing est conçue comme « platform as a service » : Google fournit l&#8217;infrastructure complète, ainsi que l&#8217;environnement pour héberger l&#8217;application. App Engine propose ainsi de nombreux services, dont notamment un système de base [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2009/07/google_appengine.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: left;" /><br
/> Google App Engine (GAE) pour Java, sorti récemment, propose une solide offre d&#8217;hébergement de serveur d&#8217;applications Java/JEE. Cette solution de cloud computing est conçue comme <em>« platform as a service »</em> : Google fournit l&#8217;infrastructure complète, ainsi que l&#8217;environnement pour héberger l&#8217;application. App Engine propose ainsi de nombreux services, dont notamment un système de base de données, appelé datastore (basé sur Google Big Table). La gestion de la persistance est réalisée par l&#8217;ORM <em>Datanucleus</em>, qui supporte les implémentations JDO et JPA.</p><p>Je vais vous présenter de manière concise le fonctionnement du datastore. De par sa nature, il impose des contraintes fortes, qui nécessitent de revoir sa façon de modéliser les données et de gérer la persistance dans son application.</p><h3><a
name="DatastoreetBigTable"></a>Datastore et Big Table</h3><p>La base de données de GAE appelée <em>datastore</em> repose sur le SGBD <em>Big Table</em> développé en interne par Google. Celui-ci a la particularité d&#8217;être hautement scalable et s&#8217;appuie sur un système de fichiers distribués géré par <em>GFS</em> (Google File System).<br
/> Big Table est une Map ordonnée multi-dimensionnelle. Les données (ou entités) sont stockées sous forme de <em>&lt;Clé, Valeur&gt;</em> dans des partitions appelées <em>tablets</em>. Des tablettes <em>META1</em> référencent l&#8217;ensemble des tablettes contenant les entités. Une tablette maître appelée <em>META0</em> référence les tablettes <em>META1</em> et permet au client d&#8217;accéder aux tablettes de la base. Pour optimiser les performances, un mécanisme de cache permet au client de s&#8217;adresser directement aux tablettes <em>META1</em> et aux tablettes contenant les entités.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/07/gae_datastore_overview.png" border="0" alt="" /></div><h3><a
name="MapReduce"></a>MapReduce</h3><p>L&#8217;idée de Google a été de simplifier au maximum la gestion des données sur un nombre très important de clusters. Le but étant de pouvoir tirer parti des milliers de machines dont dispose Google pour former un cluster géant.<br
/> La solution trouvée par Google s&#8217;appelle <em>MapReduce</em>. Cet algorithme permet de paralléliser et de distribuer automatiquement les données du datastore.<br
/> Lorsqu&#8217;une requête (un select par exemple) est exécutée sur une entité, le MapReduce est alors lancé pour récupérer le résultat. Il se décompose en deux étapes (ou fonctions):</p><ul><li>Une première fonction, <em>Map</em>, est appliquée sur les différentes partitions et renvoie une liste de valeurs intermédiaires (clé, valeur intermédiaire) correspondant aux critères du select.</li><li>Ensuite, une seconde fonction, <em>Reduce</em>, fusionne toutes les valeurs intermédiaires pour une même clé pour former le résultat final (une valeur finale).</li></ul><h3><a
name="Entitetgroupedentits"></a>Entité et groupe d&#8217;entités</h3><p>Vous l&#8217;aurez compris, le datastore n&#8217;est donc pas une base de données de type relationnelle, mais de type hiérarchique.<br
/> Cela implique une manière totalement différente de modéliser et d&#8217;accéder aux données de la base. Les données sont modélisées sous forme d&#8217;entités et de groupes d&#8217;entités. Une entité qui n&#8217;a pas de parents est appelée <em>&#8216;root entity&#8217;</em>. Cette <em>root entity</em> peut avoir des enfants, on appelle alors cet ensemble un groupe d&#8217;entités (entity group). Chaque groupe d&#8217;entités constitue alors un ensemble cohérent et indépendant vis à vis d&#8217;autres entités. Ces grappes d&#8217;objets peuvent ainsi être clusterisées dans une tablette.</p><p>Chaque entité est constituée d&#8217;un ensemble d&#8217;attributs, certains pouvant faire référence à d&#8217;autres entités. Une entité est implémentée avec une simple classe POJO, annotée avec JDO ou JPA.<br
/> Voici un exemple d&#8217;implémentation d&#8217;une entité <em>UserEntity</em> avec JDO:</p><pre class="brush: java; title: ; notranslate">
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class UserEntity {
	public UserEntity(){}
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Key key;
	@Persistent
	private String email;
	@Persistent
	private List&lt;FeedEntity&gt; feeds;
	...
}
</pre><h3><a
name="Clsprimaires"></a>Clés primaires</h3><p>Chaque entité dispose d&#8217;une clé qui l&#8217;identifie de manière unique parmi toutes les entités du data store. La clé contient un ensemble d&#8217;informations tel que l&#8217;application ID, la classe de l&#8217;entité et l&#8217;ID de l&#8217;entité. L&#8217;application doit fournir la partie ID de la clé via une propriété sur l&#8217;objet annoté avec <code>@PrimatyKey</code> avec JDO ou <code>@Id</code> avec JPA. Cette propriété peut être de type numérique (Long uniquement) ou de type String (unencoded String) et être générée automatiquement par le data store.<br
/> L&#8217;exemple ci-dessous représente un ID de type numérique implémenté via l&#8217;annotation <code>@PrimaryKey</code> (implémentation JDO). Au passage, on remarquera que la stratégie de génération des ID est dans tous les cas de type <em>IDENTITY</em>:</p><pre class="brush: java; title: ; notranslate">
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
</pre><p>Malheureusement, si vous comptez gérer des relations entre entités, il n&#8217;est pas possible d&#8217;utiliser les types d&#8217;ID décrits précédemment. Il est nécessaire d&#8217;utiliser une instance de l&#8217;objet <em>Key</em> (<code>com.google.appengine.api.datastore.Key</code>) fourni par l&#8217;API de GAE. Il est tout de même possible d&#8217;utiliser une forme réencodée en <code>String</code> de cet objet <code>Key</code> afin de ne pas être dépendant de l&#8217;API GAE et de faciliter la migration de l&#8217;application hors de GAE.<br
/> L&#8217;objet <code>Key</code> inclut la clé de l&#8217;entité parent si elle existe, ainsi que l&#8217;ID. L&#8217;ID est fourni soit de manière manuelle par l&#8217;application sous forme de <code>String</code>, soit de manière automatique par le data store sous forme numérique. Dans ce dernier cas, il suffit de laisser la valeur à null.</p><p>Dans l&#8217;exemple ci-dessous, on peut voir qu&#8217;il est possible d&#8217;ajouter un accès direct à l&#8217;ID (numérique ou String) via un attribut supplémentaire id:</p><pre class="brush: java; title: ; notranslate">
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class FeedEntity {
	public FeedEntity(){}
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Key key;
	@Persistent
	@Extension(vendorName = &quot;datanucleus&quot;, key = &quot;gae.pk-id&quot;, value = &quot;true&quot;)
	private Long id;
	...
}
</pre><p>Par ailleurs, GAE offre une API pour manipuler les clés.<br
/> Pour créer une clé manuellement, il suffit d&#8217;indiquer la classe de l&#8217;entité et l&#8217;ID, de type numérique ou String, qui l&#8217;identifie de manière unique:</p><pre class="brush: java; title: ; notranslate">
	Key k = KeyFactory.createKey(UserEntiy.class.getSimpleName(), &quot;capitaine.haddock@xebia.fr&quot;);
</pre><p>Il est aussi possible de convertir une clé en String ou l&#8217;inverse via les méthodes <code>KeyFactory.keyToString()</code> et <code>KeyFactory.stringToKey()</code>.</p><h3><a
name="Lesrelations"></a>Les relations</h3><p>Les relations sont modélisées de manière classique via les propriétés de l&#8217;entité qui référencent d&#8217;autres instances. Il est important de modéliser les relations en gardant à l&#8217;esprit que le data store est un système hiérarchique constitué de parents-enfants et de groupes.</p><p>GAE décrit les relations de deux manières : les <em>owned relationships</em> et les <em>unowned relationships</em>. On dit qu&#8217;une relation est <em>owned</em> lorsqu&#8217;une des entités de la relation ne peut exister sans l&#8217;autre. Ceci arrive dans le cas d&#8217;une entité enfant qui est liée à l&#8217;entité parent. L&#8217;entité parent peut elle-même être enfant d&#8217;une autre entité ou être une root entity. On dit qu&#8217;une relation est <em>unowed</em> lorsque les entités sont indépendantes : elles n&#8217;appartiennent pas au même groupe d&#8217;entités.</p><ul><li><em>owned relationship</em>: GAE gère nativement les relations de type <em>one-to-one</em>, <em>one-to-many</em> (unidirectionelle et bidirectionelle), mais pas les <em>many-to-many</em>. Lors d&#8217;une opération de mise à jour ou de suppression, une cascade est appliquée aux enfants de la relation. Dans le cas d&#8217;une création, les enfants sont créés automatiquement et l&#8217;ensemble appartient au même groupe d&#8217;entités.</li><li><em>unowned relationship</em>: on ne peut pas modéliser la relation via une instance, mais uniquement via l&#8217;objet <code>Key</code> référençant l&#8217;entité. Il est alors possible de mapper les différents types de relations.</li></ul><p>Pour réaliser des <em>many-to-many</em>, il faut que chaque entité référence l&#8217;autre entité via sa <code>Key</code>. On entre alors dans le cas d&#8217;une <em>unowed relationship</em>. On peut voir ci-dessous un exemple de many-to-many:</p><pre class="brush: java; title: ; notranslate">
import com.google.appengine.api.datastore.Key;
import java.util.List;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class UserEntity {
	public UserEntity(){}
	//...
	@Persistent
	private List&lt;Key&gt; feeds;
	//...
}
</pre><pre class="brush: java; title: ; notranslate">
import com.google.appengine.api.datastore.Key;
import java.util.List;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class FeedEntity {
	public FeedEntity(){}
	//...
	@Persistent
	private List&lt;Key&gt; users;
	//...
}
</pre><h3><a
name="Lesrequtes"></a>Les requêtes</h3><p>Les requêtes sont écrites en JDOQL ou JPQL selon que l&#8217;on utilise l&#8217;implémentation JDO ou JPA. Il est possible de faire des jointures entre des entités appartenant au même groupe et de filtrer via des propriétés des entités parent et enfant.<br
/> Le data store gère les sélections, les filtres et les tris. Il est aussi possible de définir des plages (range) de résultat.<br
/> Cependant, oubliez les <em>group by</em>, les aggrégations, et les fonctions, ainsi que l&#8217;opérateur <code>!=</code>. Autre contrainte : il n&#8217;est possible de définir qu&#8217;un seul filtre d&#8217;inégalité par requête, et il faut impérativement ajouter la propriété filtrée comme première clause dans le tri.</p><pre class="brush: java; title: ; notranslate">
import java.util.List;
import javax.jdo.Query;
// ...
Query query = pm.newQuery(FeedEntity.class);
query.setFilter(&quot;lastUpdateDate &gt;= dateParam&quot;);
query.setOrdering(&quot;lastUpdateDate desc&quot;);
query.declareParameters(&quot;Date dateParam&quot;);
query.setRange(0,10);
List&lt;FeedEntity&gt; results = (List&lt;FeedEntity&gt;) query.execute(new Date());
</pre><p>GAE génèrent des index automatiquement pour chaque requête de l&#8217;application. Il est possible de créer ses propres index dans le fichier <code>datastore-indexes.xml</code> selon les besoins. Attention, les entités dont les propriétés ne sont pas indexées ou dont les propriétés n&#8217;existent pas seront ignorées par le data store.</p><p>À ce jour, Google ne fournit aucun outil pour visualiser et requêter le datastore en environnement de développement.<br
/> Cependant, dans l&#8217;interface d&#8217;administration du serveur fourni par Google, il est possible de requêter sur le datastore de production via le langage <a
href="http://code.google.com/intl/fr-FR/appengine/docs/python/datastore/gqlreference.html" title="GQL" >GQL</a> (Google Query Langage) qui ressemble beaucoup à SQL.</p><h3><a
name="Lestransactions"></a>Les transactions</h3><p>Le datastore permet d&#8217;effectuer un ensemble d&#8217;opérations au sein d&#8217;une même transaction. Si une transaction échoue, toutes les opérations réalisées sont annulées.  Le datastore réalise ainsi des opérations atomiques.</p><p>Une des principales restrictions du datastore est l&#8217;obligation de ne manipuler dans une transaction qu&#8217;une seule entité ou un seul groupe d&#8217;entités.<br
/> Si vous ne respectez pas cette restriction, vous obtiendrez l&#8217;erreur suivante: <code>javax.jdo.JDOFatalUserException: can't operate on multiple entity groups in a single transaction.</code></p><p>Voici un exemple (implémentation JDO) d&#8217;opération incorrecte qui génère une exception:</p><pre class="brush: java; title: ; notranslate">
import java.util.List;
import javax.jdo.Query;
import javax.jdo.Transaction;
import javax.jdo.PersistenceManager;
// ...
// Example of a failing transaction ...
Transaction tx = getPersistenceManager().currentTransaction();
tx.begin();
Query query = getPersistenceManager().newQuery(FeedEntity.class);
List&lt;FeedEntity&gt; feeds =  (List&lt;FeedEntity&gt;) query.execute();
for (FeedEntity feedEntity : feeds) {
    // some operations
	feedEntity.setLastUpdateDate(new Date());
	getPersistenceManager().makePersistent(feedEntity);
	}
tx.commit();
</pre><p>Autre restriction : l&#8217;impossibilité de mettre à jour ou de créer plus d&#8217;une entité ou groupe d&#8217;entités au sein d&#8217;une transaction. En effet, les entités sont stockées dans des tablettes potentiellement différentes.<br
/> Enfin, Google avertit qu&#8217;une requête peut échouer dans certains cas : dépassement d&#8217;un quota, niveau de contention trop élevé ou encore nombre d&#8217;utilisateurs trop important.</p><h3><a
name="Quotas"></a>Quotas</h3><p>Bien que GAE soit gratuit, des quotas sont définis pour le datastore. Ils sont assez pénalisants. Ainsi, je vous conseille de ne pas les négliger. Google limite le nombre d&#8217;entités à 1000 par requête. Par ailleurs, une entité a une taille maximum fixée à 1 Mo. Enfin, le temps d&#8217;exécution d&#8217;une requête envoyée au serveur ne doit pas dépasser 30 secondes.</p><h3><a
name="Conclusion"></a>Conclusion</h3><p>Avec GAE, oubliez les bonnes vieilles modélisations à la Merise ou UML. Dorénavant, vous manipulez des groupes d&#8217;entités, des root entity, ou encore des relations de type owned-unowed. Le data store impose de nombreuses contraintes, qui pourraient en rebuter plus d&#8217;un. Cependant, il faut garder à l&#8217;esprit les objectifs de Google : fournir une plateforme hautement disponible et scalable.<br
/> Bien que la persistance soit gérée via l&#8217;ORM DataNucleus, il est possible d&#8217;utiliser une API de bas de niveau. Cependant, très peu de documentation est fournie.<br
/> Suite à cette présentation plutôt théorique du datastore, j&#8217;aborderai prochainement la persistance dans GAE avec les implémentations JDO et JPA.</p><h3><a
name="Liensutiles"></a>Liens utiles</h3><ul><li><a
href="http://code.google.com/intl/fr/appengine/docs/java/gettingstarted/" title="Documentation officielle" >Documentation officielle</a></li><li><a
href="http://groups.google.com/group/google-appengine-java" title="Groupe de discussions officiel" >Groupe de discussions officiel</a></li><li><a
href="http://labs.google.com/papers/mapreduce-osdi04-slides/" title="MapReduce Google Presentation" >MapReduce Google Presentation</a></li><li><a
href="http://labs.google.com/papers/bigtable.html" title="Big Table Google documentation" >Big Table Google documentation</a></li><li><a
href="http://fr.wikipedia.org/wiki/MapReduce" title="Wikipedia MapReduce" >Wikipedia MapReduce</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/07/16/la-persistance-dans-google-app-engine-partie-une-le-datastore/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>Seam : Repenser l&#8217;architecture des applications web ?</title><link>http://blog.xebia.fr/2009/06/03/seam-repenser-larchitecture-des-applications-web/</link> <comments>http://blog.xebia.fr/2009/06/03/seam-repenser-larchitecture-des-applications-web/#comments</comments> <pubDate>Wed, 03 Jun 2009 10:11:04 +0000</pubDate> <dc:creator>Amin Fathallah</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[EJB]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[JSF]]></category> <category><![CDATA[Seam]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2104</guid> <description><![CDATA[Seam est un framework qui permet de simplifier le développement des applications web complexes. Seam utilise la plupart des concepts de la spécification JAVA EE 5 qui vise à faciliter le développement et l&#8217;intégration des applications entreprises. Seam fournit un modèle de composant, une API et des annotations pour faciliter l&#8217;intégration des standards Java EE [...]]]></description> <content:encoded><![CDATA[<p>Seam est un framework qui permet de simplifier le développement des applications web complexes. Seam utilise la plupart des concepts de la spécification JAVA EE 5 qui vise à faciliter le développement et l&#8217;intégration des applications entreprises. Seam fournit un modèle de composant, une API et des annotations pour faciliter l&#8217;intégration des standards Java EE 5 telles que JSF (Java Server Faces), EJB 3, et JPA (Java Persistence API).</p><p>Dans ce billet, nous allons essayer d&#8217;évaluer ce framework en menant une étude comparative entre deux prototypes basés sur le même socle fonctionnel. Un premier prototype en JSF/EJB3/JPA et un deuxième se basant sur le même socle technique mais intégrant Seam. L&#8217;étude va porter sur plusieurs critères tel que la maturité de la solution, la pérennité, la complexité de mise en œuvre, le coût de développement etc.</p><p>Au programme :</p><ul><li><a
href="http://blog.xebia.fr/2009/06/03/seam-repenser-larchitecture-des-applications-web/#PrsentationdeSeam">Présentation de Seam</a></li><li><a
href="http://blog.xebia.fr/2009/06/03/seam-repenser-larchitecture-des-applications-web/#LeprototypeContactBook">Le prototype ContactBook</a></li><li><a
href="http://blog.xebia.fr/2009/06/03/seam-repenser-larchitecture-des-applications-web/#LasolutionJSFEJBJPA">La solution JSF/EJB3/JPA</a></li><li><a
href="http://blog.xebia.fr/2009/06/03/seam-repenser-larchitecture-des-applications-web/#LasolutionSeam">La solution Seam</a></li><li><a
href="http://blog.xebia.fr/2009/06/03/seam-repenser-larchitecture-des-applications-web/#Comparatifdesdeuxsolutions">Comparatif des deux solutions</a><ul><li>Architecture applicative</li><li>Code technique</li><li>Délai et facilité de mise en œuvre</li><li>Solution</li></ul></li><li><a
href="http://blog.xebia.fr/2009/06/03/seam-repenser-larchitecture-des-applications-web/#Conclusion">Conclusion</a></li></ul><h3><a
name="PrsentationdeSeam"></a>Présentation de Seam</h3><p>Seam est un framework JEE 5 dont la première version est sortie en décembre 2005. Il se base essentiellement sur les standards EJB3 et JSF pour construire des applications web. L&#8217;objectif principal de Seam consiste à éliminer la complexité tant au niveau de l&#8217;architecture que de l&#8217;interface de programmation (API). Il se base sur les annotations JDK 1.5 et sur l&#8217;utilisation des POJO conformément à l&#8217;évolution de JAVA EE 5.</p><p>Il offre de nombreuses avantages :</p><ul><li>Meilleure Intégration (JSF/EJB3/JPA).</li><li>Nouveaux contextes : conversation, business process et page.</li><li>Gestion automatique des composants de l&#8217;application.</li><li>Intégration simple des flux de pages.</li><li>Intégration simple de JBoss JBPM.</li><li>Accès distant simplifié.</li></ul><p>Ce framework offre de nombreuses facilités au niveau de la mise en œuvre des applications web, et se présente de plus en plus comme un futur standard. Pour les utilisateurs qui ne sont pas encore prêts à utiliser les EJB, Seam supporte également des classes POJO et des classes Hibernate comme composants.</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2009/06/archi.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/archi-300x104.png" alt="archi" title="archi" width="300" height="104" class="alignright size-medium wp-image-2114" /></a></div><p>Nous allons essayer de vérifier la pertinence des éléments avancées par les créateurs de Seam en menant une étude comparative entre deux prototypes, un se basant sur les EJB3 et JSF et un se basant sur le même socle technique mais utilisant Seam comme framework d&#8217;intégration des deux technologies.<br
/> Pour ceux qui veulent se documenter plus n&#8217;hésitez pas à <a
href="ftp://ftp-developpez.com/valtech/articles/java/javaee/jboss/seam/Jboss-Seam.pdf" title="consulter le billet suivant" >consulter le billet suivant</a>.</p><h3><a
name="LeprototypeContactBook"></a>Le prototype ContactBook</h3><p>Le prototype ContactBook est une application web de gestion des contacts. Son périmètre fonctionnel couvre les fonctionnalités essentielles d&#8217;une application de gestion. Ces fonctionnalités sont réparties en deux domaines :</p><ul><li>Gestion des utilisateurs.</li><li>Gestion des contacts.</li></ul><p>ContactBook est une application web relativement simple. Elle permet à un utilisateur de gérer ses contacts. Chaque utilisateur répond à un profil (nom, prénom, adresse mail et  numéro de téléphone). Chaque utilisateur doit s&#8217;identifier auprès du système pour utiliser l&#8217;application ContactBook.</p><p>ContactBook est une application internationale. Un utilisateur doit pouvoir choisir sa langue « de travail ». Un mécanisme de changement de gestion multilingue est donc proposé à l&#8217;utilisateur. Deux langues sont proposées : l&#8217;anglais et le français. La langue par défaut est le français.</p><h3><a
name="LasolutionJSFEJBJPA"></a>La solution JSF/EJB3/JPA</h3><p>cette solution se base sur une architecture 3 tiers avec jsf pour la couche présentation, ejb3 pour la couche métier et jpa pour la couche des données.<div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/archit_ejb3_jsf.png" border="0" alt="" /></div><p>La couche présentation est constituée d&#8217;un ensemble de composants JSF. Les JSF Backing Beans ou les Managed Beans sont utilisés pour faire le lien entre la couche présentation et la couche métier, ils permettent ainsi de récupérer les données saisies par les utilisateurs, les valider et les véhiculer à la couche métier. La couche métier est un ensemble de composants EJB session qui encapsulent le logique métier de l&#8217;application. Les EJB entités représentent le modèle des données. Ceux-ci seront directement persistés dans la base de données grâce à l&#8217;api de persistance utilisée.</p><h3><a
name="LasolutionSeam"></a>La solution Seam</h3><p>Cette solution se base sur les mêmes composants que l&#8217;architecture précédente mais utilise Seam comme framework d&#8217;intégration des différentes frameworks et technologies utilisés dans le projet.<div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/archi_jbs.png" border="0" alt="" /></div><p>La couche présentation est constituée d&#8217;un ensemble de composants JSF. Les EJB session jouent un double rôle puisqu&#8217;ils permettent l&#8217;échange des données entre la couche présentation et la couche métier, la validation des données, et la gestion des transactions et des sessions des utilisateurs. Les EJB entités représentent le modèle des données. Ceux-ci seront directement persistés dans la base de données grâce à l&#8217;api de persistance utilisée.</p><h3><a
name="Comparatifdesdeuxsolutions"></a>Comparatif des deux solutions</h3><h4>Architecture applicative</h4><p>Pour commencer, nous allons mener une comparaison au niveau de l&#8217;architecture applicative des deux solutions proposées :</p><table
cellspacing="0" cellpadding="5" style="border: 1px solid black"><tr><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Critère</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>JSF/EJB3/JPA</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Seam</strong></td></tr><tr><td
style="border: 1px solid black"> <strong>Réutilisation des composants</strong></td><td
style="border: 1px solid black"> 3</td><td
style="border: 1px solid black"> 1</td></tr><tr><td
style="border: 1px solid black"> <strong>Facilité de mise en œuvre</strong></td><td
style="border: 1px solid black"> 2</td><td
style="border: 1px solid black"> 3</td></tr><tr><td
style="border: 1px solid black"> <strong>Intégration des composants déjà mis en place</strong></td><td
style="border: 1px solid black"> 4</td><td
style="border: 1px solid black"> 1</td></tr><tr><td
style="border: 1px solid black"> <strong>Investissement nécessaire</strong></td><td
style="border: 1px solid black"> 1</td><td
style="border: 1px solid black"> 3</td></tr><tr><td
style="border: 1px solid black"> <strong>Intégration avec d&#8217;autres technologies</strong></td><td
style="border: 1px solid black"> 1</td><td
style="border: 1px solid black"> 3</td></tr><tr><td
style="border: 1px solid black"> <strong>Evolutivité de l&#8217;architecture</strong></td><td
style="border: 1px solid black"> 3</td><td
style="border: 1px solid black"> 1</td></tr></table><p><em>Notation : Faible(1), Moyen(2), Élevé(3), Excellent(4)</em></p><p>Les dépendances introduites dans le code technique par Seam, ainsi que le modèle d&#8217;architecture imposé par ce framework rend la <strong>réutilisation de ses composants</strong> très faible par rapport aux composants sans Seam qui sont réutilisables dans l&#8217;état.</p><p>Seam couvre la plupart des besoins techniques liés au développement d&#8217;une application web, ce qui permet de <strong>simplifier le développement</strong> avec JEE5. Seam fournit aussi des outils pour faciliter la vie des développeurs. Sans Seam les développeurs doivent prendre en charge tout les problèmes liés à l&#8217;intégration des différentes briques JEE5.</p><p>Il est plus difficile d&#8217;<strong>intégrer des composants réutilisables</strong> dans une application Seam, car il faut les convertir en composants Seam. Sans Seam nous avons moins de contraintes pour intégrer des composants réutilisables dans l&#8217;application.</p><p>Seam est un framework complexe qui nécessite un grand cout d&#8217;entrée, mais qui permet de résoudre beaucoup de problèmes liés à l&#8217;<strong>intégration des différents frameworks</strong> du marché. Seam nous facilite la tâche en s&#8217;intégrant parfaitement avec plusieurs frameworks et implémentations des spécifications JEE5 (EJB3, JSF, Spring, GWT, IceFaces &#8230;).</p><p>L&#8217;<strong>architecture de la solution Seam est moins souple</strong> que l&#8217;architecture de la solution JSF/EJB3/JPA, c&#8217;est à la fois un avantage et un inconvénient. Un avantage car il y a moins de problèmes à résoudre lors de l&#8217;implémentation de la solution. Un inconvénient car le choix de Seam peut être impactant par la suite.  Par exemple il serait difficile de passer de JSF à un autre framework web qui n&#8217;est pas pris en charge par Seam, Ce qui freine l&#8217;évolutivité à long terme.</p><h4>Code technique</h4><p>Pour voir l&#8217;apport de l&#8217;intégration de Seam sur le code technique, nous avons utilisés le plugin Metrics pour calculer quelques<br
/> métriques :</p><table
cellspacing="0" cellpadding="5" style="border: 1px solid black"><tr><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Critère</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>JSF/EJB3/JPA</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Seam</strong></td></tr><tr><td
style="border: 1px solid black"> <strong>Nombre de classes</strong></td><td
style="border: 1px solid black"> 20</td><td
style="border: 1px solid black"> 12</td></tr><tr><td
style="border: 1px solid black"> <strong>Nombre d&#8217;interfaces</strong></td><td
style="border: 1px solid black"> 7</td><td
style="border: 1px solid black"> 5</td></tr><tr><td
style="border: 1px solid black"> <strong>Nombre de méthodes</strong></td><td
style="border: 1px solid black"> 259</td><td
style="border: 1px solid black"> 138</td></tr><tr><td
style="border: 1px solid black"> <strong>Nombre de méthodes statiques</strong></td><td
style="border: 1px solid black"> 3</td><td
style="border: 1px solid black"> 1</td></tr><tr><td
style="border: 1px solid black"> <strong>Nombre d&#8217;attributs des méthodes</strong></td><td
style="border: 1px solid black"> 104</td><td
style="border: 1px solid black"> 82</td></tr><tr><td
style="border: 1px solid black"> <strong>Nombre de fichiers XML</strong></td><td
style="border: 1px solid black"> 5</td><td
style="border: 1px solid black"> 7</td></tr><tr><td
style="border: 1px solid black"> <strong>Nombre de lignes XML</strong></td><td
style="border: 1px solid black"> 177</td><td
style="border: 1px solid black"> 246</td></tr><tr><td
style="border: 1px solid black"> <strong>Nombre total de lignes de code</strong></td><td
style="border: 1px solid black"> 1605</td><td
style="border: 1px solid black"> 1080</td></tr></table><p>Nous avons constaté que l&#8217;intégration de Seam a permis de réduire considérablement la quantité du code technique. Comme il n&#8217;y a pas de distinction entre un composant backing bean et un composant Seam. Une page JSF peut donc invoquer directement un composant Seam sans passer par un backing bean ce qui permet de supprimer le code technique des backing beans.</p><p>Seam fournit aussi des annotations pour  JSF, le cycle de vie des composants, les exceptions, l&#8217;asynchronicité, le databinding, l&#8217;intégration avec plusieurs apis du monde JEE etc. Ces annotations permettent de produire un code élégant et très compact. Beaucoup prétendent que l&#8217;utilisation de Seam ne nécessite pas de configuration XML ce qui est faux, l&#8217;intégration des briques et des apis tierces avec Seam nécessitent leurs propres configurations.</p><p>Seam est un framework très productif qui permet de réduire considérablement la quantité du code technique nécessaire pour développer une application web mais les dépendances introduites par Seam rend le code technique difficile à maintenir et difficilement réutilisable sans Seam.</p><h4>Délai et facilité de mise en œuvre</h4><p>Cette comparaison va nous permettre de comparer les deux prototypes au niveau de la mise en œuvre :</p><table
cellspacing="0" cellpadding="5" style="border: 1px solid black"><tr><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Critère</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>JSF/EJB3/JPA</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Seam</strong></td></tr><tr><td
style="border: 1px solid black"> <strong>Durée totale du projet en <em>jours/homme</em></strong></td><td
style="border: 1px solid black"> 21</td><td
style="border: 1px solid black"> 15</td></tr><tr><td
style="border: 1px solid black"> <strong>Préparation du projet</strong></td><td
style="border: 1px solid black"> 4</td><td
style="border: 1px solid black"> 1</td></tr><tr><td
style="border: 1px solid black"> <strong>Configuration</strong></td><td
style="border: 1px solid black"> 5</td><td
style="border: 1px solid black"> 3</td></tr><tr><td
style="border: 1px solid black"> <strong>Mise en œuvre</strong></td><td
style="border: 1px solid black"> 4</td><td
style="border: 1px solid black"> 2</td></tr></table><p><em>Notation : Très Facile (1), Facile (2), Moyen (3), Difficile (4), Très difficile(5)</em></p><p>La préparation du projet Seam est très simple car nous avons utilisés l&#8217;outil seam-gen pour générer la structure du projet avec des exemples de code fonctionnel. Avec Seam, la configuration est fournie dans le projet générée avec seam-gen ce qui n&#8217;est pas le cas dans le projet EJB3-JSF. La cohabitation des différentes briques JEE est prise en charge par Seam. Les backing beans n&#8217;existent plus, les pages JSF invoquent directement les composants Seam. Sans Seam, il faut coder tout les backing beans et les mapper avec les pages JSF. C&#8217;est un cout de développement de plus pour les développeurs. Néanmoins, il ne faut pas oublier que Seam introduit ses propres dépendances dans votre code ce qui le rend moins évolutif et difficilement réutilisable dans d&#8217;autres projets qui n&#8217;utilisent pas Seam.</p><h4>Solution</h4><p>Pour comparer les deux solutions développées, nous allons nous baser sur des critères spécifiques aux frameworks de présentation et des critères généraux :</p><p><strong>La solution JSF/EJB3/JPA</strong></p><table
cellspacing="0" cellpadding="5" style="border: 1px solid black"><tr><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Fonctionnalité</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Oui/Non +/-</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Description</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Commentaires</strong></td></tr><tr><td
colspan="4" style="border: 1px solid black"> <strong>Critères spécifiques aux frameworks de présentation</strong></td></tr><tr><td
style="border: 1px solid black"> <strong>Validation des données</strong></td><td
style="border: 1px solid black"> Oui</td><td
style="border: 1px solid black"> JSF Validator</td><td
style="border: 1px solid black"> Solution éprouvée</td></tr><tr><td
style="border: 1px solid black"> <strong>Toolbox interface graphique</strong></td><td
style="border: 1px solid black"> Oui</td><td
style="border: 1px solid black"> Taglibs JSF</td><td
style="border: 1px solid black"> Solution éprouvée</td></tr><tr><td
style="border: 1px solid black"> <strong>Multi-langue</strong></td><td
style="border: 1px solid black"> Oui</td><td
style="border: 1px solid black"> Support i18n standard</td><td
style="border: 1px solid black"> Solution éprouvée</td></tr><tr><td
style="border: 1px solid black"> <strong>Implémentation MVC</strong></td><td
style="border: 1px solid black"> Oui</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Solution éprouvée</td></tr><tr><td
style="border: 1px solid black"> <strong>Modèle événementiel</strong></td><td
style="border: 1px solid black"> Non</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"></td></tr><tr><td
colspan="4" style="border: 1px solid black"> <strong>Critères généraux</strong></td></tr><tr><td
style="border: 1px solid black"> <strong>Maturité</strong></td><td
style="border: 1px solid black"> +</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Standards JEE5.0</td></tr><tr><td
style="border: 1px solid black"> <strong>Evolutivité</strong></td><td
style="border: 1px solid black"> +</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Architecture ouverte et flexible</td></tr><tr><td
style="border: 1px solid black"> <strong>Complexité de mise en œuvre</strong></td><td
style="border: 1px solid black"> &#8211;</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Assez complexe à mettre en œuvre</td></tr><tr><td
style="border: 1px solid black"> <strong>Cout de développement</strong></td><td
style="border: 1px solid black"> -&nbsp;-</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Couteux en temps de développement</td></tr><tr><td
style="border: 1px solid black"> <strong>Cout de maintenance</strong></td><td
style="border: 1px solid black"> -&nbsp;-</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Couteux en maintenance</td></tr></table><p><strong>La solution Seam</strong></p><table
cellspacing="0" cellpadding="5" style="border: 1px solid black"><tr><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Fonctionnalité</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Oui/Non +/-</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Description</strong></td><td
bgcolor="#663366" style="color: #ffffff; border: 1px solid black"><strong>Commentaires</strong></td></tr><tr><td
colspan="4" style="border: 1px solid black"> <strong>Critères spécifiques aux frameworks de présentation</strong></td></tr><tr><td
style="border: 1px solid black"> <strong>Validation des données</strong></td><td
style="border: 1px solid black"> Oui</td><td
style="border: 1px solid black"> Hibernate Validator</td><td
style="border: 1px solid black"> Solution éprouvée</td></tr><tr><td
style="border: 1px solid black"> <strong>Toolbox interface graphique</strong></td><td
style="border: 1px solid black"> Oui</td><td
style="border: 1px solid black"> Taglibs JSF et librairies Seam</td><td
style="border: 1px solid black"> Solution éprouvée</td></tr><tr><td
style="border: 1px solid black"> <strong>Multi-langue</strong></td><td
style="border: 1px solid black"> Oui</td><td
style="border: 1px solid black"> Support i18n standard</td><td
style="border: 1px solid black"> Solution éprouvée</td></tr><tr><td
style="border: 1px solid black"> <strong>Implémentation MVC</strong></td><td
style="border: 1px solid black"> Oui</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Solution éprouvée</td></tr><tr><td
style="border: 1px solid black"> <strong>Modèle événementiel</strong></td><td
style="border: 1px solid black"> Non</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"></td></tr><tr><td
colspan="4" style="border: 1px solid black"> <strong>Critères généraux</strong></td></tr><tr><td
style="border: 1px solid black"> <strong>Maturité</strong></td><td
style="border: 1px solid black"> -&nbsp;-</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Forums légers</td></tr><tr><td
style="border: 1px solid black"> <strong>Evolutivité</strong></td><td
style="border: 1px solid black"> -&nbsp;-</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Très dépendant de l&#8217;évolution du framework</td></tr><tr><td
style="border: 1px solid black"> <strong>Complexité de mise en œuvre</strong></td><td
style="border: 1px solid black"> +</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Assez facile à mettre en œuvre</td></tr><tr><td
style="border: 1px solid black"> <strong>Cout de développement</strong></td><td
style="border: 1px solid black"> +&nbsp;+</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Framework très productif</td></tr><tr><td
style="border: 1px solid black"> <strong>Cout de maintenance</strong></td><td
style="border: 1px solid black"> &#8211;</td><td
style="border: 1px solid black"></td><td
style="border: 1px solid black"> Assez couteux en maintenance</td></tr></table><h3><a
name="Conclusion"></a>Conclusion</h3><p>Seam permet d&#8217;effondrer les couches artificielles entre la couche présentation et la couche métier. Il permet ainsi de rapprocher les composants métiers de la couche web.</p><p>Dans la solution JSF/EJB3/JPA, il est nécessaire d&#8217;utiliser des backing beans JSF pour lier la couche présentation à la couche métier. En Seam il n&#8217;y a plus de couches d&#8217;intégration, mais il faut voir les choses autrement car Seam s&#8217;appuie sur une architecture 2 tiers. Lorsque l&#8217;on a plusieurs niveaux, il est préférable de les séparer en plusieurs couches pour avoir une meilleure visibilité du code et une séparation des responsabilités. Un autre problème réside dans le fait que Seam introduit une forte dépendance entre les différentes couches de l&#8217;application.</p><p>Seam a apporté une vraie valeur ajoutée à notre projet JSF/EJB3/JPA et nous a permis de gagner en productivité. Toutefois, le modèle d&#8217;architecture imposé par Seam et les dépendances techniques introduites dans nos briques nous laissent à réfléchir, mais il reste une solution très envisageable pour développer des applications entreprises.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/03/seam-repenser-larchitecture-des-applications-web/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/12/29/revue-de-presse-xebia-89/</link> <comments>http://blog.xebia.fr/2008/12/29/revue-de-presse-xebia-89/#comments</comments> <pubDate>Mon, 29 Dec 2008 17:28:02 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[AppFuse]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[JSF]]></category> <category><![CDATA[QA]]></category> <category><![CDATA[Seam]]></category> <category><![CDATA[Sonar]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Tapestry]]></category> <category><![CDATA[Web Beans]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1194</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposé par Xebia. Le coin de la technique Sonar en version 1.5 Version finale de Tapestry 5 Première implémentation de la JSR 299 : Web Beans RI 1.0.0.ALPHA1 Evènements de notre communauté en France et à l&#8217;étranger JavaLobby fait une restrospective des articles les plus lus en [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /></p><p><em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposé par Xebia.</em></p><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/12/29/revue-de-presse-xebia-89/#Sonarenversion">Sonar en version 1.5</a></li><li><a
href="http://blog.xebia.fr/2008/12/29/revue-de-presse-xebia-89/#VersionfinaledeTapestry">Version finale de Tapestry 5</a></li><li><a
href="http://blog.xebia.fr/2008/12/29/revue-de-presse-xebia-89/#PremireimplmentationdelaJSRWeb">Première implémentation de la JSR 299 : Web Beans RI 1.0.0.ALPHA1</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/12/29/revue-de-presse-xebia-89/#JavaLobbyfaitunerestrospective">JavaLobby fait une restrospective des articles les plus lus en 2008</a></li></ul><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Sonarenversion"></a>Sonar en version 1.5</h4><p>SonarSource (spin off de la société Hortis dédiée au développement et au support de Sonar) a annoncé la sortie de la nouvelle version de Sonar.<br
/> Comme déjà présenté plus <a
title="en dtail sur ce blog" href="http://blog.xebia.fr/2008/10/29/controles-de-qualite-avec-sonar/">en détail sur ce blog</a>, Sonar est un outil open source qui collecte, consolide et présente les données Qualité d&#8217;un projet.<br
/> Dans les nouvelles fonctionnalités, il est à noter une volonté d&#8217;ouverture de l&#8217;API :</p><ul><li>Récupération des mesures à partir de services REST.</li><li>Possibilité d&#8217;écrire ses propres extensions via des plugins de collecte <em>(voir le tutorial</em> <a
title="ici" href="http://docs.codehaus.org/display/SONAR/Plugin+tutorial"><em>ici</em></a>).</li></ul><p>Des présentations graphiques des métriques et de l&#8217;évolution dans le temps ont été ajoutés :</p><ul><li>Suivi des règles sous forme de radar.</li><li>Couverture de code présenté en nuages de classe.</li><li>Amélioration de l&#8217;affichage des graphiques d&#8217;évolution du respects des règles <em>(Time machine)</em>.</li></ul><p>L&#8217;intégration avec les outils open source utilisés lors des collectes est aussi améliorée :</p><ul><li>Ajout des règles Findbugs portant à 600 le nombre de règles de codes contrôlables <em>(de la simple règle de nommage à l&#8217;anti-pattern)</em>.</li><li>Mise à jour des versions des plugins PMD et Clover.</li></ul><p>La release s&#8217;accompagne aussi de son lot de corrections de bugs.<br
/> Pour plus de détails, voir la <a
title="release note complte" href="http://sonar.codehaus.org/downloads/#1.5">release note complète</a>.</p><p>Sonar, avec cette nouvelle version, se positionne encore plus comme un incontournable dans la présentation de données liées à la qualité, loin devant le dashboard Maven.<br
/> De plus, la roadmap présentée <a
title="sur le site de Sonar" href="http://sonar.codehaus.org/roadmap/">sur le site de Sonar</a> propose des fonctionnalités intéressantes comme le regroupement de projets, le positionnement d&#8217;alerte sur indicateurs ou encore l&#8217;association de règles différentes selon les projets &#8230;</p><h4><a
name="VersionfinaledeTapestry"></a>Version finale de Tapestry 5</h4><p>Comme nous l&#8217;a fait remarquer un de nos lecteurs, <a
title="François Armand" href="http://fanf42.blogspot.com/">François Armand</a>, <a
title="Tapestry 50 est actuellement disponible en version finale" href="http://www.theserverside.com/news/thread.tss?thread_id=52462">Tapestry 5.0 est actuellement disponible en version finale</a>.</p><p>Tapestry 5 a nécessité près de 3 ans de développement afin d&#8217;avoir les améliorations suivantes (par rapport à la version 4) :</p><ul><li>Amélioration du modèle de programmation de Tapestry afin de pouvoir développer des composants &laquo;&nbsp;Tapestry&nbsp;&raquo; sous forme de classe POJO</li><li>Moins de configuration par XML, et plus de conventions de nommage (<a
title="principe de CoC Convention over Configuration" href="http://en.wikipedia.org/wiki/Convention_over_Configuration">principe de CoC, Convention over Configuration</a>), utilisation des nouveautés du langage Java 5 (annotation)</li><li>Amélioration de la productivité des développements avec la recharge à chaud des classes Java en cours de développement.</li></ul><p>Le rechargement à chaud de classe permet de ne plus avoir un cycle de développement suivant :</p><ul><li>Modification.</li><li>Compilation de l&#8217;application.</li><li>Packaging de l&#8217;application.</li><li>Déploiement de l&#8217;application.</li><li>Démarrage de l&#8217;application.</li><li>Test de l&#8217;application.</li></ul><p>Le cycle de développement suivant permet d&#8217;être plus productif car beaucoup plus court que le précédent :</p><ul><li>Modification d&#8217;une classe.</li><li>Compilation de la classe.</li><li>Rechargement de la classe dans le <em>Classloader</em> de l&#8217;application sans le redemarrage de l&#8217;application.</li><li>Test de l&#8217;application.</li></ul><p>Pour plus d&#8217;informations sur l&#8217;intérêt d&#8217;un cycle de développement allégé, je vous invite à découvrir ou redécouvrir l&#8217;article à propos de <a
title="JavaRebel" href="http://blog.xebia.fr/2008/11/14/javarebel/">JavaRebel</a>.</p><p>Je vous propose aussi à lire le <a
title="commentaire de Franois sur notre blog" href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#comment-9698">commentaire de François sur notre blog</a>, qui fait un tour d&#8217;horizon et un retour d&#8217;expérience sur Tapestry. Encore une fois, merci François.</p><p>Matt Raible (Raible Design) avec l&#8217;aide de Serge Eby, ont mis à jour <a
title="AppFuse" href="http://appfuse.org/display/APF/Home">AppFuse</a> afin d&#8217;intégrer Tapestry 5. Ils notent d&#8217;ailleurs ce qu&#8217;ils apprécient dans Tapestry 5 : la configuration, qui est minimale, ainsi que les URLs claires. Pour plus d&#8217;informations sur AppFuse, voici une présentation du plugin : <a
title="AppFuse par lexemple" href="http://blog.xebia.fr/2008/09/18/appfuse-par-lexemple/">AppFuse par l&#8217;exemple</a>.</p><h4><a
name="PremireimplmentationdelaJSRWeb"></a>Première implémentation de la JSR 299 : Web Beans RI 1.0.0.ALPHA1</h4><p>A plusieurs reprises dans cette revue de presse, nous avons parlé de la spécification JSR 299, baptisée WebBeans :</p><ul><li><a
title="JSR299  Web Beans disponible en Public Review Draft" href="http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia-82/#JSRWebBeansdisponibleenPublicR">JSR-299 : Web Beans disponible en Public Review Draft</a>.</li><li><a
title="Seam 3  les futures orientations de Seam" href="http://blog.xebia.fr/2008/11/24/revue-de-presse-xebia-84/#SeamlesfuturesorientationsdeSe">Seam 3 : les futures orientations de Seam</a>.</li></ul><p>Sur la <a
title="page consacrée à WebBeans" href="http://seamframework.org/WebBeans">page consacrée à WebBeans</a> sur le site de <a
title="Seam Framework" href="http://seamframework.org">Seam Framework</a>, une release de WebBeans est maintenant disponible : <a
title="Web Beans 1.0.0.ALPHA1 released!" href="http://in.relation.to/Bloggers/WebBeans100ALPHA1Released">Web Beans 1.0.0.ALPHA1 released!</a>.</p><p>Pour être plus précis sur l&#8217;avenir conjoint de Seam et WebBeans : Seam ne va pas devenir WebBeans. Il y aura un noyau WebBeans, et Seam utilisera ce noyau.</p><p>Le noyau WebBeans prend en charge le contexte de gestion de composants &laquo;&nbsp;WebBeans&nbsp;&raquo; ainsi que les mécanismes d&#8217;injection de dépendance.</p><p>Ainsi Seam embarquera ces propres fonctionnalités :</p><ul><li>Seam Security.</li><li>Rendu PDF / mail.</li><li>Intégration de moteur de workflow <em>(JBPM)</em>.</li><li>etc &#8230;</li></ul><p>Cette release est une première étape importante afin d&#8217;achever cette spécification JSR 299 avec une implémentation et sa documentation.<br
/> Cette première release vous permettra peut être d&#8217;avoir les idées plus claires sur cette spécification.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="JavaLobbyfaitunerestrospective"></a>JavaLobby fait une restrospective des articles les plus lus en 2008</h4><p>JavaLobby fait le bilan de l&#8217;année 2008 en nous montrant <a
title="les 10 articles les plus lus ces 12 derniers mois" href="http://java.dzone.com/articles/javalobbys-top-10-articles-200">les 10 articles les plus lus ces 12 derniers mois</a>. En tête, l&#8217;interview de John de Goes président de <a
title="NBRAIN" href="http://www.n-brain.net/">N-BRAIN</a> qui avoue que les produits open source deviennent de redoutables concurrents et annonce le passage en open source de leur plateforme UNA.<br
/> Rick Hightower dont l&#8217;un des articles fait partie du top 10 nous fait remarquer dans un commentaire la répartition des résultats en fonction des frameworks.<br
/> Voici le résultat :</p><ul><li>deux articles sur JSF dans le top 5 montrent que JSF a toujours le vent en poupe. L&#8217;un de ces articles parle d&#8217;ailleurs de <a
title="linterfaage JSFFlex" href="http://java.dzone.com/articles/using-jsf-and-flex-components-?mz=3006-jboss">l&#8217;interfaçage JSF/Flex</a>.</li><li>deux articles sur JPA/Hibernate</li><li>un article sur Spring.</li></ul><p>Rick Hightower nous précise aussi que les résultats ne prennent pas en compte l&#8217;âge des articles. En effet la majorité de ces articles a été publiée avant le mois de Mai.<br
/> Globalement, il est intéressant de voir que les frameworks tels JSF et JPA sont toujours aussi populaires et qu&#8217;ils intéressent toujours autant les lecteurs.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/12/29/revue-de-presse-xebia-89/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/</link> <comments>http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#comments</comments> <pubDate>Mon, 22 Dec 2008 18:34:27 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[Alchemy]]></category> <category><![CDATA[BlazeDS]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Native Client]]></category> <category><![CDATA[OpenXava]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Spring]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1183</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposé par Xebia. Agilité Les bases de Scrum, en 10 minutes, avec le sourire. RIA Native Client de Google et Alchemy d&#8217;Adobe Spring BlazeDS Integration 1.0.0.M1 Choisir sa solution RIA Le coin de la technique OpenXava 3.1 est disponible Java Persistence API 2.0 Public Draft Agilité Les [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /></p><p><em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposé par Xebia.</em></p><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#LesbasesdeScrumenminutesavecle">Les bases de Scrum, en 10 minutes, avec le sourire.</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#NativeClientdeGoogleetAlchemyd">Native Client de Google et Alchemy d&#8217;Adobe</a></li><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#SpringBlazeDSIntegrationM">Spring BlazeDS Integration 1.0.0.M1</a></li><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#ChoisirsasolutionRIA">Choisir sa solution RIA</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#OpenXavaestdisponible">OpenXava 3.1 est disponible</a></li><li><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/#JavaPersistenceAPIPublicDraft">Java Persistence API 2.0 Public Draft</a></li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="LesbasesdeScrumenminutesavecle"></a>Les bases de Scrum, en 10 minutes, avec le sourire.</h4><p>En 2009, je vais tenter de comprendre ce que Xebia raconte dans la partie Agilité de sa revue de presse. Si vous faites cette bonne résolution, alors la vidéo suivante est pour vous ! Hamid Shojaee (Axosoft) résume en 8 minutes les principaux concepts de Scrum.</p><p><a
href="http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/"><em>Cliquer ici pour voir la vidéo.</em></a></p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="NativeClientdeGoogleetAlchemyd"></a>Native Client de Google et Alchemy d&#8217;Adobe</h4><p><a
title="Google annonce la sortie de Native Client" href="http://google-code-updates.blogspot.com/2008/12/native-client-technology-for-running.html">Google annonce la sortie de Native Client</a>, une technologie permettant d&#8217;exécuter du code natif directement dans le navigateur. Le but de Native Client est d&#8217;exploiter le processeur et la carte graphique du poste client pour pouvoir mettre en place des applications web plus performantes. Google rassure en disant que cette exploitation ne remettra en cause ni la neutralité du navigateur, ni la sécurité, ni la portabilité des applications sur les différents systèmes d&#8217;exploitation.</p><p>Il est possible de <a
title="tester une version expérimentale de Native Client" href="http://code.google.com/p/nativeclient/?tbbrand=GZEZ&amp;utm_campaign=en&amp;utm_source=en-et-osrcblog&amp;utm_medium=et">tester une version expérimentale de Native Client</a>. À noter pour le moment que cette version n&#8217;est compatible qu&#8217;avec les navigateurs suivants : Firefox, Safari, Opera et Google Chrome; et sur les systèmes d&#8217;exploitations suivants : Windows, Mac et Linux qui ont un processeur x86.</p><p>Coïncidence ou pas, Adobe a présenté, lors de ses <a
title="journées Adobe MAX" href="http://max.adobe.com/">journées Adobe MAX</a>, <a
title="Alchemy" href="http://labs.adobe.com/wiki/index.php/Alchemy">Alchemy</a> qui offre les mêmes fonctionnalités que Native Client.</p><p>Alchemy est un projet d&#8217;Adobe Labs permettant d&#8217;intégrer du code C ou C++ dans une machine virtuelle ActionScript. Le code C/C++ est d&#8217;abord compilé en ActionScript3 dans un swc ou swf. Il peut ensuite fonctionner sur Flash Player 10 ou AIR 1.5, sécurisé par les protections Flash Player.</p><p>Quoi qu&#8217;il en soit, le but de ces technologies reste le même : faire en sorte que les applications web deviennent plus puissantes. Cela ne devrait donc pas concerner l&#8217;informatique de gestion. Mais pour les applications qui demandent beaucoup de ressources, telles que les jeux en ligne par exemple, cela pourrait changer la donne.</p><p>Une question reste cependant en suspend. Pourquoi Google a t&#8217;il décidé de sortir cette technologie ? Java Applets, ActiveX, Flash, Flex, Air, Silverlight, JavaFX, ce ne sont pas les technologies concurrentes qui manquent. Native Client ressemble d&#8217;ailleurs plus à une nouvelle version d&#8217;ActiveX cross-browser qu&#8217;à une nouvelle technologie RIA au sens Flex ou SilverLight. <a
title="Certains pensent" href=" http://www.theregister.co.uk/2008/12/15/dziubba_nativ_client/">Certains pensent</a> que cette technologie est le fruit d&#8217;un travail indépendant ne répondant à aucune vision technique cohérente à long terme. <a
title="D'autres" href="http://gigaom.com/2008/12/13/native-client-an-os-in-your-browser/">D&#8217;autres</a>, au contraire, pensent qu&#8217;il s&#8217;agit d&#8217;un pas de plus vers un système d&#8217;exploitation <em>made in</em> Google. Le débat est ouvert, difficile de s&#8217;avancer pour le moment &#8230; Une fois de plus, Google est arrivé à faire le buzz autour de ses technologies.</p><p>Pour ceux qui voudraient tester Quake made in Native Client, <a
title="voici le lien" href="http://nativeclient.googlecode.com/svn/trunk/nacl/googleclient/native_client/tests/quake/quake.html">voici le lien</a> <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p><h4><a
name="SpringBlazeDSIntegrationM"></a>Spring BlazeDS Integration 1.0.0.M1</h4><p>Nous en parlions <a
title="la semaine dernière" href="http://blog.xebia.fr/2008/12/15/revue-de-presse-xebia-87/#CooprationentreSpringSourceetA">la semaine dernière</a>, c&#8217;est maintenant <a
title="officiel" href=" http://www.springsource.org/node/904">officiel</a>, <a
title="le premier milestone de Spring BlaseDS Integration est maintenant disponible" href="http://blog.springsource.com/2008/12/17/using-spring-blazeds-integration-m1/">le premier milestone de Spring BlaseDS Integration est maintenant disponible</a>.<br
/> Alors à quoi ressemble cette intégration ? Elle vous permettra de mixer les configurations BlaseDS et Spring à votre guise. L&#8217;idée est de laisser les configurations statiques d&#8217;infrastructure dans le fichier de configuration BlaseDS et d&#8217;externaliser le reste dans les fichiers de configuration Spring. Cette solution devrait donc plaire à tout le monde : les utilisateurs de BlaseDS ne devraient pas être perdus, le mécanisme général restant inchangé ; les utilisateurs Spring s&#8217;y retrouveront également  avec une configuration standard Spring MVC et Spring Remoting.</p><p>Voici quelques détails de cette configuration :</p><ul><li>Seule la configuration de la <code>DispatcherServlet</code> de Spring MVC est nécessaire</li><li>L&#8217;exposition du <code>MessageBroker</code> de BlazeDS  passe par :<ul><li>la déclaration d&#8217;un <em>FactoryBean</em> dans le fichier de configuration XML de Spring MVC : <code>MessageBrokerFactoryBean</code></li><li>le routage des requêtes de la <code>DispatcherServlet</code> vers le <code>MessageBroker</code> via la configuration d&#8217;un <code>HandlerMapping</code></li></ul></li><li>À la manière de <a
title="Spring Remoting" href=" http://static.springframework.org/spring/docs/2.5.x/reference/remoting.html">Spring Remoting</a>, il ne vous reste plus qu&#8217;à exposer vos services Spring au <code>MessageBroker</code> avec la configuration d&#8217;un nouveau type <em>d&#8217;Exporter</em> : le <code>FlexRemotingServiceExporter</code></li></ul><p>Même si nous n&#8217;avons pas encore testé cette solution, cette intégration aussi simple qu&#8217;élégante rapproche sans conteste les développeurs Java au développement d&#8217;applications Flex.</p><h4><a
name="ChoisirsasolutionRIA"></a>Choisir sa solution RIA</h4><p>Les solutions RIA sont de plus en plus nombreuses et il devient difficile de trancher catégoriquement pour l&#8217;une ou l&#8217;autre lors du démarrage d&#8217;un projet. Très souvent, une librairie est choisie par sa côte de popularité alors qu&#8217;elle ne correspond pas forcément au besoin client.<br
/> Au final, l&#8217;énergie dépensée pour apprendre, utiliser et adapter ces widgets/actions/effets dans le projet se révèle très coûteuse en temps, en maintenance&#8230;</p><p>Robbie Cheng (développeur principal de <a
title="ZK Mobile pour Android" href="http://sourceforge.net/forum/forum.php?forum_id=815522">ZK Mobile pour Android</a>) éclaircit nos esprits avec l&#8217;article <a
title="How to Choose an RIA Solution" href="http://java.sys-con.com/node/781133">How to Choose an RIA Solution</a> sur Sys-Con avec un Top 10 des critères <em>architecte</em> et <em>manager</em> à prendre en compte lors du choix de sa solution.</p><p>Sans surprise, côté architecte, on se retrouve avec :</p><ul><li>de nombreux widgets, simples, des fonctionnalités comme le lazy loading ou le drag &amp; drop, des pop-up&#8230;,</li><li>facilité de développement,</li><li>parfaite intégration dans l&#8217;entreprise,</li><li>sécurité et scalabilité,</li><li>et bien évidemment multiplateforme.</li></ul><p>Côté manager, les besoins ne sont pas les mêmes :</p><ul><li>solution standard ? utilisée par d&#8217;autres projets ? Open Source ?,</li><li>bien évidemment le coût de formation, entre une solution JavaScript et Java il n&#8217;y a pas qu&#8217;un pas <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ,</li><li>outils associés à la solution (plugins, éditeur, WYSIWYG&#8230;),</li><li>dépendante d&#8217;autres librairies / d&#8217;autres plugins ?,</li><li>un background solide i.e. qui est derrière la solution ! Adobe, Google, un développeur dans son garage ? Mais aussi un support de qualité, des corrections de bugs et des mises à jour régulières.</li></ul><p>Selon tous ces aspects, l&#8217;auteur nous donne 4 catégories de solutions RIA / frameworks :</p><ul><li>Snippet : amélioration légère avec quelques effets, des pages plus rapides à l&#8217;affichage, des nouvelles petites fonctions de ci de là&#8230; avec peu de changement au niveau de l&#8217;architecture ou du design. <a
title="Script.aculo.us " href="http://script.aculo.us/">Script.aculo.us </a> et <a
title="Prototype" href="http://www.prototypejs.org/">Prototype</a> sont de bons exemples,</li><li>Widget : vous avez dit Web 2.0 ? C&#8217;est clairement ce que tout le monde a vu avec l&#8217;arrivée de librairies comme <a
title="YUI" href="http://developer.yahoo.com/yui/">YUI</a> ou <a
title="ExtJS" href="http://extjs.com/">ExtJS</a> : une nouvelle expérience utilisateur au niveau de l&#8217;interface graphique avec des composants travaillés, très beaux, du drag &amp; drop, de l&#8217;animation&#8230; ces frameworks s&#8217;appuient donc sur une libraire de widgets solides,</li><li>Client : réécriture de l&#8217;application côté client dans une nouvelle technologie, nouvelle interface utilisateur, amélioration de la productivité mais un gros travail de refonte côté client. Nous parlons bien sûr des <a
title="GWT" href="http://code.google.com/intl/fr/webtoolkit/">GWT</a>, <a
title="Flex" href="http://www.adobe.com/fr/products/flex/">Flex</a> et Cie,</li><li>Full : la solution complète, riche, MVC, patterns de développement, à la fois une nouvelle expérience utilisateur mais aussi une réelle valeur ajoutée pour l&#8217;entreprise&#8230; mais nécessite des plateformes/technologies spécifiques côté client et serveur. On citera les <a
title="ZK" href="http://www.zkoss.org/">ZK</a> ou <a
title="Wicket" href="http://wicket.apache.org/">Wicket</a>.</li></ul><p>La conclusion sans surprise à la question (alors, laquelle ???) est bien sûr : <em>ça dépend&#8230;</em><br
/> En effet :</p><ul><li>tous les projets n&#8217;ont pas la même cible d&#8217;utilisateur,</li><li>et les technologies passent du Java au XML en passant par du JavaScript, autrement dit les compétences ne sont clairement pas les mêmes d&#8217;un framework à un autre.</li></ul><p>Alors entre <a
title="jQuery" href="http://jquery.com/">jQuery</a>, <a
title="ExtJS" href="http://extjs.com/">ExtJS</a>, <a
title="GWT" href="http://code.google.com/intl/fr/webtoolkit/">GWT</a> et <a
title="Flex" href="http://www.adobe.com/fr/products/flex/">Flex</a>, ce sera à vous et vous seul de choisir !</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="OpenXavaestdisponible"></a>OpenXava 3.1 est disponible</h4><p><a
title="OpenXava" href="http://www.gestion400.com/web/guest/home">OpenXava</a> est un ensemble d&#8217;outils et de composants destinés à simplifier le développement d&#8217;applications Web Java.</p><p><a
title="OpenXava" href="http://www.gestion400.com/web/guest/home">OpenXava</a> permet de générer des formulaires <a
title="CRUD" href="http://fr.wikipedia.org/wiki/CRUD">CRUD</a> à partir des POJOs et des annotations JPA. Il vous propose également d&#8217;intégrer des fonctionnalités avancées : la génération des rapports PDF, exports Excel, formulaire de recherche, tri, impression&#8230; Avec <a
title="OX" href="http://www.gestion400.com/web/guest/home">OX</a>, vous pouvez aussi créer des applications sophistiquées avec une logique complexe et des IHM avancées.</p><p>La nouvelle version 3.1 apporte AJAX dans vos applications générées. Pour ceux qui utilisent déjà <a
title="OX" href="http://www.gestion400.com/web/guest/home">OX</a> le passage à la version 3.1 permet &laquo;&nbsp;d&#8217;ajaxifier&nbsp;&raquo; vos applications sans toucher une seule ligne de code.</p><p>Le projet est fourni sous licence LGPL.</p><p>Plusieurs <a
title="démos" href="http://www.gestion400.com/web/guest/demos">démos</a> sont disponibles.</p><h4><a
name="JavaPersistenceAPIPublicDraft"></a>Java Persistence API 2.0 Public Draft</h4><p>La spécification <a
title="JSR 317: JavaTM Persistence 2.0" href="http://jcp.org/en/jsr/detail?id=317">JSR 317: JavaTM Persistence 2.0</a> est un public draft, comme l&#8217;annonce sur son blog la specification lead, Linda Demichiel (Sun Microsystems) : <a
title="Java Persistence 2.0 Public Draft" href="http://blogs.sun.com/ldemichiel/entry/java_persistence_2_0_public">Java Persistence 2.0 Public Draft</a>.</p><p>Une entrée précédente de la revue de de presse de Xebia : <a
title="JPA 2.0, la nouvelle version d'une API bien portante" href="http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#JPAlanouvelleversionduneAPIbie">JPA 2.0, la nouvelle version d&#8217;une API bien portante</a>, annonçait l&#8217;ajout de l&#8217;API Criteria à la version 2 de JPA.</p><p>Linda Demichiel décrit sur son blog le fonctionnement possible de cette API Criteria : <a
title="Java Persistence 2.0 Public Draft: Criteria API" href="http://blogs.sun.com/ldemichiel/entry/java_persistence_2_0_public1">Java Persistence 2.0 Public Draft: Criteria API</a>.</p><p>Celle ci permet de construire des requêtes SQL en Java de manière programmatique. Cette technique présente les intérêts suivant :</p><ul><li>Les requêtes dynamiques sont plus faciles à construire et leurs constructions peuvent dépendre de données évaluées à l&#8217;exécution</li><li>Les fonctions des IDE permettent d&#8217;assister le développeur comme par exemple le refactoring, la complétion</li></ul><p>Cependant les requêtes sont plus difficiles</p><ul><li>A optimiser</li><li>A maintenir (plus difficile à lire)</li></ul><p>Ces requêtes sont construites à partir d&#8217;un object QueryDefinition obtenu à partir d&#8217;un EntityManager :</p><pre class="brush: java; title: ; notranslate">
EntityManager em = ... ;
QueryBuilder queryBuilder = em.getQueryBuilder();
</pre><p>Exemple de création de requête sur l&#8217;entité Customer :</p><pre class="brush: java; title: ; notranslate">
DomainObject customer = queryBuilder.createQueryDefinition(Customer.class);
</pre><p>En manipulant l&#8217;objet JPA DomainObject, on peut charger, par jointure, la relation customer-&gt;orders-&gt;items:</p><pre class="brush: java; title: ; notranslate">
DomainObject item = customer.join(&quot;orders&quot;).join(&quot;items&quot;);
</pre><p>Voici un exemple complet :</p><pre class="brush: java; title: ; notranslate">
DomainObject customer = queryBuilder.createQueryDefinition(Customer.class);
DomainObject item = customer.join(&quot;orders&quot;).join(&quot;items&quot;);
customer.where(item.get(&quot;productType&quot;).equal(&quot;printer&quot;))
.select(customer.get(&quot;name&quot;));
</pre><p>Comme le fait remarquer Gavin King dans l&#8217;article <a
title="A typesafe criteria query API for JPA" href="http://in.relation.to/Bloggers/ATypesafeCriteriaQueryAPIForJPA">A typesafe criteria query API for JPA</a>, il est dommage de manipuler des chaînes de caractères afin d&#8217;obtenir un attribut d&#8217;une classe. On perd un des intérêts de l&#8217;API Criteria : le refactoring et la complétion fournis par les IDE.</p><p>Ainsi, en reprenant l&#8217;exemple complet, si l&#8217;on renomme l&#8217;attribut name de la classe customer en firstName (avec notre IDE préféré), notre IDE sera incapable de changer le requête précédente de customer.get(&laquo;&nbsp;name&nbsp;&raquo;) à customer.get(&laquo;&nbsp;firstName&nbsp;&raquo;).</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/12/22/revue-de-presse-xebia-88/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/07/21/revue-de-presse-xebia-66/</link> <comments>http://blog.xebia.fr/2008/07/21/revue-de-presse-xebia-66/#comments</comments> <pubDate>Mon, 21 Jul 2008 16:45:01 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[JVM]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Virtualisation]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=410</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Dur dur d&#8217;être un (Java)Rebel RIA Vidcast de Christophe Coenraets autour de Flex Le coin de la technique Failles de sécurité dans Spring MVC Premier résultat SpecJVM2008, et alors ? Envers : JBoss ajoute à JPA le versioning des données [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/07/21/revue-de-presse-xebia/#DurdurdtreunJavaRebel">Dur dur d&#8217;être un (Java)Rebel</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/07/21/revue-de-presse-xebia/#VidcastdeChristopheCoenraetsau">Vidcast de Christophe Coenraets autour de Flex</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/07/21/revue-de-presse-xebia/#FaillesdescuritdansSpringMVC">Failles de sécurité dans Spring MVC</a></li><li><a
href="http://blog.xebia.fr/2008/07/21/revue-de-presse-xebia/#PremierrsultatSpecJVMetalors">Premier résultat SpecJVM2008, et alors ?</a></li><li><a
href="http://blog.xebia.fr/2008/07/21/revue-de-presse-xebia/#EnversJBossajouteJPAleversioni">Envers : JBoss ajoute à JPA le versioning des données</a></li><li><a
href="http://blog.xebia.fr/2008/07/21/revue-de-presse-xebia/#JSRMoreNewIOAPIsfortheJavaPlat">JSR 203: More New I/O APIs for the Java Platform (&laquo;&nbsp;NIO.2&#8243;)</a></li><li><a
href="http://blog.xebia.fr/2008/07/21/revue-de-presse-xebia/#Lavenirdelavirtualisationetduc">L&#8217;avenir de la virtualisation et du cloud computing java selon Billy Newport</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="DurdurdtreunJavaRebel"></a>Dur dur d&#8217;être un (Java)Rebel</h4><p>S&#8217;il n&#8217;est pas simple de faire connaître un outil, il est encore plus compliqué de le monétiser. ZeroTurnaround nous en fait la démonstration avec JavaRebel. C&#8217;est la fête à la licence : après les dons aux <a
href=" http://www.zeroturnaround.com/blog/javarebel-offers-free-licenses-to-javablackbelt-brown-belts/" title="ceintures marrons de Java Black Belt" >ceintures marrons de Java Black Belt</a>, et aux membres de <a
href="http://www.zeroturnaround.com/blog/javarebel-for-open-source-development/" title="projets open-source" >projets open-source</a>, ZeroTurnaround offre cette fois ses licenses aux lecteurs de <a
href="http://www.zeroturnaround.com/news/get-a-free-javarebel-license/" title="DZone" >DZone</a> (digg-like pour développeurs). Quelle sera la prochaine étape ? La gratuité pour les usages non commerciaux ?</p><p>JavaRebel est <a
href="http://blog.xebia.fr/2008/05/02/java-agent-instrumentez-vos-classes/" title="agent java" >agent java</a> permettant de recharger à la volée des modifications effectuées sur classes. A l&#8217;utilisation, le principe reste le même que celui du hotswap proposé out-of-the-box par la JVM Sun, offrant un rechargement <a
href="http://www.zeroturnaround.com/javarebel/features/" title="plus complet" >plus complet</a>.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="VidcastdeChristopheCoenraetsau"></a>Vidcast de Christophe Coenraets autour de Flex</h4><p>A ceux qui ont raté <a
href="http://blog.xebia.fr/2008/07/09/soiree-mda-et-flex-au-paris-jug/" title="James Ward au Paris JUG" >James Ward au Paris JUG</a>, InfoQ offre une seconde chance avec <a
href="http://www.infoq.com/interviews/coenraets-flex-3-air-blazeds" title="l'interview de Christophe Coenraets" >l&#8217;interview de Christophe Coenraets</a>, lui aussi évangéliste Adobe, captée dans le cadre du QCon 2008 de Londres.<br
/> Dans cette vidéo, Christophe Coenraets aborde les points suivants :</p><ul><li>Les technologies RIA Abode : Flex 3, Air et BlazeDs</li><li>L&#8217;environnement de développement d&#8217;abode, FlexBuilder 3</li><li>La stratégie open-source d&#8217;Adobe</li><li>L&#8217;introduction d&#8217;un front-end Flex dans un SI existant</li><li>L&#8217;avenir des RIA à travers leur intégration aux moteurs de recherche et aux navigateurs internet</li></ul><p>Une bonne façon de se remettre rapidement à jour si vous avez raté les derniers développements de la percée d&#8217;Adobe sur le marché des clients riches.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="FaillesdescuritdansSpringMVC"></a>Failles de sécurité dans Spring MVC</h4><p>La nouvelle est assez rare pour que tout le monde s&#8217;en empare (<a
href="http://www.theserverside.com/news/thread.tss?thread_id=50076" title="TSS" >TSS</a>, <a
href=" http://searchsoftwarequality.techtarget.com/news/article/0,289142,sid92_gci1321417,00.html" title="techtarget" >techtarget</a>, <a
href=" http://www.net-security.org/secworld.php?id=6329" title="net-security.org" >net-security.org</a>, <a
href="http://www.xtremeopensource.org/index.php?option=com_content&#038;view=article&#038;id=6005:critical-security-issues-in-the-open-source-spring-framework&#038;catid=13:open-source-news&#038;Itemid=83" title="xtremeopensource.org" >xtremeopensource.org</a>, <a
href="http://www.linux-mag.com/id/6463/" title="linux mag" >linux mag</a>, &#8230;), <a
href=" http://www.ouncelabs.com/company/20080716-2008-ounce-labs-spring-framework-security-advisory.asp" title="Ounce Labs" >Ounce Labs</a> annonce la découverte de problèmes dans Spring MVC pouvant causer des failles de sécurité dans les applications utilisant ce framework, en voici les descriptions :</p><ol><li>Soumission de champs de formulaire non éditables. Si votre modèle contient plus de champs que votre formulaire HTML, il est possible d&#8217;envoyer une fausse requête contenant des données non éditables.</li><li>Injection Modèle/Vue. Ce problème arrive lorsque le rendering utilise un nom de vue provenant directement d&#8217;une requête. Si ces noms mappent certaines ressources protégées par le serveur d&#8217;applications, il est alors possible, dans certains cas, d&#8217;y accéder.</li></ol><p>Ces deux vulnérabilités sont connues depuis longtemps par Spring Source, qui vient de publier une <a
href="http://www.springsource.com/securityadvisory" title="Spring MVC vulnerability FAQ" >Spring MVC vulnerability FAQ</a> à ce sujet. Il ne s&#8217;agit pas de véritables bugs, mais plus d&#8217;un mauvais usage du framework. Cela ressemble plus à une opération publicitaire de Ounce Labs qu&#8217;à une véritable alerte ; ce <em>coup d&#8217;éclat</em> a tout de même le mérite de nous rappeler la difficulté des développements web et le dilemme permanent des frameworks web qui sont écartelés entre l&#8217;ajout de fonctionnalités et la sécurité. Les approches actuelles zéro-confs sont à ce titre bien dangereuses.</p><h4><a
name="PremierrsultatSpecJVMetalors"></a>Premier résultat SpecJVM2008, et alors ?</h4><p>David Dagastine annonce dans <a
href="http://blogs.sun.com/dagastine/entry/first_specjvm2008_result_published" title="First SPECjvm2008 Result Published!" >First SPECjvm2008 Result Published!</a> que Sun a publié le premier résultat de ce benchmark de JVM. Cependant, nous pouvons nous interroger sur le rôle qu&#8217;a aujourd&#8217;hui un tel benchmark dans le choix d&#8217;une JVM alors que les machines virtuelles d&#8217;IBM (J9), d&#8217;Oracle-BEA (Jrockit) et de Sun (Hotspot) qui ont aussi bonne presse sur ce sujet. Le critère de l&#8217;exploitabilité de la JVM, aujourd&#8217;hui très en vogue avec la médiatisation de <a
href="https://visualvm.dev.java.net/" title="VisualVM" >VisualVM</a> (Sun), ne semble pas plus pris en compte aujourd&#8217;hui alors que des écarts importants subsistent entre les éditeurs et qu&#8217;Oracle-BEA a de sérieux atouts différenciant avec son très mature <a
href="http://dev2dev.bea.com/jrockit/tools.html" title="JRockit Mission Control" >JRockit Mission Control</a>.</p><p>En fait, les JVM sont devenues des commodités et le critère de choix relève aujourd&#8217;hui plus de l&#8217;écosystème et particulièrement du serveur d&#8217;applications Java. Un utilisateur de Websphere devra utiliser J9 [1], un utilisateur de Weblogic aura le choix entre JRockit et Hotspot et les autres utilisateurs (Tomcat, JBoss, etc) se tournent le plus souvent vers le standard de facto : l&#8217;implémentation de Sun.</p><p>Nous noterons un point intéressant sur SpecJVM2008 : le benchmark se fait sans aucun tuning de la JVM. Cette règle illustre la tendance actuelle des éditeurs de JVM qui fournissent des machines virtuelles optimales en configuration par défaut grâce à des mécanismes de détection de la configuration de l&#8217;OS et d&#8217;optimisation automatique à l&#8217;exécution.</p><p>[1] sauf sur les plateformes sur lesquelles IBM n&#8217;a pas porté J9 et où il propose alors Hotspot (Solaris, HP UX)</p><h4><a
name="EnversJBossajouteJPAleversioni"></a>Envers : JBoss ajoute à JPA le versioning des données</h4><p>Trois mois après <a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#InnovationautourdeJPAJBossHibe" title="l'annonce d'une preview" >l&#8217;annonce d&#8217;une preview</a>, Adam Warski propose aujourd&#8217;hui la <a
href="http://www.theserverside.com/news/thread.tss?thread_id=50094" title="version 1.0 de JBoss Envers" >version 1.0 de JBoss Envers</a>, une extension à JPA pour versioner les données, un sujet fréquent dans l&#8217;informatique de gestion des contrats. L&#8217;occasion pour JBoss de réaffirmer sa place de leader de l&#8217;innovation autour de JPA.</p><p>Les points clefs de JBoss Envers :</p><ul><li>Versioning de propriétés simples (strings, integers, longs&#8230;) comme des composants <em>embedded</em> (eux même composés de propriétés simples)</li><li>Versioning de classes aux ids simples, composites ou _embedded_</li><li>Versioning des relations one-to-one et one-to-many</li><li>Listener de révision <code>@RevisionEntity</code> pour notamment ajouter des modifications spécifiques aux entités versionées</li><li>Historisation par numéro de version (<code>@RevisionNumber</code>) ou à date (<code>@RevisionTimestamp</code>)</li><li>Requête sur les données historiées avec un <code>VersionsReader</code></li><li>Envers repose sur l&#8217;<code>EntityManager</code> JPA plutôt que la <code>Session</code> Hibernate, on peut y voir un signe supplémentaire pour migrer des API propriétaires d&#8217;Hibernate vers celles standard de JPA.</li></ul><p>Exemple de classe versionnée avec Envers :</p><pre class="brush: java; title: ; notranslate">
@Entity
@RevisionEntity(MyRevisionListener.class)
public class Person {
    @Id
    @GeneratedValue
    Integer id;
    @Versioned
    String name;
    @Versioned
    String surname;
    @Versioned
    @ManyToOne
    Address address;
    @RevisionTimestamp
    long revisionTimestamp;
   ...
}
</pre><p>Pour plus d&#8217;informations sur ce sujet, nous aimons <a
href="http://www.martinfowler.com/ap2/timeNarrative.html" title="Patterns for things that change with time" >Patterns for things that change with time</a> de Martin Fowler.</p><h4><a
name="JSRMoreNewIOAPIsfortheJavaPlat"></a>JSR 203: More New I/O APIs for the Java Platform (&laquo;&nbsp;NIO.2&#8243;)</h4><p>Si NIO 1 mettait l&#8217;accent sur la <em>scalabilité</em>, <a
href="http://jcp.org/en/jsr/detail?id=203" title="JSR 203 - NIO 2" >JSR 203 &#8211; NIO 2</a> se focalisera sur l&#8217;utilisabilité des différents systèmes de fichiers comme Alan Bateman (Sun) et Carl Quinn (Google) l&#8217;ont expliqué à JavaOne dans <a
href="http://openjdk.java.net/projects/nio/presentations/TS-5686.pdf" title=""New I/O in JDK 7"" >&laquo;&nbsp;New I/O in JDK 7&#8243;</a>. Les points clefs de NIO 2 :</p><ul><li>Nouvelle API d&#8217;abstraction de système de fichier (<code>FileSystem</code>, <code>Path</code> / <code>FileRef</code> et <code>FileStore</code>) et notamment l&#8217;amélioration de la navigation dans les arborescences.</li><li>Unification des API <code>Channel</code> et <code>Socket</code> avec une abstraction système de fichier sous-jacent.</li><li>Amélioration des I/O asynchrones.</li><li>Correction de bugs qui <em>trainaient</em> de longue date des les API I/O</li></ul><p>Dans la continuité, Elliotte Rusty Harold détaille dans <a
href="http://today.java.net/pub/a/today/2008/07/03/jsr-203-new-file-apis.html" title="The Open Road: java.nio.file" >The Open Road: java.nio.file</a> le fonctionnement de la nouvelle abstraction du système de fichier.</p><p>Pour plus d&#8217;informations sur les nouveautés de Java 7 :</p><ul><li><a
href="http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/" title="Nagez avec les dauphins ! JDK 7 proposals overview" >Nagez avec les dauphins ! JDK 7 proposals overview</a></li><li><a
href="http://blog.xebia.fr/2008/02/27/jsr-294-les-superpackages/" title="JSR 294 - Les Superpackages" >JSR 294 &#8211; Les Superpackages</a></li><li><a
href="http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/" title="GC générationnels traditionnels (jdk6) vs. GC Garbage First (jdk7)" >GC générationnels traditionnels (jdk6) vs. GC Garbage First (jdk7)</a></li></ul><h4><a
name="Lavenirdelavirtualisationetduc"></a>L&#8217;avenir de la virtualisation et du cloud computing java selon Billy Newport</h4><p>Billy Newport, Websphere eXtreme Scale, explique dans une interview à <a
href="http://www.infoq.com/interviews/billynewport-virtualization" title="Floyd Marinescu, InfoQ" >Floyd Marinescu, InfoQ</a> sa vision de la virtualisation et du cloud computing en Java.</p><p>Nous retiendrons :</p><ul><li>Pour les applications Java, la virtualisation de la couche physique (processeur, mémoire, etc) tend vers la gestion de grappes de petits serveurs virtuels à ressources fixes (e.g. 4 ways, 2 Go de RAM, 160 Go de disque) plutôt que vers des serveurs de grande capacité à ressources variables : il est très difficile d&#8217;optimiser les performances de <em>gros serveurs</em> (e.g. 32+ cores/ways, 10+ Go de RAM, etc) et les programmes ont le plus grand mal à se réadapter (e.g. pool de threads, taille de cache) quand les ressources allouées changent</li><li>Des serveurs à plusieurs dizaines de cores arriveront plus vite que nous le pensons et les éditeurs de <a
href="http://www.infoq.com/news/2007/07/concurrency-java-se-7" title="JVM s'y préparent" >JVM s&#8217;y préparent</a>, mais les JVM et les APIs de concurrence ne sont aujourd&#8217;hui pas prêtes. Par exemple, les pattern multi-reader/mono-writer ne seront plus adaptés.</li><li>Les grilles de données n&#8217;ont pas besoin d&#8217;API spécifiques pour le moment : JPA et JMS suffisent aux besoins actuels. Par ailleurs, l&#8217;API <a
href="http://jcp.org/en/jsr/detail?id=107" title="JSR-107: JCache" >JSR-107: JCache</a> suscite des réticences de la part des grands éditeurs de grilles java et ne verra probablement jamais le jour.</li><li>La virtualisation des données se divise en deux grande familles :<ul><li>Network Attached Cache : le paradigme de programmation est le même qu&#8217;en l&#8217;absence de cache. Typiquement positionné en cache L2 d&#8217;un framework JPA, les données du cache sont rapatriées sur le serveur d&#8217;applications pour réaliser les traitements métiers, mais ce modèle atteint ses limites avec le coût de rapatriement des données.</li><li>eXtreme Transaction Processing Grid : le paradigme de de programmation change complètement ; le traitement métier, au lieu d&#8217;être réalisé sur le serveur d&#8217;applications, est envoyé sur tous les noeuds de la grille, seule la consolidation est effectuée sur le serveur d&#8217;applications. Cette architecture <em>scale</em> jusqu&#8217;à plusieurs milliers de noeuds sur la grille.</li></ul></li><li>Les SGBD, avec la co-localisation des données, ont atteint leur limite de <em>scalabilité</em>. IBM comme Oracle ou Microsoft investissent aujourd&#8217;hui dans les data grids pour lever cette limite (respectivement eXtreme Scale, Coherence et <a
href="http://www.infoq.com/news/2008/06/Velocity" title="Velocity" >Velocity</a>).</li></ul></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/07/21/revue-de-presse-xebia-66/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/</link> <comments>http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#comments</comments> <pubDate>Mon, 16 Jun 2008 16:15:50 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[AIR]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[S2AP]]></category> <category><![CDATA[Spring]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Agilité Le top 20 des livres sur l&#8217;Agilité RIA NASDAQ Market Replay : une success story pour Flex, AIR et Amazon S3 Le coin de la technique Spring Source Application Platform : l&#8217;heure de se faire une opinion ? JPA 2.0, la nouvelle version [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#LetopdeslivressurlAgilit">Le top 20 des livres sur l&#8217;Agilité</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#NASDAQMarketReplayunesuccessst">NASDAQ Market Replay : une success story pour Flex, AIR et Amazon S3</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#SpringSourceApplicationPlatfor">Spring Source Application Platform : l&#8217;heure de se faire une opinion ?</a></li><li><a
href="http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#JPAlanouvelleversionduneAPIbie">JPA 2.0, la nouvelle version d&#8217;une API bien portante</a></li><li><a
href="http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/#LanguageJavaquefautilattendre">Language Java, que faut-il attendre ?</a></li></ul><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="LetopdeslivressurlAgilit"></a>Le top 20 des livres sur l&#8217;Agilité</h4><p>A partir de son top 100 des meilleurs livres d&#8217;ingénierie logicielle, <a
href="http://www.noop.nl/" title="Jurgen Appelo" >Jurgen Appelo</a> en a extrait le <a
href="http://agilesoftwaredevelopment.com/blog/jurgenappelo/top-20-best-agile-development-books" title="top 20 des livres sur l'Agilité" >top 20 des livres sur l&#8217;Agilité</a>.<br
/> Voici les 3 premiers pour les moins courageux :<br
/> 1. <a
href="http://www.amazon.com/gp/product/0135974445?ie=UTF8&#038;tag=noopnl-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0135974445" title="Agile Software Development: Principles, Patterns and Practices" >Agile Software Development: Principles, Patterns and Practices</a> de Robert C. Martin<br
/> 2. <a
href="http://www.amazon.com/gp/product/0201485672?ie=UTF8&#038;tag=noopnl-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0201485672" title="Refactoring: Improving the Design of Existing Code" >Refactoring: Improving the Design of Existing Code</a> de Martin Fowler<br
/> 3. <a
href="http://www.amazon.com/gp/product/0131479415?ie=UTF8&#038;tag=noopnl-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0131479415" title="Agile Estimating and Planning" >Agile Estimating and Planning</a> de Mike Cohn</p><p>Une liste qui pourra vous guider dans vos prochains achats sur Amazon !</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="NASDAQMarketReplayunesuccessst"></a>NASDAQ Market Replay : une success story pour Flex, AIR et Amazon S3</h4><p>InfoQ explique dans <a
href="http://www.infoq.com/articles/nasdaq-case-study-air-and-s3" title="InfoQ Case Study: NASDAQ Market Replay" >InfoQ Case Study: NASDAQ Market Replay</a> comment le NASDAQ offre un outil de rejeu des transactions effectuées (vérification de la validité d&#8217;une transaction, explication de l&#8217;écart entre le prix de vente espéré et le prix de vente réel, etc&#8230;) développé en  FLEX avec un client standalone Abode AIR et connecté à un back end <a
href="http://en.wikipedia.org/wiki/Amazon_S3" title="Amazon Simple Storage Service" >Amazon Simple Storage Service</a> (S3).<br
/> La mise en place de cet outil est un véritable succès pour le RIA d&#8217;Abode, car il a été bâti en 6 mois par une équipe de 10 personnes, et répond complètement aux besoins fonctionnels, avec des performances supérieures à celles espérées.<br
/> De plus, un premier lot d&#8217;évolutions devrait voir le jour dans moins d&#8217;un mois, et son déploiement sera grandement facilité par l&#8217;utilisation de la technologie AIR (déploiement automatique par vérification de la dernière version en cours au lancement de l&#8217;outil).<br
/> Une <a
href="https://data.nasdaq.com/MR.aspx" title="démonstration de l'outil" >démonstration de l&#8217;outil</a> est disponible sur le site du NASDAQ.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SpringSourceApplicationPlatfor"></a>Spring Source Application Platform : l&#8217;heure de se faire une opinion ?</h4><p>Julien Dubois, directeur de Spring Source France, a présenté <a
href="http://springsource.com/products/suite/applicationplatform" title="Spring Source Application Platform" >Spring Source Application Platform</a> (S2AP) lors de la soirée Spring du <a
href="http://www.parisjug.org/xwiki/bin/view/Blog/SoireeSpring" title="Paris JUG" >Paris JUG</a>. Nous avions relaté en mai dernier la sortie du serveur hybride OSGI-Tomcat dans <a
href="http://blog.xebia.fr/2008/05/01/springsource-application-platform-la-breche-dans-java-ee/" title="SpringSource Application Platform : la brèche dans Java EE" >SpringSource Application Platform : la brèche dans Java EE</a>. L&#8217;événement avait fait grand bruit, The Server Side avait lancé la polémique avec <a
href="http://www.theserverside.com/news/thread.tss?thread_id=49243" title="S2AP - totally rocks" >S2AP &#8211; totally rocks</a> (220 messages enflammés). Si le buzz est retombé, Spring Source occupe le terrain médiatique pour nous faire patienter jusqu&#8217;à la première release avec des articles pédagogiques sur la valeur ajoutée des modules OSGI pour les applications web (<a
href="http://blog.springsource.com/main/2008/05/15/why-should-i-care-about-osgi-anyway/" title="Why should I care about OSGi anyway?" >Why should I care about OSGi anyway?</a> par Adrian Colyer) autant que sur la nouvelle stratégie de Spring Source (<a
href="http://blog.springsource.com/main/2008/05/27/open-source-open-strategy-the-springsource-manifesto/" title="Open Source, Open Strategy: The SpringSource Manifesto" >Open Source, Open Strategy: The SpringSource Manifesto</a> par Rod Johnson).</p><p>Au-delà des promesses un <em>zest</em> marketing du <a
href="http://springsource.com/products/suite/applicationplatform" title="site officiel" >site officiel</a> qui vont de l&#8217;amélioration de la réutilisabilité du code à la meilleure disponibilité des serveurs en passant par la reconfiguration à chaud, l&#8217;été peut-être l&#8217;occasion de regarder plus en détail la proposition de Spring Source.</p><p>Pour mémoire, S2AP est un serveur d&#8217;applications orienté modules basé sur OSGI Eclipse Equinox, dm-Kernel (Spring Source Dynamic Module Kernel), et <a
href=" http://blog.xebia.fr/2008/02/04/revue-de-presse-xebia-42/#SpringSourcerCovalent" title="Tomcat" >Tomcat</a>.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap.jpg" border="0" alt="" /></div><p>Le but de la présentation de jeudi dernier était autant de faire connaître le produit (après un rapide sondage avec l&#8217;assemblée, un peu plus la moitié du public connaissait s2ap) que de rassurer d&#8217;éventuels futurs utilisateurs sur la capacité de cette plateforme à aller rapidement en production. C&#8217;est d&#8217;ailleurs sur ce dernier point que Julien a insisté lors de la présentation au Jug : il ne faut pas oublier qu&#8217;il s&#8217;agit pour le moment que d&#8217;une béta.</p><p>L&#8217;administration de la plateforme s&#8217;effectue par l&#8217;intermédiaire : d&#8217;une web console ultra light (pour le moment). Celle-ci dispose d&#8217;un simple champ &#8216;Parcourir &#8230;&#8217; vous permettant d&#8217;uploader vos bundles et de la liste des applications déployées disposant chacune d&#8217;un lien &#8216;undeploy&#8217;.  (cf screenshot 2) ; et d&#8217;une console Osgi Equinox  accessible via Telnet (cf screenshot 3). Si cela ne vous convient pas, rien ne vous empêche d&#8217;installer une console OSGI complémentaire plus conviviale du type <a
href="http://www.knopflerfish.org/" title="knopflerfish " >knopflerfish </a>.</p><p>Petit problème anecdotique à ce sujet noté sur la console Equinox : si vous voulez vous déconnecter, utilisez la commande &#8216;disconnect&#8217;, celle-ci vous demandera alors si vous êtes certain de vouloir quitter la console. Par contre si vous tapez la commande &#8216;exit&#8217;, le serveur est immédiatement arrêté sans aucun message de confirmation.</p><p>Après plus d&#8217;un mois de teasing en tout genre, vous n&#8217;avez peut-être pas encore eu le temps de vous faire une idée concrète du produit. C&#8217;est peut-être le moment de passer à l&#8217;action. Nous vous proposons ici une liste de liens permettant d&#8217;effectuer votre propre « Getting Started S2AP » rapidement :</p><ul><li>Téléchargez la dernière bêta S2AP en vous <a
href="http://www.springsource.com/beta/applicationplatform/" title="inscrivant sur Spring Source" >inscrivant sur Spring Source</a>, <a
href="http://static.springsource.com/projects/s2ap/1.0.x/user-guide/html/" title="user guide" >user guide</a>, <a
href="http://static.springsource.com/projects/s2ap/1.0.x/programmer-guide/html/" title="programmer guide" >programmer guide</a></li><li>Téléchargez une <a
href="http://dist.springsource.com/release/AP/petclinic-1.1.0.RELEASE.zip" title="application exemple" >application exemple</a></li><li>Consultez le <a
href="http://www.springsource.com/repository" title="Repository officiel" >Repository officiel</a> de bundles compatibles S2AP</li><li>Tutoriel d&#8217;installation et d&#8217;utilisation rapide <a
href="http://blog.developpez.com/djo-mos?title=vos_premiers_pas_avec_springsource_appli" title="pour les développements" >pour les développements</a></li></ul><table><tr><td><strong>Screenshot&nbsp;1&nbsp;: S2AP startup</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td><strong>Screenshot&nbsp;2&nbsp;: Web Console</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td><strong>Screenshot&nbsp;3&nbsp;: Equinox Telnet Console</strong></td></tr><tr><td><a
href='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_startup.jpg' title='s2ap_startup.jpg'><img
src='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_startup.thumbnail.jpg' alt='s2ap_startup.jpg' /></a></td><td><a
href='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_admin.jpg' title='s2ap_admin.jpg'><img
src='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_admin.thumbnail.jpg' alt='s2ap_admin.jpg' /></a></td><td><a
href='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_telnet.jpg' title='s2ap_telnet.jpg'><img
src='http://blog.xebia.fr/wp-content/uploads/2008/06/s2ap_telnet.thumbnail.jpg' alt='s2ap_telnet.jpg' /></a></td></tr></table><h4><a
name="JPAlanouvelleversionduneAPIbie"></a>JPA 2.0, la nouvelle version d&#8217;une API bien portante</h4><p>Il est loin le temps où le standard de persistance en Java, les EJB CMP, était conspué. JPA a refermé cette page tourmentée en créant un consensus autour du meilleur d&#8217;Hibernate, de TopLink et des autres.<br
/> Linda DeMichiel, Sun Microsystems, a présenté à JavaOne 2008 dans <a
href="http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5509.pdf" title="JavaTM Persistence API 2.0" >JavaTM Persistence API 2.0</a> les contours d&#8217;une nouvelle version largement inspirée d&#8217;Hibernate.</p><p>Nous retiendrons :</p><ul><li>Améliorations des mappings : collections de types basics avec <code>@ElementCollection</code>, supports amélioré des types <code>@Embeddable</code>, des tris et des <code>Map</code>, etc.</li><li>Ajout d&#8217;une Criteria query API que regrettaient les adeptes d&#8217;Hibernate</li><li>Intégration du mécanisme de validation <a
href="http://jcp.org/en/jsr/detail?id=303" title="JSR 303: Bean Validation" >JSR 303: Bean Validation</a> dont le specification leader n&#8217;est autre qu&#8217;Emmanuel Bernard, Red Hat, également project leader d&#8217;<a
href="http://www.hibernate.org/412.html" title="Hibernate Validator" >Hibernate Validator</a></li></ul><p>Cette ébauche de JPA 2.0 est l&#8217;occasion de rappeler qu&#8217;il est maintenant raisonnable de migrer de l&#8217;historique API Session d&#8217;Hibernate à l&#8217;API EntityManager de JPA. Cette dernière répond à la majorité des besoins de nos projets et il suffit de récupérer la session Hibernate avec <code>((Session) entityManager.getDelegate())</code> si le besoin s&#8217;en fait sentir.</p><h4><a
name="LanguageJavaquefautilattendre"></a>Language Java, que faut-il attendre ?</h4><p>Alex Buckley (Sun), Neal Gafter (Google) et Michael D. Ernst (MIT) ont présenté à JavaOne 2008 dans <a
href="http://developers.sun.com/learning/javaoneonline/2008/pdf/TS-5581.pdf" title="Upcoming Java Programming Language Features" >Upcoming Java Programming Language Features</a> les enjeux de l&#8217;évolution du langage Java et les nouvelles fonctionnalités actuellement à l&#8217;étude :</p><ul><li>Multi-catch <code>try {...} catch (E1, E2 e) {...}</code></li><li>Safe re-throw : simplification des blocs <code>catch</code> lorsque la méthode encapsulante rethrow les exceptions levées dans le bloc <code>try</code></li><li>Modularité : Ajout d&#8217;un niveau de granularité entre les visibilités <code>package</code> et <code>public</code></li><li>Extension des annotations pour ne plus limiter leur utilisation aux déclarations de class / method / field / variable et pour ajouter des informations dans le code telles que <code>@NonNull</code>, <code>@Readonly</code> ou <code>@Immutable</code>. Ces évolutions sont regroupées dans <a
href="http://jcp.org/en/jsr/detail?id=308" title="JSR 308: Annotations on Java Types" >JSR 308: Annotations on Java Types</a>.</li></ul><p>A plus long terme, l&#8217;Expert Group réfléchit entre autres à un meilleur support du parallélisme et une évolution du modèle de composant (versioning, etc). Plus généralement, d&#8217;autres sucs syntaxiques et évolutions du langage sont à l&#8217;étude, nous en avions consacré une partie à ce sujet lors de la présentation &#8216;<a
href="http://blog.xebia.fr/2008/02/20/nagez-avec-les-dauphins-jdk-7-proposals-overview/" title="jdk 7 proposals" >jdk 7 proposals</a>&#8216; en février dernier.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/06/16/revue-de-presse-xebia-61/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/</link> <comments>http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#comments</comments> <pubDate>Mon, 28 Apr 2008 17:04:41 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Hibernate]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[REST]]></category> <category><![CDATA[Sun]]></category> <category><![CDATA[Websphere]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII MySQL by Sun : Revirement de stratégie open source ? Choquant ? Superpackages (JSR-294) vs. OSGI : Episode n° 34291567&#8230;. Agilité User stories &#171;&#160;En tant que &#8230; je veux &#8230;&#160;&#187; Le coin de la technique De la sérialisation au parallélisme, [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#MySQLbySunRevirementdestratgie">MySQL by Sun : Revirement de stratégie open source ? Choquant ?</a></li><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#SuperpackagesJSRvsOSGIEpisoden">Superpackages (JSR-294) vs. OSGI : Episode n° 34291567&#8230;.</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#UserstoriesEntantquejeveux">User stories &laquo;&nbsp;En tant que &#8230; je veux &#8230;&nbsp;&raquo;</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#Delasrialisationauparalllismeu">De la sérialisation au parallélisme, une évolution incarnée par java.util.concurrent</a></li><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#InnovationautourdeJPAJBossHibe">Innovation autour de JPA : JBoss Hibernate confirme son domination avec Envers</a></li><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#VideoIntroductiontoWebSphereeX">Cas d&#8217;utilisation des grilles Java avec WebSphere eXtreme Scale/ ObjectGrid</a></li><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#JSRJAXRSRESTunehistoiredeRESTa">JSR-311 JAX-RS REST une histoire de RESTaurant</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/#XKEleprogrammedelasessiondemai">XKE, le programme de la session de mai</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="MySQLbySunRevirementdestratgie"></a>MySQL by Sun : Revirement de stratégie open source ? Choquant ?</h4><p><a
href="http://slashdot.org/" title="Slashdot" >Slashdot</a> essaie de nous emmener sur une polémique &laquo;&nbsp;Sun gâche MySQL&nbsp;&raquo; avec <a
href="http://developers.slashdot.org/article.pl?sid=08/04/16/2337224" title="Sun May Begin Close Sourcing MySQL Features" >Sun May Begin Close Sourcing MySQL Features</a> à l&#8217;occasion de l&#8217;annonce par l&#8217;éditeur de fonctionnalités (online backup, etc) qui seront uniquement disponibles dans la version payante <a
href="http://www.mysql.com/products/enterprise/" title="MySQL Enterprise" >MySQL Enterprise</a>. Au delà de l&#8217;insinuation peu crédible quand on se rappelle que l&#8217;essentiel du catalogue de Sun est disponible gratuitement, on retrouve le défi aujourd&#8217;hui classique de la monétisation de l&#8217;Open Source. Le rachat de MySQL par Sun change complétement le modèle économique de l&#8217;éditeur de base de données.</p><p>Hier, la startup MySQL, financée par des fonds de capital risque, se permettait d&#8217;être déficitaire car les candidats au rachat (Oracle puis finalement Sun) ne valorisaient pas MySQL Inc sur ses revenus mais sur les parts de marché de sa base de données. La stratégie a magnifiquement porté ses fruits puisque MySQL Inc s&#8217;est vendue un milliard de dollars à Sun, félicitations au management.</p><p>Aujourd&#8217;hui, MySQL est vraisemblablement devenue une division &#8216;classique&#8217; de Sun et doit donc devenir rentable. L&#8217;équation de la rentabilité de l&#8217;open source est complexe, Red Hat et JBoss by Red Hat ont été des pionniers sur ce chemin, souhaitons à MySql by Sun de trouver lui aussi son modèle.</p><p><a
href="http://www.theserverside.com/news/thread.tss?thread_id=49087" title="TSS : MySQL to get new features in Enterprise version" >TSS : MySQL to get new features in Enterprise version</a></p><p><i><strong>Modification du billet le 29 Avril 2008 : Jonathan Schwartz est finalement revenu en arrière et a annoncé que tous les produits que Sun distribue, sans exception, sont proposés gratuitement en licence Open source à la communauté. Pour plus de détails sur cette histoire, nous vous recommandons la série de <a
href="http://www.the451group.com/">The 451 Group</a> : <a
href="http://blogs.the451group.com/opensource/2008/04/17/mysqls-business-model-in-a-state-of-flux/">MySQL’s business model in a state of flux</a>, <a
href="http://blogs.the451group.com/opensource/2008/04/24/finding-the-right-balance-mysql%e2%80%99s-changing-development-model/">Finding the right balance &#8211; MySQL’s changing development model</a> et <a
href="http://blogs.the451group.com/opensource/2008/04/28/jonathan-schwartz-has-the-last-word-on-mysql/">Jonathan Schwartz has the last word on MySQL</a></strong></i></p><h4><a
name="SuperpackagesJSRvsOSGIEpisoden"></a>Superpackages (JSR-294) vs. OSGI : Episode n° 34291567&#8230;.</h4><p>La guerre continue entre les partisans de OSGI et ceux des JSR de SuperPackage et de JAM. Cependant, l&#8217;attaque vient cette fois-ci d&#8217;<a
href="http://blogs.sun.com/abuckley/" title="Alex Buckley" >Alex Buckley</a> de chez Sun.</p><p>Il explique dans son <a
href="http://altair.cs.oswego.edu/pipermail/jsr294-modularity-eg/2008-March/000171.html" title="email" >email</a> les inconvénients qu&#8217;il voit dans l&#8217;implémentation actuelle des superpackages[1]. En substance, il propose d&#8217;introduire à la place un nouvel &#8216;access modifier&#8217; (module).</p><p>Peter Kriens de l&#8217;OSGi Alliance semble plutôt emballé par cette <a
href="http://www.osgi.org/blog/2008/04/jsr-294-superpackages-no-more.html" title="proposition" >proposition</a>.</p><p>[1] Pour mémoire, nous avons publié en février dernier un <a
href="http://blog.xebia.fr/2008/02/27/jsr-294-les-superpackages/" title="article présentant les superpackages" >article présentant les superpackages</a></p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="UserstoriesEntantquejeveux"></a>User stories &laquo;&nbsp;En tant que &#8230; je veux &#8230;&nbsp;&raquo;</h4><p>Mike Cohn nous rappelle les 3 raisons pour lesquelles il préconise de décomposer les <a
href="http://www.mountaingoatsoftware.com/presentation/63-an-introduction-to-user-stories" title="user stories" >user stories</a> sous forme de phrase <a
href="http://blog.mountaingoatsoftware.com/?p=24" title=""En tant que &lt;role&gt;, je veux &lt;but&gt;, pour que &lt;raison&gt;"" >&laquo;&nbsp;En tant que &lt;role&gt;, je veux &lt;but&gt;, pour que &lt;raison&gt;&nbsp;&raquo;</a> (la raison est optionnelle) :</p><ul><li>L&#8217;emploi de la 1ère personne du singulier aide les développeurs à s&#8217;identifier à l&#8217;utilisateur</li><li>La structure de la phrase &#8211; représentée par 3 colonnes dans le <a
href="http://www.mountaingoatsoftware.com/product_backlog" title="Product backlog" >Product backlog</a> &#8211; aide le <a
href="http://www.mountaingoatsoftware.com/product_owner" title="Product Owner" >Product Owner</a> à comprendre et prioriser les user stories</li><li>Pour ne pas rajouter de bruit dans la description des user stories, il suffit de nommer les colonnes du Product backlog &laquo;&nbsp;En tant que &#8230;&nbsp;&raquo;, &laquo;&nbsp;je veux &#8230;&nbsp;&raquo;, &laquo;&nbsp;pour que &#8230;&nbsp;&raquo; et le backlog devient intuitif à lire.</li></ul><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Delasrialisationauparalllismeu"></a>De la sérialisation au parallélisme, une évolution incarnée par java.util.concurrent</h4><p>La programmation multi-threadée en java a évoluée : anciennement on utilisait la sérialisation incarnée par <code>synchronized</code>, désormais on peut faire du parallélisme avec l&#8217;introduction des API <code>java.util.concurrent</code> en Java 5.</p><p>Sharadjava nous présente dans sa Java Concurrency Series les différents aspects de cette nouvelle librairie :</p><ul><li><a
href="http://www.techgrasp.com/blogs/sharadjava/java-concurrency-series-simple-executor-example" title="Simple Executor example" >Simple Executor example</a> pour la parallélisation des tâches.</li><li><a
href="http://www.techgrasp.com/blogs/sharadjava/java-concurrency-series-examples-barrier" title="Barrier" >Barrier</a> pour l&#8217;attente entre tâches (on n&#8217;oubliera pas sur ce sujet le <a
href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/CountDownLatch.html" title="CountDownLatch" >CountDownLatch</a>).</li><li><a
href="http://www.techgrasp.com/blogs/sharadjava/java-concurrency-series-meaning-volatile-variable" title="Meaning of volatile" >Meaning of volatile</a> pour la visibilité inter-threads des valeurs des variables.</li></ul><h4><a
name="InnovationautourdeJPAJBossHibe"></a>Innovation autour de JPA : JBoss Hibernate confirme son domination avec Envers</h4><p>Après l&#8217;intégration de la recherche full text Lucene [1] et le support du Database Sharding, <a
href="http://www.hibernate.org" title="Hibernate" >Hibernate</a> confirme sa domination de l&#8217;innovation autour de JPA en ouvrant le chantier du versionnage des données. Cette problématique, bien que récurrente et accentuée par les nouvelles contraintes réglementaires (Sarbane &#038; Oaxley, etc), restait largement ignorées par nos frameworks et nos très chers design patterns. Seul Martin Fowler nous éclairait sur ce sujet délicat avec <a
href="http://www.martinfowler.com/ap2/timeNarrative.html" title="Patterns for things that change with time" >Patterns for things that change with time</a>.</p><p>JBoss comble aujourd&#8217;hui ce vide en lançant <a
href="http://www.jboss.org/envers/" title="Envers" >Envers</a>, une extension d&#8217;Hibernate qui versionne les données persistantes selon un pattern similaire au <a
href="http://www.martinfowler.com/ap2/temporalObject.html" title="Temporal Object" >Temporal Object</a> de Martin Fowler. Envers n&#8217;est qu&#8217;en version preview mais le projet est très prometteur et déjà une source d&#8217;inspiration pour les projets qui n&#8217;ont pas le temps d&#8217;attendre la première version stable.</p><p>On notera au passage qu&#8217;Envers préfère l&#8217;API standard JPA EntityManager à l&#8217;historique Session Hibernate ; on peut y voir un signe que le temps est venu pour les équipes projets de privilégier les standards JPA aux API historiques Hibernate.</p><p>Exemple d&#8217;entité persistante versionnée avec JBoss Envers</p><pre class="brush: java; title: ; notranslate">
@Entity
public class Person {
    @Id
    @GeneratedValue
    private Integer id;
    @Versioned
    private String name;
    @Versioned
    private String surname;
    @Versioned
    @ManyToOne
    private Address address;
   ...
}
</pre><p>[1] cf notre billet <a
href="http://blog.xebia.fr/2008/03/06/introduction-a-hibernate-search-googling-your-persistent-domain-model/" title="Introduction à Hibernate Search (Googling your Persistent Domain Model)" >Introduction à Hibernate Search (Googling your Persistent Domain Model)</a></p><h4><a
name="VideoIntroductiontoWebSphereeX"></a>Cas d&#8217;utilisation des grilles Java avec WebSphere eXtreme Scale/ ObjectGrid</h4><p>Billy Newport présente dans <a
href="http://www.devwebsphere.com/devwebsphere/2008/04/video-introduct.html" title="Video: Introduction to WebSphere eXtreme Scale/ObjectGrid with patterns and use cases" >Video: Introduction to WebSphere eXtreme Scale/ObjectGrid with patterns and use cases</a> les scénarios typiques d&#8217;utilisation de la grille Java d&#8217;IBM :</p><ul><li>Cache de proximité classique : la grille sert de Map distribuée ; l&#8217;application métier gère les données (chargement depuis les backends, mise en cache et sauvegarde des modifications dans les backends).</li><li>Cache de proximité avec &laquo;&nbsp;Loader synchrone&nbsp;&raquo; dans la grille : l&#8217;application métier se limite à demander des données à la grille et à les modifier ; la grille, grâce à un Loader, s&#8217;occupe de charger les données depuis les backends et sauvegarde en synchrone les données modifiées dans les backends.</li><li>Cache de proximité avec un &laquo;&nbsp;Loader à écriture différée&nbsp;&raquo; dans la grille : similaire au scénario précédent mais la sauvegarde des modifications dans les backends est asynchrone.</li><li>Cache collocalisé : l&#8217;application et la grille s&#8217;éxécutent dans les même JVM, chaque JVM héberge un noeud du cluster de l&#8217;application et un noeud de la grille. Ce scénario est typique de la mise en cache des sessions HTTP.</li></ul><p>On notera que les architectures de type <a
href="http://en.wikipedia.org/wiki/MapReduce" title="Map/Reduce" >Map/Reduce</a>, qui nécessitent une conception radicalement différente, ne semblent pas encore très répandues.</p><h4><a
name="JSRJAXRSRESTunehistoiredeRESTa"></a>JSR-311 JAX-RS REST une histoire de RESTaurant</h4><p>Dans cet <a
href="http://www.touilleur-express.fr/2008/04/25/jsr-311-jax-rs-rest-une-histoire-de-restaurant/" title="article" >article</a>, Nicolas Martignole nous présente l&#8217;architecture REST (<a
href="http://en.wikipedia.org/wiki/Representational_State_Transfer" title="Representational State Transfer" >Representational State Transfer</a>) et <a
href="http://jcp.org/en/jsr/detail?id=311" title="JSR 311: JAX-RS: The Java API for RESTful Web Services" >JSR 311: JAX-RS: The Java API for RESTful Web Services</a>. L&#8217;objectif de cette JSR est de faciliter la programmation d&#8217;applications REST en Java.<br
/> La première partie est consacrée à une introduction de REST (définition d&#8217;une ressource, lecture, création, mise à jour, suppression d&#8217;une ressource, Services Webs RESTfull).<br
/> La deuxième partie nous présente quelques détails sur l&#8217;implémentation JAX-RS avec Java.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="XKEleprogrammedelasessiondemai"></a>XKE, le programme de la session de mai</h4><p>Le prochain XKE (Xebia Knowledge Exchange) aura lieu le <strong>mardi</strong> 6 Mai 2008. Les sujets suivants seront abordés :</p><ul><li>Sessions Pratiques<ul><li>Terracotta, the Network Attached Memory (NAM)</li><li>java.util.concurrent, concours de developpement</li></ul></li></ul><ul><li>Technique<ul><li>Java et la Cryptographie</li></ul></li></ul><ul><li>Architecture<ul><li>Retour sur l&#8217;architecture de l&#8217;un des plus grand site de ecommerce de France</li><li><a
href="http://xp-france.net/index.php?option=com_content&#038;task=view&#038;id=48&#038;Itemid=120#S836" title="Tests unitaires avec les librairies de Mock" >Tests unitaires avec les librairies de Mock</a></li></ul></li></ul><ul><li>Xebia Hollande<ul><li>Intervention du CTO de <a
href="http://www.xebia.com" title="Xebia Hollande" >Xebia Hollande</a></li></ul></li></ul><p>Comme nous l&#8217;annoncions, les XKE sont <a
href="http://blog.xebia.fr/2008/02/06/xebia-ouvre-ses-journees-de-partage-de-la-connaissance-xke/" title="ouverts" >ouverts</a> à l&#8217;ensemble des personnes à l&#8217;écoute du marché de l&#8217;emploi autour des technologies Java/J2EE. Si vous êtes l&#8217;une d&#8217;entre elles , n&#8217;hésitez pas à contacter <a
href="mailto:mbacrot@xebia.fr" title="Mélanie Bacrot" >Mélanie Bacrot</a> pour vous inscrire.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/04/28/revue-de-presse-xebia-54/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/03/25/revue-de-presse-xebia-49/</link> <comments>http://blog.xebia.fr/2008/03/25/revue-de-presse-xebia-49/#comments</comments> <pubDate>Tue, 25 Mar 2008 17:32:08 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[BEA]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Spring]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/25/revue-de-presse-xebia-49/</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII EclipseLink devient l&#8217;implémentation de référence pour JPA 2.0 Eclipse Foundation lance Eclipse Runtime Project SpringSource Tool Suite BlackBerry rejoint la fondation Eclipse Bea renforce son intégration avec Eclipse Le coin de la technique La puissance des proxies Evènements de notre [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/03/25/revue-de-presse-xebia-49/#EclipseLinkJPA">EclipseLink devient l&#8217;implémentation de référence pour JPA 2.0</a></li><li><a
href="http://blog.xebia.fr/2008/03/25/revue-de-presse-xebia-49/#EclipseRuntimeProject">Eclipse Foundation lance Eclipse Runtime Project</a></li><li><a
href="http://blog.xebia.fr/2008/03/25/revue-de-presse-xebia-49/#SpringSourceToolSuite">SpringSource Tool Suite</a></li><li><a
href="http://blog.xebia.fr/2008/03/25/revue-de-presse-xebia-49/#BlackBerryEclipse">BlackBerry rejoint la fondation Eclipse</a></li><li><a
href="http://blog.xebia.fr/2008/03/25/revue-de-presse-xebia-49/#BeaEclipse">Bea renforce son intégration avec Eclipse</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/03/25/revue-de-presse-xebia-49/#proxies">La puissance des proxies</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/03/25/revue-de-presse-xebia-49/#ToursJavaUserGroup">Tours Java User Group</a></li></ul><hr/><h3>Actualité éditeurs / SSII</h3><h4><a
name="EclipseLinkJPA"></a>EclipseLink devient l&#8217;implémentation de référence pour JPA 2.0</h4><p>Sun vient d&#8217;annoncer récemment que la RI (reference implemention) de la Java Persistence API 2.0, sera le plugin d&#8217;Oracle EclipseLink.<br
/> Le framework EclipseLink fournit à travers ses services OSGi l&#8217;outillage nécessaire pour interagir efficacement avec les bases de données relationnelles :</p><ul><li><strong>JPA</strong><br
/> Ce service permet de mapper des objets Java avec un schéma de base de données en utilisant une configuration XML et/ou avec les annotations. Les opérations de mapping, transactions, cache des objets, clustering, et des options de tuning et administration sont également disponibles nativement.</li><li><strong>Mapping Objects to XML (MOXy)</strong><br
/> Ce service gère le mapping objets Java avec un schéma XML (XSD) en utilisant une configuration XML et/ou avec les annotations. Ce service permet de générer par exemple, à partir d&#8217;un modèle de données annoté, les XSD et mappings correspondants. Les opérations de transformation Java-&gt;XML et XML-&gt;Java sont également supportées via les standards DOM et SAX.</li><li><strong>Service Data Object (SDO)</strong><br
/> Ce service permet de générer des modèles SDO dynamiques ou statiques à partir d&#8217;un schéma XSD. Les SDO permet de réduire le couplage entre application et les systèmes de gestion de données. ce service permettra également de wrapper un objet Java (JPA entity) dans un DataObject permettant d&#8217;utiliser des objets de modèle existants.</li><li><strong>Database Web Services (DBWS)</strong><br
/> Ce service permet d&#8217;exposer sous forme de webservices les opérations sur les base de données.</li><li><strong>Enterprise Information Systems (EIS)</strong><br
/> Le service de persistance EIS permet d&#8217;utiliser les magasins de données (data stores) via le connecteurs JCA (Java Connector Architecture). Ce service permet l&#8217;utilisation de base de données non-relationnelles qui n&#8217;utilisent pas l&#8217;accès JDBC ou SQL (Mainframes).</li></ul><p>Avec l&#8217;annonce en parallèle du projet Eclipse RT basé sur Equinox, OSGi a de beaux jours devant lui !</p><p><a
href="http://www.eclipse.org/eclipselink/">http://www.eclipse.org/eclipselink/</a><br
/> <a
href="http://www.theserverside.com/news/thread.tss?thread_id=48757">http://www.theserverside.com/news/thread.tss?thread_id=48757</a></p><h4><a
name="EclipseRuntimeProject"></a>Eclipse Foundation lance Eclipse Runtime Project</h4><p>Le projet Eclipse RT veut concurrencer Java et .Net !</p><p>Basé sur le projet Equinox qui implémente les spécifications OSGi, Eclipse Runtime Project veut devenir le nouveau runtime universel multi-plateforme pour carrément supplanter Java et .Net. Ce meta-projet a pour but d&#8217;unifier les différents projets existants tels que Eclipse Communications Framework, EclipseLink, Rich Ajax Platform (RAP), Riena and Swordfish et ainsi offrir une solution globale pour le développement d&#8217;applications sur divers supports et plateformes (client lourd, léger, riche, mobile, &#8230;) et ainsi combler les lacunes de Java et .Net. La solution apportée par Eclipse RT consiste en un modèle et framework orienté composant pour simplifier le travail de développement, déploiement et gestion d&#8217;applications sur diverses plateforme sans avoir à reconstruire la logique métier à chaque fois.</p><p><a
href="http://blogs.zdnet.com/open-source/?p=2136">http://blogs.zdnet.com/open-source/?p=2136</a><br
/> <a
href="http://www.infoworld.com/article/08/03/16/eclipse-show_1.html">http://www.infoworld.com/article/08/03/16/eclipse-show_1.html</a><br
/> <a
href="http://www.regdeveloper.co.uk/2008/03/17/eclipse_equinox_runtime/">http://www.regdeveloper.co.uk/2008/03/17/eclipse_equinox_runtime/</a></p><h4><a
name="SpringSourceToolSuite"></a>SpringSource Tool Suite</h4><p>SpringSource vient <a
href="http://eclipse.dzone.com/announcements/springsource-announce-tool-sui">d&#8217;annoncer</a> la sortie en version béta &laquo;&nbsp;SpringSource Tool Suite&nbsp;&raquo;. L&#8217;objectif de cet outil est de faciliter le développement d&#8217;applications avec Spring. Le détail des possibilités n&#8217;est pas encore pleinement clair (Plus de détails <a
href="http://blog.springsource.com/main/2008/03/20/springsource-tool-suite-released/">ici</a>). Vous pouvez vous inscrire au programme de béta-test pour tester ce nouvel outil <a
href="http://www.springsource.com/web/guest/products/sts">ici</a>.</p><h4><a
name="BlackBerryEclipse"></a>BlackBerry rejoint la fondation Eclipse</h4><p>La société Blackberry rejoint la fondation Eclipse et offre à cette occasion un plug-in Eclipse permettant de développer des applications pour la célèbre plateforme de téléphone mobile. Il est donc maintenant possible de développer pour les systèmes mobiles BlackBerry, Android, Symbian &amp; Palm avec un environnement Eclipse standard bien connu des développeurs. Deux plateformes manquent à l&#8217;appel : Windows Mobile et l&#8217;iPhone peu habituées à faciliter le travail des développeurs maisons <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p><p>Plus d&#8217;informations sur cette annonce <a
href="http://blogs.zdnet.com/Burnette/?p=552">ici</a></p><h4><a
name="BeaEclipse"></a>Bea renforce son intégration avec Eclipse</h4><p>JRockit, la JVM de BEA, fournit déjà une console de suivi dénommé <a
href="http://edocs.bea.com/jrockit/tools/">JRockit Mission Control</a>. Depuis la version 2, cet outil est basé sur une plateforme Eclipse mais récemment Bea a fait un pas de plus. Depuis la version <a
href="http://edocs.bea.com/jrockit/tools/relnotestools/relnotestools2.html">3.0.2</a>, JRockit Mission Control est disponible sous forme de plugin Eclipse accessible depuis l&#8217; &laquo;&nbsp;<a
href="https://dev2devclub.bea.com/updates/eclipse-3.3/jrmc/">update site</a>&nbsp;&raquo; de Bea. Ceci va permettre une unification et une meilleure intégration de l&#8217;outillage (notamment Workshop) fourni par Bea.</p><p>Quelques détails sur le blog <a
href="http://dev2dev.bea.com/blog/hstahl/archive/2008/03/jrockit_eclipse.html">dev2dev</a> &#8230;</p><h3>Le coin de la technique</h3><h4><a
name="proxies"></a>La puissance des proxies</h4><p>Cet <a
href="http://blog.developpez.com/index.php?blog=174&amp;title=la_puissance_des_proxies&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1">article</a> illustre l&#8217;utilisation des proxies Java. Même si l&#8217;utilisation qui en est faite ici, peut être un peu discutable en terme de lisibilité, cela n&#8217;en reste pas moins impressionnant quant aux possibilités offertes.</p><h3>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="ToursJavaUserGroup"></a>Tours Java User Group</h4><p>L&#8217;idée d&#8217;Antonio Goncalves et  David Dewalle semble faire des émules. Après la création récente du <a
href="http://www.parisjug.org">Paris User Group</a>, le deuxième <a
href="http://java.sun.com/community/usergroups/">Java User Group</a> français vient de se créer : le <a
href="http://www.toursjug.org">Tours JUG</a>. Son fonctionnement reste à peu près similaire, un sujet sera abordé chaque second mercredi du mois. Ce sera Christophe Jollivet, fondateur de ce dernier, et coresponsable de la <a
href="http://java.developpez.com/">rubrique java de developpez.com</a> qui ouvrira le bal le 9 avril avec &#8216;<a
href="http://www.toursjug.org/rencontre/20080409/presentation.php">Unitils et Selenium, les partenaires de vos tests</a>&#8216; (ça me rappelle <a
href="http://blog.xebia.fr/2008/03/10/revue-de-presse-xebia-47/#ParisJUG">quelque chose</a> &#8230;).  Concernant la suite du programme, peu d&#8217;éléments sont pour le moment communiqués. Pour en savoir davantage, le mieux reste encore de vous <a
href="http://www.jugevents.org/jugevents/event/registration.form?event.id=3190">inscrire</a> pour  la soirée d&#8217;inauguration qui aura lieu le mercredi 9 avril à Tours.</p><div
align="center"><a
href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fsv-web-jug.dev.java.net%2Fkml%2Fjug-leaders.kml&amp;ie=UTF8&amp;om=1&amp;ll=49.496675,15.292969&amp;spn=27.94468,81.738281&amp;z=4"><img
src='http://blog.xebia.fr/wp-content/uploads/2008/03/jugeurope.jpg' alt='JUG Europe' /></a></div> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/03/25/revue-de-presse-xebia-49/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/</link> <comments>http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/#comments</comments> <pubDate>Mon, 14 Jan 2008 17:11:37 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[BEA]]></category> <category><![CDATA[Flash]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Geronimo]]></category> <category><![CDATA[IBM]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Agilité 3 bonnes résolutions pour cette nouvelle année Top 5 developer benefits of agile development RIA BEA Workshop et Flex Builder en bundle Google sait indexer le contenu Flash Le coin de la technique Rapide présentation de Hermes JMS Console Slice your database, OpenJPA [...]]]></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>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/#resolutions">3 bonnes résolutions pour cette nouvelle année</a></li><li><a
href="http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/#benefitsOfAgile">Top 5 developer benefits of agile development</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/#FlexBuilder">BEA Workshop et Flex Builder en bundle</a></li><li><a
href="http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/#GoogleFlash">Google sait indexer le contenu Flash</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/#HermesJMSConsole">Rapide présentation de Hermes JMS Console</a></li><li><a
href="http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/#OpenJPA">Slice your database, OpenJPA</a></li><li><a
href="http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/#Geronimo">Polémique sur l&#8217;avenir de Geronimo. IBM abandonne-t-il le projet ?</a></li><li><a
href="http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/#GarbageCollection">Présentation de certains algorithmes de garbage collection de la JVM de Sun</a></li></ul><hr/><h3>Agilité</h3><h4><a
name="resolutions"></a><a
href="http://kw-agiledevelopment.blogspot.com/2008/01/3-new-years-resolutions-for-agile-team.html">3 bonnes résolutions pour cette nouvelle année</a></h4><p>Un agiliste propose des bonnes résolutions pour les équipes agiles. Peut-être que vos bonnes résolutions de cette année devraient déjà être de passer aux méthodes agiles &#8230;</p><h4><a
name="benefitsOfAgile"></a><a
href="http://rorblog.techcfl.com/2008/01/03/top-5-developer-benefits-of-agile-development/">Top 5 developer benefits of agile development</a></h4><p>Cet article présente les 5 principaux bénéfices des développements agiles sur les équipes de développements :</p><ul><li>Un lien plus étroit avec les clients : l&#8217;équipe est en contact direct avec les clients et de ce fait, la qualité du produit mis en place est plus en accord avec les attentes des clients.</li><li>Une équipe plus autonome : c&#8217;est à l&#8217;équipe de décider comment réaliser le sprint. Le but est de faire confiance aux équipes de développement et de leur donner plus de responsabilités.</li><li>Laisser l&#8217;équipe prendre des décisions : lorsque des problèmes trop complexes se présentent, il est préférable de laisser les personnes plus à même de comprendre les impacts d&#8217;une évolution ou d&#8217;un changement prendre les décisions.</li><li>Améliorer la participation de l&#8217;équipe : favoriser la constitution de petites équipes (7 personnes environ) permet aux différents membres de participer.</li><li>Des développeurs plus productifs : la mise en place des méthodes agiles permet d&#8217;avoir des développeurs plus épanouis dans leur travail, car ceux-ci sont plus valorisés.</li></ul><p>Pour finir, les méthodes agiles entraînent certains changements et entre autre, dans le cas de cet article, la confiance envers les équipes de développements doit être plus grande. En conclusion de ces méthodes agiles, il en résulte que les clients sont mieux satisfaits, et avec un produit de qualité.</p><h3>RIA</h3><h4><a
name="FlexBuilder"></a>BEA Workshop et Flex Builder en bundle</h4><p>Nous apprenons dans <a
href="http://dev2dev.bea.com/blog/phumphrey/archive/2008/01/workshop_and_fl_1.html">cet article</a>que BEA propose sur <a
href="http://www.bea.com/flex/">son site</a> un bundle spécial comprenant son IDE Workshop et l&#8217;IDE Flex Builder d&#8217;Adobe. Aucune information en revanche le support apporter par BEA sur l&#8217;IDE ou sur la technologie Flex.<br
/> <a
href="http://www.adobe.com/fr/products/flex/">Flex</a> semble être adopté par certains éditeurs du monde Java/J2EE, Oracle en Novembre dernier lors de son &laquo;&nbsp;Oracle OpenWorld&nbsp;&raquo; avait déjà <a
href="http://www.jamesward.org/wordpress/2007/11/12/oracle-chooses-flex-part-1/">présenté plusieurs utilisations maison de Flex</a>.</p><h4><a
name="GoogleFlash"></a>Google sait indexer le contenu Flash</h4><p>Ce n&#8217;est pas un fait très connu, mais oui Google sait indexer les fichiers Flash! Une recherche sur Google sur le type de fichier &laquo;&nbsp;swf&nbsp;&raquo; permet de s&#8217;en assurer: <a
href="http://www.google.fr/search?q=filetype%3Aswf">près de 23 millions de fichiers indexés</a>. En revanche, Google n&#8217;indexe que le contenu statique, en &laquo;&nbsp;dur&nbsp;&raquo; dans le code. Donc pas d&#8217;indexation pour les boutiques en ligne développées en Flex&#8230; Mais de nouvelles possibilités se profilent à l&#8217;horizon, d&#8217;après <a
href="http://blogs.cnet.com/8301-13530_1-9844989-28.html">cet article sur le blog CNET</a>, Google utilise désormais le <a
href="http://www.adobe.com/licensing/developer/search/faq/">Search Engine SDK d&#8217;Adobe</a> pour parser les fichiers Flash. Ce qui signifie deux choses:</p><ul><li>les développeurs vont pouvoir utiliser le Search Engine SDK pour optimiser le référencement de leurs fichiers Flash</li><li>pour peu qu&#8217;Adobe mette à jour son outil, on peut espérer dans un futur proche avoir la possibilité de référencer des applications Flex sans avoir à recourir à des techniques un peu barbares (copie statique HTML du contenu de l&#8217;application Flex par exemple&#8230;)</li></ul><h3>Le coin de la technique</h3><h4><a
name="HermesJMSConsole"></a>Rapide présentation de Hermes JMS Console</h4><p>Sur le blog Dev2Dev de BEA, on peut actuellement trouver une <a
href="http://dev2dev.bea.com/blog/jbayer/archive/2008/01/hermes_jms_open.html">rapide présentation</a> de Hermes JMS Console. Cette petite console est bien pratique pour explorer des files JMS et devrait faire partie de la trousse de base des développeurs. Pour la tester, c&#8217;est <a
href="http://hermesjms.com/confluence/display/HJMS/Home">ici</a> que ça se passe.</p><h4><a
name="OpenJPA"></a>Slice your database, OpenJPA</h4><p>Pinaki Poddar, employé BEA et committer sur le projet <a
href="http://openjpa.apache.org/">Apache OpenJPA</a> <a
href="http://www.theserverside.com/news/thread.tss?thread_id=48000">présente Slice</a> [1] , une extension d&#8217;OpenJPA qui permet un partitionnement horizontal multi-instances des bases de données (aka <a
href="http://www.highscalability.com/unorthodox-approach-database-design-coming-shard">database sharding</a>).</p><p>Si Slice est fonctionnellement un concurrent direct d&#8217;<a
href="http://shards.hibernate.org/">Hibernate Shards</a>, ce n&#8217;est encore qu&#8217;un &#8216;proof-of-concept&#8217; développé par une seule personne dans un sous projet de l&#8217;<a
href="http://people.apache.org/%7Eppoddar/fluid/site/welcome.html">Apache Lab Fluid</a> (&laquo;&nbsp;JPA for Service Data Object&nbsp;&raquo;).<br
/> Nous sommes très loin d&#8217;une version release (les <a
href="http://labs.apache.org/bylaws.html">règles des Apache Labs</a> stipulent qu&#8217;un lab ne peut pas faire de release) et on regrettera que Slice n&#8217;ait pas été développé en tant que sous-projet d&#8217;OpenJPA pour lui assurer un avenir plus certain.</p><p>Pour ceux qui espèrent voir OpenJPA s&#8217;étoffer pour concurrencer Hibernate, il faudra hélas patienter.</p><p>Nous en profitons pour émettre un voeu pour 2008 : l&#8217;intégration d&#8217;OpenJPA au moteur de recherche <a
href="http://lucene.apache.org/">Lucene</a> pour rivaliser avec <a
href="http://search.hibernate.org/">Hibernate Search</a> ; ce besoin est sûrement moins &#8216;hype&#8217; que la &#8216;database sharding&#8217; mais beaucoup proche des réalités de nos projets d&#8217;informatique de gestion.</p><p>[1] Ressources complémentaire sur BEA Dev2dev Blog : Slice : <a
href="http://dev2dev.bea.com/blog/pinaki.poddar/archive/2007/12/slice_openjpa_f.html">OpenJPA for Distributed databases part I </a>and <a
href="http://dev2dev.bea.com/blog/pinaki.poddar/archive/2008/01/slice_openjpa_f_1.html">Part II</a>.</p><h4><a
name="Geronimo"></a>Polémique sur l&#8217;avenir de Geronimo. IBM abandonne-t-il le projet ?</h4><p>The Server Side (TSS) commence l&#8217;année 2008 avec la très belle polémique <a
href="http://www.theserverside.com/news/thread.tss?thread_id=48035">Geronimo: Are its days numbered ?</a>. Le résultat est là. Plus de 50 commentaires souvent acerbes, un grande séance de &#8216;websphere bashing&#8217; toujours aussi peu argumentée ; de la vraie polémique The Server Side <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><p>Après s&#8217;être bien amusé avec le sensationnalisme de TSS, revenons sur les faits.</p><p>Le serveur J2EE Open Source Apache Geronimo a été lancé en 2003, époque à laquelle le serveur open source JBoss faisait frémir les éditeurs commerciaux qui voyaient en lui un concurrent très menaçant et d&#8217;un type nouveau auquel il n&#8217;avaient pas l&#8217;habitude d&#8217;être confronté.</p><p>A l&#8217;époque, les branches système d&#8217;exploitation et environnement de développement d&#8217;IBM avaient déjà adressé des concurrents open source (Linux et Sun NetBeans) en promouvant des alternatives elles aussi open source (Linux et Eclipse). Cette approche de type &laquo;&nbsp;quitte à ce que quelqu&#8217;un scie la branche sur laquelle je suis assis, autant que ce soit moi pour que j&#8217;anticipe mieux&nbsp;&raquo; a permis à IBM de très bien se placer sur Linux et de devenir l&#8217;acteur clef de la gouvernance du socle de développement aujourd&#8217;hui quasi-universel qu&#8217;est Eclipse.</p><p>IBM a <a
href="http://www.theserverside.com/news/thread.tss?thread_id=33830">racheté en 2005 GlueCode</a>, la société fondatrice de Geronimo, et on peut voir dans cette stratégie des similarités avec la gestion par Big Blue des enjeux Linux et Eclipse.</p><p>La suite des événements est elle, en revanche, légèrement différente mais pas moins à l&#8217;avantage d&#8217;IBM :</p><ul><li>JBoss n&#8217;a pas balayé les serveurs d&#8217;applications commerciaux comme le prédisait Marc Fleury, son virulent fondateur.</li><li>JBoss, <a
href="http://www.theserverside.com/news/thread.tss?thread_id=39866">racheté par RedHat en 2006</a>, est progressivement devenu un concurrent &#8216;classique&#8217; pour les éditeurs commerciaux.</li><li>BEA, le principal concurrent d&#8217;IBM sur le marché des serveurs d&#8217;applications, connaît des rumeurs récurrentes de rachat (cf. <a
href="http://www.theserverside.com/news/thread.tss?thread_id=47211">Oracle announces bid to buy BEA</a>).</li><li>Le serveur commercial d&#8217;IBM, Websphere Application Server, connaît une croissance forte et des parts de marché très solides chez ses clients.</li><li>Les serveurs J2EE commerciaux comme open source rencontrent aujourd&#8217;hui un nouveau type de concurrence : les simples moteurs de servlet comme Tomcat (cf <a
href="http://blog.springsource.com/main/2007/12/24/is-it-a-tomcat-or-the-elephant-in-the-room/">Is it a Tomcat, or the Elephant in the Room?</a> par  Rod Johnson, fondateur de Spring Framework).</li></ul><p>JBoss et les serveurs J2EE open source ne sont plus aujourd&#8217;hui des concurrents aussi menaçant qu&#8217;ils ne l&#8217;étaient lors du rachat de Glue Code ; il n&#8217;est donc pas étonnant que l&#8217;engagement d&#8217;IBM sur Geronimo semble aujourd&#8217;hui moins intense. Il ne s&#8217;agit pas d&#8217;un abandon mais juste d&#8217;un focus moins important.</p><p>Parallèlement, fort de ses succès auprès de ses clients, IBM poursuit ses investissements massifs sur sa stack commerciale Websphere Application Server qui sert de socle à Websphere ESB et Websphere Process Server.</p><p>Qu&#8217;y a-t-il d&#8217;anormal à voir une entreprise ne pas &laquo;&nbsp;mettre tous ses oeufs dans le même panier&nbsp;&raquo; et réajuster sa stratégie en fonction du marché ?</p><h4><a
name="GarbageCollection"></a><a
href="http://chaoticjava.com/posts/parallel-and-concurrent-garbage-collectors/">Présentation de certains algorithmes de garbage collection de la JVM de Sun</a></h4><p>Il est toujours intéressant de se pencher sur le fonctionnement du garbage collector de la machine virtuelle. Il faut cependant garder en tête que l&#8217;optimisation par changement d&#8217;algorithme de garbage collection ne fait pas de miracle : l&#8217;optimisation d&#8217;une application métier passe bien généralement d&#8217;abord par l&#8217;optimisation du code en lui-même.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/01/14/revue-de-presse-xebia-39/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> </channel> </rss>
