<?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; jazoon</title> <atom:link href="http://blog.xebia.fr/tag/jazoon/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>Jazoon&#8217;10 &#8211; Jour 2</title><link>http://blog.xebia.fr/2010/06/07/jazoon10-jour-2/</link> <comments>http://blog.xebia.fr/2010/06/07/jazoon10-jour-2/#comments</comments> <pubDate>Mon, 07 Jun 2010 12:57:07 +0000</pubDate> <dc:creator>Aurélien Maury</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[jazoon]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4877</guid> <description><![CDATA[Deuxième journée de la réunion annuelle des Java-holic européens. Le programme est chargé : Total cost of ownership Unleash your processor(s) What&#8217;s new in hibernate iPhone/Ipad development from Java perspective Harnessing the power of HTML5 Web Sockets to create scalable real-time applications GPars: Parallel programming concepts for the JVM in Groovy Cloud Computing with Scala [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2010/06/jazoon_10_peluche.jpg" alt="Jazoon 2010" /></p><p>Deuxième journée de la réunion annuelle des Java-holic européens. Le programme est chargé :</p><ul><li><a
href="http://blog.xebia.fr/2010/06/07/jazoon10-jour-2/#Totalcostofownership">Total cost of ownership</a></li><li><a
href="http://blog.xebia.fr/2010/06/07/jazoon10-jour-2/#Unleashyourprocessors">Unleash your processor(s)</a></li><li><a
href="http://blog.xebia.fr/2010/06/07/jazoon10-jour-2/#Whatsnewinhibernate">What&#8217;s new in hibernate</a></li><li><a
href="http://blog.xebia.fr/2010/06/07/jazoon10-jour-2/#IphoneiPaddevfromJavaperspecti">iPhone/Ipad development from Java perspective</a></li><li><a
href="http://blog.xebia.fr/2010/06/07/jazoon10-jour-2/#HarnessingthepowerofHTMLWebSoc">Harnessing the power of HTML5 Web Sockets to create scalable real-time applications</a></li><li><a
href="http://blog.xebia.fr/2010/06/07/jazoon10-jour-2/#GParsParallelprogrammingconcep">GPars: Parallel programming concepts for the JVM in Groovy</a></li><li><a
href="http://blog.xebia.fr/2010/06/07/jazoon10-jour-2/#CloudComputingwithScalaandGrid">Cloud Computing with Scala and GridGain</a></li><li><a
href="http://blog.xebia.fr/2010/06/07/jazoon10-jour-2/#HowJavapowerslargeonlineretail">How Java powers large online retail sites</a></li></ul><p>Suivez le guide &#8230;</p><h3><a
name="Totalcostofownership"></a>Total cost of ownership</h3><p>La keynote de la seconde journée est tenue par Ken Schwaber, le co-fondateur de Scrum. Il revient sur les bénéfices à tirer de Scrum. Le message n&#8217;est pas très neuf pour la communauté des agilistes mais il est toujours bon de se rappeler pourquoi nous essayons de changer les façons de faire. Dans un style très posé, il nous expose quelques axes pour inviter les spectateurs à s&#8217;améliorer.</p><ul><li>Les gens ne sont pas des ressources</li><li>Il est important de définir la notion de tâche &laquo;&nbsp;terminé&nbsp;&raquo; pour chaque projet (<em>Definition of Done</em>)</li></ul><p>Si votre définition de <em>Done</em> laisse de côté des points importants comme l&#8217;écriture de tests ou l&#8217;intégration aux autres composants, l&#8217;équipe accumule rapidement une grande quantité de tâches non réellement finies. Cette dette devra être prise en compte en mettant en place des sprints dédiés à la stabilisation. Cette solution est bien souvent beaucoup plus coûteuse que de correctement définir et de respecter la <code>definition of done</code> au fil des développements.</p><p>Il annonce également le lancement d&#8217;une formation de 5 jours spécialement adaptée aux développeurs destinés à travailler en équipe Scrum : <em>Professional Scrum Developper Program</em>.</p><h3><a
name="Unleashyourprocessors"></a>Unleash your processor(s)</h3><p><a
href="http://www.jroller.com/vaclav/" title="Vclav Pech" >Václav Pech</a> nous fait ensuite une présentation sur différents patterns de programmation concurrente. Selon lui, pratiquement aucune application ne profite des architectures multicore et celles qui en profitent ne le font que par hasard.<br
/> Václav présente ensuite un ensemble de patterns notamment :</p><ul><li><strong>Parallel Arrays</strong> qui permet d&#8217;effectuer des opérations comme du filtrage ou du calcul sur des éléments stockés dans une collection en parallèle. Tout ce qu&#8217;il y a à faire, c&#8217;est de définir les opérations qui seront appliquées à la collection. Ceci de facon simple sans manipuler de thread, ni gérer de moniteur transactionnel.</li></ul><pre class="brush: java; title: ; notranslate">
//create a thread pool and store the collection in a Parallel Array
final ForkJoinPool pool = new ForkJoinPool(2);
final ParallelArray people = ParallelArray.createFromCopy(friends, pool);
//Create a predicate for filtering
final Ops.Predicate aWoman = new Ops.Predicate() {
   public boolean op(final Person friend) {
      return !friend.isMale();
   }
};
//Create an operation to retrieve the name from an element
final Ops.Op retrieveName = new Ops.Op() {
   public Object op(final Person friend) {
      return friend.getName();
   }
};
//Perform filtering and mapping concurrently on all elements of the collection
final ParallelArray namesOfWomen =
   people.withFilter(aWoman).withMapping(retrieveName).all();
System.out.println(&quot;namesOfWomen = &quot; + namesOfWomen);
</pre><ul><li><strong>Fork and join</strong> A partir du JDK 7, une nouvelle API du package java.util.concurrency va permettre de définir des tâches et de gérer leur exécution. Le principe de base est de diviser les données à traiter en petites unités de travail et de traiter ces unités en parallèle. Les résultats obtenus en retour seront ensuite agrégés.</li></ul><p>Václav présente ensuite d&#8217;autres patterns tels que le <code>dataflow concurrency</code>, les <code>actors</code>, les <code>agents</code>, le principe de <code>Shared Mutable State</code> et de <code>Persistent data structures</code>. Ces patterns seront présentés plus en détail dans un futur article dédié à la programmation concurrente.</p><h3><a
name="Whatsnewinhibernate"></a>What&#8217;s new in hibernate</h3><p>Emmanuel Bernard présente les principales évolutions intégrées dans la dernière version d&#8217;Hibernate. Le but principal de la version 3.5 était d&#8217;implémenter la spécification JPA2. Il revient sur quelques fonctionnalités de la spécification. Notamment :</p><ul><li><strong>Packaging</strong></li></ul><p>Hibernate Annotations et Hibernate Entity Manager sont maintenant dans le même projet que Hibernate Core. Les releases sont maintenant toutes synchronisées, ce qui met fin à la complexe matrice de compatibilité. Les releases du projet d&#8217;audit et de gestion de version Envers seront également synchronisées avec le core.</p><ul><li><strong>Application de formule</strong></li></ul><p>Il est désormais possible d&#8217;appliquer des fonctions avant la lecture ou l&#8217;écriture dans une colonne par la base de données. Un des cas possibles peut être l&#8217;utilisation des fonctions d&#8217;encryption native d&#8217;un SGBD.</p><pre class="brush: xml; title: ; notranslate">
&lt;property name=&quot;password&quot;&gt;
   &lt;column name=&quot;PASSWORD&quot; not-null=&quot;true&quot;
      write=&quot;encrypt(?)&quot;
      read=&quot;decrypt(PASSWORD)&quot;/&gt;
&lt;/property&gt;
</pre><ul><li><strong>Fetch profile</strong></li></ul><p>Pour éviter de générer un trop grand nombre de requêtes, il est possible de charger un arbre d&#8217;entités lors du chargement par clé primaire. On paramètre alors dans le fichier de mapping la stratégie de chargement.</p><pre class="brush: xml; title: ; notranslate">
&lt;hibernate-mapping&gt;
   &lt;class name=&quot;Client&quot;&gt;
      &lt;set name=&quot;factures&quot; inverse=&quot;true&quot; fetch=&quot;join&quot;&gt;
         &lt;key column=&quot;client_id&quot;/&gt;
         &lt;one-to-many class=&quot;Facture&quot;/&gt;
      &lt;/set&gt;
   &lt;/class&gt;
&lt;/hibernate-mapping&gt;
</pre><p>La stratégie sera statique et appliquée que l&#8217;on charge les entités par la méthode <code>get</code>, les <code>Criteria</code> ou le chargement implicite durant la navigation à travers une association. Une des solutions était de créer un ensemble de méthodes, du type <code>loadCustomer</code>, <code>loadCustomerWithAddress</code>, <code>loadCustomerWithOrders</code>, et d&#8217;utiliser une requête HQL pour dynamiquement appliquer une stratégie de chargement (en HQL : <code>inner join fetch</code>). Mais ceci ne permet pas de définir des stratégies dynamiques pour les chargements implicites.</p><p>Hibernate propose maintenant une manière plus simple de gérer les stratégies de chargements. On peut désormais définir dans le fichier de mapping plusieurs stratégies pour une association.</p><pre class="brush: xml; title: ; notranslate">
&lt;hibernate-mapping&gt;
   &lt;class name=&quot;Client&quot;&gt;
      ...
      &lt;fetch-profile name=&quot;clientAvecFacture&quot;&gt;
         &lt;fetch association=&quot;factures&quot; style=&quot;join&quot;/&gt;
      &lt;/fetch-profile&gt;
   &lt;/class&gt;
&lt;/hibernate-mapping&gt;
</pre><p>et définir la stratégie à utiliser pour chacune des sessions avec la méthode suivante :</p><pre class="brush: java; title: ; notranslate">
Session session = ...;
session.enableFetchProfile( &quot;clientAvecFacture&quot; );
Client client = (Client) session.get( Client.class, clientId );
</pre><h3><a
name="IphoneiPaddevfromJavaperspecti"></a>iPhone/iPad dev from Java perspective</h3><p><a
href="http://twitter.com/ognenivanovski" title="Ognen Ivanovski" >Ognen Ivanovski</a>, de la société Netcetera, nous présente son retour d&#8217;expérience sur les développements pour l&#8217;iPhone (et donc pour l&#8217;iPad). Étant développeur Java à la base, il nous expose les écueils auxquels risquent de se heurter les développeurs Java en arrivant sur cette plateforme, ainsi que les points importants à garder en tête pour le design.</p><p>N&#8217;espérez donc pas voir apparaitre une méthode magique pour développer en Java pour l&#8217;iPhone. Comme Ognen l&#8217;a rappelé, Apple n&#8217;autorise dans AppStore que les applications <em>rédigées</em> en Objective-C. Il commence par un petit rappel sur l&#8217;environnement de développement sanctifié par Apple, à savoir : XCode, Interface Builder, iPhone Simulator et Instruments (pour le profiling).</p><p>Voici, d&#8217;après lui, les facteurs clés à garder en tête lors d&#8217;un développement pour cette plateforme :</p><ul><li><strong>Le hardware est limité, en mémoire comme en CPU :</strong> Cependant la performance est cruciale. Il faut donc designer ses applications pour la vitesse et les tester sur de vrais appareils. L&#8217;émulateur fourni dans le kit de développement ne rend pas compte des performances réelles. Pensez donc à gérer votre mémoire: ici, pas de Garbage Collector. Et si par hasard le SDK ne vous fourni pas ce que vous voulez, vous pouvez toujours embarquer des librairies en C pur.</li><li><strong>La résolution est différente :</strong> Là encore, un test sur un device réel ne saurait être remplacé par un test sur l&#8217;émulateur, des changements subtils peuvent impacter fortement l&#8217;effet obtenu, à cause de la taille et de la résolution de l&#8217;écran.</li><li><strong>Le mode d&#8217;utilisation change :</strong> En développement web on suppose l&#8217;utilisateur assis avec clavier, souris, etc. Mais en mobile, il sera plutôt en déplacement, ou dans un canapé avec l&#8217;iPad. Ceci doit être pris en compte dans le design. L&#8217;interface multitouch, la taille des doigts, etc., tous ces paramètres doivent être exploités intelligemment.</li><li><strong>Les barrières posées par Apple :</strong> Le <a
href="http://www.eff.org/files/20100302_iphone_dev_agr.pdf" title="iPhone Developer License Agreement" >iPhone Developer License Agreement</a> est fluctuant et contraignant. Il existe une constante inquiétude de la censure quand on développe. La médaille de ce revers est que, si votre application passe la censure, les utilisateurs feront confiance à l&#8217;AppStore et n&#8217;auront aucune réticence à l&#8217;installer sur leur iPhone/iPad.</li><li><strong>Chaque application est partie intégrante de l&#8217;appareil :</strong> D&#8217;après les retours d &#8216;Apple, les utilisateurs d&#8217;iPhones ne se servent que marginalement de la fonction de <em>recherche</em>. Ils trouvent une application qui leur récolte et présente les données d&#8217;un domaine particulier. Il faut donc penser une application comme partie intégrante du device physique et travailler au mieux son intégration.</li></ul><p>Il enchaîne sur un rapide exposé des API disponibles, puis met en garde son auditoire sur les méfaits du <em>hype</em>. En effet, le positionnement marketing peut amener à se lancer dans un développement iPhone mais il faut faire les choses bien. Une application médiocre, même si elle offre une visibilité sur l&#8217;AppStore, sera mal notée par les utilisateurs et occasionnera donc une perte d&#8217;image.</p><p>Une présentation avec très peu de technique mais qui donne une bonne idée des contraintes à considérer pour ne pas perdre son temps lors d&#8217;un premier développement.</p><h3><a
name="HarnessingthepowerofHTMLWebSoc"></a>Harnessing the power of HTML5 Web Sockets to create scalable real-time applications</h3><p>Peter Lubbers, de chez Kaazing Corporation, nous présente les avantages à tirer d&#8217;une communication full-duplex entre navigateurs et serveurs web. Il commence par rappeler les besoins de réactivité des pages web et les problèmes des solutions actuelles :</p><ul><li><strong>polling :</strong> Basé sur des requêtes AJAX périodiques pour récupérer les données. Le martelage du serveur par des requêtes AJAX en provenance de tous les clients connectés pose des problèmes de charge et d&#8217;occupation de la bande passante (chaque requête arrive avec ses headers HTTP). De plus cette solution ne fait que fournir du <em>presque temps réel</em> et scale très mal.</li><li><strong>long polling :</strong> Technique des architectures Comet. Cela permet d&#8217;éviter de marteler le réseau pendant les périodes où il n&#8217;y a pas de données à fournir, mais dès que le flux est continu, la fréquence des polling augmente et revient au même que le polling classique.</li><li><strong>streaming :</strong> fonctionne bien mais la conservation d&#8217;une connexion ouverte trop longtemps peut poser des problèmes avec les proxies et firewall sur la route.</li></ul><p>Peter enchaîne sur une démonstration de Comet et de son occupation du réseau en capturant les trames réseau avec WireShark, et nous présente enfin la solution d&#8217;avenir : les WebSockets de HTML5.</p><p>Nous avions parlé il y a quelques temps des <a
href="http://blog.xebia.fr/2010/03/18/html5-les-api-javascript/#WebSocket" title="API Javascripts qui y sont lies" >API Javascripts qui y sont liées</a>. Un autre point mis en avant est qu&#8217;une fois établi, les communications passant par une WebSocket se passent de header HTTP (871 octet en moyenne) et sont remplacées par 2 octets qui encadrent chaque message, diminuant d&#8217;autant l&#8217;occupation de la bande passante.</p><p>Il détaille un peu l&#8217;aspect sécurité de la chose, les WebSockets sont également disponibles en version sécurisé, basé sur TLS (comme HTTPS) et s&#8217;établissent simplement par une poignée de main (<a
href="http://en.wikipedia.org/wiki/Handshaking" title="Handshaking" >Handshaking</a>) sur HTTP. Actuellement les WebSockets du coté browser ne sont supportés que par Chrome 4.0+, et les <em>nightly builds</em> de WebKit. Opera et Firefox promettent de le supporter bientôt.</p><p>Il termine par la démonstration d&#8217;une application de Poker, avec WebSockets liés à un <a
href="http://www.kaazing.org" title="Kaazing Gateway" >Kaazing Gateway</a> et nous montre les trames réseau.</p><p>On peut regretter tout de même que Peter ne fasse aucun autre commentaire sur la partie serveur que d&#8217;évoquer le Kaazing WebSockets Gateway. A aucun moment la spécification Servlet 3.0, ni GlassFish, ni Jetty, ne sont évoqués.</p><h3><a
name="GParsParallelprogrammingconcep"></a>GPars: Parallel programming concepts for the JVM in Groovy</h3><p>Dans une session presque purement technique, <a
href="http://twitter.com/mittie" title="Dierk Knig" >Dierk König</a> nous présente la librairie GPars, destinée à apporter la facilité à la gestion de la concurrence dans Groovy. Il commence par un rappel reprenant les concepts déjà exposés par Václav Pech dans sa session du matin, puis enchaîne sur une session de <em>live coding</em> pour démontrer la simplicité d&#8217;usage de la librairie.</p><p>Parmi les exemples codés devant nos yeux ébahis, on trouve notamment :</p><ul><li>la <a
href="http://gpars.codehaus.org/Parallelizer" title="paralllisation doprations" >parallélisation d&#8217;opérations</a> sur des collections</li><li>les <a
href="http://gpars.codehaus.org/Asynchronizer" title="oprations asynchrones" >opérations asynchrones</a> avec pool de thread</li><li>les <a
href="http://gpars.codehaus.org/Actor" title="Actors" >Actors</a> inspiré de Scala</li><li>les <a
href="http://gpars.codehaus.org/Agent" title="Agents" >Agents</a> inspirés de Clojure, destinés à protéger des ressources non <em>thread-safe</em></li></ul><p>Il est pratiquement impossible de coucher un live-coding dans un article, mais la vidéo devrait sortir en même temps que les autres tournées dans la salle 5 de Jazoon. Vous les retrouverez dans la revue de presse, dès leur sortie.</p><p>A noter qu&#8217;un problème avec son IDE favori l&#8217;a forcé à utiliser uniquement la Groovy Console, exercice mené donc sans filet, et avec brio.</p><h3><a
name="CloudComputingwithScalaandGrid"></a>Cloud Computing with Scala and GridGain</h3><p>Nikita Ivanov, de chez GridGain Technologies, vient nous exposer les travaux de sa société autour de Scala. Il commence par nous rappeler le contexte en revenant de façon synthétique sur certaines définitions :</p><ul><li><strong>Grid :</strong> 2 ordinateurs ou plus fonctionnant en parallèle sur des parties distinctes d&#8217;une tâche commune</li><li><strong>Grid Computing :</strong> Grid de calcul et data Grid fonctionnant de concert</li><li><strong>Cloud :</strong> Virtualisation de Data Center</li><li><strong>Cloud Computing :</strong> Cloud et Grid Computing</li></ul><p>GridGain Technologies a choisi d&#8217;adopter un langage plus simple pour exploiter leur architecture de Cloud Computing. Nikita nous explique que Groovy a été écarté à cause de ses performances, que JRuby a été écarté pour des problèmes d&#8217;intégrations et que Scala remplissait tous les critères de choix de GridGain :</p><ul><li>Scalable</li><li>Post fonctionnel</li><li>Performances égales à Java</li><li>Statiquement typé</li><li>Pleinement compatible Java</li></ul><p>Ils ont donc développé un DSL nommé <a
href="http://www.jroller.com/nivanov/entry/introducing_scalar_scala_based_dsl" title="ScalaR" >ScalaR</a>, qui permet de créer des programmes à lancer dans un Cloud GridGain en quelques lignes. S&#8217;en suit une nouvelle session de <em>live coding</em>, comparant l&#8217;approche traditionnelle de l&#8217;API GridGain, et l&#8217;utilisation de ScalaR. On devine assez bien quelle version a remporté la manche. DSL intéressant, dommage que le manque de temps a forcé Nikita à écourter un peu la démonstration.</p><h3><a
name="HowJavapowerslargeonlineretail"></a>How Java powers large online retail sites</h3><p>Notre journée se conclut par une présentation de Robert Brazile, CTO chez ATG, qui rend hommage à l&#8217;apport des technologies Java au monde du commerce en ligne. Il revient sur la place grandissante de la vente sur internet dans l&#8217;ensemble des ventes sur le territoire américain, puis nous expose les problématiques générales des sociétés de vente :</p><ul><li><strong>haute disponibilité :</strong> les sites de vente en ligne doivent rester disponibles malgré les pics d&#8217;affluence. Les travaux sur le load balancing ont beaucoup apporté.</li><li><strong>la vitesse avant tout :</strong> bien plus que le design graphique, c&#8217;est la performance d&#8217;une application qui est cruciale. Un peu trop d&#8217;attente, trop de clic à faire, et la vente est perdu.</li><li><strong>la couche de présentation séparée :</strong> pour pouvoir déléguer les manipulations de présentation et de gestion des backend à des équipes séparées. Cela évite que les développeurs soient pris par des tâches &laquo;&nbsp;subalternes&nbsp;&raquo; alors qu&#8217;ils doivent réfléchir à des problèmes complexes comme la charge ou la récupération des données.</li><li><strong>éviter de payer l&#8217;infrastructure nécessaire aux pics de charge pendant les creux :</strong> grâce aux avancées dans le Cloud computing, les vendeurs en ligne ont pu faire beaucoup d&#8217;économies.</li></ul><p>Robert a multiplié les anecdotes sur les ratés de l&#8217;automatisation, comme ce moteur de recherche qui a mal réglé son moteur de suggestion :</p><p>search for : abortion => Did you mean <em>adoption</em> ?<br
/> <em>(trad. : rechercher : avortement => Vous voulez dire adoption ?)</em></p><p>Son expérience encyclopédique du monde des systèmes d&#8217;informations pour les sites de vente en ligne lui a servi à illustrer à quel point le langage Java a permis la percée des techniques de vente en lignes modernes. Il prévoit d&#8217;ailleurs que cela continue dans les années à venir avec certains sujets qui animent déjà la communauté Java :</p><ul><li><strong>Virtualisation et Cloud Computing :</strong> pour toujours plus de scalabilité</li><li><strong>Bases de données NoSQL :</strong> pour un meilleur accès aux données, chaque archi répondant à des besoins spécifiques</li><li><strong>Scripting :</strong> PHP, Ruby, Groovy et autres, pour des modifications rapides sur les sites publics</li><li><strong>Frameworks :</strong> Rails, Grails, Lift et autres, pour concevoir et déployer rapidement des sites vitrines à faible durée de vie</li><li><strong>Parallélisme et concurence :</strong> Pour exploiter de façon efficace les architecture multi-core et le Cloud</li></ul><p>Java est mature donc, mais certainement pas proche de la retraite.</p><h3><a
name="Epilogue"></a>Epilogue</h3><p>Nous avons dû choisir entre les sessions Jazoon Rookie et notre avion. Vous devinez sûrement ce que nous avons décidé <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Dans l&#8217;ensemble, Jazoon est toujours une conférence très intéressante, les orateurs sont de très bon niveau et très accessibles pour discuter en dehors des présentations.</p><p>Un grand merci aux organisateurs et aux orateurs. Nous attendons avec impatience les vidéos.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/06/07/jazoon10-jour-2/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Jazoon&#8217;10 &#8211; Jour 1</title><link>http://blog.xebia.fr/2010/06/04/jazoon10-jour-1/</link> <comments>http://blog.xebia.fr/2010/06/04/jazoon10-jour-1/#comments</comments> <pubDate>Fri, 04 Jun 2010 08:07:06 +0000</pubDate> <dc:creator>Aurélien Maury</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[jazoon]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4860</guid> <description><![CDATA[Comme nous vous l&#8217;avions annoncé, Xebia était présent aux deux premières journées de la conférence annuelle Jazoon. Des soucis d&#8217;ubiquité nous ont évidemment empêché de suivre toutes les sessions, tenues dans 4 salles différentes en même temps. Nous avons dû faire des choix, parfois difficiles, pour vous relater le meilleur de cet évènement. Premières observations [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2010/06/welcome_jazoon_10.jpg" alt="Jazoon 2010" /><br
/> Comme nous vous l&#8217;avions annoncé, Xebia était présent aux deux premières journées de la conférence annuelle Jazoon. Des soucis d&#8217;ubiquité nous ont évidemment empêché de suivre toutes les sessions, tenues dans 4 salles différentes en même temps. Nous avons dû faire des choix, parfois difficiles, pour vous relater le meilleur de cet évènement.</p><p>Premières observations :</p><ul><li>légère baisse d&#8217;affluence par rapport à l&#8217;année dernière,</li><li>forte présence de JavaFX avec pas moins de six sessions, ainsi que d&#8217;OSGi,</li><li>très bonne ambiance et organisation,</li><li>excellents speakers, merci à eux.</li></ul><p>Nous allons vous rendre compte des sessions suivantes :</p><ul><li><a
href="http://blog.xebia.fr/2010/06/04/jazoon10-jour-1/#JavaSEandJavaFXTheRoadAhead">Java SE and JavaFX: The Road Ahead</a></li><li><a
href="http://blog.xebia.fr/2010/06/04/jazoon10-jour-1/#ClientServerwithJavaandFlex">Client / Server 2.0 with Java and Flex</a></li><li><a
href="http://blog.xebia.fr/2010/06/04/jazoon10-jour-1/#Frameworksandsecurityhowtheyki">Frameworks and security : how they kill your security scanning</a></li><li><a
href="http://blog.xebia.fr/2010/06/04/jazoon10-jour-1/#Objectofvalue">Object of value</a></li><li><a
href="http://blog.xebia.fr/2010/06/04/jazoon10-jour-1/#Constructiontechniquesfordomai">Construction techniques for domain specific languages</a></li><li><a
href="http://blog.xebia.fr/2010/06/04/jazoon10-jour-1/#Servlet">Servlet 3.0</a></li><li><a
href="http://blog.xebia.fr/2010/06/04/jazoon10-jour-1/#faitsquetoutprogrammeurdevrait">97 things every programmer should know</a></li></ul><h3><a
name="JavaSEandJavaFXTheRoadAhead"></a>Java SE and JavaFX: The Road Ahead</h3><p>Jazoon 2010 commence par une keynote de Danny Coward sur l&#8217;évolution du langage java. Danny revient sur l&#8217;évolution de Java depuis le début du langage (Java a 15 ans depuis le 24 mai). Il y a désormais plus de 7 millions de développeurs Java à travers la planète, près d&#8217;un milliard de JVM déployées, et plus de 2 milliards de téléphones mobiles avec une JME.</p><p>Il nous montre également une <a
href="http://www.youtube.com/watch?v=Ahg8OBYixL0" title="vido" >vidéo</a> de 1995, avec James Gosling présentant un prototype de PDA avec des interactions proches des smartphones récents, notamment la navigation dans les menus, l&#8217;écran tactile, un véritable iPhone préhistorique.</p><p>Danny insiste fortement sur l&#8217;effort de modularisation de la JVM, illustré par le projet <a
href="http://blogs.sun.com/theplanetarium/entry/project_jigsaw_modularizing_jdk_7" title="Jigsaw" >Jigsaw</a>, pour améliorer la taille de la JVM et sa rapidité de démarrage. Il nous parle également de la gestion du parallélisme avec le récent travail sur le garbage collector G1, mais aussi de l&#8217;API fork/join et ParallelArray sur laquelle nous reviendrons en détails.</p><p>Danny nous parle également du grand nombre de langages qui tournent sur la JVM : près de 200. Il met en lumière le projet <a
href="http://openjdk.java.net/projects/mlvm/" title="Da Vinci Machine" >Da Vinci Machine</a>, destiné à fournir des optimisations bas niveau aux langages tiers pour obtenir des performances proches de Java sur tous les langages tournant sur la JVM.</p><p>Puis viennent toutes les nouveautés du langage attendues prochainement :</p><ul><li>nouvelles annotations,</li><li>amélioration de l&#8217;<a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000009.html" title="infrence de type" >inférence de type</a> pour les Generics (mieux connu sous le nom de &#8216;diamond operator&#8217;)</li><li>possibilité de catcher plusieurs exceptions à la fois,</li><li>supports des chaines de caractères pour les commandes switch/case,</li><li>support des closures à travers le projet <a
href="http://openjdk.java.net/projects/lambda/" title="Lambda" >Lambda</a>.</li></ul><p>Danny consacre également beaucoup de temps pour nous parler de <a
href="http://javafx.com/" title="JavaFX" >JavaFX</a>. Il a tenu à rappeler que JavaFX est bien vivant, la preuve en est qu&#8217;il y a eu 4 releases en 18 mois. Parmi les nouveautés de la version 1.3 on peut noter :</p><ul><li>l&#8217;arrivée de nouveaux composants graphiques plus scalables,</li><li>la nouvelle stack graphique nommée Prism,</li><li>des optimisations : il annonce un démarrage 2 à 3 fois plus rapide sur un Java SE 6 update 18,</li><li>JavaFX TV : annoncé comme nouveauté mais déjà présent dans la version 1.2, avec son émulateur de TV.</li></ul><p>Et pour finir cette keynote de lancement, il nous fait la démonstration d&#8217;une partie du site des <a
href="http://www.vancouver2010.com/olympic-medals/geo-view/" title="JO de Vancouver 2010" >JO de Vancouver 2010</a>, écrite avec JavaFX.</p><p>Si l&#8217;on se replonge dans les sessions de l&#8217;année dernière, il est troublant de voir que les sujets abordés dans cette keynote sont exactement les mêmes que ceux abordés par James Gosling et Danny Coward l&#8217;an passé, au même endroit (si l&#8217;on omet l&#8217;omniprésence de JEE6 en 2009). Si nous étions taquins, on pourrait presque dire que cette keynote d&#8217;ouverture est un copier / coller de celle de l&#8217;année dernière. Et si nous étions  vraiment irrévérencieux, nous dirions que depuis un an, Sun / Oracle n&#8217;a pas grand chose à annoncer concernant Java.</p><h3><a
name="ClientServerwithJavaandFlex"></a>Client / Server 2.0 with Java and Flex</h3><p><a
href="http://www.jamesward.com/" title="James Ward" >James Ward</a> nous présente les interactions entre le monde Flex et le monde Java. James revient sur toutes les méthodes de communication, d&#8217;une jsp renvoyant du contenu en xml, en passant par les appels SOAP, jusqu&#8217;à l&#8217;utilisation des annotations fournies dans spring-blazeds.</p><p>L&#8217;annotation <code>@RemotingDestination</code> permet d&#8217;exposer automatiquement un service Java vers le monde Flex en utilisant le protocole AMF.</p><p>Il insiste également sur le coût du parsing de chacun des formats. AMF est peu coûteux en CPU et en mémoire comparé au parseur XML. Ce point peut être important dans le cadre de clients Flash sur mobile, ne possédant pas la même puissance de calcul et de mémoire qu&#8217;un desktop. Pour conclure, James nous présente Flash sur un téléphone Android.</p><h3><a
name="Frameworksandsecurityhowtheyki"></a>Frameworks and security : how they kill your security scanning</h3><p>Christian Hang, de chez Armorize Technologies, nous fait part de son point de vue sur les problèmes d&#8217;audit de sécurité posés par l&#8217;utilisation des frameworks. Il commence par un rappel assez complet sur la sécurité en général et les méthodes de détection de failles :</p><ul><li>black box testing : simulation d&#8217;attaques extérieures</li><li>white box testing : analyse statique de code pour trouver des failles potentielles (ou SCA : Static Code Analysis)</li><li>analyse dynamique : mise en place d&#8217;agents ou de moniteurs sur une application en fonctionnement pour tracer les failles</li></ul><p>Il expose rapidement les risques de détection de faux positifs et faux négatifs et leurs conséquences avant d&#8217;approfondir sur l&#8217;analyse statique de code et ses limites. C&#8217;est là qu&#8217;arrivent les frameworks et le défi lancé aux outils de SCA. En effet, la forte utilisation de fichiers configuration casse la chaine d&#8217;invocation que tentent de suivre les outils de SCA. Comme chaque framework possède ses propres normes de configuration, il est très complexe de poser une méthode générique. De plus comme les frameworks sont des librairies tierces, la chaine d&#8217;invocation va se perdre au sein d&#8217;un jar et oblige à inspecter le framework en lui-même et non l&#8217;application seule. Il nous fait la démonstration de son propos avec le déroulement d&#8217;une requête dans Struts.</p><p>Christian termine en exposant les solutions qu&#8217;il entrevoit à ces problèmes, à savoir la génération de code source &#8216;glue&#8217;, basée sur les fichiers de configuration, qui permette aux outils actuels de SCA de continuer à suivre la chaine d&#8217;invocation jusqu&#8217;au bout. Ce code &#8216;glue&#8217; serait injecté avant le passage de l&#8217;analyse de code et évidemment pas committé sur l&#8217;application.</p><p>Avec ses propositions, Christian nous ouvre de nouvelles perspectives d&#8217;améliorations pour les outils de SCA. Il y a du chemin à faire mais le gain en détection automatique de failles est potentiellement énorme.</p><h3><a
name="Objectofvalue"></a>Object of value</h3><p>Première présentation de la journée pour Kevlin Henney. Il revient sur le concept de Value Object en insistant beaucoup sur la différence fondamentale qui existe entre une Valeur et son implémentation.</p><p>L&#8217;exemple le plus parlant qu&#8217;il donne est celui d&#8217;un md5 de fichier. Pour être manipulé, nous aurons sûrement tendance à le stocker dans un <code>String</code>, mais fondamentalement, ce n&#8217;est pas une quelconque chaîne de caractères, c&#8217;est un <code>MD5</code> qu&#8217;on souhaite manipuler. Ce qui devrait se traduire par la création d&#8217;un Value Object <code>MD5</code>.</p><p>Pour un rappel sur ce concept, vous pouvez vous pencher sur <a
href="http://blog.abdennebi.com/2007/03/le-value-object.html" title="ce blog" >ce blog</a>.</p><p>Kevlin Henney nous invite à réfléchir à la meilleure façon de manipuler des Valeurs dans nos programmes et non un énorme assemblage de String et de numériques.</p><p>Nous reparlerons prochainement de ses idées sur la question.</p><h3><a
name="Constructiontechniquesfordomai"></a>Construction techniques for domain specific languages</h3><p><a
href="http://www.nealford.com/my/bio.htm" title="Neal Ford" >Neal Ford</a>, de ThoughtWorks, nous parle de l&#8217;élaboration de <a
href="http://en.wikipedia.org/wiki/Domain-specific_language" title="DSL" >DSL</a> et des outils les plus adaptés à cela. Après un rappel sur les motivations de l&#8217;écriture de DSL et la différence fondamentale entre une API et un DSL, il nous livre ses cinq clés pour l&#8217;élaboration de DSL :</p><ul><li>langage de programmation</li><li>langage naturel, proche d&#8217;un langage oral</li><li>focalisé sur un aspect particulier du domaine</li><li>expressivité limitée</li><li>ne doit pas être <a
href="http://fr.wikipedia.org/wiki/Turing-complet" title="Turingcomplet" >Turing-complet</a></li></ul><p>Il tente alors une approche des principes exposés en Java, code à l&#8217;appui. De son point de vue, il n&#8217;est pas possible de réaliser de vrais DSL en Java pur. Ce qui s&#8217;en rapproche le plus est le method chaining, qui consiste à retourner <code>this</code> à la fin de chaque méthode pour pouvoir enchainer les appels. Un bon exemple illustrant ce principe est l&#8217;API Criteria d&#8217;Hibernate :</p><pre class="brush: java; title: ; notranslate">
List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like(&quot;name&quot;, &quot;Fritz%&quot;) )
    .add( Restrictions.between(&quot;weight&quot;, minWeight, maxWeight) )
    .list();
</pre><p>Puis il passe au langage Groovy, qui lui semble bien plus adapté que Java pour ce cas de figure. Certains aspects de Groovy facilitent la tâche :</p><ul><li>le typage dynamique</li><li>les closures</li><li>2 techniques de classes ouvertes : les <a
href="http://communitymapbuilder.osgeo.org/display/GROOVY/Groovy+Categories" title="Categories" >Categories</a>, et les <a
href="http://groovy.codehaus.org/api/groovy/lang/MetaClass.html" title="MetaClasses" >MetaClasses</a></li></ul><p>Ce qui amène Neal a parler de EasyB, projet codé en Groovy pour rédiger des spécifications en <a
href="http://fr.wikipedia.org/wiki/Behavior_Driven_Development" title="BDD" >BDD</a>, de la forme :</p><pre class="brush: java; title: ; notranslate">
given &quot;an invalid zip code&quot;, {
  invalidzipcode = &quot;221o1&quot;
}
and &quot;given the zipcodevalidator is initialized&quot;, {
  zipvalidate = new ZipCodeValidator()
}
when &quot;validate is invoked with the invalid zip code&quot;, {
  value = zipvalidate.validate(invalidzipcode)
}
then &quot;the validator instance should return false&quot;, {
  value.shouldBe false
}
</pre><p>EasyB étant basé sur RSpec, un projet BDD pour Ruby, Neal enchaîne naturellement sur les avantages de ce langage pour la rédaction de DSL, à savoir :</p><ul><li>classes ouvertes</li><li>aliasing de méthodes</li><li>polishing, méthodes de nettoyage de code &#8216;presque&#8217; Ruby en &#8216;vrai&#8217; Ruby.</li></ul><p>Pour information, il est tout à fait possible de réaliser ses DSL en Ruby et de les faire exécuter en Java, grâce à <a
href="http://jruby.org/" title="JRuby" >JRuby</a>. Neal nous livre donc son choix pour les DSL : Ruby. Et il termine sa présentation en rappelant les éléments indispensables à conserver en tête lors de la rédaction de DSL :</p><ul><li>c&#8217;est un langage de programmation limité à un aspect du domaine.</li><li>construire par composition et non par élaboration : il vaut mieux faire beaucoup d&#8217;opérateurs simples qu&#8217;on composera en utilisant le DSL.</li><li>démarrer par la fin : il faut poser la syntaxe que l&#8217;on souhaite obtenir dès le début et créer le DSL de façon à respecter cette syntaxe.</li><li>évolution, pas révolution : un DSL se construit petit à petit, il ne faut pas espérer penser tous les opérateurs dès le début, les besoins apparaitront à l&#8217;usage.</li></ul><h3><a
name="Servlet"></a>Servlet 3.0</h3><p>Ravij Mordani présente la spécification Servlet 3.0, introduite dans la plateforme JEE6. Il nous présente les améliorations selon quatre axes qui reflètent le nouveau visage des Servlets.</p><h4><a
name="Facilitdedveloppement"></a>Facilité de développement</h4><p>Profite des améliorations de Java 5, comme les annotations.<br
/> On peut directement annoter une servlet plutôt que de devoir la configurer dans le fichier web.xml. Le très verbeux</p><pre class="brush: xml; title: ; notranslate">
&lt;servlet&gt;
   &lt;servlet-class&gt;com.servlet.HelloWorldServlet&lt;/servlet-class&gt;
   &lt;servlet-name&gt;HelloWorld&lt;/servlet-name&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
   &lt;servlet-name&gt;HelloWorld&lt;/servlet-name&gt;
   &lt;url-pattern&gt;/hello-world&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
</pre><p>devient donc</p><pre class="brush: java; title: ; notranslate">
@WebServlet(urlPatterns=&quot;/hello-world&quot;)
public class HelloWorldServlet extends HttpServlet
</pre><p>On notera qu&#8217;il est toujours obligatoire d&#8217;étendre <code>HttpServlet</code> et de fournir une implémentation aux méthodes <code>doGet</code>, <code>doPost</code>, etc.</p><p>De la même manière, on peut définir des <code>Filter</code> ou des <code>ContextListener</code> directement par annotations. Le fichier de configuration web.xml devient optionnel, les annotations suffisent. Si toutefois vous le voulez, vous pouvez écrire un fichier web.xml, qui surchargera alors les directives des annotations.</p><p>La configuration peut également être faite de façon programmatique, grâce à une nouvelle API, mais uniquement au chargement du contexte.</p><pre class="brush: java; title: ; notranslate">
context.addServlet(String servletName)
context.addServlet(String className)
context.addServlet(Class&lt;?&gt; servletClass)
context.addServlet(Servlet servlet)
...
</pre><h4><a
name="Pluggabilit"></a>Pluggabilité</h4><p>La notion de web-fragment fournit un moyen de partitionner le descripteur de déploiement. On peut directement fournir de la configuration dans un jar, en plaçant un fichier nommé web-fragment.xml dans META-INF. De la même manière on peut intégrer des JSP dans les jars dans le répertoire META-INF/resources/.</p><p>La notion de plug-in de container apparait également. Elle est déjà utilisée notamment par les implémentations de référence JSF (Mojora) et JAX-RS (Jersey).</p><h4><a
name="Excutionasynchrone"></a>Exécution asynchrone</h4><p>L&#8217;exécution asynchrone de servlet permet de s&#8217;affranchir du pattern <em>Thread by request</em>. Les requêtes demandant un traitement long au back-end, telles que des requêtes bases de données couteuses ou les appels à des systèmes externes de type webservice, peuvent désormais être facilement exécutées de manière asynchrone. Cela permet de rendre le thread disponible pour le traitement des autres requêtes.<br
/> Cette fonctionnalité est également très utile pour le développement de fonctionnalités poussant des données vers le client. Le thread n&#8217;est plus en permanence bloqué pour un client, mais uniquement lors de l&#8217;arrivée d&#8217;un évènement.<br
/> Pour que le mode asynchrone fonctionne, il faut que toute la chaîne de traitement soit effectivement compatible (filtres, servlets&#8230;).</p><h4><a
name="Scurit"></a>Sécurité</h4><p>Un ensemble d&#8217;annotations permet désormais de gérer le contrôle d&#8217;accès à une servlet. On peut également obliger l&#8217;utilisation d&#8217;un protocole sécurisé (HTTPS) pour l&#8217;appel à la servlet. Les 4 annotations suivantes : <code>@DenyAll</code>, <code>@PermitAll</code>, <code>@RolesAllowed</code>, <code>@TransportProtected</code> pourront être utilisées sur les méthodes traitant les requêtes dans <code>HttpServlet</code> (<code>doGet</code>, <code>doPost</code> et les autres) ou bien directement sur la classe.</p><pre class="brush: java; title: ; notranslate">
@WebServlet(urlPatterns=&quot;/secure/hello-world&quot;)
@RolesAllowed(&quot;authentified&quot;)
@TransportProtected
public class HelloWorldServlet extends HttpServlet
</pre><p>Il est aussi possible d&#8217;implémenter directement la méthode d&#8217;authentification <code>HttpServletRequest.login(String username, String password)</code>;</p><h3><a
name="faitsquetoutprogrammeurdevrait"></a>97 faits que tout programmeur devrait connaître</h3><p>Pour clore la journée, tout le monde se regroupe dans la salle 5 (la plus grande) pour écouter <a
href="http://www.two-sdg.demon.co.uk/curbralan/kevlin.htm" title="Kevlin Henney" >Kevlin Henney</a> présenter quelques conseils extraits du livre publié par O&#8217;Reilly <a
href="http://programmer.97things.oreilly.com/wiki/index.php/Contributions_Appearing_in_the_Book" title="97 things every programmer should know" >97 things every programmer should know</a></p><p>Le livre étant très conséquent, il a choisi de se focaliser sur :</p><ul><li>Apprenez à estimer : <a
href="http://programmer.97things.oreilly.com/wiki/index.php/Learn_to_Estimate" title="Learn to estimate" >Learn to estimate</a></li><li>Ne commentez que ce que le code ne dit pas : <a
href="http://programmer.97things.oreilly.com/wiki/index.php/Comment_Only_What_the_Code_Cannot_Say" title="Comment only What the code cannot say" >Comment only What the code cannot say</a></li><li>Encaspulez un comportement, pas seulement un état : <a
href="http://programmer.97things.oreilly.com/wiki/index.php/Encapsulate_Behavior%2C_not_Just_State" title="Encapsulate behavior not just state" >Encapsulate behavior not just state</a></li><li>La règle du boyscout : <a
href="http://programmer.97things.oreilly.com/wiki/index.php/The_Boy_Scout_Rule" title="The boy scout rule" >The boy scout rule</a> (Try to leave this world a litte better than you found it&#8230;)</li><li>Le test est la rigueur professionnelle du développement logiciel : <a
href="http://programmer.97things.oreilly.com/wiki/index.php/Testing_Is_the_Engineering_Rigor_of_Software_Development" title="Testing is the Engineering rigor of software development" >Testing is the Engineering rigor of software development</a></li><li>Écrivez des tests accessibles aux autres  : <a
href="http://programmer.97things.oreilly.com/wiki/index.php/Write_Tests_for_People" title="Write test for people" >Write test for people</a></li></ul><p>Les anecdotes et la verve de Kevlin nous font passer un très bon moment, avant de nous rendre au Jazoon Networking Event, où tous les participants peuvent souffler un peu autour d&#8217;un verre, partager leurs impressions sur les différentes sessions de la journée, ou discuter avec les speakers.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/06/04/jazoon10-jour-1/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>En route pour Jazoon&#8217;10</title><link>http://blog.xebia.fr/2010/05/27/en-route-pour-jazoon10/</link> <comments>http://blog.xebia.fr/2010/05/27/en-route-pour-jazoon10/#comments</comments> <pubDate>Thu, 27 May 2010 15:45:04 +0000</pubDate> <dc:creator>Aurélien Maury</dc:creator> <category><![CDATA[Divers]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Conference]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[Xebia]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4801</guid> <description><![CDATA[La semaine prochaine se tiendra à Zurich l&#8217;une des plus grandes conférences Java en Europe : Jazoon. Xebia France y sera représenté. Le programme s&#8217;annonce chargé et diversifié, choisir entre les conférences en parallèle risque d&#8217;être très dur. Voici quelques-uns des sujets principaux : JEE6 RESTful SOA OSGi Security patterns Scala in the cloud JavaFX [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2010/05/jazoon_logo.png" alt="Jazoon 2010" /><br
/> La semaine prochaine se tiendra à Zurich l&#8217;une des plus grandes conférences Java en Europe : Jazoon. Xebia France y sera représenté.</p><p>Le programme s&#8217;annonce chargé et diversifié, choisir entre les conférences en parallèle risque d&#8217;être très dur. Voici quelques-uns des sujets principaux :</p><ul><li>JEE6</li><li>RESTful SOA</li><li>OSGi</li><li>Security patterns</li><li>Scala in the cloud</li><li>JavaFX</li><li>Parallel programming with Groovy</li><li>Maven 3.0</li><li>Hibernate from JPA2 perspective</li></ul><p>Le tout sera porté par des acteurs J2EE de renommée mondiale : Danny Coward, Ken Schwaber, Dan Allen, Emmanuel Bernard &#8230;</p><p>Les journées risquent d&#8217;être denses et nous espérons y collecter un maximum d&#8217;informations que nous vous relayerons ! Nous avons décidé de ne couvrir que les deux premières journées, qui nous ont semblé être les plus attrayantes au niveau du programme.</p><p>Vous pourrez vivre Jazoon en direct, <a
href="http://jazoon.com/Conference/Tuesday" title="mardi" >mardi</a> et <a
href="http://jazoon.com/Conference/Wednesday" title="mercredi" >mercredi</a> prochain, en nous suivant sur Twitter.</p><div
style="text-align:center"> <strong>Xebia France :</strong><br
/> <a
href="http://twitter.com/xebiafr"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/twitter4.png" alt="twitter4" title="twitter4" width="201" height="74" class="aligncenter size-full wp-image-4438" /></a></p><p><strong>Julien Buret :</strong><br
/> <a
href="http://twitter.com/julienburet"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/twitter4.png" alt="twitter4" title="twitter4" width="201" height="74" class="aligncenter size-full wp-image-4438" /></a></p><p><strong>Aurélien Maury :</strong><br
/> <a
href="http://twitter.com/aurelienmaury"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/04/twitter4.png" alt="twitter4" title="twitter4" width="201" height="74" class="aligncenter size-full wp-image-4438" /></a></div> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/05/27/en-route-pour-jazoon10/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/</link> <comments>http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#comments</comments> <pubDate>Mon, 29 Jun 2009 16:32:10 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Atlassian]]></category> <category><![CDATA[CEP]]></category> <category><![CDATA[Complex Event Processing]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Eclipse Galileo]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[JMX 2]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[SpringSource Slices]]></category> <category><![CDATA[StreamBase]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2449</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII StreamBase lie le Complex Event Processing à Twitter Atlassian Summit : le présent et l&#8217;avenir des outils Atlassian Le coin de la technique Sortie d&#8217;Eclipse Galileo Des applications Web modulaires avec SpringSource Slices Que devient JMX 2 ? Evènements de [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#StreamBaselieleComplexEventPro">StreamBase lie le Complex Event Processing à Twitter</a></li><li><a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#AtlassianSummitleprsentetlaven">Atlassian Summit : le présent et l&#8217;avenir des outils Atlassian</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#SortiedEclipseGalileo">Sortie d&#8217;Eclipse Galileo</a></li><li><a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#DesapplicationsWebmodulairesav">Des applications Web modulaires avec SpringSource Slices</a></li><li><a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#QuedevientJMX">Que devient JMX 2 ?</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/#RetoursurlaconfrenceJazoon">Retour sur la conférence Jazoon</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="StreamBaselieleComplexEventPro"></a>StreamBase lie le Complex Event Processing à Twitter</h4><p><a
href="http://www.streambase.com/">StreamBase</a> est un éditeur qui fournit une solution de <a
href="http://en.wikipedia.org/wiki/Complex_event_processing" title="Complex Event Processing (CEP)" ><em>Complex Event Processing</em> (CEP)</a> très populaire dans le monde de la finance. Il s&#8217;agit d&#8217;un <em>middleware</em> capable d&#8217;analyser un flux de messages en temps réel pour y reconnaître des évènements complexes.</p><p>Dans <a
href="http://www.streambase.com/9bd00b4c-a8b1-4260-9751-65d5abad13c5/press-release-detail.htm" title="un communique de presse" >un communiqué de presse</a>, l&#8217;entreprise annonce proposer un connecteur <a
href="http://www.twitter.com">Twitter</a> pour sa solution de CEP. Il devient ainsi possible pour les systèmes d&#8217;information du monde de la finance d&#8217;analyser les messages Twitter pour en extraire un sentiment global en temps réel pouvant être utilisé dans un système de <em>trading</em> ou d&#8217;analyse <em>marketing</em>.</p><p>John Davies, directeur technique d&#8217;une société américaine spécialisée dans ce type de traitements financiers, <a
href="http://www.theserverside.com/news/thread.tss?thread_id=55060" title="analyse cette annonce" >analyse cette annonce</a> et avoue qu&#8217;après avoir été sceptique quant à cette idée au premier abord, il y voit désormais une opportunité d&#8217;améliorer la réactivité des systèmes par rapport à l&#8217;utilisation de simples flux Reuteurs apportant l&#8217;information plus tardivement.</p><p>Ce type d&#8217;annonce permet surtout de réaliser le potentiel de la technologie CEP appliquée à l&#8217;exploitation de sources diverses provenant de l&#8217;intérieur comme de l&#8217;extérieur du système d&#8217;information de l&#8217;entreprise.</p><h4><a
name="AtlassianSummitleprsentetlaven"></a>Atlassian Summit : le présent et l&#8217;avenir des outils Atlassian</h4><p>Au début du mois de juin s&#8217;est déroulé l&#8217;<a
href="http://www.atlassian.com/summit/presentations/" title="Atlassian Summit" >Atlassian Summit</a> à San Fransico. Il s&#8217;agissait de la première conférence du genre pour l&#8217;éditeur et a pu profiter de l&#8217;occasion pour présenter toutes ses nouveautés à venir et revenir sur les dernières évolutions de ses produits. L&#8217;ensemble des sessions de cette conférence sont maintenant <a
href="http://www.atlassian.com/summit/presentations/keynote.jsp" title="accessibles librement en ligne" >accessibles librement en ligne</a>.</p><p>Nous nous attarderons principalement sur le <a
href="http://www.atlassian.com/summit/presentations/keynote.jsp" title="keynote de Mike CannonBrookes" >keynote de Mike Cannon-Brookes</a>, CEO et co-fondateur d&#8217;Atlassian, qui résume la majorité des éléments à retenir.</p><p><strong>Confluence</strong></p><p>La version 3.0 de <a
href="http://www.atlassian.com/software/confluence/" title="Confluence" >Confluence</a> a été finalisée il y a peu. Elle apporte principalement :</p><ul><li>Ajout d&#8217;un <em>macro browser</em> permettant de naviguer facilement parmi les macros disponibles</li><li>Apport de nombreuses extensions de nature &laquo;&nbsp;sociale&nbsp;&raquo; avec une gestion de réseaux, un <em>microblogging</em> de type Twitter, un espace personnel repensé</li><li>Gain significatif de performance lors de la navigation et de l&#8217;édition</li></ul><p><strong>Jira et GreenHopper</strong></p><p>Jira 4.0 n&#8217;est pas encore finalisé, mais est dors et déjà <a
href="http://www.atlassian.com/software/jira/beta/" title="disponible en version beta" >disponible en version beta</a>. Il apporte quelques nouveautés intéressantes&nbsp;:</p><ul><li>Refonte du <em>dashboard</em> de Jira. Il devient largement personnalisable grâce à l&#8217;ajout de <em>gadgets</em> à l&#8217;image d&#8217;<a
href="http://www.igoogle.fr" title="iGoogle" >iGoogle</a></li><li>Introduction du <em>Jira Query Language</em> (JQL) permettant de faire des recherches avancées simplement grâce à un système de complétion. Les résultats des requêtes peuvent alors être ajoutés au <em>dashboard</em></li><li>Le plugin GreenHopper, permettant d&#8217;exploiter le moteur de tâches de Jira pour gérer un projet agile (gestion d&#8217;itérations, production de <em>burndown charts</em>, &#8230;), devient un produit Atlassian. L&#8217;éditeur en ayant annoncé l&#8217;acquisition lors du Summit.</li></ul><p><strong>Open Social</strong></p><p>La généralisation de l&#8217;utilisation de l&#8217;API <a
href="http://code.google.com/intl/fr/apis/opensocial/" title="Open Social" >Open Social</a> au sein des produits Atlassian est probablement ce qui restera le plus marquant. Ainsi la plupart des produits Atlassian proposeront des gadgets Open Social pouvant être intégrés à n&#8217;importe quel conteneur Web s&#8217;appuyant sur cette technologie.</p><p>Concrètement, il est alors possible d&#8217;intégrer un gadget Jira au sein de l&#8217;interface de Gmail afin de simplifier la saisie d&#8217;une nouvelle anomalie suite à la réception d&#8217;un mail décrivant un problème. De même, le <em>dashboard</em> de Jira 4.0 devenant un conteneur Open Social, il est possible d&#8217;intégrer un gadget indiquant l&#8217;état des derniers <em>builds</em> de Bamboo conjointement aux gadgets indiquant l&#8217;état des anomalies et tâches Jira actives. Open Social devient ainsi le vecteur d&#8217;intégration des produits Atlassian.</p><p><strong>Fisheye, Crucible et Eclipse Connector</strong></p><p><a
href="http://www.atlassian.com/software/fisheye/beta/" title="Fisheye 2.0" >Fisheye 2.0</a> et <a
href="http://www.atlassian.com/software/crucible/beta/" title="Crucible 20" >Crucible 2.0</a> ne sont également pas encore finalisés mais accessibles en beta. Ils apporteront tous deux une meilleure intégration à Jira, une interface utilisateur refondue et une vue permettant de visualiser l&#8217;activité des développeurs sur les différents projets.</p><p>Atlassian a également publié fin mai <a
href="http://blogs.atlassian.com/news/2009/05/atlassian_eclip.html" title="la version finale de lEclipse Connector" >la version finale de l&#8217;Eclipse Connector</a>, un plugin permettant d&#8217;intégrer certaines fonctionnalités des produits Atlassian au sein d&#8217;Eclipse :</p><ul><li>Jira est un <em>task repository</em> pour Mylyn, la gestion de tâches s&#8217;intègre donc à tous les niveaux dans l&#8217;IDE. Il est par exemple possible avec un clic d&#8217;ajouter, en pièce jointe de l&#8217;anomalie Jira, le <em>context</em> Mylyn et, dans un autre environnement, de le restituer d&#8217;un autre clic.</li><li>Une vue est dédiée à Bamboo et permet d&#8217;observer et d&#8217;interagir avec les <em>builds</em> du serveur d&#8217;intégration continue de l&#8217;éditeur</li><li>Il devient possible d&#8217;effectuer les <em>code reviews</em> Crucible directement depuis Eclipse</li><li>Il est possible de lancer l&#8217;affichage de la page Fisheye correspondant à un fichier spécifique par simple clic droit</li></ul><p>Ces fonctionnalités étaient déjà <a
href="http://confluence.atlassian.com/display/IDEPLUGIN/Atlassian+IntelliJ+Connector" title="disponibles pour IntelliJ" >disponibles pour IntelliJ</a>, elles le sont maintenant également pour l&#8217;IDE Java le plus populaire.</p><p>Atlassian continue de se montrer très innovant en apportant un lot intéressant de nouvelles fonctionnalités sur ses produits déjà très populaires. L&#8217;acquisition de GreenHopper lui permet quant à elle de se positionner sur le créneau des applications de gestion de projets agiles que <a
href="http://studios.thoughtworks.com/" title="Thoughtworks Studios" >Thoughtworks Studios</a> commençait à investir avec <a
href="http://studios.thoughtworks.com/mingle-agile-project-management" title="Mingle" >Mingle</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SortiedEclipseGalileo"></a>Sortie d&#8217;Eclipse Galileo</h4><p>Comme <a
href="http://eclipsesource.com/blogs/2009/06/23/eclipse-osgi-galileo-and-release-trains/" title="chaque année depuis 2004" >chaque année depuis 2004</a>, fin juin sera marquée par la sortie d&#8217;une nouvelle version d&#8217;<a
href="http://www.eclipse.org/home/" title="Eclipse IDE" >Eclipse IDE</a>.</p><p>Après Callisto, Europa et Ganymède, voici venu <a
href="http://www.eclipse.org/galileo/" title="Galileo" >Galileo</a> (ou Eclipse 3.5).</p><p>Difficile de faire un résumé des <a
href="http://www.eclipse.org/org/press-release/20090624_galileo.php" title="24 millions de lignes de codes" >24 millions de lignes de codes</a> ni même de la <a
href="http://www.eclipse.org/galileo/projects.php" title="trentaine de projets" >trentaine de projets</a> qui le compose, cependant plusieurs nouvelles fonctionnalités ressortent. A signaler qu&#8217;un <a
href="http://eclipsesource.com/blogs/2009/06/24/eclipse-galileo-feature-top-10-list-number-1/" title="top 10 de ces nouveautés" >top 10 de ces nouveautés</a> a d&#8217;ailleurs été publié par <a
href="http://eclipsesource.com/blogs/author/irbull/" title="Ian Bull" >Ian Bull</a> sur le site d&#8217;<a
href="http://eclipsesource.com/blogs/" title="Eclipse Source" >Eclipse Source</a> (série de 10 billets).</p><p>On notera ainsi :</p><ul><li>Compatibilité avec Mac OS X (portage SWT vers Cocoa).</li><li>Memory Analyzer Tool (<a
href="http://eclipse.org/mat/" title="MAT" >MAT</a>), un outil d&#8217;analyse de <em>heap</em> (consommation, fuite mémoire &#8230;).</li><li>Mylyn (gestion de tâches, synchronisation&#8230;) qui n&#8217;est pas nouveau mais qui devient de plus en plus populaire avec le support entre autre de Jira.</li><li>XText qui permet la création de DSL (auto-complétion, coloration syntaxique &#8230;).</li><li>Rich Ajax Platform (<a
href="http://eclipse.org/rap/" title="RAP" >RAP</a>) qui permet de déployer son application en tant que WebApp.</li><li>SWT Browser qui gère le <a
href="http://eclipsesource.com/blogs/2009/06/16/eclipse-galileo-feature-top-10-list-number-9/" title="pont entre Java et Javascript dans les 2 sens" >pont entre Java et Javascript dans les 2 sens</a>.</li><li>Mylyn <a
href="http://wiki.eclipse.org/Mylyn/Incubator/WikiText" title="WikiText" >WikiText</a>, un éditeur de fichier wiki.</li><li>Plateforme (p2 avec update manager revu, target platform, deploy into self pour tester ses plugins &#8230;).</li></ul><p>Le téléchargement se passe par <a
href="http://www.eclipse.org/downloads/" title="ici" >ici</a> avec comme d&#8217;habitude plusieurs packages disponibles qui vont de la version <em>classique</em> à la version <em>Java</em>, <em>JEE</em> ou <em>RCP</em> sans oublier, pour les non javaistes, les versions <em>C++</em> et <em>PHP</em>. D&#8217;autres packages ciblant le <em>reporting</em> ou la <em>modélisation</em> sont aussi disponibles.</p><p>Et bien sûr, rendez-vous est pris l&#8217;année prochaine même date (par <a
href="http://eclipsesource.com/blogs/2009/06/23/eclipse-osgi-galileo-and-release-trains/" title="Chris Aniszczyk" >Chris Aniszczyk</a>) pour la <em>release</em> d&#8217;Eclipse 3.6 qui se nommera Helios !</p><h4><a
name="DesapplicationsWebmodulairesav"></a>Des applications Web modulaires avec SpringSource Slices</h4><p>Rob Harrop <a
href="http://blog.springsource.com/2009/06/22/modular-web-applications-with-springsource-slices/" title="a prsent" >a présenté</a> une ébauche d&#8217;un nouveau projet SpringSource appelé Slices.</p><p>Il s&#8217;agit d&#8217;un framework basé sur <a
href="http://www.springsource.org/dmserver" title="dm Server 20" >dm Server 2.0</a> et permettant le développement d&#8217;applications Web modulaires. Cette modularité est bien sûr offerte par OSGi, ce qui lui en apporte les caractéristiques particulières : gestion de dépendance versionnées et chargement et arrêt des modules à chaud.</p><p>Concrètement une application utilisant Slices offrira un module Web <em>host</em> et un ensemble de modules fils appelés <em>slices</em>. Chaque module apporte du code applicatif et un ensemble de ressources Web (CSS, JavaScript, JSP, images). Le framework offre alors une couche d&#8217;abstraction aux <em>slices</em> leur permettant de posséder leur propre session et <em>servlet mappings</em>. Il offre également l&#8217;infrastructure nécessaire pour rendre les ressources du module <em>host</em> visibles par tous les autres et pour permettre aux modules de se détecter les uns les autres et ainsi d&#8217;opérer des altérations visuelles et comportementales en conséquence.</p><p>Dans son état actuel, Slices n&#8217;offre qu&#8217;une infrastructure de base, la version finale devrait apporter en supplément :</p><ul><li>Un framework de composition d&#8217;UI. On imagine que celui-ci apportera des tags permettant l&#8217;affichage conditionnel en fonction de la présence ou non de certains modules. Cette fonctionnalité est actuellement gérée manuellement par des EL dans l&#8217;application d&#8217;exemple</li><li>Le support des <em>servlet filters</em></li><li>Une intégration à <a
href="http://tiles.apache.org/" title="Tiles 2" >Tiles 2</a></li><li>L&#8217;intégration à <a
href="http://www.springsource.com/products/sts" title="SpringSource Tool Suite" >SpringSource Tool Suite</a></li></ul><p>Slices apportera donc de nouvelles possibilités en apportant la modularité jusqu&#8217;à la couche Web. Ainsi, parallèlement à son offre tc Server, résolument orienté vers le marché actuel, SpringSource continue d&#8217;innover en apportant des fonctionnalités supplémentaires à son offre modulaire centrée autour de dm Server.</p><h4><a
name="QuedevientJMX"></a>Que devient JMX 2 ?</h4><p>JMX est une API standard Java permettant le <em>monitoring</em> et le <em>management</em> d&#8217;applications, elle est définie par la <a
href="http://www.jcp.org/en/jsr/detail?id=003" title="JSR-3" >JSR-3</a> et étendue par la <a
href="http://www.jcp.org/en/jsr/detail?id=160" title="JSR-160 (Remote JMX)" >JSR-160 (Remote JMX)</a>. Depuis sa création en 1998, l&#8217;API a évoluée au fil des <em>maintenance releases</em> de sa JSR, incrémentant au passage sa version depuis 1.0 jusqu&#8217;à 1.4. Au départ disponible sous forme de librairie externe, JMX a finalement été intégré au JDK 5.0 <a
href="http://marxsoftware.blogspot.com/2008/01/java-se-6-and-jmx.html" title="puis mis  jour dans le JDK 60" >puis mis à jour dans le JDK 6.0</a>, fin 2006, pour s&#8217;aligner avec sa dernière version.</p><p>La prochaine évolution majeure de JMX est la version 2.0, cette fois-ci définie dans une nouvelle JSR, la <a
href="http://www.jcp.org/en/jsr/detail?id=255" title="JSR-255 (JMX 2.0)" >JSR-255 (JMX 2.0)</a>. Actuellement en statut <em>early draft review</em>, il est dors et déjà possible de se rendre compte des chantiers prévus :</p><ul><li>Des <em>namespaces</em> permettant de préfixer les noms des MBeans afin d&#8217;offrir une meilleure scalabilité lors que de très nombreux MBeans sont manipulés.</li><li>Le <em>cascading</em> permettant de fédérer un ensemble de MBeans situés sur des serveurs différents.</li><li>Définition de MBeans standards par annotations (<code>@MBean</code>, <code>@ManagedAttribute</code> et <code>@ManagedOperation</code>) et de leur injecter des ressources telles qu&#8217;un <code>MBeanServer</code> ou un <code>ObjectName</code>. Ce principe de définition de MBeans par annotations est calqué sur ce que <a
href="http://static.springframework.org/spring/docs/2.5.x/reference/jmx.html" title="Spring permet actuellement" >Spring permet actuellement</a>.</li><li>Un nouveau langage de requête permettant d&#8217;accéder facilement à tous les MBeans dont les propriétés se conforment à certains prédicats.</li></ul><p>JMX 2.0 était initialement prévue pour être intégrée au prochain JDK, l&#8217;API avait fait son apparition au sein de la <a
href="http://download.java.net/jdk7/docs/api/javax/management/package-summary.html" title="Javadoc des previews du JDK 7" >Javadoc des previews du JDK 7</a> mais restait absent de <a
href="http://openjdk.java.net/projects/jdk7/features/" title="sa liste de features" >sa liste de features</a>. Eamonn McManus a clarifié cette situation <a
href="http://weblogs.java.net/blog/emcmanus/archive/2009/06/jsr_255_jmx_api.html" title="en annonant sur son blog" >en annonçant sur son blog</a> que JMX 2.0 ne serait pas intégré au JDK 7 tel qu&#8217;initialement prévu, qu&#8217;il n&#8217;était pas pour autant annulé mais reporté &#8230; au JDK 8. L&#8217;officialisation de ce report est une mauvaise nouvelle, car cette nouvelle mouture de JMX serait arrivée à temps pour apporter un renouveau à cette API, qui bien que très puissante, souffre parfois de lourdeurs à l&#8217;usage.</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="RetoursurlaconfrenceJazoon"></a>Retour sur la conférence Jazoon</h4><p>La semaine dernière se tenait à Zürich la conférence <em>où les Javaistes se rencontrent</em>. Xebia était présent à cette conférence et en a publié des résumés quotidiens :</p><ul><li>Jour 1 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-1-jee6-et-glassfish-v3/" title="JEE6 et Glassfish v3" >JEE6 et Glassfish v3</a></li><li>Jour 1 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-1-groovy/" title="Groovy" >Groovy</a></li><li>Jour 1 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-1-developpement-mobile/" title="Dveloppement mobile" >Développement mobile</a></li><li>Jour 1 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-1-prospective/" title="Prospective" >Prospective</a></li><li>Jour 2 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-2-jdk-7/" title="JDK 7" >JDK 7</a></li><li>Jour 2 : <a
href="http://blog.xebia.fr/2009/06/24/jazoon-jour-2-ddd-et-value-objects/" title="DDD et Value Objects" >DDD et Value Objects</a></li><li>Jour 2 : <a
href="http://blog.xebia.fr/2009/06/25/jazoon-jour-2-javafx/" title="Java FX" >Java FX</a></li><li>Jour 3 : <a
href="http://blog.xebia.fr/2009/06/26/jazoon-jour-3-un-arbre-est-tombe/" title="Un arbre est tomb" >Un arbre est tombé</a></li><li>Jour 3 : <a
href="http://blog.xebia.fr/2009/06/26/jazoon-jour-3-les-secrets-des-programmeurs-rockstars/" title="Les secrets des programmeurs Rockstars" >Les secrets des programmeurs Rockstars</a></li><li>Jour 3 : <a
href="http://blog.xebia.fr/2009/06/28/jazoon-jour-3-hibernate-search/" title="Hibernate Search" >Hibernate Search</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/29/revue-de-presse-xebia-115/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Jazoon &#8211; Jour 3 &#8211; Hibernate Search</title><link>http://blog.xebia.fr/2009/06/28/jazoon-jour-3-hibernate-search/</link> <comments>http://blog.xebia.fr/2009/06/28/jazoon-jour-3-hibernate-search/#comments</comments> <pubDate>Sun, 28 Jun 2009 15:31:29 +0000</pubDate> <dc:creator>Guillaume Mathias</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[full text]]></category> <category><![CDATA[Hibernate Search]]></category> <category><![CDATA[jazoon]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2421</guid> <description><![CDATA[Nous avons assisté à la présentation de Hibernate Search par Emmanuel Bernard (project leader). Pour faire simple Hibernate Search est une API qui permet de &#171;&#160;googler&#160;&#187; votre modèle en s&#8217;appuyant sur Apache Lucene. Nous en avions déjà parlé dans cette introduction à Hibernate Search. Néanmoins c&#8217;est l&#8217;occasion de revenir sur certains concepts et problématiques abordés [...]]]></description> <content:encoded><![CDATA[<p>Nous avons assisté à la présentation de <a
href="https://www.hibernate.org/410.html">Hibernate Search</a> par Emmanuel Bernard (<i>project leader</i>). Pour faire simple Hibernate Search est une API qui permet de &laquo;&nbsp;googler&nbsp;&raquo; votre modèle en s&#8217;appuyant sur <a
href="http://lucene.apache.org/">Apache Lucene</a>. Nous en avions déjà parlé dans cette <a
href="http://blog.xebia.fr/2008/03/06/introduction-a-hibernate-search-googling-your-persistent-domain-model/">introduction à Hibernate Search</a>.<br
/> Néanmoins c&#8217;est l&#8217;occasion de revenir sur certains concepts et problématiques abordés par les recherches full-text, très bien expliqués par Emmanuel :</p><ul><li>Trier les résultats par <b>pertinence</b></li><li>Extraire la <b>quintessence</b> : &laquo;&nbsp;le Blog de XEbia&nbsp;&raquo; -> &laquo;&nbsp;blog xebia&nbsp;&raquo;</li><li><b>Approximation</b> : &laquo;&nbsp;xeiba&nbsp;&raquo; -> &laquo;&nbsp;xebia&nbsp;&raquo;</li><li>Recherche <b>phonétique</b></li><li><b>Synonymes</b></li><li>Même <b>famille/racine</b> : &laquo;&nbsp;opérer, opération, opérez&nbsp;&raquo;</li></ul><h3>Pertinence</h3><p>La pertinence est déterminée par le nombre d&#8217;occurences trouvées :<ul><li>Nombre d&#8217;occurences par document pour un mot-clef.</li><li>Nombre d&#8217;occurences de nombre de mots-clefs pour un document.</li></ul><p>La pertinence dépend aussi des champs dans lesquels on effectue la recherche. On peut &laquo;&nbsp;prioriser&nbsp;&raquo; certains champs par rapport à d&#8217;autres. Par exemple on peut affecter un poids plus important au titre d&#8217;un livre qu&#8217;à sa description.</p><h3>Extraire la quintessence</h3><p>Le moteur de recherche <em>tokenize</em> la &laquo;&nbsp;requête&nbsp;&raquo; pour découper et récupérer tous les mots, puis il applique des filtres. Il peut notamment mettre tous les mots en minuscules ou retirer les mots trop courants, sans interêt (&laquo;&nbsp;le&nbsp;&raquo;, &laquo;&nbsp;un&nbsp;&raquo;, &laquo;&nbsp;de&nbsp;&raquo;, etc).</p><h3>Approximation</h3><p>L&#8217;approximation permet de compenser notamment les fautes de frappe.<br
/> Une première approche est de mesurer la similarité entre les mots (<a
href="http://fr.wikipedia.org/wiki/Distance_de_Levenshtein">distance de Levenshtein</a>/d&#8217;édition) mais cela est coûteux niveau performance.</p><p>L&#8217;autre approche est le <a
href="http://fr.wikipedia.org/wiki/N-gramme">N-grammes</a>. Cela consiste à découper les mots en morceaux de n caractères puis d&#8217;indexer ces morceaux.<br
/> Exemple d&#8217;utilisation d&#8217;un tri-grammes :<ul><li>On découpe et indexe <code>"Hibernate" -> [hib, ibe, ber, ern, rna, nat, ate]</code><li>L&#8217;utilisateur tape <code>"ybernat" -> [ybe, ber, ern, rna, nat]</code><li>On compare les morceaux en communs : <code>[ber, ern, rna, nat]</code>.</ul><h3>Recherche phonétique</h3><p>Des algorithmes (<a
href="http://fr.wikipedia.org/wiki/Soundex">Soundex</a>, ou plus évolué <a
href="http://fr.wikipedia.org/wiki/Metaphone">Metaphone</a>) permettent de calculer des codes phonétiques qui sont stockés dans un index. Mais ce type de recherche n&#8217;est pas le plus courant.</p><h3>Synonymes</h3><p>La recherche de synonymes se base sur un dictionnaire qui indexe tous les synonymes de chaque mot.<br
/> Ce dictionnaire est évidemment propre à chaque domaine métier, chaque application, et c&#8217;est pour cela qu&#8217;il a une réelle valeur ajoutée car même Google ne peut connaitre votre métier aussi bien que vous.<br
/> Pour chaque groupe de synonymes il est conseillé d&#8217;avoir un mot de référence, qui sera celui indexé. Ainsi les mots saisis par l&#8217;utilisateur sont traduits en mots de référence avant d&#8217;être comparés à ceux de l&#8217;index.</p><h3>Même famille</h3><p>L&#8217;approche brutale consiste à indexer toutes les variations d&#8217;un mot. Plus subtil, on peut supprimer certains suffixes pour ne garder que la racine.<br
/> Il existe ensuite des algorithmes avancés (mais majoritairement pour l&#8217;anglais), comme celui de <a
href="http://en.wikipedia.org/wiki/Martin_Porter">Martin Porter</a> avec son langage <a
href="http://en.wikipedia.org/wiki/Snowball_programming_language">Snowball</a>.</p><h3>En pratique</h3><p>Si vous voulez savoir comment mettre en pratique ces fonctionnalités avec Hibernate Search, (re)lisez ce <a
href="http://blog.xebia.fr/2008/03/28/hands-on-hibernate-search-recherche-full-text/">hands-on</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/28/jazoon-jour-3-hibernate-search/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Jazoon &#8211; Jour 3 &#8211; Les secrets des programmeurs Rockstars</title><link>http://blog.xebia.fr/2009/06/26/jazoon-jour-3-les-secrets-des-programmeurs-rockstars/</link> <comments>http://blog.xebia.fr/2009/06/26/jazoon-jour-3-les-secrets-des-programmeurs-rockstars/#comments</comments> <pubDate>Fri, 26 Jun 2009 14:50:06 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[programmation]]></category> <category><![CDATA[valeurs]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2407</guid> <description><![CDATA[Etrange titre pour une conférence &#8230; En fait, ce titre est celui d&#8217;un livre qu&#8217;Ed Burns (spec leader de JSF 2.0, travaillant chez Sun) a consacré aux traits de caractères principaux des grands noms du monde du développement logiciel (James Gosling, Adrian Colyer, Rod Johson, mais aussi Chris Wilson (architecte d&#8217;IE) ou Max Levchin (ancien [...]]]></description> <content:encoded><![CDATA[<p>Etrange titre pour une conférence &#8230;<br
/> En fait, ce titre est celui d&#8217;un livre qu&#8217;Ed Burns <em>(spec leader de JSF 2.0, travaillant chez Sun)</em> a consacré aux traits de caractères principaux des grands noms du monde du développement logiciel <em>(James Gosling, Adrian Colyer, Rod Johson, mais aussi Chris Wilson (architecte d&#8217;IE) ou Max Levchin (ancien CTO de Paypal))</em>. Malgré l&#8217;aspect publicitaire de cette présentation <em>(&laquo;&nbsp;je ne vous présente ici qu&#8217;une toute petite partie du matériel à ma disposition, pour le reste achetez mon livre&nbsp;&raquo;)</em>, nous n&#8217;avons pas regretté d&#8217;y avoir assisté.</p><p>Cette conférence était l&#8217;occasion de découvrir des extraits d&#8217;interviews (audio) qui ont servies à la réalisation du livre, et de percer les <em>secrets</em> de ces grands noms qui trustent conférences et honneurs.</p><p>De manière tout à fait arbitraire, Ed Burns a classé ces secrets en deux catégories : les secrets des temps anciens <em>(on pourrait dire millénaires)</em> et les secrets des temps modernes <em>(qui ont particulièrement trait à l&#8217;édition logicielle)</em>.</p><p>Commençons par les secrets des temps anciens :</p><ul><li>Avoir de la fierté mais la tempérer par beaucoup d&#8217;humilité : il ne faut pas hésiter à soutenir ses décisions, défendre son avis, mais ne pas oublier que nul n&#8217;est omniscient.</li><li>Reconnaître son ignorance : fortement liée à la notion d&#8217;humilité énoncée ci dessus.</li><li>Remettre en cause <em>la sagesse conventionnelle</em> : ce n&#8217;est pas parce qu&#8217;une position est la plus répandue que c&#8217;est celle qui va le mieux répondre à votre besoin.</li><li>Collaborer : l&#8217;homme est un animal social et il doit savoir s&#8217;appuyer sur son entourage.</li><li>Utiliser le <em>collège invisible</em> : liée à la notion de collaboration. Il ne faut jamais hésiter à s&#8217;adresser à l&#8217;expert d&#8217;un sujet donné pour continuer à avancer. La qualité du réseau est essentielle.</li><li>Compter sur la chance / le destin : le succès se battit parfois sur un coup de dé, la bonne idée au bon moment, comme Kohsuke Kawaguchi qui a comblé un vide avec Hudson.</li></ul><p>Pour les secrets modernes :</p><ul><li>Être expert de son outillage : celui qui maîtrise ses outils, sait choisir le bon utilitaire pour une tâche donnée, possède un avantage concurrentiel.</li><li>Sentir les tendances : cette notion, qui permet de voir plusieurs coups en avance, est essentielle dans notre secteur de marché en constante mouvance. Par exemple, Max Levchin a été visionnaire en utilisant Rails pour Paypal, ce qui lui a donné beaucoup de flexibilité. A noter que <a
href="http://www.davethomas.net/index.html">Dave Thomas</a> voit le cloud computing devenir un standard sous dix ans.</li><li>Être motivé <em>(et motivant)</em>.</li><li>Savoir imposer son idée : certains excellents frameworks / langages dorment sûrement dans des tiroirs, faute d&#8217;avoir convaincu les décideurs. Il faut savoir changer son point de vue et adapter son discours pour <b>convaincre</b>.</li><li>Savoir quand changer de métier <em>(et / ou de mission)</em> : il est normal d&#8217;atteindre un seuil de saturation devant un ordinateur. Il est important à ce moment d&#8217;être capable de lâcher de la pression pour regagner en sérénité.</li><li>Avoir un plan B en dehors du monde de l&#8217;informatique : curieusement, tous les interviewés ont sous le coude un rêve bien loin de l&#8217;informatique <em>(Adrian Colyer vise un poste de garde forestier)</em>.</li></ul><p>Même si elle ne s&#8217;écarte pas énormément des sentiers battus, cette présentation nous a séduite par sa forme : il est rare d&#8217;entendre un si grand nombre d&#8217;acteurs connus de notre écosystème s&#8217;exprimer avec autant de recul sur nos professions.<br
/> Elle nous a aussi séduit pour une autre raison, plus personnelle : la très grande majorité de ces <em>secrets</em> fait partie du <em>code génétique</em> de Xebia. Et entendre des <em>cadors</em> mettre en avant les valeurs que nous défendons au quotidien est une forme de fierté.</p><p><a
href="http://ridingthecrest.com/">Secrets of the Rockstar Programmers</a>, le livre à l&#8217;origine de cette présentation.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/26/jazoon-jour-3-les-secrets-des-programmeurs-rockstars/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Jazoon &#8211; Jour 3 &#8211; Un arbre est tombé</title><link>http://blog.xebia.fr/2009/06/26/jazoon-jour-3-un-arbre-est-tombe/</link> <comments>http://blog.xebia.fr/2009/06/26/jazoon-jour-3-un-arbre-est-tombe/#comments</comments> <pubDate>Fri, 26 Jun 2009 09:27:51 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[dmServer]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[ROO]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2394</guid> <description><![CDATA[Hier avait lieu la dernière journée de Jazoon. Et pour changer, l&#8217;opening keynote n&#8217;était pas tenue par Sun, mais par Adrian Colyer, CTO de SpringSource. Et le moins que l&#8217;on puisse dire, c&#8217;est que le changement de ton a été radical. Par une analogie avec la forêt primaire, A. Colyer a annoncé la chute de [...]]]></description> <content:encoded><![CDATA[<p>Hier avait lieu la dernière journée de Jazoon.</p><p>Et pour changer, l&#8217;opening keynote n&#8217;était pas tenue par Sun, mais par Adrian Colyer, CTO de SpringSource. Et le moins que l&#8217;on puisse dire, c&#8217;est que le changement de ton a été radical.</p><p>Par une analogie avec la forêt primaire, A. Colyer a annoncé la chute de Sun, et la très prochaine émergence de nouvelles firmes leader dans le monde JEE <em>(on imagine bien que SpringSource fait partie de ces nouvelles pousses)</em>.<br
/> Il a expliqué la chute de Sun sous un angle différent de celui du pur rachat financier : selon lui, les acteurs du monde JEE ne veulent plus suivre les recommandations <em>(dogmes)</em> énoncés par Sun, et c&#8217;est pour cela que nous voyons apparaitre de nouveaux langages, mais aussi de nouvelles volontés de modulariser la monolithique stack JEE.</p><p>Il a ensuite donné sa vision du futur. Sur les langages dynamiques d&#8217;abord, et en prenant un fort pari sur l&#8217;avenir <em>(comme Neal Ford l&#8217;avait fait avec Clojure)</em>. Dans les candidats au &laquo;&nbsp;java.next&nbsp;&raquo; langage, il a cité Erlang, JRuby, Groovy, Clojure, <a
href="http://blog.xebia.fr/2008/03/21/introduction-a-scala/">Scala</a>, Jython et Ruby. Il a rapidement éliminé tous ceux qui ne tournent pas sur une JVM <em>(lui aussi pense que la force de Java est sa JVM, un thème récurrent durant ce Jazoon)</em>.<br
/> Restent donc 4 candidats : deux orientés fortement syntaxe et framework <em>(Groovy et JRuby)</em>, et deux orientés gestion de la concurrence <em>(<a
href="http://blog.xebia.fr/2008/03/21/introduction-a-scala/">Scala</a> et Clojure)</em>. Selon Adrian, le prochain langage star devra, pour bénéficier d&#8217;une adoption large et rapide, avoir une syntaxe proche de Java, ce qui élimine rapidement Clojure et <a
href="http://blog.xebia.fr/2008/03/21/introduction-a-scala/">Scala</a>. Attention cependant, cela ne signifie pas que ces langages sont plus faibles, mais simplement qu&#8217;ils ont moins de chances d&#8217;être largement adoptés.<br
/> Restent donc Groovy/Grails face à JRuby/Rails.<br
/> La deuxième force que devront posséder ces langages est leur capacité à se mélanger avec Java <em>(en ayant des interactions bidirectionnelles)</em>, car les millions de programmes Java actuellement en production ne risquent pas de disparaitre du jour au lendemain. Dans ce domaine, Adrian donne l&#8217;avantage à Groovy, d&#8217;autant plus que Grails  interagit avec un framework très largement adopté : Spring.</p><p>Le CTO de SpringSource a réussi ensuite une belle pirouette : à ceux qui vont lui reprocher de mettre en avant deux poulains de l&#8217;écurie SpringSource <em>(Groovy et Grails)</em>, il répond que si ils font partie de sa firme, c&#8217;est bien parce qu&#8217;il croit qu&#8217;ils sont l&#8217;avenir&#8230; Imparable.</p><p>Autre sujet, les frameworks qui vont se développer autour de ces nouveaux langages. Il cite Grails, Rails, Lift <em>(framework pour <a
href="http://blog.xebia.fr/2008/03/21/introduction-a-scala/">Scala</a>)</em> et <a
href="http://blog.xebia.fr/2009/05/03/springone-2009-synthese/">Spring ROO</a>. Ils sont l&#8217;avenir, car même si ils demandent de sacrifier un peu de liberté, ils offrent une nette augmentation de productivité <em>(avec notamment la notion de scaffolding)</em>.</p><p>Sujet suivant, le nécessaire besoin de modularité dans la pile JEE. Avec <a
href="http://blog.xebia.fr/2008/10/16/osgi-au-paris-jug-slides-de-la-presentation/">OSGI</a> bien sûr, mais surtout avec le seul serveur d&#8217;application qui expose <a
href="http://blog.xebia.fr/2008/10/16/osgi-au-paris-jug-slides-de-la-presentation/">OSGI</a> à ses utilisateurs, à savoir le produit maison <a
href="http://blog.xebia.fr/2009/04/06/revue-de-presse-xebia-103/#LesnouveautsdufuturSpringSourc">dmServer</a> et sa notion de service BluePrint.</p><p>Enfin, et c&#8217;est une vision qu&#8217;on voyait clairement se dessiner depuis quelques mois, Adrian Colyer prévoit un changement de paradigme pour les techniciens que nous sommes : à l&#8217;avenir, il ne sera plus question de se concentrer uniquement sur la phase de développement dans le cycle de vie d&#8217;une application, mais d&#8217;embrasser la totalité de ce cycle, en particulier les phases de déploiement et de supervision <em>(on se souvient des annonces faites lors du rachat de Hyperic)</em>. Il a mis en avant la notion de BluePrint de déploiement : un déploiement, c&#8217;est une injection de références <em>(l&#8217;adresse de la DB)</em>, une injection de configuration <em>(la taille du pool de la dataSource)</em> et des considérations transverses <em>(sécurité, &#8230;)</em>. Bref, cela est très similaire à une configuration SpringCore, et il n&#8217;y a donc pas de raison que la stack Spring ne puisse pas s&#8217;en occuper !</p><p>Bref, les changements interviennent aujourd&#8217;hui à de très nombreux niveaux &#8230; Et une chose est sûre, <i>le futur arrive, que nous soyons prêt ou pas. Cette vague arrive, et la seule chose importante pour pouvoir la surfer est d&#8217;être dans l&#8217;eau au moment où elle arrivera.</i> Il est donc important, <i>dans ces temps troublés</i>, d&#8217;expérimenter et de prendre du plaisir, avant l&#8217;arrivée d&#8217;une autre période stable.</p><p>Nous retiendrons deux choses de cette keynote : comme tous les speakers qui ont donné ces conférences d&#8217;ouverture, Adrian Colyer est un orateur né, et il a une vision très précise du futur qu&#8217;il envisage. Deuxième enseignement, pour lui, Sun est à terre et il est temps que de nouveaux acteurs s&#8217;avancent pour prendre la place du <i>grand arbre</i>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/26/jazoon-jour-3-un-arbre-est-tombe/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Jazoon &#8211; Jour 2 &#8211; JavaFX</title><link>http://blog.xebia.fr/2009/06/25/jazoon-jour-2-javafx/</link> <comments>http://blog.xebia.fr/2009/06/25/jazoon-jour-2-javafx/#comments</comments> <pubDate>Thu, 25 Jun 2009 08:26:00 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[mobile]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2377</guid> <description><![CDATA[Hier, on a encore beaucoup parlé de JavaFX. Danny Coward, dans la conférence d&#8217;ouverture de la journée, annonçait que Sun comptait rattraper le temps perdu, en continuant sa politique de releases rapides, et que JavaFX connaîtrait une nouvelle version avant la fin de l&#8217;année (même si les fonctionnalités de cette version restent encore mystérieuses). Il [...]]]></description> <content:encoded><![CDATA[<p>Hier, on a encore beaucoup parlé de JavaFX. Danny Coward, dans la conférence d&#8217;ouverture de la journée, annonçait que Sun comptait rattraper le temps perdu, en continuant sa politique de <em>releases</em> rapides, et que JavaFX connaîtrait une nouvelle version avant la fin de l&#8217;année (même si les fonctionnalités de cette version restent encore mystérieuses). Il faisait aussi son top 5 des fonctionnalités offertes par la version 1.2 :</p><ul><li>Plus de plate-formes : un prototype de téléviseurs montré à JavaOne, le support (partiel) de Linux et Solaris, et la promesse de voir les téléphones de LG, HTC et Sony arriver bientôt sur le marché public</li><li>Plus de composant UI, tous skinnable à l&#8217;aide de CSS</li><li>L&#8217;ajout de <em>layouts</em></li><li>De meilleures performances</li><li>Un meilleur accès et un meilleur usage des données</li></ul><p>Etrange top 5 à vrai dire, puisque quelques uns de ses points ne sont que partiellement implémentés.</p><p>Mais Sun met en avant son produit, et les démonstrations effectuées par D. Coward restent relativement impressionnantes (table de photos FlickR, arbre fractal en mouvement, et même PacMan !)</p><p>Plusieurs conférences permettaient de prolonger l&#8217;expérience avec le RIA de Sun. Ainsi,  nous avons pu suivre une démonstration mêlant deux des stars de Jazoon, à savoir Glassfish et JavaFX. En effet, le <em>back-end</em> d&#8217;administration de Glassfish V3 est exposé en REST et pilotable par les quatre verbes. Il a alors été facile pour Ludovic Champenois de récupérer la configuration de son serveur local pour l&#8217;injecter dans les samples de JavaFX 1.2. Ce qui donne un &laquo;&nbsp;livre&nbsp;&raquo; qui dévoile au fil de ses pages des domaines, des serveurs et des datasources&#8230; L&#8217;expérience s&#8217;arrête là, et il n&#8217;est pas (encore) question de créer une console Glassfish en JavaFX.</p><p>Autre sujet abordé, celui du <em>casual gaming</em>. C&#8217;est ce segment de marché qui pourrait permettre aux mobiles FX, ainsi qu&#8217;au Java Store, de décoller. La présentation très succincte a tout de même donné un aperçu des facilités apportées par JavaFX pour le développement des jeux. Etant donné la fragmentation du marché mobile, cela donne un avantage non négligeable à JavaFX. Cette présentation nous a donné envie d&#8217;en voir plus, <a
href="http://silveiraneto.net/">à travers ce blog</a>.</p><p>Dernière conférence, deux développeurs discutent à la machine à café de qui est le meilleur entre Android et JavaFX Mobile. Ils se lancent un défi de développer la même application sur 2 terminaux mobiles. Cela vous rappelle <a
href="http://blog.xebia.fr/2009/06/17/xebia-mobile-application-contest-java-fx-android-iphone/">quelque chose</a> ? Et pourtant, il s&#8217;agit d&#8217;une conférence donnée par deux ingénieur de Canoo (les grands esprits se rencontrent dit on&#8230;).<br
/> L&#8217;application JavaFX a profité des fonctionnalités d&#8217;échange avec Photoshop pour avoir un design très léché. L&#8217;application Android a tiré le meilleur parti de <em>l&#8217;application framework</em> et des composants gaphiques &laquo;&nbsp;<em>out-of-the-box</em>&nbsp;&raquo; (qui n&#8217;ont pas d&#8217;équivalent chez Sun). Au final, on obtient un match nul en terme de résultat (pas vraiment en terme de courbe d&#8217;apprentissage, ni de temps de développement, clairement plus courts sur la plate-forme de Google).<br
/> Pour le dernier slide de la conférence, l&#8217;assistance a été mise à contribution. Elle devait voter pour l&#8217;un des choix suivant :</p><ul><li>1. JavaFX Mobile va signer l&#8217;arrêt de mort d&#8217;Android</li><li>2. Android va signer l&#8217;arrêt  de mort de JavaFX Mobile</li><li>3. Les deux technologies vont cohabiter pacifiquement</li><li>4. Sun (ou une autre firme) va proposer un portage JavaFX sur Android</li><li>5. Sun va poursuivre Google en justice pour non-respect du contrat de licence</li></ul><p>La seconde proposition a remporté très largement l&#8217;adhésion de la salle, ce qui prouve que malgré le déploiement médiatique, et les nettes améliorations proposées de version en version, Java FX Mobile peine encore à convaincre.<br
/> Pour conclure, on pourra réfléchir à la remarque taquine d&#8217;un des membres de l&#8217;assistance : &laquo;&nbsp;il manque un numéro 6 dans les votes : Apple a déjà gagné la guerre&nbsp;&raquo;&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/25/jazoon-jour-2-javafx/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Jazoon &#8211; Jour 2 &#8211; DDD et Value Objects</title><link>http://blog.xebia.fr/2009/06/24/jazoon-jour-2-ddd-et-value-objects/</link> <comments>http://blog.xebia.fr/2009/06/24/jazoon-jour-2-ddd-et-value-objects/#comments</comments> <pubDate>Wed, 24 Jun 2009 19:02:11 +0000</pubDate> <dc:creator>Guillaume Mathias</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[DDD]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[value object]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2354</guid> <description><![CDATA[En fin de matinée, nous avons eu une présentation Domain Driven Design et Value Objects (attention, ces VO là ne sont pas des DTO !). Cette présentation ne fait pas partie des révélations de Jazoon, néanmoins elle a fait preuve de bon sens, et ça on aime ! Comme la présentation, commençons par la conclusion. [...]]]></description> <content:encoded><![CDATA[<p>En fin de matinée, nous avons eu une présentation <a
href="http://blog.xebia.fr/2009/01/28/ddd-la-conception-qui-lie-le-fonctionnel-et-le-code/">Domain Driven Design</a> et <a
href="http://devlicio.us/blogs/casey/archive/2009/02/13/ddd-entities-and-value-objects.aspx">Value Objects</a> (attention, ces VO là ne sont pas des DTO !). Cette présentation ne fait pas partie des révélations de Jazoon, néanmoins elle a fait preuve de bon sens, et ça on aime !</p><p>Comme la présentation, commençons par la conclusion. Evitez d&#8217;éparpiller la logique métier ou pire d&#8217;utiliser des règles de gestion implicites, utilisez notamment les Value Objects pour décrire la logique métier. Cela rend le code plus compréhensible et plus facile à tester.</p><p>Dan Bergh Johnsson a pris l&#8217;exemple d&#8217;un numero de téléphone saisi dans un formulaire et géré en backend sous forme de String. Cette String est passée en paramètre à différents services qui valident le format du numéro avant d&#8217;en extraire l&#8217;indicatif de la région (+33 pour la France). Voilà une situation courante qui présentent de nombreux défauts :<ul><li>La validation est faite dans un service (pas forcément intuitif) et a donc peu de chances d&#8217;être réutilisée</li><li>Cela conduit souvent à une duplication de code (chaque service redéfinit sa validation) voire pire, la validation est déléguée à des classes &laquo;&nbsp;utilitaires&nbsp;&raquo;</li><li>On créé des règles métier implicites : derrière le String se cachent de nombreuses règles métier, un format précis, un indicatif, etc</li></ul><p>C&#8217;est là que les Value Objects viennent à notre secours. Centralisons la &laquo;&nbsp;logique métier&nbsp;&raquo; dans une classe <code>PhoneNumber</code> (notre ValueObject). Cette classe possède un constructeur prenant un String en paramètre et se charge de la validation du format. Ajoutons une méthode qui extrait l&#8217;indicatif du numéro (définition du comportement, de la programmation OO tout simplement) et tout devient plus clair.</p><p>Prenons un peu de recul sur notre Value Object, et comparons le avec une validation par Service :<ul><li>API : plus besoin de chercher, les méthodes sont définies sur la classe <code>PhoneNumer</code></li><li>Validation / gestion d&#8217;erreur : la validation est faite dans le constructeur, une fois la classe instanciée il n&#8217;y a plus de risque de mauvais format</li><li>Compréhension métier : tout est dans une seule classe, intuitive à lire</li><li>Testabilité : les cas à tester sont moins nombreux grâce à la validation faite à la construction</li></ul><p>Cette présentation a réussi à aborder le DDD avec pragmatisme, en évitant le baratin habituel sur ce genre de sujets.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/24/jazoon-jour-2-ddd-et-value-objects/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Jazoon &#8211; Jour 2 &#8211; JDK 7</title><link>http://blog.xebia.fr/2009/06/24/jazoon-jour-2-jdk-7/</link> <comments>http://blog.xebia.fr/2009/06/24/jazoon-jour-2-jdk-7/#comments</comments> <pubDate>Wed, 24 Jun 2009 18:54:23 +0000</pubDate> <dc:creator>Guillaume Mathias</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[jdk-7]]></category> <category><![CDATA[Jigsaw]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2348</guid> <description><![CDATA[Cette deuxième journée de Jazoon a commencé par une keynote de Danny Coward, qui a établi deux tops 5 distincts, à savoir le top 5 de ce qui va arriver dans le JDK 7, et celui de ce qui existe déjà dans JavaFX 1.2 (on peut noter cette amusante différence d&#8217;échelle). Laissons de coté le [...]]]></description> <content:encoded><![CDATA[<p>Cette deuxième journée de Jazoon a commencé par une keynote de Danny Coward, qui a établi deux tops 5 distincts, à savoir le top 5  de <i>ce qui va arriver</i> dans le JDK 7, et celui de <i>ce qui existe déjà</i> dans JavaFX 1.2 (on peut noter cette amusante différence d&#8217;échelle).<br
/> Laissons de coté le top 5 JavaFX (nous y reviendrons dans un autre billet), pour nous concentrer sur les 5 nouveautés du JDK 7,  &laquo;&nbsp;les plus excitantes&nbsp;&raquo; pour un Sun Fellow.</p><ul><li>La modularité : introduite par le projet <a
href="http://openjdk.java.net/projects/jigsaw/">Jigsaw</a>, actuellement <a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#JigsawvsOSGi">au cœur d&#8217;une polémique</a>, elle devrait permettre de supprimer les principaux reproches faits aux précédents JDKs, à savoir leur lenteur au démarrage, le plat de spaghettis des dépendances, et l&#8217;enfer du classpath.</li><li>La JVM polyglotte : capable d&#8217;exécuter de nombreux langages (la voie a été ouverte par JRuby), elle devrait faciliter l&#8217;émergence des langages dynamiques. C&#8217;est le projet <a
href="http://openjdk.java.net/projects/mlvm/">DaVinci</a>.</li><li>Les ajouts au langage : ils sont listés dans le projet <a
href="http://openjdk.java.net/projects/coin/">Coin</a>. Danny a listé les switch sur les String, la gestion d&#8217;exceptions multiples, une meilleure inférence de type, et <a
href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000047.html">l&#8217;opérateur Elvis</a></li><li>Plus d&#8217;APIs I/O : le <code>Path</code> remplace le <code>File</code>, manipulation des <code>Directory</code>, recherche en utilisant des <code>FileVisitor</code>, opérations asynchrones. On peut se demander si ce genre de fonctionnalités sera vraiment cross-platform (comportement identique ?).</li><li>Nouveau Garbage collector : le fameux G1 (dont nous avons parlé <a
href="http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/">ici</a>) est disponible en <em>preview</em> dans le JSE 6 update 14 en utilisant l&#8217;option <code>-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC</code></li></ul><p>La <em>final release</em> devrait être disponible (selon la <em>roadmap</em> annoncée) dans le courant du premier trimestre 2010.</p><p>On apprécie les efforts continus faits sur la VM mais nous regrettons que les évolutions du langage restent superficielles (c&#8217;est bien mais pas suffisant). C&#8217;est probablement l&#8217;une des raisons de l&#8217;émergence des langages dynamiques. Comme si Danny Coward avait voulu légitimer <em>l&#8217;opening keynote</em> de James Gosling : &laquo;&nbsp;la force de Java ce n&#8217;est pas son langage, mais sa VM&nbsp;&raquo;.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/24/jazoon-jour-2-jdk-7/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Jazoon &#8211; Jour 1 &#8211; Prospective</title><link>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-prospective/</link> <comments>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-prospective/#comments</comments> <pubDate>Wed, 24 Jun 2009 09:05:22 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[clojure]]></category> <category><![CDATA[futur]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[SCRUM]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2330</guid> <description><![CDATA[Difficile de résumer la closing keynote de Neal Ford, &#171;&#160;forger le 21ème siècle&#160;&#187;. Il a balayé tellement de concepts pour nous faire partager sa vision des technologies du futur qu&#8217;il est délicat de vous faire partager sa présentation brillante en quelques lignes. Nous allons cependant essayer d&#8217;en aborder les grandes lignes : Prédire le futur [...]]]></description> <content:encoded><![CDATA[<p>Difficile de résumer la <em>closing keynote</em> de Neal Ford, &laquo;&nbsp;forger le 21ème siècle&nbsp;&raquo;. Il a balayé tellement de concepts pour nous faire partager sa vision des technologies du futur qu&#8217;il est délicat de vous faire partager sa présentation brillante en quelques lignes.</p><p>Nous allons cependant essayer d&#8217;en aborder les grandes lignes :</p><ul><li>Prédire le futur est un exercice délicat, car notre cerveau n&#8217;est pas correctement armé pour le faire, en particulier au niveau des statistiques. Cependant, dans nos métiers, quelques signes peuvent nous mettre sur la voie : il faut tout d&#8217;abord rechercher les &laquo;&nbsp;<em>paradigm changers</em>&laquo;&nbsp;, ceux qui par leur vision novatrice révolutionnent certains concepts, par exemple l&#8217;iPhone. Autre signe, les technologies réchauffées : parce qu&#8217;elle n&#8217;était pas sorti au bon moment, la VM de pascal n&#8217;a pas pris, alors qu&#8217;elle était antérieure à la JVM inventée par James Gosling.</li><li>Les sujets sensibles dans les prochaines années devraient être le multi threading, la programmation fonctionnelle et les langages dynamiques. Ce qui fait de <a
href="http://clojure.org/">Clojure</a> (ie LISP dans une JVM) un bon candidat pour la future technologie star.</li><li>Nos technologies devraient s&#8217;appliquer à un nouveau domaine fonctionnel, la robotique. Nous voyons d&#8217;ailleurs les prémisses avec <a
href="http://en.wikipedia.org/wiki/Samsung_SGR-A1">le robot garde frontière Corée du Nord / Corée du Sud</a> (qui n&#8217;hésite pas à abattre les contrevenants) développé par Samsung. Attention à ne pas basculer dans les visions SF de Matrix, Terminator et autres scénarios catastrophes à base de robots intelligents et autonomes.</li><li>Les tendances récentes le montrent, la syntaxe du langage importe : on ne pense bien que ce que l&#8217;on peut formuler. C&#8217;est pour cela qui nous vivons une &laquo;&nbsp;renaissance des langages&nbsp;&raquo;, avec l&#8217;apparition de nouvelles syntaxes qui collent au besoin. D&#8217;ailleurs, il serait ridicule de vouloir se contraindre à n&#8217;utiliser qu&#8217;un seul langage quand au final tous ces langages sont compilés et exécutés au sein de la JVM sous forme de bytecode. Vive la programmation polyglotte.</i><li>Les réseaux sociaux proposent de nouveaux modes de consommation, et même la plus &laquo;&nbsp;stupide&nbsp;&raquo; des applications (<a
href="http://ocarina.smule.com/">Ocarina pour iPhone</a>) peut rapporter des millions de dollars si elle propose une expérience sociale originale.</li><li>Si la bataille des RIA fait rage à coup de millions de dollars, c&#8217;est pour reproduire le schéma de Microsoft qui a &laquo;&nbsp;obligé&nbsp;&raquo; tout le monde à coder avec l&#8217;API win32 pendant des années. Gagner ce &laquo;&nbsp;jeu de plate-formes&nbsp;&raquo;, c&#8217;est imposer ses standards à la concurrence durablement.</li><li>Les téléphones mobiles font aussi, de par leur absence de standard, partie de ce &laquo;&nbsp;<em>platform play</em>&laquo;&nbsp;. Et à ce petit jeu, Apple, en imposant son terminal, est devenu par la même occasion le premier fournisseur de musique au monde. Et d&#8217;ailleurs, si Apple parvenait à facturer tout type de service en utilisant l&#8217;AppStore, ne deviendrait-il pas rapidement la plus grande banque mondiale ?</li></ul><p>Pour conclure, et comme annoncé en introduction, il est très délicat de prédire le futur. Et même si cela tient plus du lieu commun que de la grande réflexion philosophique, le futur sera ce que les acteurs du monde J2EE décideront d&#8217;en faire.</p><p>Après Neal Ford, Ivar Jacobson a clôturé la journée en présentant &laquo;&nbsp;ce que l&#8217;on ne vous dit pas à l&#8217;école sur le software&nbsp;&raquo; : &laquo;&nbsp;<em>be smart</em>&laquo;&nbsp;.</p><p>Derrière ce titre mystérieux, Ivar nous a livré une présentation agile !</p><p>Après un bref rappel des courants de programmation ou modélisation (OO, UML, RUP, CMMI, XP, Scrum&#8230;et demain ?), il a comparé une série de situations &laquo;&nbsp;pas smart&nbsp;&raquo; opposées à leurs solutions &laquo;&nbsp;smart&nbsp;&raquo;.</p><p>Des solutions pleines de bon sens, comme par exemple &laquo;&nbsp;pensez grand, mais avancez à petits pas&nbsp;&raquo;, c&#8217;est-à-dire ne développez pas une application complète d&#8217;un coup, réalisez d&#8217;abord le squelette minimum puis enrichissez-le petit à petit.</p><p>Cette &laquo;&nbsp;smartitude&nbsp;&raquo; doit s&#8217;appliquer à tous les niveaux (développeur, équipe, architecture, documentation&#8230;), afin de faire de votre développement logiciel un succès (développé rapidement, répondant au besoin, dans des coûts et des délais raisonnables).</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-prospective/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Jazoon &#8211; Jour 1 &#8211; Développement mobile</title><link>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-developpement-mobile/</link> <comments>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-developpement-mobile/#comments</comments> <pubDate>Wed, 24 Jun 2009 08:41:46 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Mobilité]]></category> <category><![CDATA[iPhone]]></category> <category><![CDATA[j2me]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[mobile]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2323</guid> <description><![CDATA[La conférence &#171;&#160;le développement iPhone vu par des développeurs Java&#160;&#187; a fait le plein. Nous n&#8217;avons pas assisté à cette conférence dans son intégralité, ce sujet ayant déjà été traité en profondeur dans le cadre de nos XKE. A noter cependant que ce sujet semble passionner les foules. Un autre sujet &#171;&#160;mobile&#160;&#187; était présenté aujourd&#8217;hui, [...]]]></description> <content:encoded><![CDATA[<p>La conférence &laquo;&nbsp;le développement iPhone vu par des développeurs Java&nbsp;&raquo; a fait le plein. Nous n&#8217;avons pas assisté à cette conférence dans son intégralité, ce sujet ayant déjà été traité en profondeur dans le cadre de nos <a
href="http://blog.xebia.fr/2009/06/17/xebia-mobile-application-contest-java-fx-android-iphone/">XKE</a>. A noter cependant que ce sujet semble passionner les foules.</p><p>Un autre sujet &laquo;&nbsp;mobile&nbsp;&raquo; était présenté aujourd&#8217;hui, à savoir la fragmentation du marché des mobiles. Cette fragmentation intervient à tous les niveaux : hardware, OS, environnement applicatif.</p><p>Le chaos est positif, car il amène l&#8217;innovation, mais il complique considérablement la tâche des développeurs. Pour réaliser une application fonctionnant sur toutes les plates-formes, plusieurs stratégies se présentent :</p><ul><li>Développer spécifiquement pour chaque appareil : la portabilité et l&#8217;expérience utilisateur sont maximales, mais le travail titanesque.</li><li>Développer une application n&#8217;utilisant que le plus petit dénominateur commun entre les plates formes, ce qui revient à sacrifier l&#8217;expérience utilisateur.</li><li>Utiliser un player, ce qui équivaut à la solution ci dessus <em>(l&#8217;expérience utilisateur est limitée par les fonctionnalités du player, elles mêmes limitées par les adhérences entre les différents mobiles)</em>.</li><li>Utiliser un framework de portage.</li></ul><p>C&#8217;est cette dernière solution qui était présentée, par les créateurs du framework <a
href="http://www.j2mepolish.org/cms/">J2ME Polish</a>. L&#8217;idée sous-jacente est d&#8217;écrire son programme en Java, et d&#8217;utiliser un framework pour le porter sur la majorité des mobiles. Le code est transcrit par le framework en J2ME en utilisant un repository d&#8217;appareils, qui spécifie les caractéristiques de chacun <em>(taille de l&#8217;écran, interactions possibles avec l&#8217;appareil)</em> &#8230;</p><p>Il est possible de migrer le code sous Android ou Blackberry <em>(J2ME Polish utilise pour ces deux cibles une reconstruction des classes J2ME spécifique)</em>.</p><p>Il est même possible de transformer ce code source pour le déployer sur  Windows mobile et sur iPhone : le code Java est représenté sous forme d&#8217;arbre et un &#8216;cross-compiler&#8217; est utiliser pour transformer cet arbre en langage cible.</p><p>Même si l&#8217;exercice est intéressant, il est un peu surfait, notamment parce que l&#8217;expérience utilisateur offerte par l&#8217;iPhone surclasse tous ces concurrents et qu&#8217;il n&#8217;est donc raisonnable que de porter une logique business lourde <em>(la conception des IHM étant trop différente selon les mobiles)</em>.</p><p>A noter que les créateurs du framework apprécient l&#8217;initiative JavaFX, mais ne se pencheront réellement dessus que si le marché des terminaux mobiles porte cette nouvelle technologie.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-developpement-mobile/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Jazoon &#8211; Jour 1 &#8211; Groovy</title><link>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-groovy/</link> <comments>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-groovy/#comments</comments> <pubDate>Wed, 24 Jun 2009 08:36:18 +0000</pubDate> <dc:creator>Guillaume Mathias</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[language dynamique]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2317</guid> <description><![CDATA[L&#8217;un des sujets très présents dans cette 1ère journée était le langage Groovy, et plus généralement les langages dynamiques. Dierk König (Canoo) a commencé la matinée en présentant &#171;&#160;sept patterns d&#8217;utilisation de Groovy&#160;&#187; sur les projets. On a bien apprécié la concision du &#171;&#160;reader RSS en swing&#160;&#187; et le &#171;&#160;script ant musical&#160;&#187; (en faisant jouer [...]]]></description> <content:encoded><![CDATA[<p>L&#8217;un des sujets très présents dans cette 1ère journée était le langage Groovy, et plus généralement les langages dynamiques.</p><p>Dierk König <em>(Canoo)</em> a commencé la matinée en présentant &laquo;&nbsp;sept patterns d&#8217;utilisation de Groovy&nbsp;&raquo; sur les projets.<br
/> On a bien apprécié la concision du &laquo;&nbsp;reader RSS en swing&nbsp;&raquo; et le &laquo;&nbsp;script ant musical&nbsp;&raquo; <em>(en faisant jouer <a
href="http://www.jfugue.org/">jfugue</a> quelques notes au début et fin du build)</em>. Vous pouvez retrouver les <a
href="http://www.touilleur-express.fr/2009/06/23/jazoon-groovy-seven-usage-patterns/">7 points très bien résumés sur le blog du Touilleur Express</a>.<br
/> Pour l&#8217;anecdote, les extraits de code étaient tapés dans une console Groovy, recopiés caractère par caractère par &#8230; un script Groovy ! <em>(la classe, non ?)</em></p><p>Neal Ford <em>(ThoughtWorks)</em> a enchainé avec les &laquo;&nbsp;design patterns&nbsp;&raquo; dans les langages dynamiques : il a pris quelques patterns du GoF et a montré en quoi les langages dynamiques &#8211; comme Ruby ou Groovy &#8211; sont plus adaptés pour résoudre les problèmes posés par ces patterns.</p><p>Après un salade/saucisse/cornetto <em>(bon appétit)</em> rapidement avalé, ce fut le tour de <a
href="http://www.gradle.org/">Gradle</a>. Il s&#8217;agit d&#8217;un système de build qui élève Ant grâce à la puissance de Groovy. Il se veut plus souple que Maven et apporte les capacités de programmation des scripts Groovy <em>(boucles, conditions, etc)</em>.<br
/> Dommage que la présentation se soit contentée d&#8217;exemples du style &laquo;&nbsp;hello world&nbsp;&raquo;, c&#8217;est du coup assez difficile de juger le potentiel de l&#8217;outil. Néanmoins, ça a l&#8217;air prometteur.</p><p>Pour finir avec Groovy, Jetbrains nous a fait une démo très séduisante du support Groovy/Grails sur IntelliJ IDEA. C&#8217;est définitivement le <em>(seul)</em> meilleur outil pour coder en Groovy !</p><p>Jazoon nous confirme que les langages dynamiques gagnent du terrain, et Groovy est le grand représentant de ces langages dans la sphère Java.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-groovy/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Jazoon &#8211; Jour 1 &#8211; JEE6 et Glassfish v3</title><link>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-jee6-et-glassfish-v3/</link> <comments>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-jee6-et-glassfish-v3/#comments</comments> <pubDate>Wed, 24 Jun 2009 08:25:46 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[JEE6]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2312</guid> <description><![CDATA[Vous avez pu nous suivre toute la journée d&#8217;hier sur Twitter, voici maintenant venue l&#8217;heure de faire une rétrospective de cette première journée de Jazoon. Contrairement à certains célèbres blogueurs présents sur l&#8217;évènement, nous n&#8217;allons pas vous faire revivre l&#8217;évènement conférence par conférence, mais plutôt tenter de synthétiser ces conférences par grands sujets. Premier sujet [...]]]></description> <content:encoded><![CDATA[<p>Vous avez pu nous suivre toute la journée d&#8217;hier sur <a
href="http://twitter.com/xebiafr">Twitter</a>, voici maintenant venue l&#8217;heure de faire une rétrospective de cette première journée de Jazoon.<br
/> Contrairement à certains célèbres blogueurs présents sur l&#8217;évènement, nous n&#8217;allons pas vous faire revivre l&#8217;évènement conférence par conférence, mais plutôt tenter de synthétiser ces conférences par grands sujets.</p><p>Premier sujet abordé, le futur de Java, à savoir JEE 6 et son implémentation de référence, Glassfish V3.</p><p>Dès l&#8217;opening keynote <em>(par ailleurs relativement décevant étant donné l&#8217;aura qui l&#8217;entourait)</em>, James Gosling, le papa de Java, plante le décor : pour Java, &laquo;&nbsp;we&#8217;re we heading&nbsp;&raquo;, c&#8217;est JEE6 <em>(et ses profils)</em> et Glassfish V3, l&#8217;implémentation de référence.<br
/> On a même droit dès cet opening keynote à une démo des key features de <a
href="https://glassfish.dev.java.net/downloads/v3-preview.html">Glassfish 3</a> <em>(démo qui sera resservie dans la session dédiée au serveur d&#8217;application)</em> : configuration des webapp par annotations, déploiement <em>(exploded)</em> à chaud, préservation des sessions, simplicité d&#8217;utilisation des EJB 3.1.</p><p>D&#8217;ailleurs, Roberto Chinnici insistera, dans sa présentation des nouveautés de JEE 6, sur ses JSR &laquo;&nbsp;coup de coeur&nbsp;&raquo;, à savoir Servlet 3.0 <em>(en particulier les Servlets asynchrones)</em>, JAX RS <em>(qui abstrait les API HTTP bas niveau et facilite les développements REST)</em>, BeanValidation <em>(mieux vaut tard que jamais)</em>, EJB 3.1 <em>(et les nombreuses annotations qui vont faciliter leur utilisation : @Singleton, @Asynchronous, @Startup, @Locka &#8230;)</em>.<br
/> Faute de temps, il est passé rapidement sur d&#8217;autres JSR qui devraient &laquo;&nbsp;révolutionner&nbsp;&raquo; les développements : JPA 2.0, scopes JNDI multiples, Web Profile &#8230;<br
/> Cependant, deux informations que nous attendions ont été évoquées au détour d&#8217;une phrase : la JSR 299 <em>(ex Web Beans)</em> serait en cours d&#8217;adoption <em>(aucune allusion à la JSR @Inject)</em> et la date de final release de J2EE 6 est toujours septembre 2009.</p><p>On n&#8217;insistera pas sur une très bonne présentation GlassFish, qui a été malheureusement fortement déflorée par l&#8217;opening keynote. On notera cependant le fort accent porté sur la modularité OSGi du serveur d&#8217;application de Sun.</p><p>Enfin, James Gosling a fait d&#8217;autres annonces plus étonnantes : NetBeans serait le meilleur IDE pour développer en Java <em>(ce dont il va falloir nous convaincre, même si la version 6.7 apporte des nouveautés intéressantes)</em>, et son intégration au <a
href="http://kenai.com/">projet Kenaï</a> devrait faciliter le travail collaboratif <em>(notion de developers cloud)</em>.<br
/> Il a aussi abordé dans le désordre les performances de Java comparées à C/C++ et même Fortran la voiture électrique de Neil Young pilotée par des smart cards Java, les améliorations continues de JSE 6, et enfin la création d&#8217;UI avec JavaFX.</p><p>Bref, de nombreux sujets dont nous aurons l&#8217;occasion de reparler ces deux prochains jours.</p><div
align="center"><a
href="http://twitter.com/xebiafr" ><img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/twitter-2.png" alt="Follow me on twitter" width="150" height="90" align="center"/></a></div> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-jee6-et-glassfish-v3/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/</link> <comments>http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#comments</comments> <pubDate>Mon, 22 Jun 2009 16:19:03 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[GAE]]></category> <category><![CDATA[Gilead]]></category> <category><![CDATA[Hibernate]]></category> <category><![CDATA[Hibernate Shards]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[Jigsaw]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Vaadin]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2304</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. RIA Vaadin 6 Adaptateur Gilead pour GAE Une série d&#8217;annonces chez Adobe Le coin de la technique Scalabilité avec Hibernate et Shards Jigsaw vs OSGi Pourquoi utiliser un portail ? Embarquer le Web dans Java avec JWebPane Evènements de notre communauté en France et [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#Vaadin">Vaadin 6</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#AdaptateurGileadpourGAE">Adaptateur Gilead pour GAE</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#UnesriedannonceschezAdobe">Une série d&#8217;annonces chez Adobe</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#ScalabilitavecHibernateetShard">Scalabilité avec Hibernate et Shards</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#JigsawvsOSGi">Jigsaw vs OSGi</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#Pourquoiutiliserunportail">Pourquoi utiliser un portail ?</a></li><li><a
href="http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/#EmbarquerleWebdansJavaavecJWeb">Embarquer le Web dans Java avec JWebPane</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/06/22/en-route-pour-jazoon-09/">Xebia @ Jazoon 09</a></li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="Vaadin"></a>Vaadin 6</h4><p>Au revoir <a
href="http://www.itmill.com/" title="IT Mill Toolkit" >IT Mill Toolkit</a> et bienvenue à <a
href="http://vaadin.com/home" title="Vaadin" >Vaadin</a> (vu sur leur <a
href="http://vaadin.com/blog/-/blogs/vaadin-6-server-driven-ria-framework-announced-the-next-generation-of-it-mill-toolkit" title="blog" >blog</a>) !</p><p>Pour ceux qui ne le connaissent pas encore, Vaadin (anciennement IT Mill Toolkit) est un framework de développement d&#8217;applications RIA qui s&#8217;appuie sur GWT. Sa particularité est d&#8217;être <em>runtime</em> donc aucune compilation spécifique n&#8217;est demandée avant de packager la webapp (à l&#8217;inverse de GWT).</p><p>Simple changement de nom ? En tout cas très peu de changement côté API selon les auteurs du framework. Il faut plutôt se tourner vers l&#8217;outillage pour voir quelques nouveautés : un <a
href="http://vaadin.com/eclipse" title="plugin eclipse" >plugin eclipse</a> (création de projets, de composants UI, de thèmes&#8230;) et, inclus dans le plugin, un <a
href="http://vaadin.com/image/image_gallery?uuid=93600d15-df24-4299-b3d1-77a91d17624c&#038;groupId=10904&#038;t=1241865010814" title="diteur WYSIWYG" >éditeur WYSIWYG</a>.</p><p>Côté liens utiles, l&#8217;habituel <a
href="http://demo.vaadin.com/sampler/" title="showcase" >showcase</a>, le <a
href="http://vaadin.com/book" title="livre" >livre</a> et la <a
href="http://vaadin.com/comparison" title="comparaison maison" >comparaison maison</a> avec les autres frameworks du marché (et la concurrence est rude dans le monde du RIA).</p><p>A noter que <a
href="http://vaadin.com/blog/-/blogs/vaadin-at-jazoon-09?_33_redirect=%2Fhome" title="Vaadin" >Vaadin</a> sera présent à <a
href="http://jazoon.com/" title="Jazoon" >Jazoon</a> pour une conférence sur <a
href="http://jazoon.com/en/conference/presentationdetails.html?type=sid&#038;detail=8360" title="RIA Security" >RIA Security</a> le mardi 23 juin à 15h (slides, projet et autres sur <a
href="http://vaadin.com/web/joonas/wiki/-/wiki/Main/RIA+Security" title="cette page" >cette page</a>).</p><h4><a
name="AdaptateurGileadpourGAE"></a>Adaptateur Gilead pour GAE</h4><p>Vous connaissez <a
href="http://blog.xebia.fr/2009/01/23/gwt-galaxy/" title="GWT" >GWT</a>, <a
href="http://blog.xebia.fr/2008/12/17/integrer-hibernate-avec-gwt-sans-douleur/" title="Gilead" >Gilead</a>, et <a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#GoogleAppEnginepourJavaetGroov" title="Google App Engine" >Google App Engine</a> ? Et bien il ne reste plus qu&#8217;à mélanger tout ça et on obtient le <a
href="http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/69d5ccd01240a59c" title="Gilead GWT adapter for Google AppEngine" >Gilead GWT adapter for Google AppEngine</a> (vu sur le <a
href="http://googlewebtoolkit.blogspot.com/2009/06/gwt-community-updates.html" title="GWT Blog" >GWT Blog</a>).</p><p>Tout démarre d&#8217;un <a
href="http://groups.google.com/group/Google-Web-Toolkit-Contributors/browse_thread/thread/3c768d8d33bfb1dc" title="thread google groups" >thread google groups</a> avec comme point de départ la <em>serialization exception</em> lancée par les entités persistantes transférées vers GWT. Évidemment, la solution qui ressort <a
href="http://groups.google.com/group/Google-Web-Toolkit-Contributors/msg/c4e6d22860a7df3d" title="très rapidement" >très rapidement</a>, outre l&#8217;utilisation de DTOs, est de passer par <a
href="http://noon.gilead.free.fr/gilead/index.php?page=presentation" title="Gilead" >Gilead</a> pour transformer nos entités persistantes en POJOs. Il suffit d&#8217;ajouter le jar <code>adapter4appengine</code> et de remplacer la classe <code>PersistentRemoteService</code> par <code>EngineRemoteService</code> dans vos remotes services. Dès lors, il sera possible d&#8217;envoyer ses entités persistantes vers le client GWT sans exceptions de sérialisation sur <a
href="http://code.google.com/intl/fr/appengine/" title="GAE" >GAE</a>.</p><p>1.0 M2 téléchargeable à cette <a
href="http://sourceforge.net/project/downloading.php?group_id=239931&#038;filename=adapter4appengine-1.0M2.jar&#038;a=91098275" title="url" >url</a>, documentation <a
href="http://noon.gilead.free.fr/gilead/index.php?page=adapter4appengine" title="par ici" >par ici</a>. Attention toutefois, cette version n&#8217;est pas production ready.</p><h4><a
name="UnesriedannonceschezAdobe"></a>Une série d&#8217;annonces chez Adobe</h4><p>Après l&#8217;annonce de la sortie de la plateforme Flash il y a quelques semaines, voici une nouvelle série d&#8217;annonce de la part d&#8217;Adobe.</p><p>Pour commencer, deux news relayées par Andrew Twice dans <a
href="http://www.insideria.com/2009/06/its-an-active-news-day-from-ad.html" title="InsideRIA" >InsideRIA</a>.<br
/> La première concerne la sortie d&#8217;<a
href="http://labs.adobe.com/technologies/tables/" title="Adobe Table" >Adobe Table</a> en version bêta. Cet outil permet de créer des feuilles de calcul, des plannings ou encore des listes de tâches en ligne:</p><ul><li>Les utilisateurs peuvent ajouter des données en même temps: les données sont mises à jour en temps réel pour tout le monde.</li><li>Possibilité de savoir qui travaille sur Adobe Table.</li><li>Création d&#8217;écrans communs et privés : les utilisateurs peuvent travailler de manière coopérative, et/ou créer des espaces privés pour ne garder que les informations importantes.</li><li>Filtrage : les utilisateurs peuvent filtrer leurs données en temps réel.</li><li>Tri.</li></ul><p>Similaire à <a
href="http://www.google.com/google-d-s/intl/fr/tour1.html" title="Google Document" >Google Document</a>, cet outil a été développé sur la plateforme Flash et va continuer <a
href="http://blogs.adobe.com/acom/2009/06/shared_tables_for_shared_data_1.html" title="à évoluer" >à évoluer</a>. La <a
href="https://labs1.acrobat.com" title="démo" >démo</a> se passe <a
href="https://labs1.acrobat.com" title="ici" >ici</a>, la seule contrainte : avoir un compte Adobe.</p><p>La deuxième annonce concerne l&#8217;ouverture de la spécification de Real-Time Messaging Protocol (RTMP). Comme nous en avions parlé <a
href="http://blog.xebia.fr/2009/01/26/revue-de-presse-xebia-93/#Adobecontinuelouverturedeseste" title="ici" >ici</a>, la spécification a été publiée lundi dernier.</p><p>Enfin, Michael Chaize parle de la <a
href="http://codemoiunmouton.wordpress.com/2009/06/18/livecycle-data-services-3/" title="sortie de LiveCycle Data Services 3" >sortie de LiveCycle Data Services 3</a> en bêta. Disponible sur le <a
href="http://labs.adobe.com/technologies/livecycle_dataservices3/" title="labs d'Abobe" >labs d&#8217;Abobe</a>, cette nouvelle version propose une meilleure qualité de service pour des applications dont la fiabilité est primordiale telles que les applications bancaires par exemple. Venant compléter la plateforme Flash (avec Flex 4 et Flash Builder 4), Adobe incite la communauté à faire ses retours sur le <a
href="http://forums.adobe.com/community/labs" title="forum" >forum</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="ScalabilitavecHibernateetShard"></a>Scalabilité avec Hibernate et Shards</h4><p>Une <a
href="http://www.infoq.com/presentations/Scaling-Hibernate-Emmanuel-Bernard-Max-Ross" title="session de QCon 2008" >session de QCon 2008</a>, traitant de la scalabilité d&#8217;Hibernate, vient d&#8217;être mise en ligne. Présentée par Emmanuel Bernard, <em>project lead</em> d&#8217;Hibernate Search, et Max Ross, <em>project lead</em> d&#8217;Hibernate Shards, cette présentation offre une approche peu courante sur un problème pourtant récurrent.</p><p>Outre les classiques solutions permettant d&#8217;éviter certaines pertes de performance avec l&#8217;augmentation du volume traité, telles que la bonne gestion du cache, et les optimisations SQL, il a été question d&#8217;utiliser Hibernate Search et Hibernate Shards.</p><p><a
href="https://www.hibernate.org/410.html" title="Hibernate Search" >Hibernate Search</a> est connu pour sa capacité à simplifier les recherches dans un ensemble d&#8217;entités grâce à l&#8217;utilisation de <a
href="http://lucene.apache.org/" title="Lucene" >Lucene</a> conjointement à la base de données. Emmanuel Bernard proposait ici de déléguer à Search certaines recherches qui s&#8217;avèrent très coûteuses à effectuer en base. Lucene étant placé sur une machine séparée, et pouvant même fonctionner en maître / esclave, il est ainsi possible d&#8217;obtenir une intéressante répartition de la charge.</p><p><a
href="https://www.hibernate.org/414.html" title="Hibernate Shards" >Hibernate Shards</a>, bien que plus ancien, est moins répandu du fait qu&#8217;aucune version finale n&#8217;a encore été produite. Il s&#8217;agit d&#8217;un module additionnel pour Hibernate permettant à une application de manipuler des données partitionnées sur plusieurs BDD. Le but étant d&#8217;encapsuler la conscience du partitionnement des données au sein de la couche Hibernate afin que l&#8217;application n&#8217;ait pas à gérer cette problématique. Les possibilités du framework sont intéressantes :</p><ul><li>La gestion correcte des Criterias sur des données partitionnées grâce à <a
href="http://docs.jboss.org/hibernate/stable/shards/api/org/hibernate/shards/criteria/ShardedCriteria.html" title="ShardedCriteria" ><code>ShardedCriteria</code></a>.</li><li><a
href="http://docs.jboss.org/hibernate/stable/shards/reference/en/html_single/#shards-resharding-virtual" title="Virtual Shards" >Virtual Shards</a> permettant de faire la distinction entre <em>shard</em> logique et <em>shard</em> physique et ainsi d&#8217;augmenter le nombre d&#8217;instances de base de données au fur et à mesure de l&#8217;augmentation des besoins.</li><li><a
href="http://docs.jboss.org/hibernate/stable/shards/reference/en/html_single/#shards-strategy-idgen" title="Generation dIDs" >Generation d&#8217;IDs</a> compatibles avec l&#8217;utilisation sous-jacente de plusieurs BDDs grâce à l&#8217;utilisation d&#8217;UUIDs.</li><li>Gestion correcte de BDDs hétérogènes.</li></ul><p>Ce sont finalement les fonctionnalités manquantes qui permettent de comprendre pourquoi Shards est toujours en version bêta. Max Ross s&#8217;est expliqué il y a plusieurs mois sur les problématiques rencontrées, de manière succincte <a
href="http://groups.google.com/group/hibernate-shards-dev/browse_thread/thread/74c14afd6d341afa#" title="sur un forum" >sur un forum</a> et plus longuement <a
href="http://www.javaworld.com/podcasts/jtech/2008/072408jtech.html" title="dans une interview" >dans une interview</a>. De nombreux défis restent ainsi à relever concernant la gestion correcte des agrégations dans les <a
href="http://docs.jboss.org/hibernate/stable/shards/api/" title="ShardedQuery" ><code>ShardedQuery</code></a> et la fourniture d&#8217;outils d&#8217;aide au partitionnement et repartitionnement des données.<br
/> Max Ross est employé par Google et non par JBoss, tout comme les deux autres <em>committers</em> du projet (le code ayant été donné à JBoss par Google), et affirme ne disposer que de 20 % de son temps pour Shards. Ceci n&#8217;explique que partiellement <a
href="http://fisheye.jboss.com/browse/Hibernate/shards/" title="le peu de commits" >le peu de commits</a> sur le projet et ne nous rassure guère quant à sa finalisation prochaine.</p><h4><a
name="JigsawvsOSGi"></a>Jigsaw vs OSGi</h4><p>Sept mois après le démarrage du projet <a
href="http://openjdk.java.net/projects/jigsaw" title="Jigsaw" >Jigsaw</a>, sa légitimité n&#8217;est toujours pas reconnue face à OSGi qu&#8217;il est venu défier sur son propre terrain.</p><p>La semaine dernière <a
href="http://javaposse.com/index.php?post_id=492239" title="JavaPosse diffusait une interview" >JavaPosse diffusait une interview</a> de Mark Reinhold et Alex Buckley, où ils ont pu présenter plus en détail leur vision de Jigsaw :</p><ul><li>Il a été conçu pour modulariser le JDK et est intégré au langage.</li><li>Il ne repose pas sur une spécification car cela n&#8217;était pas possible compte tenu du calendrier de JDK 7. Il est donc à considérer comme un &laquo;&nbsp;détail d&#8217;implémentation&nbsp;&raquo; tout comme la gestion du classpath l&#8217;était dans les JVMs précédentes.</li><li>Il n&#8217;est pas supposé entrer en concurrence avec OSGi, des outils permettant l&#8217;intégration entre modules Jigsaw et <em>bundles</em> OSGi étant prévus, mais non prioritaires.</li></ul><p>Dans le même temps, Eric Newcomer (<em>Co-Chair</em>, <em>Enterprise Expert Group</em> de l&#8217;OSGi Alliance), postait <a
href="http://modualrit.blogspot.com/2009/06/osgi-standard-questions.html" title="une série" >une série</a> <a
href="http://modualrit.blogspot.com/2009/06/kill-project-jigsaw-now-please.html" title="de billets" >de billets</a> très virulents à l&#8217;égard du projet Jigsaw, reprochant principalement que Sun n&#8217;ait pas voulu se tourner vers OSGi, ne cherchant pas à combler les manques qu&#8217;il y trouvait, se tournant immédiatement vers une nouvelle technologie et ignorant donc les 10 années d&#8217;expérience acquises par OSGi.</p><p>En fait, il semble n&#8217;y avoir aucune justification technique permettant d&#8217;expliquer l&#8217;orientation de Sun vers Jigsaw plutôt que vers OSGi ou vers une évolution d&#8217;OSGi intégrée au langage. La véritable raison serait alors à chercher sur le plan politique : la modularisation est un concept important qui manque à Java actuellement et Sun ne pouvait probablement pas se permettre, pour l&#8217;ajout d&#8217;un tel concept, de s&#8217;appuyer sur une spécification émise en dehors du JCP sur lequel il a la gouvernance.</p><h4><a
name="Pourquoiutiliserunportail"></a>Pourquoi utiliser un portail ?</h4><p>Le <a
href="http://lescastcodeurs.com/2009/06/les-cast-codeurs-podcast-episode-6-portal-ma/" title="dernier podcast des Cast Codeurs" >dernier podcast des Cast Codeurs</a> était l&#8217;occasion d&#8217;une interview de Thomas Heute et Julien Viet sur les portails d&#8217;entreprise et sur le partenariat entre eXo et JBoss <a
href="http://blog.xebia.fr/2009/06/15/revue-de-presse-xebia-113/#JBosseteXofusionnentleurssolut" title="dont nous vous parlions" >dont nous vous parlions</a> la semaine dernière.</p><p>Les détails liés au partenariat ont déjà été largement couverts par la blogosphère, et c&#8217;est surtout le tour d&#8217;horizon du concept même de portail que l&#8217;on retiendra. Celui-ci reste en effet souvent un élément ambigu au sein de l&#8217;écosystème JEE.</p><p>Le rôle du portail est d&#8217;agréger plusieurs applications au sein d&#8217;une unique application Web. Ce besoin technique peut être atteint à plusieurs niveaux de l&#8217;architecture de l&#8217;application :</p><ul><li>Au niveau back-end, par agrégation de Web Service, se conformant ainsi à l&#8217;un des préceptes des SOAs.</li><li>Au niveau applicatif, par l&#8217;utilisation d&#8217;un portail, ou d&#8217;une solution spécifique.</li><li>Au niveau du navigateur Web, par l&#8217;utilisation de gadgets, en suivant le principe des <a
href="http://fr.wikipedia.org/wiki/Application_composite" title="Mashups" >Mashups</a>.</li></ul><p>En outre, il a également été question des problématiques d&#8217;intégration des frameworks Web aux portlets, de complexité éventuelle, et d&#8217;adaptation des technologies Web aux portlets. Déterminer si un portail doit être utilisé dans une architecture dépend alors du niveau de tolérance à ces problématiques.</p><h4><a
name="EmbarquerleWebdansJavaavecJWeb"></a>Embarquer le Web dans Java avec JWebPane</h4><p>Depuis plusieurs années, lorsque l&#8217;on veut afficher une page Web au sein d&#8217;une application Swing, il faut se tourner vers le composant <a
href="https://jdic.dev.java.net/documentation/Specification.html" title="Browser" >Browser</a> de la librairie <a
href="https://jdic.dev.java.net/" title="Jdic" >Jdic</a>. Ce composant utilise <a
href="http://www.mozilla.org/projects/embedding/" title="Embeddable Mozilla" >Embeddable Mozilla</a>, et se présente sous la forme de code natif décliné pour chaque OS et d&#8217;un <em>wrapper</em> Java. Outre la nécessité de fournir une version spécifique à chaque OS, ce composant présente également l&#8217;inconvénient de mal s&#8217;intégrer aux applications Swing du fait de sa nature <em>heavyweight</em>. Pour rappel, un composant est dit <em>heavyweight</em> lorsqu&#8217;il est dessiné par l&#8217;environnement graphique du système d&#8217;exploitation ; à l&#8217;opposé il devient <em>lightweight</em> s&#8217;il est dessiné par l&#8217;application,  ce qui est le cas de l&#8217;ensemble des composants Swing. Or, faire cohabiter les deux types de composants est délicat car n&#8217;étant pas dessinés au même moment, leur superposition est confuse et des chevauchements non contrôlables apparaissent.</p><p>Lors de JavaOne, Alexey Ushakov a fait la démonstration du composant JWebPane sur lequel il travaille actuellement et vient de poster <a
href="http://weblogs.java.net/blog/alex2d/archive/2009/06/jwebpane_bof_sc.html" title="des captures d'écrans" >des captures d&#8217;écrans</a>. Contrairement à Jdic Browser, JWebPane se base sur le moteur <a
href="http://webkit.org/" title="WebKit" >WebKit</a> pour effectuer le rendu HTML. Or celui-ci se caractérise par sa nature <em>lightweight</em> s&#8217;intégrant agréablement à Swing. La <a
href="http://weblogs.java.net/blog/alex2d/archive/JWebPaneJ1.pdf" title="prsentation dAlex Ushakov" >présentation d&#8217;Alex Ushakov</a> permet également de constater que son composant est particulièrement riche en possibilité d&#8217;interactions et apporte un support pour d&#8217;éventuels plugins tels que Flash.</p><p>On ne peut qu&#8217;apprécier le choix de Sun de créer un composant pour Swing, réutilisable dans JavaFX, plutôt que de privilégier uniquement JavaFX comme cela est souvent le cas depuis son arrivée. L&#8217;intégration de JWebPane au JDK 7 est maintenant indispensable pour rendre ce composant réellement exploitable : se basant sur WebKit, il repose donc sur des librairies natives qu&#8217;il sera nécessaire de livrer avec les applications Java et seul l&#8217;intégration au JDK permettrait de l&#8217;éviter. Or, malgré <a
href="http://www.jroller.com/dmdevito/entry/about_swing_future_and_jwebpane" title="les appels" >les appels</a> de la communauté, JWebPane reste pour le moment absent de la <a
href="http://openjdk.java.net/projects/jdk7/features/" title="liste des features" >liste des <em>features</em></a> du JDK 7 et il est uniquement question d&#8217;une <a
href="http://weblogs.java.net/blog/alex2d/archive/2008/12/jwebpane_projec.html" title="mise  disposition sur Javanet" >mise à disposition sur Java.net</a>.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/22/revue-de-presse-xebia-114/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>En route pour Jazoon 09</title><link>http://blog.xebia.fr/2009/06/22/en-route-pour-jazoon-09/</link> <comments>http://blog.xebia.fr/2009/06/22/en-route-pour-jazoon-09/#comments</comments> <pubDate>Mon, 22 Jun 2009 12:29:09 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Conference]]></category> <category><![CDATA[jazoon]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2282</guid> <description><![CDATA[La semaine prochaine se tiendra à Zurich l&#8217;une des plus grandes conférences Java en Europe, j&#8217;ai nommé Jazoon. Xebia France y sera représenté. Le programme s&#8217;annonce chargé et diversifié, et l&#8217;on espère des annonces un peu plus sexy que celles offertes par les conférenciers de JavaOne. Voici quelques uns des sujets principaux : JEE6 : [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://jazoon.com/" rel="nofollow"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/jazoonlogo09_4fbg_print.png" align="right" border="0" vspace="4" width="300"/></a><br
/> La semaine prochaine se tiendra à Zurich l&#8217;une des plus grandes conférences Java en Europe, j&#8217;ai nommé Jazoon. Xebia France y sera représenté.</p><p>Le <a
href="http://jazoon.com/en/conference/schedule.html" title="programme sannonce charg et diversifi" >programme s&#8217;annonce chargé et diversifié</a>, et l&#8217;on espère des annonces un peu plus <em>sexy</em> que celles offertes par les conférenciers de JavaOne. Voici quelques uns des sujets principaux :</p><ul><li>JEE6 : apprendra t-on quand la spécification sera finalisée ?</li><li>RIA : Flex, GWT, JavaFX</li><li>Spring 3.0</li><li>Cloud computing</li><li>Développement mobile, Android</li><li>Langages dynamiques (Groovy / Grails)</li></ul><p>Ajoutez à cela de nombreuses présentations transverses touchant au cœur de notre métier :</p><ul><li>Performance / concurrency</li><li>Persistence JPA 2.0, Hibernate</li><li>Intégration continue avec Hudson</li><li>Modularisation OSGi</li><li>Testing / refactoring</li><li>Design (<a
href="http://blog.xebia.fr/2009/01/28/ddd-la-conception-qui-lie-le-fonctionnel-et-le-code/" title="DDD" >DDD</a>)</li></ul><p>Le tout sera porté par des acteurs J2EE de renommée mondiale : James Gosling, Neal Ford, Adrian Colyer, Danny Coward, Kirk Pepperdine, Ivar Jacobson &#8230;</p><p>Les journées risquent d&#8217;être denses et nous espérons y collecter un maximum d&#8217;informations que nous vous relayerons !</p><p>Vous pourrez vivre Jazoon en direct (du mardi au jeudi) en nous suivant sur Twitter.</p><div
align="center"><a
href="http://twitter.com/xebiafr" ><img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/twitter-2.png" alt="Follow me on twitter" width="150" height="90" align="center"/></a></div> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/22/en-route-pour-jazoon-09/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
