<?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; GlassFish</title> <atom:link href="http://blog.xebia.fr/tag/glassfish/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>JEE6 &#8211; Glassfish 3.1, Clustering &amp; Failover</title><link>http://blog.xebia.fr/2011/11/23/jee6-glassfish-3-1-clustering-failover/</link> <comments>http://blog.xebia.fr/2011/11/23/jee6-glassfish-3-1-clustering-failover/#comments</comments> <pubDate>Wed, 23 Nov 2011 08:00:00 +0000</pubDate> <dc:creator>Issam El Fatmi</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[cluster]]></category> <category><![CDATA[Failover]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[JEE6]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=9345</guid> <description><![CDATA[En Java EE, on parle souvent de clustering de serveurs d&#8217;application pour évoquer la mise en relation d&#8217;un certain nombre de serveurs. On parle également de failover pour parler de la capacité à rendre l&#8217;indisponibilité d&#8217;un ou de plusieurs serveurs du cluster complètement transparente vis à vis du client; cela se traduit par le fait [...]]]></description> <content:encoded><![CDATA[<p>En Java EE, on parle souvent de clustering de serveurs d&#8217;application pour évoquer la mise en relation d&#8217;un certain nombre de serveurs.</p><p>On parle également de failover pour parler de la capacité à rendre l&#8217;indisponibilité d&#8217;un ou de plusieurs serveurs du cluster complètement transparente vis à vis du client; cela se traduit par le fait de garantir au client la reprise du même contexte d&#8217;exécution qui existait en amont de l&#8217;apparition de la panne du serveur incriminé.</p><p>Glassfish V3, l&#8217;implémentation de référence de JEE6 (<a
href="http://jcp.org/en/jsr/detail?id=316" rel="nofollow">JSR 316</a>), inclut à partir de sa version 3.1 des nouvelles fonctionnalités de clustering (synchronisation lors du démarrage d&#8217;une nouvelle instance, réplication des changements dynamiques de configuration,&#8230;), et offre également un mécanisme de réplication de la session http et des EJB statefull.</p><p>Au cours de cet article nous aborderons la mise en place d&#8217;un cluster glassfish, la configuration Apache avec le plugin Glassfish Load Balancer et le test du failover à travers une application web.</p><p>Il faut noter que toutes les étapes d&#8217;installation et de configuration peuvent être réalisées en mode console ou en mode GUI (à travers la console d&#8217;administration Glassfish). L&#8217;approche console (ligne de commande) a été adoptée.</p><h3><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-Outils%26t%C3%A9l%C3%A9chargements"></a>Outils &amp; téléchargements</h3><ul><li>Glassfish 3.1 : <a
href="http://dlc.sun.com.edgesuite.net/glassfish/3.1/release/glassfish-3.1.zip" rel="nofollow">http://dlc.sun.com.edgesuite.net/glassfish/3.1/release/glassfish-3.1.zip</a> (en édition Open source sous licence CDDL ou GPLv2, la version commerciale est disponible <a
href="http://www.oracle.com/technetwork/middleware/glassfish/downloads/index.html" rel="nofollow">ici</a>)</li><li>clusterjsp.ear : <a
href="http://blogs.sun.com/arungupta/resource/glassfish/clusterjsp.zip" rel="nofollow">http://blogs.sun.com/arungupta/resource/glassfish/clusterjsp.zip</a> (Application web qui nous permettra d&#8217;illustrer le mécanisme de la réplication de session)</li><li>Glassfish Load Balancer plugin: <a
href="http://download.oracle.com/otn-pub/java/ogs/3.1//glassfish-lbconfigurator-3_1.zip" rel="nofollow">http://download.oracle.com/otn-pub/java/ogs/3.1//glassfish-lbconfigurator-3_1.zip</a></li></ul><h3><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-Architecturecible"></a>Architecture cible</h3><p>L’architecture présentée dans la figure ci-dessous fait apparaître les composants suivants:</p><ul><li>Un cluster Glassfish de deux instances pilotées par le DAS (Domain Administration Server) et tournant sur un «MacOS».</li><li>Un serveur HTTP (Apache) intégrant un load balancer de type Glassfish Load Balancer et tournant sur une machine virtuelle «CentOS» dans un environnement virtualisé «VirtualBox».</li></ul><p><span
style="display: block; text-align: center;"><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/architecture.png" alt="" /></span></p><h3><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-Lar%C3%A9plicationdesession%3APrincipedefonctionnement"></a>La réplication de session: Principe de fonctionnement</h3><p>La réplication de la session est assurée par un module OSGI, chargé uniquement lorsque la haute disponibilité est activée au niveau des applications déployées.</p><p>Le module de réplication permet de distribuer uniformément les états de la session sur les serveurs abonnés au cluster.</p><p>Il utilise GMS (Group Management Service) qui est également un module OSGI responsable des notifications concernant les instances joignant ou quittant le cluster; ces évènements, une fois consommés par le module de réplication, lui permettront de choisir l&#8217;instance la plus appropriée pour répliquer la session.</p><p>Il est utilisé par le conteneur web pour la réplication de la session HTTP et par le conteneur EJB pour la réplication des SFSB.</p><h4><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-LoadBalancing%3AFailoveravecApache%26GlassfishLBPlugin"></a>Load Balancing: Failover avec Apache &amp; Glassfish LB Plugin</h4><ul><li>Instance1 OK:</li></ul><p><span
style="display: block; text-align: center;"><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/LB-plugin-replication-before-fail.png" alt="" /></span></p><p>La requête «Request1» émise par un utilisateur «Utilisateur1» arrive au niveau du LB qui la route vers l&#8217;instance «Instance1»</p><p>La session «Session1» ainsi créée, peut être répliquée par le module de réplication sur l&#8217;instance «Instance4».</p><p>La requête «Request2» peut être également routée vers l&#8217;instance «Instance1» par le LB. Le module de réplication répliquera la session «Session2» sur une autre instance dans la mesure du possible (dans le cas où l&#8217;on dispose de plus de deux instances dans le cluter), «Intance2» par exemple.</p><div><table><tbody><tr><td><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/note.png" alt="" /></td><td><ul><li>Le module de réplication ne réplique pas l&#8217;ensemble des sessions d&#8217;une instance donnée sur une même autre instance, il essayera de les répartir sur l&#8217;ensemble des instances du cluster.</li><li>La session est répliquée sur une seule instance et non pas sur la totalité des instances du cluster.</li></ul></td></tr></tbody></table></div><ul><li>Instance1 KO:</li></ul><p><span
style="display: block; text-align: center;"><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/LB-plugin-replication-after-fail.png" alt="" /></span></p><p>Dans le cas où l&#8217;instance «Instance1» n&#8217;est plus accessible, Glassfish LB plugin routera la requête «Request1» vers l&#8217;instance «Instance4» vu qu&#8217;elle contient les données répliquées de la session «Session1» qui sera nouvellement répliquée sur une autre instance, en l&#8217;occurrence sur l&#8217;instance «Instance3». De même, la requête «Request2» sera routée vers l&#8217;instance «Instance2» et la session «Session2» sera répliquée sur l&#8217;instance «Instance4».</p><h4><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-LoadBalancing%3AFailoveravecApacheLB%26modjk"></a>Load Balancing: Failover avec Apache LB &amp; mod_jk</h4><p><span
style="display: block; text-align: center;"><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/Apache-LB-plugin-replication-after-fail.png" alt="" /></span></p><p>La politique de load balancing avec le load balancer Apache est différente de celle du load balancer Glassfish et elle est moins optimisée et moins performante. En effet le load balancer ne dispose pas des informations nécessaires pour router la requête vers une instance qui possède déjà la session répliquée.</p><p>Si le load balancer Apache route la requête «Request1» vers l&#8217;instance «Instance3», un «pull» de la session «Session1» à partir de l&#8217;instance «Instance4» est donc nécessaire.</p><h3><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-Cr%C3%A9ationducluster"></a>Création du cluster</h3><p>Le cluster est composé de deux instances sur un même nœud (un nœud est une représentation logique d&#8217;un host). Pour ce faire déroulez la suite des commandes suivantes:</p><ul><li>Démarrer le serveur d&#8217;administration:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin start-domain
</pre></li><li>Activer le mode SSL pour sécuriser la connexion entre les instances du cluster et le DAS (Domain Application Server):<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin enable-secure-admin
</pre></li><li>Redémarrage du DAS pour prise en compte du mode SSL:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin restart-domain
</pre></li><li>Création du cluster «cluster1»:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin create-cluster cluster1
</pre></li><li>Afficher la liste nœuds:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin list-nodes
</pre></li><li>Créer «instance1» sur le noeud «localhost-domain1» dans le «cluster1»:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin create-instance --node localhost-domain1 --cluster cluster1 instance1
</pre></li><li>Créer «instance2» sur le noeud «localhost-domain1» dans le «cluster1»:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin create-instance --node localhost-domain1 --cluster cluster1 instance2
</pre></li><li>Vérifier la création du «cluster1»:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin list-clusters
</pre></li><li>Démarrer le «cluster1»:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin start-cluster cluster1
</pre></li></ul><h3><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-D%C3%A9ploiementdel%27applicationclusterjsp.war"></a>Déploiement de l&#8217;application clusterjsp</h3><p>Il s&#8217;agit de déployer l&#8217;application clusterjsp.war sur le cluster «cluster1» précédemment créé en activant la haute disponibilité:</p><pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin deploy --target cluster1 --availabilityenabled=true clusterjsp.ear
</pre><p>Il faut savoir que les applications de type «Servlet API Based Web Application» ne sont pas «clusterisables» par défaut. Pour qu&#8217;une application puisse être déployée sur un cluster, il faut qu&#8217;elle déclare un tag spécifique dans le web.xml: &lt;distributable /&gt; (<a
href="http://java.sun.com/j2ee/dtds/web-app_2_2.dtd" rel="nofollow">Official Web App DTD 2.2</a>). Ce tag fut intégré dans l&#8217;API Servlet à partir de sa version 2.2 (version introduite dans J2EE 1.2).</p><h3><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-Testdufailoversansloadbalancing%3A"></a>Test du failover sans load balancing:</h3><ul><li>Saisir l&#8217;URL suivante: <a
href="http://localhost:28080/clusterjsp/HaJsp.jsp" rel="nofollow">http://localhost:28080/clusterjsp/HaJsp.jsp</a>:</li></ul><p><span
style="display: block; text-align: center;"><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/instance1.png" alt="" /></span></p><ul><li>Ajouter des variables de session à l&#8217;aide du formulaire suivant:</li></ul><p><span
style="display: block; text-align: center;"><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/session-attributes-form.png" alt="" /></span></p><ul><li>Arrêter «instance1»:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin stop-instance instance1
</pre></li><li>Accéder à «instance2»: <a
href="http://localhost:28081/clusterjsp/HaJsp.jsp" rel="nofollow">http://localhost:28081/clusterjsp/HaJsp.jsp</a>:</li></ul><p><span
style="display: block; text-align: center;"><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/instance1-instance2-session-attributes.png" alt="" /></span></p><h3><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-Pr%C3%A9parationdelaVM%3ACentOS32bits%28Apache%26GlassfishLBplugin%29"></a>Préparation de la VM: CentOS 32 bits (Apache &amp; Glassfish LB plugin)</h3><h4><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-InstallationApacheenmodeSSL%3A"></a>Installation Apache en mode SSL: <a
href="http://wiki.centos.org/HowTos/Https" rel="nofollow">http://wiki.centos.org/HowTos/Https</a></h4><div><table><tbody><tr><td><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/note.png" alt="" /></td><td><ul><li>Le SSL est nécessaire pour pouvoir utiliser l&#8217;option de déploiement automatique de la configuration LB à partir du DAS vers la machine sur laquelle est installé le Glassfish LB plugin.</li></ul></td></tr></tbody></table></div><h4><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-InstallationduGlassfishLBplugin"></a>Installation du Glassfish LB plugin</h4><div><table><tbody><tr><td><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/note.png" alt="" /></td><td><ul><li>Le plugin n&#8217;est pas compatible avec tous les OS notamment MacOs et HP-UX (<a
href="http://download.oracle.com/docs/cd/E18930_01/html/821-2426/gldbq.html#scrolltoc" rel="nofollow">Supported Operating Systems and Web Servers</a>).</li></ul></td></tr></tbody></table></div><ul><li>Lancer l&#8217;installation du plugin avec la commande suivante:<pre class="brush: bash; gutter: true; title: ; notranslate">
java -jar glassfish-lbconfigurator-3_1.jar
</pre></li></ul><p><span
style="display: block; text-align: center;"><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/glassfish-LB-gui.png" alt="" /></span></p><ul><li>Choisir «Apache serveur» et compléter la suite des instructions.</li></ul><div><table><tbody><tr><td><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/note.png" alt="" /></td><td><ul><li>Le plugin n&#8217;est compatible qu&#8217;avec une version apache 2.2.x. La vérification la version d&#8217;apache installée est donc faite avant le lancement de l&#8217;installation en essayant d&#8217;exécuter la commande suivante:<pre class="brush: bash; gutter: true; title: ; notranslate">
$APACHE_HOME/bin/apachectl
</pre></li></ul></td></tr><tr><td><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/tip.png" alt="" /></td><td><ul><li>Si ce script n&#8217;existe pas à l&#8217;emplacement recherché par le plugin, la solution la plus simple consiste à en créer un avec les droits d&#8217;exécution (chmod 755 apachectl) qui pourrait contenir les lignes suivantes:<p><strong>$APACHE_HOME/bin/apachectl</strong><pre class="brush: bash; gutter: true; title: ; notranslate">
#!/bin/bash
/usr/sbin/apachectl -v
</pre></li></ul></td></tr></tbody></table></div><p>Assurez-vous également d&#8217;avoir les fichiers «httpd-ssl.conf» et «httpd-vhosts.conf» sous le répertoire «$APACHE_HOME/conf/extra» qui seront enrichis par la configuration SSL nécessaire au LB.</p><p>Une fois l&#8217;installation terminée, vous devez les déplacer dans le répertoire «$APACHE_HOME/conf.d» de manière à ce qu&#8217;ils soient inclus dans le fichier de configuration principale «httpd.conf» par le biais de la directive &lt;Include&gt; qui existe déjà (Include conf.d/*.conf), ou éventuellement, rajouter le &lt;Include&gt; qui va bien.</p><ul><li>Exporter le certificat de glassfish:<p>L&#8217;upload de la configuration LB est réalisé en Https. Il est donc nécessaire d&#8217;exporter le certificat de Glassfish et de l&#8217;intégrer au niveau de la configuration Apache SSL du LB.</p><p>Sur la machine du serveur Glassfish, exécutez le script suivant:</p><p><strong>export_certificate.sh</strong><pre class="brush: bash; gutter: true; title: ; notranslate">
keytool \
-export \
-rfc \
-alias s1as \
-keystore $GLASSFISH_HOME/glassfish/domains/domain1/config/keystore.jks \
-file ./glassfish.crt \
-storepass changeit
</pre></li></ul><ul><li>Copier le certificat sur la machine du LB:<pre class="brush: bash; gutter: true; title: ; notranslate">
scp glassfish.crt root@glassfishlb:/etc/httpd/conf/ssl.crt/
</pre></li><li>Récupérer le subject et le serial number du certificat avec la commande suivante:<pre class="brush: bash; gutter: true; title: ; notranslate">
keytool -printcert -file glassfish.crt
</pre></li></ul><p><span
style="display: block; text-align: center;"><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/glassfish-certificate.png" alt="" /></span></p><p>Les valeurs concernant l&#8217;organisation (O), l&#8217;unité d&#8217;organisation (OU) et le serial number seront utilisées par la suite pour compléter la configuration SSL du LB. Le serial number devrait être saisi en majuscule.</p><ul><li>Renseigner les informations liées au certificat dans le fichier «httpd-ssl.conf»<pre class="brush: xml; gutter: true; title: ; notranslate">
  SSLVerifyClient require
  SSLVerifyDepth 1
  SSLRequireSSL
  SSLCACertificateFile /etc/httpd/conf/ssl.crt/glassfish.crt
  SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \
   and %{SSL_CLIENT_S_DN_O} eq &quot;Oracle Corporation&quot; \
   and %{SSL_CLIENT_S_DN_OU} eq &quot;GlassFish&quot; \
   and %{SSL_CLIENT_M_SERIAL} eq &quot;4D5A2F07&quot; )
  SSLVerifyClient require
  SSLVerifyDepth 1
  SSLRequireSSL
  SSLCACertificateFile /etc/httpd/conf/ssl.crt/glassfish.crt
  SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \
   and %{SSL_CLIENT_S_DN_O} eq &quot;Oracle Corporation&quot; \
   and %{SSL_CLIENT_S_DN_OU} eq &quot;GlassFish&quot; \
   and %{SSL_CLIENT_M_SERIAL} eq &quot;4D5A2F07&quot; )
##END GlassFish Load-Balancer Plugin Configuration
</pre></li></ul><div><table><tbody><tr><td><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/note.png" alt="" /></td><td><ul><li>Apache aura du mal à redémarrer et principalement à cause de l&#8217;absence des librairies nécessaires au module «mod_loadbalancer.so» dans le path et/ou sur le disque:</li></ul></td></tr></tbody></table><pre class="brush: bash; gutter: true; title: ; notranslate">
httpd: Syntax error on line 1011 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_loadbalancer.so into server: libicuuc.so.2: cannot open shared object file: No such file or directory
</pre><table><tbody><tr><td><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/tip.png" alt="" /></td><td><ul><li>Assurez-vous de la disponibilité de toutes les dépendances du module «mod_loadbalancer.so» et ajoutez la variable d&#8217;environnement «LD_LIBRARY_PATH» dans le fichier «/etc/init.d/httpd»<pre class="brush: bash; gutter: true; title: ; notranslate">
					export LD_LIBRARY_PATH=/etc/httpd/glassfish-lbplugin/lib/
					</pre></li><li>Vous pouvez également déclarer cette variable d&#8217;environnement au niveau du fichier «$APACHE_HOME/bin/envvars» s&#8217;il est bien chargé au niveau du démarrage du demon httpd.</li></ul></td></tr></tbody></table></div><div><table><tbody><tr><td><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/note.png" alt="" /></td><td><ul><li>Vous pouvez également anticiper le problème lié au listener https lors de la communication ssl entre le serveur glassfish et le LB qui se manifeste par le warning ci-dessous dans les logs apache:</li></ul></td></tr></tbody></table><pre class="brush: bash; gutter: true; title: ; notranslate">
[warn] lb.healthchecker: HLCK3003: Listener: [http://192.168.1.16:24849] is detected to be still unHealthy in cluster: cluster1
</pre><table><tbody><tr><td><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/tip.png" alt="" /></td><td><ul><li>Rajoutez également ces lignes pour permettre le NSS (Network Security Services) forking.<pre class="brush: bash; gutter: true; title: ; notranslate">
					export NSS_STRICT_NOFORK=DISABLED
					</pre></li></ul></td></tr></tbody></table></div><h3><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-Cr%C3%A9ationduLBetd%C3%A9ploiementdelaconfiguration%C3%A0partirduDAS"></a>Création du LB et déploiement de la configuration à partir du DAS</h3><ul><li>Créer le LB<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin create-http-lb --devicehost glassfishlb --deviceport 443 --target cluster1 cluster_lb
</pre></li><li>Déployer le configuration sur la VM de Glassfish LB plugin:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin apply-http-lb-changes cluster_lb
</pre></li></ul><div><table><tbody><tr><td><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/note.png" alt="" /></td><td><ul><li>Dans le cas où vous êtes confrontés à des problèmes de certificat SSL lors du déploiement du fichier de configuration LB vous pouvez toujours l&#8217;exporter et remplacer le contenu du fichier $APACHE_HOME/conf/loadbalancer.xml.</li></ul></td></tr><tr><td><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/tip.png" alt="" /></td><td><ul><li>Exporter le fichier de configuration<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin export-http-lb-config --lbname cluster_lb
</pre></li></ul></td></tr></tbody></table><p><strong>$GLASSFISH_HOME/glassfish/domains/domain1/load-balancer/loadbalancer.xml.cluster_lb_LB_CONFIG</strong></p><pre class="brush: xml; gutter: true; title: ; notranslate">
&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?--&gt;
&lt;!DOCTYPE loadbalancer PUBLIC &quot;-//Sun Microsystems Inc.//DTD Sun Java System Application Server 9.1//EN&quot; &quot;glassfish-loadbalancer_1_3.dtd&quot;&gt;
&lt;loadbalancer&gt;
  &lt;cluster name=&quot;cluster1&quot; policy=&quot;round-robin&quot;&gt;
    &lt;instance disable-timeout-in-minutes=&quot;30&quot; enabled=&quot;true&quot; listeners=&quot;http://$HOSTNAME:28080 https://$HOSTNAME:28181 http://$HOSTNAME:24848&quot; name=&quot;instance1&quot; weight=&quot;100&quot;/&gt;
    &lt;instance disable-timeout-in-minutes=&quot;30&quot; enabled=&quot;true&quot; listeners=&quot;http://$HOSTNAME:28081 https://$HOSTNAME:28182 http://$HOSTNAME:24849&quot; name=&quot;instance2&quot; weight=&quot;100&quot;/&gt;
    &lt;web-module context-root=&quot;/clusterjsp&quot; disable-timeout-in-minutes=&quot;30&quot; enabled=&quot;true&quot;/&gt;
    &lt;health-checker interval-in-seconds=&quot;10&quot; timeout-in-seconds=&quot;30&quot; url=&quot;/&quot;/&gt;
  &lt;/cluster&gt;
  &lt;property name=&quot;response-timeout-in-seconds&quot; value=&quot;60&quot;/&gt;
  &lt;property name=&quot;reload-poll-interval-in-seconds&quot; value=&quot;60&quot;/&gt;
  &lt;property name=&quot;https-routing&quot; value=&quot;false&quot;/&gt;
  &lt;property name=&quot;preferred-failover-instance&quot; value=&quot;true&quot;/&gt;
  &lt;property name=&quot;require-monitor-data&quot; value=&quot;false&quot;/&gt;
  &lt;property name=&quot;rewrite-location&quot; value=&quot;true&quot;/&gt;
  &lt;property name=&quot;number-healthcheck-retries&quot; value=&quot;3&quot;/&gt;
  &lt;property name=&quot;active-healthcheck-enabled&quot; value=&quot;false&quot;/&gt;
  &lt;property name=&quot;rewrite-cookies&quot; value=&quot;false&quot;/&gt;
&lt;/loadbalancer&gt;
</pre></div><h3><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-Testdufailoveravecloadbalancing%3A"></a>Test du failover avec load balancing:</h3><ul><li>Saisir l&#8217;URL suivante: <a
href="http://glassfishlb/clusterjsp/HaJsp.jsp" rel="nofollow">http://glassfishlb/clusterjsp/HaJsp.jsp</a> et ajouter quelques variables de session:</li></ul><p><span
style="display: block; text-align: center;"><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/glassfishlb-instance1.png" alt="" /></span></p><ul><li>Arrêter «instance1»:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin stop-instance instance1
</pre></li></ul><ul><li>Rafraichir la page <a
href="http://glassfishlb/clusterjsp/HaJsp.jsp" rel="nofollow">http://glassfishlb/clusterjsp/HaJsp.jsp</a></li></ul><p><span
style="display: block; text-align: center;"><img
style="border: 0px solid black;" src="http://blog.xebia.fr/wp-content/uploads/2011/11/glassfishlb-instance1-instance2.png" alt="" /></span></p><h3><a
name="DRAFT-JEE6-Glassfish3.1%2CClustering%26Failover-Conclusion"></a>Conclusion</h3><p>Au cours de cet article nous avons pu voir la mise en place d&#8217;un cluster d&#8217;instances vivants dans un même nœud. Il faut savoir qu&#8217;il est également possible de faire cohabiter dans un même cluster, des instances créées sur des nœuds différents. La gestion centralisée des nœuds au niveau du DAS est assurée par accès en SSH aux différentes machines; elle remplace la notion de «node-agent» dans Glassfish V2.</p><p>Si vous êtes dans ce cas d&#8217;utilisation, les principales commandes à utiliser pour la création des nœuds et des instances du cluster seraient les suivantes:</p><ul><li>Configurer SSH<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin setup-ssh ${node-host}
</pre></li></ul><ul><li>Installer le serveur glassfish sur la machine distante:<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin install-node --installdir ${install-dir} ${node-host}
</pre><p>Cette commande effectuera une copie du zip d&#8217;installation du serveur glassfish sur la machine distante; ce qui permettra d&#8217;exécuter par la suite les commandes «asadmin» à distance.</li></ul><ul><li>Créer le noeud<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin create-node-ssh --installdir ${install-dir} --node ${node-host} ${node-name}
</pre></li></ul><ul><li>Désormais, les opérations de création d&#8217;instances sont possibles. Il suffit de spécifier le cluster et le target node<pre class="brush: bash; gutter: true; title: ; notranslate">
asadmin create-instance –cluster ${cluster-name} --node ${node-name} ${instance-name}
</pre></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/11/23/jee6-glassfish-3-1-clustering-failover/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Java NIO et Framework Web Haute performance</title><link>http://blog.xebia.fr/2011/11/09/java-nio-et-framework-web-haute-performance/</link> <comments>http://blog.xebia.fr/2011/11/09/java-nio-et-framework-web-haute-performance/#comments</comments> <pubDate>Wed, 09 Nov 2011 09:37:17 +0000</pubDate> <dc:creator>Séven Le Mesle</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[Apache Mina]]></category> <category><![CDATA[API]]></category> <category><![CDATA[async-http-client]]></category> <category><![CDATA[challenge OCTO]]></category> <category><![CDATA[Deft]]></category> <category><![CDATA[framework]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[Jackson]]></category> <category><![CDATA[Jetty]]></category> <category><![CDATA[Netty]]></category> <category><![CDATA[NIO]]></category> <category><![CDATA[Restlet]]></category> <category><![CDATA[Servlet 3.0]]></category> <category><![CDATA[Tomcat 7]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=9010</guid> <description><![CDATA[Comme nous l’avons déjà évoqué sur le blog, à l’occasion du challenge USI 2011, nous nous sommes intéressés à différents serveurs et framework web NIO en Java. Le principe était simple en mettant à plat la spécification du challenge, nous avons identifié quelques besoins techniques : Une solution pour le marshalling JSON Un serveur web [...]]]></description> <content:encoded><![CDATA[<p>Comme nous l’avons déjà évoqué sur le blog, à l’occasion du challenge USI 2011, nous nous sommes intéressés à différents serveurs et framework web NIO en Java. Le principe était simple en mettant à plat la spécification du challenge, nous avons identifié quelques besoins techniques :</p><ul><li>Une solution pour le marshalling JSON</li><li>Un serveur web NIO supportant le long polling</li><li>Une solution pour la persistence et le partage des données</li></ul><p>Notre démarche a été de réaliser des POCs implémentant la création des utilisateurs et le <em>long polling</em> pour retenir la meilleure solution. La solution devait être simple et rapide à implémenter, et tenir une charge conséquente en la testant à l’aide de <a
href="http://www.manpagez.com/man/8/ab/" rel="nofollow">ab</a> l’outil de benchmark Apache et de la librairie <a
href="https://github.com/sonatype/async-http-client" rel="nofollow">Async Http Client</a>. Pour le JSON, nous nous sommes tous rapidement mis d’accord sur l’utilisation de la librairie Jackson. Nous étions tous convaincus qu’il nous faudrait un serveur web NIO sans passer par la case Servlet. C’est à partir de là que notre tour d’horizon des API NIO en Java a commencé.</p><h3><a
name="JavaNIOetFrameworkWebHauteperformance-PourquoiNIO%3F"></a>Pourquoi NIO ?</h3><p>Revenons d’abord à l’essentiel, nous ne pouvons justifier notre choix sans expliquer ce qu’est cette API Java. Cette API existe depuis la version 1.4 du JDK et permet essentiellement de réaliser des traitements non-bloquants sur les entrées-sorties. <a
href="http://download.oracle.com/javase/1.4.2/docs/guide/nio/" rel="nofollow">NIO</a> est en fait l’acronyme de New IO, la nouvelle api java.nio vient en supplément de l’API java.io existante.<br
/> Prenons l’exemple d’une Socket en Java, par défaut les opérations de lecture et d’écriture sont bloquante. Le thread lançant une opération de lecture ou d’écriture sur Socket sera bloqué sur cet appel tant que l’opération ne sera pas terminée. Tant qu’il n’y aura rien à lire sur la socket ou qu’il n’y aura pas d’espace disponible pour écrire dessus, le thread sera bloqué. Il sera aussi débloqué en cas d’exception dû à un timeout par exemple.</p><p><span
style="display: block; text-align: center"><img
src="http://blog.xebia.fr/wp-content/uploads/2011/11/java-io-01.png" style="border: 0px solid black" /></span></p><p>Depuis java.nio, il est possible de réaliser ces appels sans avoir à attendre qu’il y ait de l’espace libre ou des données à lire sur la Socket. Pour éviter ce temps de bloquage, l’API fournit un système pour écouter les évènements sur les sockets il s’agit du Selector. On enregistre la ou les Sockets dans le selector en précisant si l’on veut lire et/ou écrire, et/ou accepter des connexions sur la socket. Sur chaque appel à select(), le sélecteur créera une liste des Channel pour lesquels une opération est prête à réaliser.  Bien sûr, le serveur devra toujours attendre qu’il y ait des opérations disponibles sur ses sockets clients, mais la grande différence est que le serveur attend une fois pour l’ensemble de ses clients au lieu d’attendre une fois par client.</p><p><span
style="display: block; text-align: center"><img
src="http://blog.xebia.fr/wp-content/uploads/2011/11/java-io-02.png" style="border: 0px solid black" /></span></p><p>Pendant que le thread de l’API historique java.io attend un client, un Thread utilisant java.nio pourra traiter d’autres clients. Pour traiter les requêtes en parallèle avec l’API java.io, il suffit de multiplier le nombre de Thread avec un thread par client, il n’y aura pas d’attente non plus. Malheureusement on ne peut pas multiplier indéfiniment les Threads sans impact sur l’espace mémoire. Dans le cadre du challenge, nous étions limités en mémoire et nous devions supporter le maximum possible de client concurrents. Avec son faible nombre de Threads (1 par CPU) et donc sa consommation de mémoire inférieur, NIO est rapidement devenu une évidence pour tous.<br
/> Pour ces même raisons, nous avions décidé d’éliminer les serveurs de Servlet. L’API Servlet est consommatrice par essence et apporte une quantité non négligeable de raffinements dont nous n’avions pas besoin. Depuis l’API Servlet 3.0, il est possible de réaliser des Servlets Asynchrone qui permettent de libérer le Thread d&#8217;exécution de la requête pour envoyer la réponse plus tard à partir d’un autre Thread. Par curiosité nous avons donc testés Tomcat 7 en Servlet asynchrone, avec de forts à priori.</p><h3><a
name="JavaNIOetFrameworkWebHauteperformance-Letest"></a>Le test</h3><p>Afin de départager les différentes API, nous avons réalisé une implémentation du service de création des utilisateurs qui les persistent dans une Map. Quelque soit le framework, le service de mapping du JSON et de persistance sont les mêmes. Ainsi, nous pouvions nous intéresser à notre seul problème: la performance du serveur HTTP.  Les tests ont été réalisés sur un macbook pro 2,4 Ghz core i5 sans optimisation de JVM. Les seules modifications réalisées sur le système sont:</p><ul><li>L’augmentation du nombre de port éphémères via  sysctl net.inet.ip.portrange.first</li><li>La réduction du maximum segment lifetime afin de réduire la durée de réservation des sockets en TIME_WAIT.<br
/> Ces configurations ont pour seule but de permettre à ab d’injecter une charge conséquente sans souffrir de timeout dûe à un nombre trop élevé de socket réservé.</li></ul><h3><a
name="JavaNIOetFrameworkWebHauteperformance-Tourd%E2%80%99horizondesimpl%C3%A9mentationsNIO"></a>Tour d’horizon des implémentations NIO</h3><h4><a
name="JavaNIOetFrameworkWebHauteperformance-Restlet"></a>Restlet</h4><p><a
href="http://www.restlet.org/" rel="nofollow">Restlet</a> est un framework REST qui embarque le serveur HTTP et permet de choisir parmi différentes implémentations de Mina par défaut à Jetty en passant par Grizzly et Netty.<br
/> Restlet, semblait donc parfaitement adapté à la réalisation du serveur REST tout en nous offrant la possibilité de choisir le serveur à utiliser. En ultime recours sachez tout de même qu’il est parfaitement possible d’embarquer Restlet dans un war.<br
/> Nous avons donc créé un POC pour le service de création des utilisateurs (1Million d’utilisateurs en moins d’une heure). Après quelques tests rapides, l’API est convaincante pour sa simplicité d’utilisation et sa rapidité de prise en main. Mais les performances ne sont pas à la hauteur de nos espérances. Nous étions bien sûr largement capables de créer le million d’utilisateur en moins d’une heure, mais le temps passé dans les API Restlet, Mina et Jetty était trop impactant. Nous avons testé ce POC avec Mina et Jetty sans nous intéresser aux autres solutions que nous souhaitions tester en direct. Pour la solution Jetty, ab indiquait en moyenne 5k requêtes par secondes pour un temps de traitement moyen de 11ms à la création des utilisateurs. Si cette performance est encourageante et s’avère la meilleure disponible toute implémentation de serveur confondue, il y a tout de même une consommation en mémoire importante et des points de synchronisation bloquants. Pour le test via Mina la solution par défaut, les tests de charge supportaient mal l’augmentation du nombre d’injecteurs qui cause une cascade de Timeout. D’autre part alors que Jetty se limite à 80 Threads, avec son implémentation Mina, Restlet crée rapidement des centaines de Threads et consomme beaucoup de mémoire. Retenez donc que l’implémentation Jetty NIO de Restlet est très performante et répondra à la majorité des besoins en informatique de gestion.</p><h4><a
name="JavaNIOetFrameworkWebHauteperformance-Tomcat7"></a>Tomcat 7</h4><p>Le développement de ces POCs était une bonne occasion pour tester Tomcat 7 et les Servlets 3.0. Nous avons donc implémenté notre service avec des Servlets déclarées par annotation et utilisant l’exécution asynchrone pour maximiser le nombre de connexions concurrentes supportées.<br
/> Notez que l’utilisation des Servlets asynchrones a un impact immédiat sur les performances du serveur. La version asynchrone de la solution supportait effectivement plus de connexions avec des temps de réponse à peu près similaires. Le simple fait de passer la Servlet en traitement asynchrone permet donc de gagner en performance. Malheureusement en examinant les ThreadDump, il était clair que Tomcat avait un gros impact sur les temps de réponse (files d’attente et autre point de synchro était omni-présent).<br
/> Une dernière remarque, les tests ont été réalisés en utilisant deux connecteurs HTTP différents : le standard et le NIO. La solution NIO était bien plus performante en terme de parallélisme, mais le connecteur souffrait alors d’une fuite de mémoire conséquente. Le connecteur NIO de Tomcat aurait pu être une bonne option, mais nous ne voulions pas partir sur une solution reposant d’emblée sur des API instables comme c’était le cas du connecteur. A priori le bug a été corrigé dans les versions suivantes de Tomcat. Notez aussi que Tomcat a une empreinte mémoire importante et implique l’utilisation quasi permanente du GC car la mémoire utilisée dans la heap augmente régulièrement.</p><h4><a
name="JavaNIOetFrameworkWebHauteperformance-Grizzly"></a>Grizzly</h4><p>Pour mémoire, Grizzly est l’API réseaux utilisée par GlassFish. La librairie fournie un serveur de Servlet et un framework de traitement réseau NIO, “haute performance”. Tant qu’à faire, c’est à la partie framework NIO que nous nous sommes intéressés.  Pour créer le serveur, il suffit d’utiliser <code>HttpServer.createSimpleServer()</code> auquel on ajoute ensuite des HttpRequestProcessor mappés par URL. Bien que très mal documentée, l’API est simple à mettre en place. Le problème vient plutôt du fine tuning car il est facile de changer le port d’écoute et d’activer le monitoring JMX, par contre la gestion des ThreadsPool s’avère bien plus complexe. Il n’existe pas dans Grizzly un moyen simple de spécifier son <code>ExecutorService</code>. Sur le scénario simple d’injection des utilisateurs, Grizzly crée rapidement plusieurs centaines de Threads et souffre de nombreux points de synchronisation. N’ayant pas beaucoup de temps à consommer dans cette phase de POC, nous avons rapidement éliminés Grizzly qui nécessitait d’emblé des optimisations et ne répondait pas aux besoins directement sorti de sa boite. En tests nous avons atteint une moyenne de 1500 req/s pour l’injection de 100k joueur dans une simple HashMap. Notez tout de même que Grizzly supporte différentes stratégies pour gérer les IO (<a
href="http://grizzly.java.net/nonav/docs/docbkx2.0/html/iostrategies.html" rel="nofollow">http://grizzly.java.net/nonav/docs/docbkx2.0/html/iostrategies.html</a>), par défaut il applique le WorkerThread qui consiste à déléguer le traitement des IO à un worker séparé. Nous n’avons pas testé d’autres stratégies que celle par défaut; cela aurait nécessité plus de temps que nous ne souhaitions en allouer au POC. En résumé, les tests sur grizzly se sont avérés décevants; avec plus de temps nous aurions sûrement amélioré ces performances.</p><h4><a
name="JavaNIOetFrameworkWebHauteperformance-Deft"></a>Deft</h4><p><a
href="http://incubator.apache.org/deft/" rel="nofollow">Deft</a> est une implémentation Java s’inspirant de <a
href="http://www.tornadoweb.org/" rel="nofollow">Tornado</a>, le serveur HTTP de facebook en python. Son principe est de créer une boucle infinie unique exécutant l’ensemble des évènements remontés par le Selector dans le même thread. Comme dans NodeJS, ce système permet de réaliser les traitements de façon évènementiel sans se soucier de la concurrence. Avec quelques tests sur un seul Thread, nous avons constaté des performances impressionnantes. En temps de réponse, en nombre de requêtes concurrentes, comme en consommation mémoire le serveur dépasse l’ensemble de ses concurrents sans aucune optimisation. Il y avait toutefois quelques bugs rédhibitoires dans l’API causant des erreurs graves à l’exécution de certains tests de charge. Le code étant simple, Séven a réalisé des corrections de bugs et implémenté un mode multi-thread permettant de lancer plusieurs boucles infinies pour tirer au mieux parti des CPU multi-coeurs. Sur le test d’injection de 100k joueurs, nous avons atteint entre 10 et 11k req/s pour une moyenne de 6ms de temps de réponse. Pour Deft, nous avons donc fait exception à la règle du temps consommé, n’étant jamais à l’abri d’une bonne surprise cela pouvait valoir le coups. Au final, l’API étant encore un peu trop instable et manquant de raffinement, comme la gestion des cookies ou le support de la compression gzip, ou encore une solution clé en main de longpolling, nous avons abandonné ce POC pourtant prometteur. Notez que, depuis la fin du challenge, le projet est rentré en incubation chez Apache avec pour but de fournir un serveur Java haute performance non J2EE. L’histoire continue pour Séven qui a rejoint l’équipe des commiters de ce nouveau projet Apache.</p><h4><a
name="JavaNIOetFrameworkWebHauteperformance-Netty"></a>Netty</h4><p><a
href="http://www.jboss.org/netty" rel="nofollow">Netty</a> est le framework NIO de JBoss, il permet de créer rapidement un serveur HTTP. Netty utilise deux ThreadPool, l’un pour écouter et accepter les connexions entrantes et l’autre pour traiter les échanges de données sur socket établies (Boss / Worker). Il définit ensuite une liste de Handler permettant de traiter les messages lus et d’écrire une réponse. Les handlers se comportent comme des filtres passant un événement portant un message, ils sont invoqués dans le sens de la lecture puis dans le sens de l’écriture vers le SocketChannel. La création d’un serveur HTTP nécessite donc de configurer les décodeurs dans le bon ordre mais l’exemple fournit dans la documentation permet de mettre le tout en œuvre en quelques minutes. Pour les habitués des documentations Jboss, notez que celle de Netty est riche et lisible : un bel effort pour ces experts du labyrinthe. Netty a l’avantage de supporter nativement le long-polling et de parfaitement gérer les envois de réponse en masse sur les sockets client. Sur le test d’injection des 100k utilisateurs, nous avons atteint les 9k req/s pour des temps de réponses de 6ms en moyenne. Pendant le test, Netty alloue un peu de mémoire supplémentaire mais se stabilise rapidement sans avoir d’activité GC. Comme vous pouvez le constater, cette solution supporte une charge légèrement inférieure mais apporte une stabilité accrue par rapport à Deft et surtout bénéficie d’optimisation pour le long-polling. La seule optimisation dont nous avons eu besoin par rapport au code de démonstration, fût l’utilisation d’un MemoryAwareThreadPool en lieu et place du CachedThreadPool qui causait un goulet d’étranglement. C’est donc la maturité de l’API, la simplicité d’usage et la performance de la solution qui ont fait la différence au final sur notre choix.</p><h3><a
name="JavaNIOetFrameworkWebHauteperformance-Conclusion"></a>Conclusion</h3><p>Pour conclure, ce tour d’horizon nous a permis finalement de découvrir qu’avec un peu d’optimisation, il est facile de faire des serveurs de hautes performance en reposant sur nos bons vieux serveurs J2EE comme Tomcat et Jetty. Les solutions NIO font surtout la différence sur l’application du long-polling, et les réponses groupées. Ainsi que sur la consommation mémoire et le nombre de Thread utilisés favorisant ainsi l’économie des FullGC et plus globalement du temps de traitement du garbage collector. NIO prend tout son sens pour le messaging et les serveurs de type événementiels. Parmi les API NIO non couvertes par nos tests, notez aussi l’existence de <a
href="http://www.simpleframework.org/" rel="nofollow">Simple</a> : un serveur web prometteur permettant d’héberger des application Jersey en JAX-RS et intégré dans Restlet. <br
/> Vous trouverez les sources des pocs sur le GitHub de Xebia: <a
href="https://github.com/xebia-france/NIO" rel="nofollow">https://github.com/xebia-france/NIO</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/11/09/java-nio-et-framework-web-haute-performance/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Testabilité des EJB 3.1. Prêt pour du TDD ?</title><link>http://blog.xebia.fr/2011/02/02/testabilite-des-ejb-3-1-pret-pour-du-tdd/</link> <comments>http://blog.xebia.fr/2011/02/02/testabilite-des-ejb-3-1-pret-pour-du-tdd/#comments</comments> <pubDate>Wed, 02 Feb 2011 15:22:55 +0000</pubDate> <dc:creator>Julien Smadja</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[EJB]]></category> <category><![CDATA[EJB 3.1]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[TDD]]></category> <category><![CDATA[Test-Driven-Development]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=6766</guid> <description><![CDATA[La testabilité est devenue un facteur à prendre en compte lors du choix d&#8217;un composant technique. Pour les EJB 3.0, il existait plusieurs manières de tester des services développés, Ejb3unit (figé depuis mi-2009) ou Arquillian (uniquement côté JBoss AS). Les EJB 3.1 offrent enfin une solution native, prête à l&#8217;emploi et simple à manipuler : [...]]]></description> <content:encoded><![CDATA[<p>La testabilité est devenue un facteur à prendre en compte lors du choix d&#8217;un composant technique. Pour les EJB 3.0, il existait plusieurs manières de tester des services développés, <a
href="http://ejb3unit.sourceforge.net/" title="Ejb3unit" >Ejb3unit</a> (figé depuis mi-2009) ou <a
href="http://www.jboss.org/arquillian" title="Arquillian" >Arquillian</a> (uniquement côté JBoss AS). Les EJB 3.1 offrent enfin une solution native, prête à l&#8217;emploi et simple à manipuler : <strong>l&#8217;EJB Container</strong>.</p><p>Cet article présente l&#8217;utilité de l&#8217;EJB Container et la manière de l&#8217;utiliser ; il s&#8217;appuie pour cela sur l&#8217;écriture d&#8217;un service et d&#8217;une suite de tests exécutables sur <strong>Glassfish 3</strong> et sur <strong>JBoss 6</strong>.</p><h3><a
name="LEJBContainerenthorie"></a>L&#8217;EJB Container en théorie</h3><p>Les EJB 3.1 sont spécifiés dans la <a
href="http://jcp.org/en/jsr/detail?id=318" title="JSR 318" >JSR 318</a> dont la version finale a été validée en décembre 2009. Outre les spécifications liées au cœur même des EJB (Session Bean Stateless, Stateful, Message-Driven Bean, Timer Service, Transactions, etc) on trouve un chapitre dédié à un tout nouveau composant : l&#8217;EJB Container. Voici un résumé des fonctionnalités et obligations spécifiées :</p><ul><li>Supporter le sous-ensemble EJB Lite de l&#8217;API EJB 3.1 dans un environnement de conteneur embarqué ;</li><li>Permettre à un code client (un programme Java standard par exemple) d&#8217;instancier un EJB Container qui s&#8217;exécute dans sa propre JVM avec son propre classloader ;</li><li>Définir une API permettant de démarrer le conteneur et de récupérer les Enterprise Beans ;</li><li>Fournir un environnement qui supporte les services de base tels que l&#8217;injection de dépendances, l&#8217;accès à l&#8217;environnement, la gestion des transactions, etc.</li></ul><p>Pour rappel, le sous-ensemble EJB Lite est composé :</p><ul><li>De la prise en charge des Session Beans Stateless, Stateful, et Singleton ;</li><li>Uniquement des EJB avec interface Local ou sans interface ;</li><li>De la prise en charge des Interceptors ;</li><li>Du support de la sécurité ;</li><li>Du support des transactions.</li></ul><p>La JSR 318 n&#8217;étant qu&#8217;une spécification, l&#8217;implémentation de ces fonctionnalités repose sur les éditeurs de serveurs d&#8217;applications.</p><h3><a
name="LEJBContainerenpratique"></a>L&#8217;EJB Container en pratique</h3><p>L&#8217;EJB Container est le moteur qui va nous permettre de simuler l&#8217;exécution de nos EJB comme si nous étions dans le « vrai » conteneur EJB de notre serveur d&#8217;applications.</p><h4><a
name="UncassimpleHelloWorld"></a>Un cas simple : Hello World !</h4><p>Pour démarrer, nous allons développer un simple EJB <a
href="https://github.com/jsmadja/EJBContainer/blob/master/src/main/java/com/xebia/ejbcontainer/service/HelloWorldService.java#L1" title="HelloWorldService" >HelloWorldService</a>. Le test consistera à vérifier que la méthode sayHelloWorld() de <a
href="https://github.com/jsmadja/EJBContainer/blob/master/src/main/java/com/xebia/ejbcontainer/service/HelloWorldService.java#L1" title="HelloWorldService" >HelloWorldService</a> renvoie bien « Hello World ».</p><p>Voici tout d&#8217;abord notre bean <a
href="https://github.com/jsmadja/EJBContainer/blob/master/src/main/java/com/xebia/ejbcontainer/service/HelloWorldService.java#L1" title="HelloWorldService" >HelloWorldService</a>. Sa responsabilité est de retourner la chaîne de caractères « Hello World » lors de l&#8217;appel de la méthode <code>sayHelloWorld</code>.</p><pre class="brush: java; title: ; notranslate">
@Stateless
@Local
public class HelloWorldService implements IHelloWorldService {
    public String sayHelloWorld() {
        return &quot;Hello World&quot;;
    }
}
</pre><p>Pour tester uniquement cet EJB nous créons un test JUnit qui se charge d&#8217;instancier l&#8217;EJBContainer et de récupérer notre Bean. Le seul et unique test sera de vérifier que l&#8217;appel à la méthode sayHelloWorld retourne bien « Hello World ».</p><pre class="brush: java; title: ; notranslate">
public class HelloWorldServiceTest {
    private static EJBContainer ejbContainer;
    private static IHelloWorldService helloWorldService;
    /***
     * Méthode d'initialisation appelée une seule fois lors de l'exécution
     * des tests de HelloServiceTest.
     * C'est l'endroit idéal pour démarrer l'EJBContainer et récupérer
     * les EJB à tester.
     * @throws NamingException
     */
    @BeforeClass
    public static void init() throws NamingException {
        Map&lt;String, Object&gt; properties = new HashMap&lt;String, Object&gt;();
        properties.put(EJBContainer.MODULES, new File(&quot;target/classes.ext&quot;));
        ejbContainer = EJBContainer.createEJBContainer(properties);
        Context ctx = ejbContainer.getContext();
        // le nom JNDI d'un EJB dépend du serveur d'applications utilisé :
        // jboss     : &quot;HelloWorldService/local&quot;
        // glassfish : &quot;java:global/classes.ext/HelloWorldService&quot;
        String helloWorldServiceName = HelloWorldService.class.getSimpleName();
        helloWorldServiceName = isJbossContainer() ? helloWorldServiceName + &quot;/local&quot; : &quot;java:global/classes.ext/&quot; + helloWorldServiceName;
        helloWorldService = (IHelloWorldService) ctx.lookup(helloWorldServiceName);
    }
    /***
     * Méthode de test qui vérifie que nous avons bien récupéré l'EJB
     * HelloWorldService et qu'il est fonctionnel
     */
    @Test
    public void should_say_hello_world() {
        Assert.assertEquals(&quot;Hello World&quot;, helloWorldService.sayHelloWorld());
    }
    /***
     * Méthode de nettoyage appelée une seule fois après l'exécution de
     * l'ensemble des tests unitaires de HelloServiceTest.
     * C'est l'endroit idéal pour fermer le contexte JNDI et l'EJBContainer.
     * Un bug de JBoss nous contraint à ne pas appeler les méthodes close()
     * sur context et container.
     * @throws NamingException
     */
    @AfterClass
    public static void cleanup() throws NamingException {
        ejbContainer.close();
    }
    private static boolean isJbossContainer() {
        return System.getProperty(&quot;jboss.home&quot;) != null;
    }
}
</pre><p>Comme convenu par les spécifications, un EJBContainer est instancié grâce à la méthode <code>EJBContainer.createEJBContainer()</code> et fermé par la méthode <code>EJBContainer.close()</code>.</p><p>Lors de la création de l&#8217;EJBContainer il faut préciser le répertoire des classes compilées. Habituellement lorsqu&#8217;on utilise Maven, ce répertoire est <code>target/classes</code>.</p><p>Malheureusement JBoss 6.0.0 Final contient un <a
href="https://issues.jboss.org/browse/JBAS-8669" title="bug" >bug</a> qui nous oblige à compiler nos EJB dans un dossier suffixé par 4 caractères (par exemple : target/classes devient target/classes.ext).  En effet, lors de l&#8217;exécution du déploiement du conteneur, les 4 derniers caractères seront tronqués. La prochaine version de JBoss  (v6.0.1) corrigera cette anomalie.</p><p>Une fois le conteneur récupéré, il suffit de passer par le Context JNDI pour rapatrier ses beans mais attention : le nom JNDI des EJB est différent selon le serveur d&#8217;applications utilisé.</p><p>Nous avons défini deux profils Maven dans le <a
href="https://github.com/jsmadja/EJBContainer/blob/master/pom.xml#L12" title="pomxml" >pom.xml</a> permettant de passer d&#8217;une exécution avec Glassfish à une exécution avec JBoss. Pour choisir, il suffit d&#8217;ajouter le paramètre <code>-Pglassfish</code> ou le paramètre <code>-Pjboss</code>.</p><p>Pour exécuter les tests sur Glassfish il suffit d&#8217;exécuter la commande suivante :</p><pre class="brush: bash; title: ; notranslate">
mvn test -Pglassfish
</pre><p>Pour exécuter les tests sur JBoss il suffit d&#8217;exécuter la commande suivante :</p><pre class="brush: bash; title: ; notranslate">
mvn test -Pjboss
</pre><p>Le temps d&#8217;exécution total est très différent entre les deux conteneurs :</p><ul><li><strong>Glassfish 3</strong> : 6 secondes</li><li><strong>JBoss 6 Final</strong> : 61 secondes</li></ul><h3><a
name="UncaspluscomplexeEJBJPA"></a>Un cas plus complexe : EJB 3.1 + JPA 2</h3><p>Pour aller plus loin, nous allons développer un service permettant d&#8217;enregistrer des personnes dans une base de données.</p><p>Pour manipuler nos entités <a
href="https://github.com/jsmadja/EJBContainer/blob/master/src/main/java/com/xebia/ejbcontainer/domain/Person.java#L1" title="Person" >Person</a> nous créons <a
href="https://github.com/jsmadja/EJBContainer/blob/master/src/main/java/com/xebia/ejbcontainer/service/PersonService.java#L1" title="PersonService" >PersonService</a> qui est un EJB Session Bean Stateless utilisant l&#8217;EntityManager de JPA 2.0.</p><pre class="brush: java; title: ; notranslate">
@Stateless
@Local
/**
 * Service permettant la gestion des entités Person avec la base de données
 * Seule la méthode de création est implémentée.
 */
public class PersonService implements IPersonService {
    @PersistenceContext
    EntityManager em;
    /**
     * Crée une nouvelle Person dans la base de données.
     * Méthode transactionnelle :
     *  @TransactionAttribute(TransactionAttributeType.REQUIRED) est implicite
     * @param person une instance de Person
     * @return L'instance de personne persistée, champ Id initialisé
     */
    @Override
    public Person create(Person person) {
        em.persist(person);
        return person;
    }
}
</pre><p>En nous arrêtant là, et à 2 fichiers de configuration près, notre EJB est packageable en JAR et déployable sur les serveurs d&#8217;applications JBoss et Glassfish :</p><ul><li><a
href="https://github.com/jsmadja/EJBContainer/blob/master/src/conf/glassfish/META-INF/ejb-jar.xml#L1" title="ejbjarxml" >ejb-jar.xml</a> contient la liste de vos EJB. Ce fichier est portable et sera le même quel que soit le serveur d&#8217;applications ;</li><li>persistence.xml contient les paramètres de connexion à la base de donnée. La configuration de ce fichier est fortement liée au choix de serveur d&#8217;applications. Pour JBoss, Hibernate sera privilégié comme Persistence Provider <a
href="https://github.com/jsmadja/EJBContainer/blob/master/src/conf/jboss/META-INF/persistence.xml#L1" title="(persistence.xml" >(persistence.xml</a>), alors que pour Glassfish ce sera plutôt Eclipse Link (<a
href="https://github.com/jsmadja/EJBContainer/blob/master/src/conf/glassfish/META-INF/persistence.xml#L1" title="persistencexml" >persistence.xml</a>).</li></ul><p><strong>Écriture et exécution du test</strong></p><p>Comme précédemment, nous utilisons un test JUnit pour valider le comportement de <a
href="https://github.com/jsmadja/EJBContainer/blob/master/src/main/java/com/xebia/ejbcontainer/service/PersonService.java#L1" title="PersonService" >PersonService</a>. Pour plus de clarté, l&#8217;exemple ci-dessous ne contient pas les méthodes d&#8217;initialisation et de fermeture de l&#8217;EJBContainer :</p><pre class="brush: java; title: ; notranslate">
public class PersonServiceTest {
    private static IPersonService personService;
    /***
     &lt;strong&gt; Méthode de test qui vérifie la création d'un objet Person dans la
     &lt;/strong&gt; base de données. L'instance obtient un identifiant après avoir été
     * persistée par l'EntityManager.
     */
    @Test
    public void should_create_a_person() {
        Person person = new Person(&quot;Erich&quot;, &quot;Gamma&quot;);
        Person createdPerson = personService.create(person);
        assertNotNull(createdPerson.getId());
    }
}
</pre><p>Regardons maintenant comment se comporte notre EJB Container en rajoutant ce nouvel EJB. Tout d&#8217;abord, voici les temps d&#8217;exécution mis à jour :</p><ul><li><strong>Glassfish 3</strong> : 12 secondes</li><li><strong>JBoss 6 Final</strong> : 67 secondes</li></ul><p>Le temps d&#8217;exécution est toujours beaucoup plus faible en utilisant Glassfish 3 que JBoss 6.</p><p>Glassfish a mis 2 fois plus de temps à démarrer à cause des phases d&#8217;initialisation dues à l&#8217;utilisation de JPA 2.0 (entity manager, création de la base de données, création des tables, mapping des entités, etc). JBoss a quant à lui mis quelques secondes de plus que précédemment, il charge un conteneur entier et ne semble pas vouloir jouer la carte de la légèreté comme le fait Glassfish.</p><p>Ce temps total d&#8217;exécution est voué à augmenter tout au long du projet, au fur et à mesure des nouvelles entités, des nouveaux services. Une chose est sûre, des outils comme <a
href="http://infinitest.github.com/" title="Infinitest" >Infinitest</a> &#8212; lançant en boucle les tests des EJB &#8212; sont à proscrire. Il n&#8217;est pas concevable de démarrer des conteneurs qui mettent plus d&#8217;une minute à s&#8217;initialiser!</p><h3><a
name="LeslimitesdelEJBContainer"></a>Les limites de l&#8217;EJB Container</h3><p>En conclusion, l&#8217;EJB Container est un vrai plus dans la testabilité des EJB 3.1. Sa simplicité d&#8217;utilisation permet de se reposer facilement sur le conteneur dans nos tests ; il permet même d&#8217;envisager le développement dirigé par les tests (TDD). Malheureusement, sa trop grande durée d&#8217;initialisation n&#8217;encouragera pas à lancer les tests toutes les 5 secondes.</p><p>Ce qu&#8217;il faut retenir c&#8217;est qu&#8217;après le démarrage de l&#8217;EJB Container, les tests sont exécutés à vitesse grand V. Ils feront partie des tests d&#8217;intégration et nous permettront toujours de déceler les régressions et bugs potentiels.</p><p>Nous n&#8217;avons pas exploré dans cet article les limites techniques dues au sous-ensemble réduit des EJB Lite. Si vous pensez avoir des cas dans lesquels l&#8217;EJB Container ne peut pas vous aider, laissez-nous un commentaire <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p><h3>Code source</h3><p>L&#8217;intégralité de l&#8217;exemple est disponible sur <a
href="https://github.com/jsmadja/EJBContainer" title="Github" >Github</a>. Maven et <a
href="http://www.jboss.org/jbossas/downloads.html" title="JBoss 60" >JBoss 6.0.</a> sont nécessaires à son bon fonctionnement.</p><p>Pour JBoss, une variable d&#8217;environnement JBOSS_HOME pointant vers le répertoire d&#8217;installation est indispensable.</p><h3>Pour en savoir plus sur les EJB 3.1</h3><p>Le livre <a
href="http://apress.com/book/view/1430219548" title="Beginning Java EE 6 Platform with GlassFish 3 From Novice to Professional" >Beginning Java™ EE 6 Platform with GlassFish™ 3: From Novice to Professional</a> d&#8217;Antonio Goncalves permet d&#8217;approfondir les possibilités offertes par EJB 3.1 et Java EE 6. Plusieurs chapitres sont dédiés aux EJB 3.1 (Session Beans, Transactions, Timer Service, etc). Les autres chapitres portent sur JPA 2.0, JSF 2.0 ainsi que sur l&#8217;écriture de Web Services SOAP et REST. Ce livre est un guide qui se lit vite et permet de mettre rapidement le pied à l&#8217;étrier.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2011/02/9781430219545.gif" border="0" alt="" /></div><h3>Annexe</h3><p>Si vous exécutez les tests avec la version 6.0.0 de JBoss AS, attendez-vous à une erreur lors de la fermeture de l&#8217;EJB Container. En effet, une anomalie lève une stacktrace lors de l&#8217;appel à la méthode ejbContainer.close().</p><pre class="brush: bash; title: ; notranslate">
21:04:59,128 ERROR [AOPClassLoaderDeployer] Error during undeploy: vfs:///Users/juliensmadja/Documents/workspace_fluxx/EJBContainer/target/classes.ext/: java.lang.NullPointerException
	at org.jboss.aop.asintegration.jboss5.AOPClassLoaderInitializer.unregisterLoaders(AOPClassLoaderInitializer.java:54) [jboss-aop-asintegration-mc.jar:2.2.1.GA]
	at org.jboss.aop.asintegration.jboss5.AOPClassLoaderDeployer.internalUndeploy(AOPClassLoaderDeployer.java:77) [jboss-aop-deployers.jar:2.2.1.GA]
	at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.undeploy(AbstractRealDeployer.java:117) [jboss-deployers-spi.jar:2.2.0.GA]
	at org.jboss.deployers.plugins.deployers.DeployerWrapper.undeploy(DeployerWrapper.java:204) [jboss-deployers-impl.jar:2.2.0.GA]
	at org.jboss.deployers.plugins.deployers.DeployersImpl.doUndeploy(DeployersImpl.java:1862) [jboss-deployers-impl.jar:2.2.0.GA]
	at org.jboss.deployers.plugins.deployers.DeployersImpl.doUninstallParentLast(DeployersImpl.java:1769) [jboss-deployers-impl.jar:2.2.0.GA]
	at org.jboss.deployers.plugins.deployers.DeployersImpl.uninstall(DeployersImpl.java:1724) [jboss-deployers-impl.jar:2.2.0.GA]
	at org.jboss.dependency.plugins.AbstractControllerContext.uninstall(AbstractControllerContext.java:385) [jboss-dependency.jar:2.2.0.GA]
	at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractController.java:2078) [jboss-dependency.jar:2.2.0.GA]
	at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:1624) [jboss-dependency.jar:2.2.0.GA]
	at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:1472) [jboss-dependency.jar:2.2.0.GA]
	at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractController.java:756) [jboss-dependency.jar:2.2.0.GA]
	at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractController.java:669) [jboss-dependency.jar:2.2.0.GA]
	at org.jboss.dependency.plugins.AbstractController.shutdown(AbstractController.java:270) [jboss-dependency.jar:2.2.0.GA]
	at org.jboss.bootstrap.impl.mc.server.AbstractMCServerBase.shutdownKernelAndDeployer(AbstractMCServerBase.java:202) [jboss-bootstrap-impl-mc.jar:2.1.0-alpha-5]
	at org.jboss.bootstrap.impl.mc.server.AbstractMCServerBase.doShutdown(AbstractMCServerBase.java:160) [jboss-bootstrap-impl-mc.jar:2.1.0-alpha-5]
	at org.jboss.bootstrap.impl.base.server.AbstractServer.shutdown(AbstractServer.java:304) [jboss-bootstrap-impl-base.jar:2.1.0-alpha-5]
	at org.jboss.ejb3.embedded.sub.JBossSubmersibleEJBContainer.close(JBossSubmersibleEJBContainer.java:76) [jboss-ejb3-embedded-sub.jar:1.0.0-alpha-4]
	at com.xebia.ejbcontainer.service.HelloWorldServiceTest.cleanup(HelloWorldServiceTest.java:57)
</pre>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2011/02/02/testabilite-des-ejb-3-1-pret-pour-du-tdd/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/</link> <comments>http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#comments</comments> <pubDate>Mon, 28 Dec 2009 19:02:30 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Cloud Computing]]></category> <category><![CDATA[EC2]]></category> <category><![CDATA[GAE]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[Hibernate]]></category> <category><![CDATA[IBM]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[JEE]]></category> <category><![CDATA[JEE6]]></category> <category><![CDATA[JGroups]]></category> <category><![CDATA[JPA]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Spring Security]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3665</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Le meilleur de The Server Side Le coin de la technique Spring Security seulement un alignement sur Spring 3.0 ? Tour d&#8217;horizon de JBoss Infinispan JGroups à l&#8217;heure du Cloud Computing Actualité éditeurs / SSII Le meilleur de The Server [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#LemeilleurdeTheServerSide">Le meilleur de The Server Side</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#SpringSecurityseulementunalign">Spring Security seulement un alignement sur Spring 3.0 ?</a></li><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#TourdhorizondeJBossInfinispan">Tour d&#8217;horizon de JBoss Infinispan</a></li><li><a
href="http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/#JGroupslheureduCloudComputing">JGroups à l&#8217;heure du Cloud Computing</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="LemeilleurdeTheServerSide"></a>Le meilleur de The Server Side</h4><p>Avec les fêtes vient le temps des rétrospectives. Et c&#8217;est TheServerSide qui ouvre le bal, avec son hit parade des neuf fils de discussion les plus vus en 2009. Sans surprise, on retrouve quelques stars de l&#8217;année, dont la popularité ne devrait pas faiblir en 2010 : <a
title="JavaEE 6" href="http://www.theserverside.com/news/thread.tss?thread_id=53459">JavaEE 6</a> et <a
title="Glassfish 3" href="http://www.theserverside.com/news/thread.tss?thread_id=58858">Glassfish 3</a>, la persistance (<a
title="JPA" href="http://www.theserverside.com/news/thread.tss?thread_id=53142">JPA</a>, <a
title="les caches d'Hibernate" href="http://www.theserverside.com/news/thread.tss?thread_id=53716">les caches d&#8217;Hibernate</a>, <a
title="la démarcation transactionnelle avec Spring" href="http://www.theserverside.com/news/thread.tss?thread_id=53529">la démarcation transactionnelle avec Spring</a>)&#8230; Mais aussi les buzz de l&#8217;année : <a
title="Google App Engine" href="http://www.theserverside.com/news/thread.tss?thread_id=54215">Google App Engine</a>, <a
title="les langages next-gen" href="http://www.theserverside.com/news/thread.tss?thread_id=55185">les langages next-gen</a>&#8230; On trouve ensuite un grand article communautaire, <a
title="sur ce que doit savoir un architecte applicatif" href="http://www.theserverside.com/news/thread.tss?thread_id=53819">sur ce que doit savoir un architecte applicatif</a>.<br
/> Enfin, et nous devons bien avouer qu&#8217;à la vue des évènements passés, cela prête à sourire, un très beau fil de prospective : <a
title="IBM parle de racheter Sun" href="http://www.theserverside.com/news/thread.tss?thread_id=54007">IBM parle de racheter Sun</a>.</p><p>Cette première rétrospective reflète pour nous bien les tendances de l&#8217;année passée : pas mal de grandes manœuvres chez les éditeurs, des <em>concurrents</em> à Java de plus en plus présent, un nouvelle spécification très attendue, et des frameworks incontournables qui continuent à mener la danse.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="SpringSecurityseulementunalign"></a>Spring Security seulement un alignement sur Spring 3.0 ?</h4><p>Dans la foulée de la sortie de la version 3 de Spring Framework, c&#8217;est au tour de Spring Security de faire <a
title="son annonce" href="http://www.springsource.org/node/2271">son annonce</a>. Le point le plus marquant de cette version est l&#8217;utilisation du Spring Expression Language pour décrire les règles de contrôle d&#8217;accès qui simplifieront des vérifications simples comme <code>@PreAuthorize("#contact.name == principal.name)")</code> et surtout, couplé à des classes java transverses de sécurité, permettra d&#8217;effectuer élégamment des contrôles déclaratifs sophistiqués tels que :</p><pre class="brush: java; title: ; notranslate">
@PreAuthorize(&quot;isPhysician(#patientFile.patient)&quot;)
public void create(PatientFile patientFile);
</pre><p>Bien sûr, il faudra programmer la méthode <code>isPhysician()</code>, Spring Security ne se substituera pas au code métier de votre application, il sera juste une aide précieuse <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .<br
/> Nous noterons au passage que l&#8217;<em>Expression Language</em> apporte à l&#8217;<em>Aspect Oriented Programming</em> le haut niveau d&#8217;abstraction qui permet de programmer des fonctionnalités métiers transverses sans être un spécialiste de la plomberie <code>ProceedingJoinPoint</code> et autres joyeusetés. L&#8217;AOP devient alors beaucoup plus accessible pour les développeurs d&#8217;informatique de gestion.</p><p>Les autres nouveautés que nous garderons en tête : des contrôles pré et post traitement (<code>@PreAuthorize</code> et <code>@PostAuthorize</code>), la restructuration des jars similaire à celle que Spring 2.5 a connu, et une clarification des règles de redirection post authentification.</p><h4><a
name="TourdhorizondeJBossInfinispan"></a>Tour d&#8217;horizon de JBoss Infinispan</h4><p>Le projet <a
title="Infinispan" href="http://www.jboss.org/infinispan.html">Infinispan</a> a été <a
title="initié en milieu d'année 2009" href="http://blog.xebia.fr/2009/05/04/revue-de-presse-xebia-107/#JBossveutsonDataGrid">initié en milieu d&#8217;année 2009</a> chez JBoss. Il s&#8217;agit d&#8217;une évolution de <a
title="JBoss Cache" href="http://www.jboss.org/jbosscache/">JBoss Cache</a> d&#8217;un simple cache vers un DataGrid.</p><p>Dans le <a
title="dernier pisode en date de JBoss Asylum" href="http://asylum.libsyn.com/index.php?post_id=562565">dernier épisode en date de JBoss Asylum</a>, le podcast dédié à la communauté JBoss maintenu par Emmanuel Bernard et Max R Andersen, Mark Surtani, <em>leader</em> du projet Infinispan, était invité pour parler de son projet. Il a pu faire un tour d&#8217;horizon global en commençant par le lien entre JBoss Cache et Infinispan :</p><ul><li>Contrairement à JBoss Cache qui utilisait une organisation arborescente, Infinispan se base uniquement sur une structure clé-valeur à plat.</li><li>Tout comme le faisait JBoss Cache, Inifinispan utilise JGroups pour assurer la découverte de ses instances.</li><li>Une API d&#8217;adaptation permettra d&#8217;assurer la transition entre JBoss Cache et Infinispan, notamment en offrant une arborescence au dessus de la structure de base d&#8217;Infinispan. Des outils seront fournis afin de migrer les fichiers de configuration.</li></ul><p>Manik Surtani a également abordé les fonctionnalités à venir, après la finalisation de la première version, dévoilant ainsi les ambitions de positionnement de ce produit :</p><ul><li>Utilisation de Lucene pour offrir une API de requêtes puissante permettant des recherches dans le DataGrid. Plusieurs possibilités d&#8217;architecture ont été évoquées telles que la réplication d&#8217;un index complet sur l&#8217;ensemble des noeuds ou la distribution de <em>shards</em> de l&#8217;index complet sur les noeuds via l&#8217;utilisation d&#8217;un <code>InfinispanDirectory</code> pour Lucene, actuellement en cours de développement.</li><li>Intégration éventuelle avec Hibernate Search. Infinispan se substituerait à Hibernate Core et Hibernate Search lui apporterait alors la fonctionnalité de recherche.</li><li>Possibilité d&#8217;effectuer des <em>continuous requests</em> pour que les résultats d&#8217;une requête s&#8217;enrichissent au fur et a mesure de l&#8217;arrivée de données sur la grille.</li><li>API de MapReduce permettant de soumettre un <code>Callable</code> et un ensemble de clés d&#8217;objets sur lesquels doivent s&#8217;appliquer le traitement pour obtenir un <code>Future</code> représentant le résultat, à venir, après opération de réduction.</li></ul><p>La plupart des fonctionnalités évoquées sont présentes dans les produits commerciaux que sont <a
title="Oracle Coherence" href="http://www.oracle.com/technology/products/coherence/index.html">Oracle Coherence</a> ou <a
title="IBM eXtreme Scale" href="http://www.ibm.com/software/webservers/appserv/extremescale/">IBM eXtreme Scale</a>. Toutefois, de telles possibilités seraient inédites dans un produit Open Source ce qui devrait faire d&#8217;Inifinispan un produit très intéressant à suivre en 2010&#8230;</p><h4><a
name="JGroupslheureduCloudComputing"></a>JGroups à l&#8217;heure du Cloud Computing</h4><p>JGroups est un <em>framework</em> permettant la communication au sein d&#8217;un groupe de serveurs. Actuellement développé au sein de JBoss, il est à la base de nombreux <em>middlewares</em> et frameworks d&#8217;entreprise permettant un fonctionnement distribué tels que JBoss Cache ou plus récemment Infinispan.</p><p>Après un an sans mise à jour majeure, Bela Ban, <em>leader</em> du projet, <a
title="annonce la version 28" href="http://belaban.blogspot.com/2009/12/jgroups-280ga-released.html">annonce la version 2.8</a>. Outre de nombreuses évolutions améliorant la flexibilité de JGroups, un apport notable s&#8217;est glissé dans la liste : le support d&#8217;Amazon EC2. Il s&#8217;agit là d&#8217;une nouveauté emblématique de cette année 2009 qui va se conclure ; la majorité des <em>frameworks</em> cherche à afficher une compatibilité voire une synergie avec les environnements de Cloud Computing courant.<br
/> En pratique, cette intégration de JGroups à EC2 se fait par l&#8217;ajout d&#8217;un nouveau protocole de découverte de voisinage nommé S3_PING. Comme son nom l&#8217;indique, il utilise un stockage S3 commun dans lequel tous les membres d&#8217;un groupe écrivent leurs coordonnées. Ce mécanisme est particulièrement bien adapté à EC2 qui, de part la topologie réseau qu&#8217;il offre, ne permet pas le <em>multicasting</em> et n&#8217;est guère adapté aux autres protocoles de découvertes qui existaient jusqu&#8217;alors dans JGroups.</p><p>Notons tout de même que la principale nouveauté de cette version 2.8 est l&#8217;ajout du concept d&#8217;adresse logique que Bela Ban <a
title="presentait il y a quelques mois" href="http://belaban.blogspot.com/2009/02/whats-cool-about-logical-addresses.html">présentait il y a quelques mois</a>. Une adresse logique permet de découpler l&#8217;identité d&#8217;un nœud JGroups de son adresse réseau ; l&#8217;association entre adresse logique et physique est résolue lors de la découverte des nœuds. Outre le découplage offert par ce concept, ces adresses permettent également de simplifier la gestion des pertes de messages lors de la ré-incarnation d&#8217;un nœud suite a son indisponibilité temporaire.</p><p>10 ans après sa création, JGroups continue donc de se maintenir à jour et, dans la mesure où il remplit toujours parfaitement son rôle, il devrait rester présent encore des années dans plusieurs <em>middlewares</em> et <em>frameworks</em> majeurs.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/12/28/revue-de-presse-xebia-140/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/</link> <comments>http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#comments</comments> <pubDate>Mon, 14 Dec 2009 18:48:42 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[ECMAScript]]></category> <category><![CDATA[FlexPMD]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[IDEA]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Java EE 6]]></category> <category><![CDATA[Netbeans]]></category> <category><![CDATA[OpenJDK]]></category> <category><![CDATA[Quartz]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Spring Surf]]></category> <category><![CDATA[Terracota]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3545</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Java EE 6, Glassfish v3 et NetBeans 6.8 dans les bacs Terracota et Quartz : un premier produit disponible. RIA GWT 2.0 est (enfin) là ! Sortie de la release de FlexPMD 1.0 Le coin de la technique Le projet [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#JavaEEGlassfishvetNetBeansdans">Java EE 6, Glassfish v3 et NetBeans 6.8 dans les bacs</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#TerracotaetQuartzunpremierprod">Terracota et Quartz : un premier produit disponible.</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#GWTestenfinl">GWT 2.0 est (enfin) là !</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#SortiedelareleasedeFlexPMD">Sortie de la release de FlexPMD 1.0</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#LeprojetLambdaapparatauseindOp">Le projet Lambda apparaît au sein d&#8217;OpenJDK</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#NouvelleversiondumeilleurIDEJa">Nouvelle version du meilleur IDE Java du monde&#8230;</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#ansdattenteetECMAScript">10 ans d&#8217;attente et ECMAScript 5</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#NouvelleMilestonedEclipseHelio">Nouvelle Milestone d&#8217;Eclipse Helios</a></li><li><a
href="http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/#SpringSurflestudiodecompositio">Spring Surf &#8211; le studio de composition de pages pour Spring MVC</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="JavaEEGlassfishvetNetBeansdans"></a>Java EE 6, Glassfish v3 et NetBeans 6.8 dans les bacs</h4><p>C&#8217;est la fin de longs mois d&#8217;attente, Sun nous livre <em>finalement</em> sa version 6 de la plateforme Java EE dont nous parlons depuis déjà longtemps sur le blog. Comme promis, c&#8217;est GlassFish v3 qui sert d&#8217;implémentation de référence à JavaEE 6. Le tout est fourni prêt à l&#8217;emploi : le SDK, l&#8217;implémentation serveur et l&#8217;IDE compatible. Vous pouvez donc d&#8217;ores et déjà essayer les EJB lite, les Servlet 3.0, la validation de Bean, l&#8217;injection de dépendance et bien sûr, la toute nouvelle JSF 2 &laquo;&nbsp;tant attendue&nbsp;&raquo;.<br
/> Voilà un beau cadeau de Noël que Sun nous offre, d&#8217;autant que la sortie de GlassFish v3 s&#8217;accompagne des plugins adéquats pour Eclipse et IntelliJ. Nous souhaitons longue vie et grand succès à cette nouvelle plateforme JavaEE.<br
/> Pour plus d&#8217;information sur le sujet:</p><ul><li><a
href="http://blog.xebia.fr/2009/11/25/devoxx-jour-3-jee6/" title="JavaEE6  Devoxx" >JavaEE6 à Devoxx</a></li><li><a
href="http://www.sun.com/featured-articles/2009-1210/feature/index.jsp" title="La news sur le site de Sun" >La news sur le site de Sun</a></li><li><a
href="http://www.infoq.com/news/2009/12/ee6qanda" title="Inteview de Roberto Chinnici sur InfoQ" >Inteview de Roberto Chinnici sur InfoQ</a></li><li><a
href="http://www.theserverside.com/news/thread.tss?thread_id=58858&#038;utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed:+techtarget/tsscom/home+(TheServerSide.com:+Your+Enterprise+Java+Community)&#038;utm_content=Google+Feedfetcher" title="Lannonce sur The Server Side" >L&#8217;annonce sur The Server Side</a></li></ul><h4><a
name="TerracotaetQuartzunpremierprod"></a>Terracota et Quartz : un premier produit disponible.</h4><p>Un peu moins d&#8217;un mois après <a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#TerracottaafaimdOpenSourceacqu" title="le rachat de Quartz par Terracota" >le rachat de Quartz par Terracota</a>, l&#8217;éditeur met en application son acquisition, en proposant <a
href="http://www.terracotta.org/quartz/get-started" title="Terracotta Quartz EX" >Terracotta Quartz EX</a>, un Job Store pour Quartz. Cette nouveauté permet de développer une plate forme de gestion de charge et de distribution des traitements basée sur une gestion des jobs en mémoire.<br
/> Pour ceux qui utilisaient Quartz de manière non clusterisée, <a
href="http://www.terracotta.org/quartz/index-variation2" title="une nouvelle version de Quartz" >une nouvelle version de Quartz</a> permet d&#8217;utiliser une instance de serveur Terracota comme JobStore. Cela procure, <em>automatiquement</em>, à la fois une solution de persistance et de haute disponibilité pour la programmation des jobs. Cette implémentation repose sur le lock manager et la plate forme haute-dispo de Terracotta (et ne nécessite donc pas de base de données).<br
/> Pour ceux qui utilisaient déjà Quartz de manière clusterisée, à l&#8217;aide d&#8217;une base de données centrale, le nouveau <em>Terracotta Job Store</em> permet de continuer à utiliser le mode clusterisé, sans l&#8217;overhead dû à la base de données.</p><p>A n&#8217;en pas douter, comme pour EHCache, aquis il y a quelques temps déjà, Terracotta va rapidement proposer de nouvelles applications permettant de profiter au mieux des interactions possibles entre un <em>scheduler</em> et une plate-forme clusterisée.</p><p>Au passage, Quartz a subi un lifting afin que le <em>framework</em> respecte au mieux les normes Maven et s&#8217;intègre plus facile à Hudson.</p><p><a
href="http://www.infoq.com/news/2009/12/terracotta-quartz" title="Via infoQ" >Via infoQ</a></p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="GWTestenfinl"></a>GWT 2.0 est (enfin) là !</h4><p>L&#8217;une des sensations de la semaine dernière n&#8217;est autre que la sortie en release finale de <a
href="http://googlewebtoolkit.blogspot.com/2009/12/introducing-google-web-toolkit-20-now.html" title="GWT en version 2.0" >GWT en version 2.0</a>, quelques mois seulement après la <a
href="http://blog.xebia.fr/2009/07/20/revue-de-presse-xebia-118/#GWTpourlesnouveauxnavigateurs" title="mise  jour 17" >mise à jour 1.7</a> qui ne faisait que corriger GWT pour les navigateurs récents.</p><p>Nous avons déjà bien couvert le sujet dans nos précédentes revues de presse, que ce soit pour la <a
href="http://blog.xebia.fr/2009/10/19/revue-de-presse-xebia-130/#GWTMilestone" title="Milestone 1" >Milestone 1</a> ou la <a
href="http://blog.xebia.fr/2009/11/23/revue-de-presse-xebia-135/#GWTversionRC" title="Release Candidate 1" >Release Candidate 1</a>. Rien de nouveau donc si vous nous suivez régulièrement. On retrouve ainsi le <em>development mode</em>, le <em>code splitting</em>, l&#8217;intégration <code>HTMLUnit</code>, l&#8217;<code>UIBinder</code>, le <code>RunAsync</code> et bien d&#8217;autres. Le détail complet des différentes nouveautés se trouve sur cette <a
href="http://googlewebtoolkit.blogspot.com/2009/12/introducing-google-web-toolkit-20-now.html" title="page" >page</a>.</p><p>A noter aussi l&#8217;arrivée avec GWT 2.0 de <a
href="http://code.google.com/intl/fr-FR/webtoolkit/speedtracer/" title="Speed Tracer" >Speed Tracer</a>, un outil vous permettant d&#8217;analyser votre application et ainsi de repérer d&#8217;éventuels problèmes de performances.<br
/> Le plugin Eclipse a lui aussi été mis à jour et possède désormais de nouvelles fonctionnalités spécifiques à GWT 2.0, comme le support d&#8217;<code>UiBinder</code> et de <code>ClientBundle</code>.</p><p>Concernant la migration, les retours <em>(comme <a
href="http://blog.jdevelop.eu/2009/12/10/experiences-with-the-migration-from-gwt-171-to-20/" title="celuici" >celui-ci</a>)</em> sont plutôt encourageants et laissent présager une migration sans trop de difficultés. Les gains en performance se situent, comme on pouvait s&#8217;y attendre, au niveau du <em>development mode</em> et de son plugin pour débuguer directement dans le navigateur (ce bon vieux <em>Hosted Mode</em> ne va décidément pas me manquer). Même au niveau des librairies tierces, il n&#8217;y a pas de grosses incompatibilités remontées par l&#8217;auteur.</p><p>La section téléchargement se trouve <a
href="http://code.google.com/intl/fr-FR/webtoolkit/download.html" title="ici" >ici</a>.</p><h4><a
name="SortiedelareleasedeFlexPMD"></a>Sortie de la release de FlexPMD 1.0</h4><p>Une bonne nouvelle cette semaine pour les développeurs Flex : <a
href="http://blogs.adobe.com/xagnetti/2009/12/flexpmd_10_released_flexmetric.html" title="la sortie de FlexPMD FlexCPD et FlexMetrics en release" >la sortie de FlexPMD, FlexCPD et FlexMetrics en release</a> pour contrôler votre code. Voyons un peu plus en détail ces différents outils :</p><ul><li>FlexPMD</li></ul><p><a
href="http://blog.xebia.fr/2009/09/07/revue-de-presse-xebia-125/#AnalysezvotrecodeFlexavecFlexP" title="Nous vous en parlions en septembre" >Nous vous en parlions en septembre</a>, FlexPMD fournit maintenant des fonctionnalités supplémentaires :</p><ul><li>invocation depuis Eclipse grâce à son <a
href="http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD+Eclipse+plugin" title="plugin" >plugin</a>,</li><li>depuis <a
href="http://groups.adobe.com/posts/8f4c3bbe01" title="FlashDevelop" >FlashDevelop</a> ou <a
href="http://www.ohloh.net/p/textmate_flexpmd_bundle" title="TextMate" >TextMate</a> sur Mac OS X.</li></ul><p>Le rapport peut être généré en HTML ou XML. Son rapport au format XML est un standard pouvant être exploité par tout intépréteur PMD comme le plugin d&#8217;Hudson.</p><ul><li>FlexCPD (Copy &#038; and Paste Detector)</li><ul><li><a
href="http://opensource.adobe.com/wiki/display/flexpmd/FlexCPD" title="FlexCPD" >FlexCPD</a> permet comme son nom l&#8217;indique de détecter les duplications de code. Basé sur le moteur de JavaCPD, il peut être appelé en ligne de commande par une tâche Ant ou avec Maven. Les résultats sont exploitables dans Hudson également grâce au plugin <a
href="http://wiki.hudson-ci.org/display/HUDSON/DRY+Plugin" title="DRY" >DRY</a>.</li></ul><li>FlexMetrics</li><ul><li><a
href="http://opensource.adobe.com/wiki/display/flexpmd/FlexMetrics" title="FlexMetrics" >FlexMetrics</a> permet d&#8217;avoir des métriques sur votre code Flex. Comme FlexCPD, il peut être appelé en ligne de commande, avec Ant ou Maven. Pour interpréter les résultats de l&#8217;outil, il est possible d&#8217;utiliser le plugin <a
href="http://wiki.hudson-ci.org//pages/viewpage.action?pageId=36603031" title="JavaNCSS" >JavaNCSS</a>.</li></ul></ul><p>Des outils intéressants donc, pour ajouter vos projets Flex dans vos outils d&#8217;intégration continue.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="LeprojetLambdaapparatauseindOp"></a>Le projet Lambda apparaît au sein d&#8217;OpenJDK</h4><p>Mark Reinhold annonce la création d&#8217;un nouveau sous-projet au sein d&#8217;OpenJDK : le <a
href="http://openjdk.java.net/projects/lambda/" title="Projet Lambda" >Projet Lambda</a>. Son but est d&#8217;apporter une implémentation des <em>closures</em> pour le JDK 7. Dans la mesure où il est prévu que cette fonctionnalité soit implémentée dans un premier temps pour être spécifiée par la suite, il sera particulièrement intéressant de suivre l&#8217;évolution de ce projet dans les prochains mois afin de découvrir à quoi <em>pourraient</em> ressembler les <em>closures</em> dans la prochaine version de Java.</p><p>Un premier <a
href="http://cr.openjdk.java.net/~mr/lambda/straw-man/" title="document de travail" >document de travail</a> a été mis à disposition. Il présente de manière non formelle la proposition pour l&#8217;implémentation des <em>closures</em> qui est retenue pour le moment. Cette proposition se base sur les trois principales bases de travail qui s&#8217;étaient dégagées lors des débats précédents, à savoir la <a
href="http://www.javac.info/closures-v05.html" title="BGGA" >BGGA</a>, la <a
href="http://docs.google.com/Doc.aspx?id=k73_1ggr36h" title="CICE" >CICE</a> et la <a
href="http://docs.google.com/Doc?id=ddhp95vd_6hg3qhc" title="FCM" >FCM</a>. Elle met en avant principalement :</p><ul><li>La syntaxe retenue pour la définition de fonctions anonymes qui se base sur le caractère <code>#</code>, ainsi <code>#()(42)</code> définit une fonction retournant toujours <code>42</code>.</li><li>La définition d&#8217;un type Java pour ces fonctions. Ainsi la fonction <code>#()(42)</code> prise en exemple précédemment a pour type <code>#int()</code>.</li><li>Les fonctions anonymes peuvent être converties automatiquement lorsqu&#8217;elle sont passées en argument d&#8217;une méthode attendant une instance d&#8217;une classe anonyme. En clair, il sera possible de créer une nouvelle <em>thread</em> avec <code>new Thread(#() { ...some code... } )</code> plutôt que de fournir au constructeur une classe anonyme implémentant <code>Runnable</code> pour définir la méthode <code>run()</code>. Cette possibilité permettra donc aux <em>closures</em> d&#8217;être utilisées directement dans les APIs existantes !</li><li>Dans certaines conditions, les <em>closures</em> sont à même d&#8217;utiliser les variables accessibles dans le contexte dans lequel elles sont définies.</li><li>Le mot clé <code>this</code> peut être utilisé si la <em>closure</em> est déclarée depuis une méthode d&#8217;instance, il référence alors l&#8217;instance à laquelle est attachée la méthode concernée.</li></ul><p>Enfin, pour faciliter les évolutions des APIs existantes que pourraient justifier ces nouvelles possibilités du langage, la notion de méthodes d&#8217;extensions est introduite. Il s&#8217;agit de permettre la définition de méthodes au sein des interfaces dont l&#8217;implémentation par défaut serait une méthode statique indiquée en argument.</p><p>Pour plus de détails sur cette proposition, n&#8217;hésitez pas à lire le <a
href="http://cr.openjdk.java.net/~mr/lambda/straw-man/" title="document de travail" >document de travail</a>, volontairement très didactique, du projet Lambda.</p><h4><a
name="NouvelleversiondumeilleurIDEJa"></a>Nouvelle version du meilleur IDE Java du monde&#8230;</h4><p>&#8230; en tout cas, c&#8217;est une des accroches d&#8217;IntelliJ IDEA <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br
/> <a
href="http://www.jetbrains.com/" title="JetBrains" >JetBrains</a> continue donc sur sa lancée d&#8217;évolution majeure de ses produits.<br
/> Ainsi, après <a
href="http://blog.xebia.fr/2009/12/07/revue-de-presse-xebia-137/#SortiedeTeamCity" title="TeamCity 5.0" >TeamCity 5.0</a>, c&#8217;est au tour d&#8217;<a
href="http://www.jetbrains.com/idea/index.html" title="IntelliJ IDEA" >IntelliJ IDEA</a> d&#8217;évoluer et de <a
href="http://blogs.jetbrains.com/idea/2009/12/intellij-idea-9-finally-out-with-great-new-features-a-performance-boost/" title="passer en version 9" >passer en version 9</a>.</p><p>Les <a
href="http://www.jetbrains.com/idea/whatsnew/index.html" title="nouveauts sont trs nombreuses" >nouveautés sont très nombreuses</a>. Les points importants retenus par JetBrains sont :</p><ul><li>la rapidité de l&#8217;IDE,</li><li>l&#8217;amélioration de la lecture du code <em>(meilleure coloration syntaxique&#8230;)</em>,</li><li>meilleure UI, une structure de projet plus flexible,</li><li>premier support Java 7 avec JSR308, support de JEE 6,</li><li>meilleur support de Groovy,</li><li>plugin de développement Android,</li><li>support d&#8217;autres frameworks <em>(Tapestry, GAE, GWT 1.7 et 2.0, Spring 3.0 et Spring Security 2.0 et 3.0)</em>,</li><li>meilleur support de Maven,</li><li>plusieurs nouvelles fonctionnalités pour le développement d&#8217;applications Flex. <em>(Air, FlexUnit&#8230;)</em>.</li></ul><p>Deux éditions nous sont proposées <a
href="http://www.jetbrains.com/idea/download/index.html" title="en téléchargement" >en téléchargement</a> (avec <a
href="http://www.jetbrains.com/idea/buy/index.jsp#newuser" title="diffrentes licences" >différentes licences</a>) :</p><ul><li>l&#8217;édition <em>ultimate</em> : complète, gratuite pour les licences <em>Classroom</em> et <em>Open Source Project</em> ;</li><li>l&#8217;édition <em>community</em> : produit sous licence Apache 2.0 proposant en standard l&#8217;IDE pour Java et Groovy (et quelques plugins gratuits).</li></ul><p>Et même quelques <a
href="http://konigsberg.blogspot.com/2009/12/eclipse-users-go-download-intellij.html" title="Friends of Eclipse" >Friends of Eclipse</a> vous encouragent à le télécharger <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Comme on dit : <em>l&#8217;essayer, c&#8217;est l&#8217;adopter</em> !</p><h4><a
name="ansdattenteetECMAScript"></a>10 ans d&#8217;attente et ECMAScript 5</h4><p>ECMAScript, langage de programmation de type script implémenté entre autres par Javascript et ActionScript, passe en <a
href="http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf" title="version 5" >version 5</a> <em>(via <a
href="http://www.infoq.com/news/2009/12/ecmascript5" title="InfoQ" >InfoQ</a>)</em>.<br
/> La version 4 ayant été abandonnée, il faut remonter à 1999 pour voir la dernière version d&#8217;ECMAScript et sa version 3&#8230; Ce fût long, mais au moins il est là !</p><p>Comme nous le rappelle <a
href="http://alblue.blogspot.com/2009/12/javascript-5-standard-released.html" title="Alex Blewitt" >Alex Blewitt</a>, celle-ci essayera de s&#8217;imposer là où la version 4 (qui a d&#8217;ailleurs été abandonnée) a échoué, à savoir être pleinement supportée par les navigateurs actuels. En effet, nos sites web et nos outils évoluent mais pas la spécification ECMA. Côté application, c&#8217;est une nouvelle fois Google Wave <em>(en GWT donc Javascript)</em> qui est cité en exemple pour son côté collaboratif <em>live</em>. Et pour les outils, l&#8217;auteur cite Speed Tracer <em>(inclus dans la release GWT 2.0)</em> qui va nous permettre de détecter et de fixer certains problèmes de performances sur nos applications.</p><p>On notera la rétrocompatibilité avec les anciennes applications ECMAScript grâce au code suivant :</p><pre class="brush: java; title: ; notranslate">
&quot;use strict;&quot;
</pre><p>Ce code indique au runtime ECMAScript qu&#8217;il faut être compatible avec la version 5 d&#8217;ECMAScript et ses différentes nouveautés. Il sera possible d&#8217;être compatible sur tout le document ou seulement sur une partie de code. Concernant les anciens runtimes, le <code>strict</code> sera compris mais ne changera pas leur comportement.</p><p>Concernant les nouveautés de la spécification, on retiendra :</p><ul><li>déclaration de variable obligatoire : terminé les <code>i=3</code>, il faudra obligatoirement passer par <code>var i=3</code> ;</li><li><code>eval</code> devient un mot clé réservé ;</li><li>l&#8217;opérateur <code>with</code> disparaît ;</li><li>les fonctions et objets ne peuvent plus avoir des arguments/propriétés doubles avec le même nom ;</li><li>nouvel objet JSON et mécanisme de <em>parsing</em> désormais standard ;</li><li>méthode <code>trim</code> pour l&#8217;objet <code>String</code> ;</li><li>méthodes <code>indexOf</code>, <code>map</code>, <code>filter</code> and <code>reduce</code> pour l&#8217;objet <code>Array</code>;</li><li>nombreuses nouvelles méthodes sur <code>Object</code> dont <code>seal</code> <em>(empêche l&#8217;ajout/la suppression de propriétés)</em>, <code>freeze</code> <em>(propriétés read-only)</em>, <code>keys</code> <em>(liste les propriétés de l&#8217;objet)</em> ou <code>getPrototypeof</code> <em>(prototype de l&#8217;objet)</em>.</li></ul><p>Beaucoup de bonnes nouvelles pour les développeurs donc. La rétrocompatibilité permettra une mise en place progressive sur notre code, soit par bloc soit directement sur toute la page. Côté API, on avait déjà l&#8217;habitude d&#8217;utiliser ces fonctions par l&#8217;intermédiaire de librairies comme <a
href="http://jquery.com/" title="jQuery" >jQuery</a> mais cette standardisation est la bienvenue.</p><h4><a
name="NouvelleMilestonedEclipseHelio"></a>Nouvelle Milestone d&#8217;Eclipse Helios</h4><p>Eclipse 3.6, nom de code Helios, vient de sortir en version Milestone 4. De nouvelles fonctionnalités sont apparues avec ce build, comme :</p><ul><li>la possibilité d&#8217;éditer plusieurs quick fix en même temps</li><li>les &laquo;&nbsp;virtual folders&nbsp;&raquo; qui permettent de créer des regroupements de fichiers au niveau du projet pour une navigation plus facile</li><li>amélioration du plugin JUnit</li></ul><p>Pour plus de détails, voici la <a
href="http://download.eclipse.org/eclipse/downloads/drops/S-3.6M4-200912101301/eclipse-news-M4.html" title="liste des améliorations" >liste des améliorations</a> et <a
href="http://eclipsesource.com/blogs/2009/12/12/eclipse-3-6-m4-helios-available-for-download/" title="lannonce officielle" >l&#8217;annonce officielle</a> d&#8217;EclipseSource.</p><h4><a
name="SpringSurflestudiodecompositio"></a>Spring Surf &#8211; le studio de composition de pages pour Spring MVC</h4><p>Spring s&#8217;intéresse à présent à la gestion documentaire, grâce à une collaboration avec Alfresco, le système de GED Open Source Java, qui a démarré le projet Surf. A l&#8217;origine, l&#8217;objectif était de proposer aux utilisateurs d&#8217;Alfresco une plateforme pour développer leurs propres applications connectées à la GED.</p><p>Pour profiter des facilités de développement d&#8217;applications que propose Spring avec <a
href="http://www.springsource.org/roo" title="Spring Roo" >Spring Roo</a> et <a
href="http://www.springsource.com/products/sts" title="Spring Tool Suite" >Spring Tool Suite</a>, Alfresco commence à migrer son projet Surf dans l&#8217;<em>incubator</em> Spring Extension.</p><p>Pour le moment, les principales informations se trouvent sur le <a
href="http://wiki.alfresco.com/wiki/Surf" title="wiki d'Alfresco" >wiki d&#8217;Alfresco</a>, la <a
href="http://www.springsource.org/extensions/se-surf" title="page daccueil de Spring Surf" >page d&#8217;accueil de Spring Surf</a> étant encore très succincte.</p><p>Pour démarrer, seuls l&#8217;addon Spring Roo et un QuickStart sont disponibles chez Spring (pas encore de tutorial). Et pour mieux connaitre ce que deviendra cette extension, l&#8217;application <a
href="http://wiki.alfresco.com/wiki/Alfresco_Share" title="Alfresco Share" >Alfresco Share</a>, basée sur la <a
href="http://wiki.alfresco.com/wiki/Surf_Platform" title="plateforme Surf" >plateforme Surf</a> donne un bon nombre de pistes comme :</p><ul><li>Création d&#8217;applications uniquement par scripting (Freemarker, Groovy, PHP, JavaScript)</li><li>Ajout de pages à une application basée sur le framework Spring MVC</li><li>Développement avec un modèle extensible de templates, composants, styles, etc.</li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/12/14/revue-de-presse-xebia-138/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>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>Oracle rachète Sun</title><link>http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/</link> <comments>http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/#comments</comments> <pubDate>Mon, 20 Apr 2009 14:49:51 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[J2EEJRockit]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[JDeveloper]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[Netbeans]]></category> <category><![CDATA[Oracle]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1790</guid> <description><![CDATA[La nouvelle est tombée à la surprise générale : Oracle a racheté Sun. Malgré les rumeurs persistantes de rachat par IBM qui courraient depuis quelques semaines, c&#8217;est bien l&#8217;éditeur du célèbre SGBD qui a mis la main sur le convoité créateur de Java. Le rapprochement de ces deux poids lourds du monde J2EE risque d&#8217;entrainer [...]]]></description> <content:encoded><![CDATA[<p>La nouvelle est tombée à la surprise générale : Oracle a racheté Sun.<br
/> Malgré les rumeurs persistantes de rachat par IBM qui courraient depuis quelques semaines, c&#8217;est bien l&#8217;éditeur du célèbre SGBD qui a mis la main sur le convoité créateur de Java.</p><p>Le rapprochement de ces deux poids lourds du monde J2EE risque d&#8217;entrainer de profonds changements dans nos écosystèmes dans les mois à venir.</p><p><a
href="http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/#Lesraisonsofficiellesdurachat">Les raisons officielles du rachat</a></p><p><a
href="http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/#Unestratgiedfinir">Une stratégie à définir</a></p><ul><li><a
href="http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/#QuellegouvernancepourJava">Quelle gouvernance pour Java ?</a></li><li><a
href="http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/#JRockitunenouvelleJVMstandard">JRockit, une nouvelle JVM standard ?</a></li><li><a
href="http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/#QuelavenirpourMySql">Quel avenir pour MySql ?</a></li><li><a
href="http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/#Glassfishpeutilencoreexister">Glassfish peut il encore exister ?</a></li><li><a
href="http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/#NetbeansenfinlamortdeJDevelope">Netbeans, (enfin) la mort de JDeveloper ?</a></li><li><a
href="http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/#PoursuivredanslavoieJavaFx">Poursuivre dans la voie JavaFx ?</a></li></ul><p><a
href="http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/#Degrandesdatespourvoirlasituat">De grandes dates pour voir la situation se décanter</a></p><h3><a
name="Lesraisonsofficiellesdurachat"></a>Les raisons officielles du rachat</h3><p>Larry Ellison, le CEO d&#8217;Oracle, invoque, dans son communiqué officiel, la volonté d&#8217;Oracle de mettre à disposition de ses clients une offre complète, du disque dur au logiciel.<br
/> Le rachat de Sun permet à Oracle de s&#8217;approprier la dimension hardware, mais aussi le système d&#8217;exploitation Solaris (support majoritaire de la base de données Oracle). La volonté affichée est d&#8217;exploiter et de tuner au mieux l&#8217;alliance Hardware / OS / SGDB / Serveur d&#8217;Applications, comme peut d&#8217;ailleurs le proposer d&#8217;ores et déjà IBM avec sa stack sur zOs.<br
/> Pour le côté hardware, on notera que Sun possède actuellement une lucrative activité stockage qui complètera avantageusement la base de données pour proposer aux clients d&#8217;Oracle une offre intégrée.</p><p>L&#8217;autre versant de ce rachat est bien sûr l&#8217;acquisition de Java. Après le rachat de BEA, c&#8217;est un énorme pas qu&#8217;Oracle a franchi pour s&#8217;ancrer définitivement dans l&#8217;informatique d&#8217;entreprise.</p><h3><a
name="Unestratgiedfinir"></a>Une stratégie à définir</h3><h4><a
name="QuellegouvernancepourJava"></a>Quelle gouvernance pour Java ?</h4><p>Historiquement, Oracle a réussi là où Sun a toujours dû batailler : monétiser ses middlewares. Le grand défi qui va se présenter à Oracle pourrait se résumer à la question suivante : comment faire des profits avec Java sans en dénaturer complètement l&#8217;esprit communautaire ?<br
/> Comment va évoluer la gouvernance du JCP ? La firme va t&#8217;elle poursuivre le mouvement insufflé depuis quelques mois qui tendait à ouvrir le JCP à un large nombre de contributeurs / projets ? Cette ouverture, souhaitée par de nombreux acteurs du monde J2EE, devait permettre l&#8217;émergence de &#8216;specs leaders&#8217; indépendants des gros éditeurs (BEA, Oracle, IBM).<br
/> C&#8217;est peut être l&#8217;avenir même de Java 7 qui est en jeu ici.</p><h4><a
name="JRockitunenouvelleJVMstandard"></a>JRockit, une nouvelle JVM standard ?</h4><p>Pour un développeur Java, le choix d&#8217;une JVM est loin d&#8217;être anodin, et il est courant de se retrouver avec 2 ou 3 JVMs sur sa machine, en fonction du serveur J2EE cible.<br
/> Jusqu&#8217;à maintenant, le choix était relativement vite fait : la JVM de Sun pour lancer son environnement de développements, et la JVM JRockit ou IBM en fonction de la cible.<br
/> Avec ce rachat, Oracle a maintenant à maintenir 2 JVMs : celle de Sun, qui fait office de JVM par défaut pour la majorité des environnements Java, et JRockit.</p><h4><a
name="QuelavenirpourMySql"></a>Quel avenir pour MySql ?</h4><p>Sun avait racheté MySql pour pouvoir offrir une alternative crédible au SGDB d&#8217;Oracle.<br
/> Depuis, Sun avait lutté pour faire de Mysql un produit commercial profitable. Ce nouveau rachat signifie-t-il la mort du produit open source ?<br
/> Pas nécessairement, Oracle ayant déjà fait par le passé des mouvements destinés à contrer la montée de ce concurrent, avec les rachats de SleepyCat et InnoDb. Il avait même été question de <a
href="http://news.cnet.com/Oracle-tried-to-buy-open-source-MySQL/2100-7344_3-6040197.html?tag=cd.hed" title="rachat pur et simple  une poque pas si lointaine" >rachat pur et simple, à une époque pas si lointaine</a>.<br
/> Maintenant que les 2 produits se retrouvent dans le même portefeuille, la question de leurs développements respectifs se pose légitimement.</p><h4><a
name="Glassfishpeutilencoreexister"></a>Glassfish peut il encore exister ?</h4><p>Le rachat de BEA il y a quelques mois avait offert à Oracle un serveur d&#8217;application J2EE digne de ce nom. Et le serveur J2EE &#8216;maison&#8217; d&#8217;Oracle avait rapidement disparu du catalogue de l&#8217;éditeur.<br
/> Que va devenir Glassfish ? Le &#8216;serveur open source qui monte&#8217; peut il exister à coté du mastodonte Weblogic ?<br
/> Sans vouloir jouer les oiseaux de mauvais augure, on peut rappeler la déconfiture de Géronimo après le rachat de Gluecode par IBM en 2005.</p><h4><a
name="NetbeansenfinlamortdeJDevelope"></a>Netbeans, (enfin) la mort de JDeveloper ?</h4><p>Soyons francs, à moins d&#8217;avoir été &#8216;élevé&#8217; avec, il est difficile de trouver des qualités à l&#8217;environnement de développement labellisé Oracle.<br
/> Il a pourtant survécu au rachat de BEA, même si les développeurs Weblogic lui préfèrent toujours le plugin Eclipse.<br
/> Oracle a déjà planté un clou dans le cercueil de JDeveloper, en faisant un pas vers les développeurs Eclipse, avec <a
href="http://blogs.oracle.com/otn/2009/03/oracle_enterprise_pack_for_ecl.html" title="Oracle 11G Enterprise Pack for Eclipse" >Oracle 11G Enterprise Pack for Eclipse</a><br
/> Survivra-t-il à la concurrence de Netbeans, qui, même s&#8217;il est toujours en retrait par rapport à Eclipse et Intellij IDEA, bénéficie d&#8217;une communauté bien plus large ?</p><h4><a
name="PoursuivredanslavoieJavaFx"></a>Poursuivre dans la voie JavaFx ?</h4><p>Alors que certaines voix s&#8217;élevaient chez Sun pour réclamer l&#8217;abandon de JavaFx, Oracle continuera-t-il à investir sur cette technologie &#8216;à la traine&#8217;, qui ne sera probablement pas &#8216;profitable&#8217; à court terme ?</p><h3><a
name="Degrandesdatespourvoirlasituat"></a>De grandes dates pour voir la situation se décanter</h3><p>Alors, évolution (logique) ou révolution ?<br
/> La communauté devrait être assez rapidement fixée, avec la pléthore de sorties au programme ces prochains mois : Java7, JEE 6, Glassfish 3, JavaFx 1.2 &#8230; Ces milestones importantes devraient permettre d&#8217;y voir plus clair dans la stratégie qu&#8217;Oracle va adopter vis à vis de son nouveau <em>protégé</em>.<br
/> Rappelons seulement que le rachat de BEA par Oracle avait provoqué un émoi similaire, et que finalement cette absorption s&#8217;est faite en douceur, en appliquant des décisions pleines de bon sens.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/04/20/oracle-rachete-sun/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/</link> <comments>http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#comments</comments> <pubDate>Mon, 30 Mar 2009 17:03:17 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[CXF]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[Jdk7]]></category> <category><![CDATA[OSGi]]></category> <category><![CDATA[Red Hat]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[SpringSource]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1694</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Sun, Java et le JCP RIA, SOA, Tim Bray tire dans le tas SOA Red Hat JBoss choisit d&#8217;investir dans CXF Le coin de la technique Enfin une roadmap détaillée pour le JDK7 La création de bundles OSGi selon SpringSource [...]]]></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/03/30/revue-de-presse-xebia-102/#SunJavaetleJCP">Sun, Java et le JCP</a></li><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#RIASOATimBraytiredansletas">RIA, SOA, Tim Bray tire dans le tas</a></li></ul><p><strong>SOA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#RedHatJBosschoisitdinvestirdan">Red Hat JBoss choisit d&#8217;investir dans CXF</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#EnfinuneroadmapdtaillepourleJD">Enfin une roadmap détaillée pour le JDK7</a></li><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#LacrationdebundlesOSGiselonSpr">La création de bundles OSGi selon SpringSource</a></li><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#Utiliserlenuagepourrduirelesco">Utiliser le nuage pour réduire les coûts d&#8217;intégration continue.</a></li><li><a
href="http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/#OutilsGlassfishpourEclipse">Outils Glassfish pour Eclipse</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="SunJavaetleJCP"></a>Sun, Java et le JCP</h4><p>Depuis quelques jours, une agitation se crée au sein de la communauté Java autour des agissements de Sun vis-à-vis de son projet OpenJDK 7. Plusieurs observations permettent en effet de penser que le JDK 7 pourrait bien ne pas être basé sur un standard du JCP comme c&#8217;est habituellement le cas :</p><ul><li><a
href="http://neilbartlett.name/blog/2009/03/25/using-suns-jigsaw-may-get-you-fired/" title="Neil Bartlett remarque" >Neil Bartlett remarque</a> que le projet Jigsaw, poussé par Sun pour être le système de modules utilisé par le JDK, n&#8217;est pas défini par une JSR. Ceci en fait donc une technologie propriétaire dont il doute de la légitimité face à OSGi, un standard bénéficiant de 10 années d&#8217;expérience.</li><li><a
href="http://www.jroller.com/scolebourne/entry/no_more_java_7" title="Stephen Colebourne constate" >Stephen Colebourne constate</a> que Sun ne fait plus mention de &laquo;&nbsp;Java 7&#8243; depuis quelques temps, mais seulement de &laquo;&nbsp;JDK 7&#8243; qui n&#8217;est qu&#8217;une implémentation, là où &laquo;&nbsp;Java 7&#8243; qualifierait un standard.</li><li><a
href="http://apsblog.burtongroup.com/2009/03/open-source-is-not-as-open-as-standard-specifications.html" title="Anne Thomas Manes faisant des observations similaires compare" >Anne Thomas Manes faisant des observations similaires, compare</a> l&#8217;OpenJDK à la position de framework Open Source &laquo;&nbsp;rebelle&nbsp;&raquo;, non standard, que tient Spring.</li><li>Stephen Colebourne encore, visiblement très impliqué par ce débat, revient dans une série de billets sur <a
href="http://www.jroller.com/scolebourne/entry/sun_apache_ip_in_pictures" title="les différents qui opposent Sun à la fondation Apache" >les différents qui opposent Sun à la fondation Apache</a>, <a
href="http://www.jroller.com/scolebourne/entry/shedding_new_light_on_no" title="rappelant l'historique" >rappelant l&#8217;historique</a>, ainsi que sur la problématique de <a
href="http://www.jroller.com/scolebourne/entry/a_question_of_ip" title="proprit intellectuelle au sein du JCP" >propriété intellectuelle au sein du JCP</a> de manière générale.</li></ul><p>Si le JDK 7 devait être finalisé sans qu&#8217;aucun standard ne le soutienne, cela constituerait un évènement majeur, puisque l&#8217;avenir deviendrait incertain pour les JVMs fournies par d&#8217;autres éditeurs tels qu&#8217;Oracle ou IBM.</p><h4><a
name="RIASOATimBraytiredansletas"></a>RIA, SOA, Tim Bray tire dans le tas</h4><p>C&#8217;est <a
href="http://www.infoq.com/interviews/tim-bray-future-of-web" title="dans une interview pour InfoQ" >dans une interview pour InfoQ</a> que Tim Bray co-auteur du XML nous donne son avis sur les technologies RIA. Selon lui, les RIA type Flex, Silverlight et JavaFx n&#8217;ont pour but que de fournir des applications toujours plus immersives et de moins en moins utiles. Il modère tout de même ses propos en s&#8217;appuyant sur des exemples de réussite comme Google et Yahoo! qui utilisent de manière élégante Ajax et consort. En bref, pour lui les avantages des interfaces web sont la simplicité et la rapidité, Tim ne croit donc pas en la longévité du RIA. Rien de mieux pour faire de l&#8217;applicatif lourd que de l&#8217;applicatif lourd.<br
/> Dans son interview, il explique rapidement que l&#8217;émergence des Web Services et des architectures de type SOA s&#8217;est faite en dépit du bon sens. Au début chacun y allait de son format XML privé et ça fonctionnait, mais on a voulu généraliser le problème et fournir une solution pour tous. Cette volonté de créer une pierre philosophale pour exposer ses services n&#8217;a apporté que des difficultés d&#8217;implémentation, d&#8217;intégration et surtout d&#8217;interopérabilité. Bref, Tim est assez pessimiste en ce qui concerne les &#8216;WS-*&#8217;, il soutient en revanche REST qui selon ses termes, n&#8217;est qu&#8217;une reformulation des bonnes pratiques des Web Oriented Architectures.<br
/> Enfin, il reste très discret sur Sun et sur le cloud computing en indiquant tout de même que pour le moment le département se cherche un peu. Faut-il fournir des solutions et des outils pour implémenter des nuages ou bien héberger directement des nuages et devenir fournisseur?</p><p><a
href="http://www.infoq.com/interviews/tim-bray-future-of-web" title="Linterview complte sur InfoQ" >L&#8217;interview complète sur InfoQ</a><br
/> <a
href="http://flexblog.faratasystems.com/?p=404" title="La rponse de Yakov Fain" >La réponse de Yakov Fain</a></p><h3><a
name="SOA"></a>SOA</h3><h4><a
name="RedHatJBosschoisitdinvestirdan"></a>Red Hat JBoss choisit d&#8217;investir dans CXF</h4><p><a
href="http://www.press.redhat.com/2009/03/25/red-hat-adds-muscle-to-apache-cxf/" title="Red Hat a annoncé la semaine dernière" >Red Hat a annoncé la semaine dernière</a> qu&#8217;elle devient un <em>&laquo;&nbsp;key contributor&nbsp;&raquo;</em> du projet <a
href="http://cxf.apache.org/" title="Apache CXF" >Apache CXF</a>.<br
/> A terme, <a
href="http://sacha.labourey.com/2009/03/26/jboss-to-join-forces-with-apache-cxf/" title="comme l'explique Sacha Labourey sur son blog" >comme l&#8217;explique Sacha Labourey sur son blog</a>, cela signifie que <a
href="http://jboss.org/jbossws" title="JBossWS" >JBossWS</a> qui laisse aujourd&#8217;hui le choix de l&#8217;implémentation Web Service <em>(ne fournissant qu&#8217;une couche d&#8217;abstraction)</em> ne fournira plus que l&#8217;implémentation Apache CXF. C&#8217;est dommage, d&#8217;autant plus que les dernières releases de CXF ont été plutôt douloureuses et riches en bugs.<br
/> D&#8217;un autre côté, la participation active des équipes JBoss au projet ne peut qu&#8217;aider à rectifier le tir. Gageons donc que les futures releases d&#8217;Apache CXF seront de bien meilleures factures que celles de 2008.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="EnfinuneroadmapdtaillepourleJD"></a>Enfin une roadmap détaillée pour le JDK7</h4><p>Lors de la conférence Devoxx de décembre dernier, un keynote avait particulièrement retenu l&#8217;attention : Mark Reinhold présentait alors la <a
href="http://hamletdarcy.blogspot.com/2008/12/java-7-update-from-mark-reinhold-at.html" title="liste des fonctionnalits" >liste des fonctionnalités</a> qui seraient intégrées au futur JDK 7, ainsi qu&#8217;une date pour la version finale.</p><p>Mark Reinhold <a
href="http://blogs.sun.com/mr/entry/jdk7" title="annonce" >annonce</a> maintenant la mise en ligne d&#8217;un <a
href="http://openjdk.java.net/projects/jdk7/calendar/" title="calendrier" >calendrier</a> détaillé des <a
href="http://openjdk.java.net/projects/jdk7/" title="milestones prévus" >milestones prévus</a> et des <a
href="http://openjdk.java.net/projects/jdk7/features/" title="fonctionnalits" >fonctionnalités</a> associées.</p><p>L&#8217;analyse de ces informations aboutit à quelques remarques :</p><ul><li>La période annoncée en décembre dernier pour l&#8217;arrivée d&#8217;une version finale, à savoir &laquo;&nbsp;début 2010&#8243;, est légèrement décalée puisqu&#8217;un <em>final milestone</em> est prévu pour le 18/02/2010 suivi d&#8217;une phase de <em>release candidate</em> d&#8217;un à deux mois. Ceci porterait donc l&#8217;arrivée d&#8217;une version finale à avril ou mai 2010.</li><li>La liste des nouveautés reste globalement inchangée à une exception près : il n&#8217;est plus question de MVM (Multiple Virtual Machines) qui devait permettre d&#8217;exécuter plusieurs applications au sein d&#8217;une même VM. Cette fonctionnalité, particulièrement intéressante dans le contexte du regain d&#8217;intérêt pour les Applets Java et autres applications JavaFX embarquées dans le browser, était annotée d&#8217;un <em>&laquo;&nbsp;maybe&nbsp;&raquo;</em> il y a deux mois et était visiblement trop ambitieuse pour résister à la pression du calendrier.</li><li>La <a
href="http://www.jcp.org/en/jsr/detail?id=310" title="JSR-310 (Date and Time API)" >JSR-310 (Date and Time API)</a> n&#8217;avait pas été citée en décembre et ne l&#8217;est toujours pas. <a
href="https://jsr-310.dev.java.net/servlets/ReadMsg?list=dev&#038;msgNo=1389" title="Lappel  laide" >L&#8217;appel à l&#8217;aide</a> du <em>spec lead</em> Stephen Colebourne aura donc été vain. En effet, comme il le faisait alors remarquer, dans le cas d&#8217;une inclusion au JDK, JDBC et NIO2 seraient impactés afin de prendre en compte la nouvelle API. Compte-tenu de cet impact, il était essentiel que cette JSR puisse être finalisée rapidement. Or son statut, toujours annoncé comme <em>&laquo;&nbsp;inactive&nbsp;&raquo;</em> par le site du JCP, tend à nous faire penser que la classe <code>java.util.Date</code> a encore de &laquo;&nbsp;beaux&nbsp;&raquo; jours devant elle.</li></ul><h4><a
name="LacrationdebundlesOSGiselonSpr"></a>La création de bundles OSGi selon SpringSource</h4><p>SpringSource <a
href="http://forum.springsource.org/showthread.php?p=232865" title="annonce" >annonce</a> l&#8217;arrivée de <a
href="http://www.springsource.org/bundlor" title="Bundlor" >Bundlor</a>, son outil de création de bundles OSGi, actuellement en version 1.0M2.</p><p>Dans un projet OSGi il est en effet nécessaire que l&#8217;ensemble des modules de l&#8217;application et des librairies tierces soient fournis sous forme de bundles. La création de bundles pour les modules dont on a le contrôle n&#8217;est pas un problème en soit, pour les librairies tierces, il en est tout autrement.</p><p>Deux possibilités s&#8217;offrent alors au développeur : obtenir la librairie qu&#8217;il recherche packagée sous forme d&#8217;un bundle OSGi sur un repository dédié (<a
href="http://www.springsource.com/repository/app/" title="celui de SpringSource" >celui de SpringSource</a> par exemple) ou créer ce bundle par lui-même. Dans ce dernier cas, il faudra analyser l&#8217;ensemble des dépendances de la librairie pour créer un manifest adapté. C&#8217;est là que les outils de création automatisée de bundles interviennent. <a
href="http://www.aqute.biz/Code/Bnd" title="Bnd" >Bnd</a> était le seul disponible jusqu&#8217;alors, crée par Peter Kriens, <em>Technical Director</em> d&#8217;OSGi. SpringSource amène donc désormais son propre outil.</p><p>Bundlor est justifié par SpringSource par quelques fonctionnalités non présentes dans Bnd telles que la création incrémentale de manifests et <a
href="http://blog.springsource.com/2009/03/26/using-bundlor-in-eclipse/" title="lintgration  Eclipse" >l&#8217;intégration à Eclipse</a> via un plugin dédié.</p><p>Malgré l&#8217;apparente efficacité de ce type d&#8217;outil, il est indispensable de ne l&#8217;appliquer qu&#8217;à des librairies tierces. En effet un des intérêts d&#8217;OSGi réside dans sa capacité à n&#8217;exposer qu&#8217;une partie soigneusement sélectionnée des interfaces d&#8217;un module, ce que seule une intervention humaine sera à même d&#8217;effectuer correctement.</p><h4><a
name="Utiliserlenuagepourrduirelesco"></a>Utiliser le nuage pour réduire les coûts d&#8217;intégration continue.</h4><p>Il est de notoriété publique que plus la fin d&#8217;un sprint approche, plus les ressources du serveur d&#8217;intégration sont sollicitées. En outre, c&#8217;est dans ces périodes que les développeurs ont besoin des feedbacks les plus rapides. Alors, que faire ? S&#8217;offrir une machine surpuissante, dédiée à l&#8217;intégration continue, mais qui ne sera que rarement utilisée à pleine capacité ?<br
/> Atlassian, l&#8217;éditeur du <a
href="http://www.atlassian.com/software/bamboo" title="serveur d'intégration continue Bamboo" >serveur d&#8217;intégration continue Bamboo</a>, propose de résoudre ce problème dans la version 2.2 de son produit, en offrant la possibilité d&#8217;utiliser &laquo;&nbsp;Elastic Bamboo&nbsp;&raquo;, un agent distant s&#8217;exécutant sur le nuage <a
href="http://aws.amazon.com/ec2/" title="Amazon EC2" >Amazon EC2</a>. Ainsi, la disponibilité et la puissance sont maximales lorsque l&#8217;équipe en a besoin, tout en limitant les coûts.<br
/> Et comme Atlassian utilise Bamboo en interne, certains plâtres sont déjà essuyés :</p><ul><li>Les builds doivent réellement être indépendants de l&#8217;environnement (à vous de construire vos builds en étant conscients de ce problème).</li><li>Dans le cas <em>standard</em>, les dépendances doivent être téléchargées à chaque build (l&#8217;instance de build disparaissant du nuage lorsqu&#8217;elle se termine). Une solution peut être d&#8217;utiliser une <em>image disque</em> sauvegardée sur le nuage.</li></ul><p><a
href="http://blogs.atlassian.com/developer/2009/03/customizing_your_cloud.html" title="Toutes les astuces de Edwin Wong pour paramtrer votre serveur dintgration continue sur le nuage" >Toutes les astuces de Edwin Wong pour paramétrer votre serveur d&#8217;intégration continue sur le nuage</a> se trouvent sur le blog d&#8217;Atlassian.</p><h4><a
name="OutilsGlassfishpourEclipse"></a>Outils Glassfish pour Eclipse</h4><p>Sun vient de sortir la <a
href="http://download.java.net/glassfish/eclipse/" title="version 09" >version 0.9</a> (la version 1.0 arrive bientôt) de son bundle.<br
/> Celui-ci intègre:</p><ul><li>Eclipse 3.4.1</li><li>Serveurs Glassfish v 2.1 et v3 Prélude</li><li>JDK 1.6 Update 12 (optionnel)</li><li>Une série de plugins permettant de configurer votre serveur J2EE, ainsi que vos WebServices (Soap ou Rest) depuis l&#8217;IDE. (Plus de détails sur les plugins, <a
href="https://glassfishplugins.dev.java.net/eclipse34/index.html" title="ici" >ici</a>).</li></ul><p>Ce bundle offre l&#8217;avantage de fournir un paquet tout-en-un. Il est destiné aux développeurs et aux organisations qui n&#8217;utilisent pas NetBeans, mais Eclipse. Celui-ci étant l&#8217;IDE le plus répandu. Sun élargit ainsi son public et se rapproche de la grande communauté d&#8217;Eclipse.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/03/30/revue-de-presse-xebia-102/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2009/02/23/revue-de-presse-xebia-97/</link> <comments>http://blog.xebia.fr/2009/02/23/revue-de-presse-xebia-97/#comments</comments> <pubDate>Mon, 23 Feb 2009 17:42:50 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Blaze DS]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[Groovy]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[LiveCycle DS]]></category> <category><![CDATA[Maven]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Sonar]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1509</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Glassfish v2.1 et Glassfish Portfolio GlassFish Mobility Platform 1.1 RIA Mozilla Labs sort Bespin, un IDE web Blaze Data Service ou LiveCycle Data Service Le coin de la technique Sonar en version 1.6 Groovy 1.6, tout pareil, mais en mieux [...]]]></description> <content:encoded><![CDATA[<p><img
style="margin: 1em 1em 1em 1em; float: right;" src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/02/23/revue-de-presse-xebia-97/#GlassfishvetGlassfishPortfolio">Glassfish v2.1 et Glassfish Portfolio</a></li><li><a
href="http://blog.xebia.fr/2009/02/23/revue-de-presse-xebia-97/#GlassFishMobilityPlatform">GlassFish Mobility Platform 1.1</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/02/23/revue-de-presse-xebia-97/#MozillaLabssortBespinunIDEweb">Mozilla Labs sort Bespin, un IDE web</a></li><li><a
href="http://blog.xebia.fr/2009/02/23/revue-de-presse-xebia-97/#BlazeDataServiceouLiveCycleDat">Blaze Data Service ou LiveCycle Data Service</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2009/02/23/revue-de-presse-xebia-97/#Sonarenversion">Sonar en version 1.6</a></li><li><a
href="http://blog.xebia.fr/2009/02/23/revue-de-presse-xebia-97/#Groovytoutpareilmaisenmieux">Groovy 1.6, tout pareil, mais en mieux</a></li><li><a
href="http://blog.xebia.fr/2009/02/23/revue-de-presse-xebia-97/#AribaWebpasseenOpenSource">AribaWeb passe en OpenSource</a></li><li><a
href="http://blog.xebia.fr/2009/02/23/revue-de-presse-xebia-97/#Maven">Maven 2.0.10</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="GlassfishvetGlassfishPortfolio"></a>Glassfish v2.1 et Glassfish Portfolio</h4><p>La version 2.1 du serveur d&#8217;applications GlassFish de Sun est sortie fin janvier. Cette nouvelle release apporte peu de grosses nouveautés. Comme le souligne <a
title="Alexis Moussine-Pouchkine" href="http://blogs.sun.com/alexismp/entry/quoi_de_neuf_dans_glassfish">Alexis Moussine-Pouchkine</a>, la sortie de <a
title="SailFin v1" href="https://sailfin.dev.java.net/">SailFin v1</a> a motivé la v2.1 de Glassfish. SailFin repose sur des servlets SIP et le protocole SIP (Session Initiation Protocol). Ce protocole est notamment utilisé pour réaliser de la VoIP ou de la messagerie instantanée.</p><p>Outre la correction des quelques 500 bugs, cette nouvelle version apporte avec elle son lot de nouveautés intéressantes :</p><ul><li>un nouveau service de <a
title="Shoal Group Management (GMS)" href="https://shoal.dev.java.net/">Shoal Group Management (GMS)</a>, qui permet à une JVM d&#8217;appartenir à un cluster et d&#8217;être notifiée lors d&#8217;événements sur celui-ci ;</li><li>une implémentation plus robuste des mécanismes de réplication de sessions ;</li><li>l&#8217;implémentation de <strong>Glassfish Enterprise Manager</strong>. Il s&#8217;agit en fait de la grosse nouveauté de cette version, cette plateforme offre trois nouveaux outils pour gérer GlassFish en production :<ul><li>un Support <a
title="SNMP" href="http://fr.wikipedia.org/wiki/Simple_Network_Management_Protocol">SNMP</a> ;</li><li><a
title="Performance Advisor" href="http://blogs.sun.com/sirajg/entry/glassfish_performance_advisor_install_and">Performance Advisor</a>, qui permet d&#8217;ajuster et de monitorer à chaud la configuration en fonction de la charge et des performances de l&#8217;application en cours d&#8217;exécution ;</li><li><a
title="Performance Monitor" href="http://blogs.sun.com/shreedhar/entry/glassfish_enterprise_manager_performance_monitor">Performance Monitor</a>, gestion de la performance basée sur <a
title="VisualVM" href="http://blog.xebia.fr/2009/01/26/revue-de-presse-xebia-93/#SortiedeVisualVM">VisualVM</a>.</li></ul></li></ul><p>Avec cette nouvelle version, Sun se lance donc dans une opération séduction destinée aux exploitants. Sera-t-elle suffisante pour transformer le <em>chouchou des développeurs</em> en machine de guerre prête à concurrencer les plus gros en production ? Quoi qu&#8217;il en soit, une marche de plus a été franchie.</p><p>D&#8217;après la <a
title="roadmap" href="http://blogs.sun.com/theaquarium/entry/glassfish_roadmap_an_update">roadmap</a> de GlassFish, cette mise à jour sera la dernière évolution majeure de la branche v2, actuellement utilisée sur les serveurs de production.<br
/> <a
title="GlassFish v3" href="http://developers.sun.com/appserver/reference/techart/glassfishv3prelude/">GlassFish v3</a>, dont la version Prelude est qualifiée de &laquo;&nbsp;production-ready&nbsp;&raquo; par Sun, reste le véritable avenir de GlassFish. Son architecture modulaire et la possibilité de redéploiement rapide qu&#8217;il offre lui permettront de rivaliser avec les serveurs d&#8217;applications de nouvelle génération tels que JBoss AS 5.0.</p><p>D&#8217;autre part, Sun a annoncé le 10 février dernier la sortie de <a
title="GlassFish Portfolio" href="http://www.sun.com/software/products/glassfish_portfolio/index.jsp">GlassFish Portfolio</a>. Il s&#8217;agit d&#8217;une plateforme applicative unifiée regroupant 4 produits déjà existants : Enterprise Server, ESB, Web Stack et Web Space Server.<br
/> Cette nouvelle plateforme n&#8217;apporte pas de réelles nouveautés et peut être considérée comme un repackaging marketing. Alexis Moussine-Pouchkine est plus mitigé sur <a
title="la question" href="http://blogs.sun.com/alexismp/entry/glassfish_portfolio">la question</a>.</p><h4><a
name="GlassFishMobilityPlatform"></a>GlassFish Mobility Platform 1.1</h4><p>Sun <a
title="annonce" href="http://blogs.sun.com/mobility/entry/announcing_the_release_of_sun">annonce</a> la disponibilité de <a
title="GlassFish Mobility Platform 11" href="http://www.sun.com/software/products/mep/">GlassFish Mobility Platform 1.1</a> qui constitue une mise à jour de son produit anciennement nommé Mobile Enterprise Platform 1.0 qui avait été introduit en Juillet 2008. Cette plate-forme a pour but de faciliter le développement d&#8217;applications mobiles communiquant avec un back-end Java.</p><p>Dans cette optique, la première version offrait déjà la possibilité de synchroniser les données d&#8217;un appareil mobile avec celle d&#8217;un serveur via l&#8217;utilisation du protocole <a
title="SyncML" href="http://en.wikipedia.org/wiki/SyncML">SyncML</a>.</p><p>Cette nouvelle version offre maintenant également le support de <a
title="JAX-RS" href="http://www.jcp.org/en/jsr/detail?id=311">JAX-RS</a>, apporté par un connecteur coté serveur, et par JerseyME coté client mobile <a
title="CLDC" href="http://en.wikipedia.org/wiki/CLDC">CLDC</a>.</p><p>Parmi les possibilités de middleware mobile, GlassFish Mobility Platform représente ainsi une alternative intéressante à l&#8217;utilisation d&#8217;un serveur d&#8217;application JEE classique invoqué par Web Services SOAP via la <a
title="JSR172" href="http://www.jcp.org/en/jsr/detail?id=172">JSR-172</a> (J2ME Web Services Specification) qui est dorénavant implémentée dans de nombreux appareils J2ME.</p><h3><a
name="RIA"></a>RIA</h3><h4><a
name="MozillaLabssortBespinunIDEweb"></a>Mozilla Labs sort Bespin, un IDE web</h4><p>Mi-Octobre 2008, <a
title="Dion Almaer" href="http://almaer.com/blog/joining-mozilla-to-create-new-developer-tools-for-the-web-hoping-to-create-a-new-chapter-in-the-book-of-mozilla">Dion Almaer</a> et <a
title="Ben Galbraith" href="http://benzilla.galbraiths.org/2008/10/13/a-new-direction/">Ben Galbraith</a>, les fondateurs du site <a
title="Ajaxian" href="http://www.ajaxian.com">Ajaxian</a>, rejoignaient Mozilla, pour <a
title="travailler sur des outils pour le dveloppeur" href="http://ajaxian.com/archives/ajaxians-join-mozilla-creating-developer-tools">travailler sur des outils pour le développeur</a> (l&#8217;employeur précédent de Dion Almaer était&#8230; Google).<br
/> Dion et Ben <a
title="ont annoncé la semaine dernière" href="http://ajaxian.com/archives/bespin-a-new-mozilla-labs-experimental-extensible-code-editor-using-canvas">ont annoncé la semaine dernière</a> le premier fruit de leurs travaux chez <a
title="Mozilla Labs" href="http://labs.mozilla.com">Mozilla Labs</a> : <a
title="Bespin" href="https://bespin.mozilla.com/">Bespin</a>, un éditeur de code web en ligne, avec le cahier des charges suivant :</p><ul><li>accessible de n&#8217;importe où</li><li>facile à utiliser</li><li>rapide</li><li>collaboration en temps réel</li><li>ligne de commande <em>à la vi</em> intégrée</li><li>extensible</li></ul><p>Il sera intéressant de voir le résultat de cette expérimentation : un logiciel qui a naturellement sa place sur le bureau peut-il être porté sur le web?<br
/> La première version mise en ligne est une &laquo;&nbsp;tech preview&nbsp;&raquo;, en version 0.1. Elle ne supporte pour le moment que quelques fonctionnalités d&#8217;édition de base (coloration syntaxique ou prévisualisation du rendu des pages dans le navigateur par exemple), et ne fonctionne pour l&#8217;instant que sur <a
title="Firefox 3" href="http://getfirefox.com/">Firefox 3</a> et une version <a
title="nightly de WebKit" href="http://nightly.webkit.org/">nightly de WebKit</a>.<br
/> Parmi les fonctionnalités attendues, citons en particulier la &laquo;&nbsp;collaboration en temps réel&nbsp;&raquo;. Cette fonctionnalité est soit absente de nos IDEs favoris, soit rarement utilisée. Elle est pourtant séduisante ! Prenons pour exemple l&#8217;éditeur <a
title="SubEthaEdit" href="http://www.codingmonkeys.de/subethaedit/">SubEthaEdit</a>, dont la <a
title="fonction de collaboration" href="http://www.codingmonkeys.de/subethaedit/collaborate.html">fonction de collaboration</a> inspire Mozilla Labs pour Bespin.</p><h4><a
name="BlazeDataServiceouLiveCycleDat"></a>Blaze Data Service ou LiveCycle Data Service</h4><p>Dans <a
title="cet article" href="http://www.infoq.com/articles/Blaze-LiveCycle">cet article</a>, Ryan Knight clarifie les différentes offres d&#8217;Adobe concernant les data services. Comme nous l&#8217;avions expliqué dans <a
title="cet article sur BlazeDS" href="http://blog.xebia.fr/2008/09/16/blazeds/">cet article sur BlazeDS</a>, ce dernier est OpenSource alors que le LiveCycle Data Services (LCDS) est propriétaire. Ces deux produits permettent notamment la communication entre un client Flex et un serveur d&#8217;applications Java par l&#8217;intermédiaire d&#8217;une Servlet (Message Broker), mais aussi grâce au <a
title="protocole AMF" href="http://osflash.org/documentation/amf">protocole AMF</a>.</p><p>Il existe cinq versions différentes:</p><ul><li>Blaze Data Services</li><li>LiveCycle Data Services Community Edition</li><li>LiveCycle Data Services Single-CPU Licence</li><li>LiveCycle Data Services</li><li>LiveCycle Data Services Entreprise Suite</li></ul><p>Afin d&#8217;effectuer un choix parmi ces offres, les questions suivantes se posent:</p><ul><li>Avez-vous besoin de support ?</li><li>Avez-vous besoin d&#8217;un service de gestion des données ?</li><li>L&#8217;application devra-t-elle supporter beaucoup de connections ?</li><li>De quels channels (AMF, <a
title="RTMP" href="http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol">RTMP</a>) avez-vous besoin ?</li></ul><p>Par la suite, le NIO (Java New Input/Output) endpoint est décrit. Le NIO, basé sur une socket, permet de gérer un grand nombre de connexions avec moins de threads. Néanmoins, comparé à la Servlet MessageBroker, ce dernier est moins rapide à mettre en place (mise en place d&#8217;une meilleure authentification&#8230;). A l&#8217;origine NIO a été créé pour pallier les problèmes de performances, mais ces derniers sont remis en questions, car dorénavant sous le JDK 1.6 par exemple, la JVM possède une meilleure gestion des threads.</p><p>Enfin pour terminer, le choix parmi les offres proposées par Adobe, dépend essentiellement des besoins et de la criticité (besoin de support éventuel) du projet à mettre en place. De manière générale, l&#8217;utilisation de la Servlet MessageBroker et du protocole AMF permettent de gérer bon nombre de situations.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="Sonarenversion"></a>Sonar en version 1.6</h4><p>Décidément, l&#8217;équipe de Sonar Source est prolifique en versions et en nouvelles fonctionnalités pour sa plateforme d&#8217;observation des indicateurs qualité : Sonar.<br
/> Nous annoncions sur ce blog à la fin de l&#8217;année dernière la sortie de <a
title="la version 1.5" href="http://blog.xebia.fr/2008/12/29/revue-de-presse-xebia-89/#Sonarenversion">la version 1.5</a> et à peine deux mois après, c&#8217;est la version 1.6 qui est annoncée en images sur le <a
title="blog li  loutil" href="http://sonar.codehaus.org/sonar-16-in-screenshots/">blog lié à l&#8217;outil</a>.<br
/> A noter donc, 3 features liées à la gestion des règles de qualité à observer sur les projets :</p><ul><li>La possibilité de lier un ruleset qualité différent selon les projets (fonctionnalité qui permet par exemple, d&#8217;adapter le niveau d&#8217;exigence en matière de qualité selon l&#8217;expérience de l&#8217;équipe de développement ou l&#8217;existant du projet)</li><li>Des alertes peuvent désormais être paramétrées sur l&#8217;apparition de règles spécifiques ou selon des seuils à ne pas dépasser. Sur le dashboard, l&#8217;indicateur du projet dépassant ces seuils apparaitra surligné. Il est aussi possible de lier les projets à un flux RSS.</li><li>Les rulesets sont maintenant historisés et peuvent être rechargés par projet.</li></ul><p>Sonar corrige et agrémente ses nouvelles versions en dépilant les fonctionnalités présentées <a
title="dans sa roadmap" href="http://sonar.codehaus.org/roadmap/">dans sa roadmap</a> (la version 1.7 est annoncée en Mars 2009).<br
/> Mais l&#8217;outil propose déjà un panel riche d&#8217;outils qui agrègent et présentent des données qualité à destination, aussi bien des directeurs de projet, pour une vision haut niveau, que des développeurs souhaitant une remontée continue d&#8217;informations qualitatives sur leur travail.</p><h4><a
name="Groovytoutpareilmaisenmieux"></a>Groovy 1.6, tout pareil, mais en mieux</h4><p>Guillaume Laforge a annoncé cette semaine <a
title="sur son blog la sortie de Groovy 1.6" href=" http://glaforge.free.fr/weblog/index.php?itemid=263">sur son blog la sortie de Groovy 1.6</a>. Notons qu&#8217;il s&#8217;agit de la première <em>grosse</em> release de Groovy depuis <a
title="lacquisition de G2One par SpringSource" href="http://www.springsource.com/g2one">l&#8217;acquisition de G2One par SpringSource</a> en Novembre dernier.</p><p>Lors de la <a
title="soire Groovy du Paris JUG" href="http://blog.xebia.fr/2008/09/10/paris-jug-resume-de-la-soiree-groovy-et-grails/#Groovyscriptezvosapplicationss">soirée Groovy du Paris JUG</a> de Septembre, Guillaume nous parlait avec enthousiasme de cette version 1.6 (qui était déjà disponible en bêta) : elle devait permettre à Groovy de devenir le langage de scripting pour JVM le plus rapide du marché. C&#8217;est d&#8217;ailleurs cette course à la performance qui a certainement occupé le plus les équipes de développement ces derniers mois. On se souvient de l&#8217;amélioration notable des temps de compilation (x3) à l&#8217;arrivée de Groovy 1.5.5. Cette fois-ci, c&#8217;est le bytecode généré qui a été mis au régime et qui permet a Groovy 1.6 d&#8217;améliorer grandement ses performances.<br
/> Les chiffres annoncés lors de la sortie de la version bêta permettaient d&#8217;espérer une amélioration des performances spectaculaire. Ils annonçaient alors entre 150% et 400% d&#8217;amélioration&#8230; sur certains tests bien spécifiques. Alors, qu&#8217;en est-il réellement ? Difficile à dire pour le moment, aucun test de performance n&#8217;ayant encore été publié. Si Guillaume Laforge lit ces lignes et qu&#8217;il peut nous en dire un peu plus, qu&#8217;il n&#8217;hésite pas !</p><p>L&#8217;autre nouveauté intéressante ne concerne pas directement les développeurs : la transformation d&#8217;AST. Un AST <em>(Abstract Syntax Tree)</em> correspond à la représentation mémoire du code source telle que le voit le compilateur avant que le bytecode ne soit généré. Il s&#8217;agit donc d&#8217;une fonctionnalité avancée ouvrant la porte à certaines solutions intéressantes. Effectuer des transformations sur l&#8217;AST revient à modifier, avant la compilation, le code de votre application : soit pour l&#8217;optimiser (suppression de code inutile, des variables non utilisées, &#8230;), soit pour en modifier le comportement.<br
/> Il devient donc aisé, pour le compilateur, d&#8217;ajouter un traitement particulier avant la compilation en fonction du code source. Vous utilisiez le <em>runtime weaving</em> de Spring, le <em>load time weaver</em> des agents java, Grrovy vous propose le <em>compilation time weaving</em>.<br
/> Concrètement, le compilateur pourra directement détecter la présence d&#8217;annotations (ou autres) dans votre code et effectuer ses modifications avant même que le code source ne soit compilé. Ainsi, la transformation d&#8217;AST facilitera probablement grandement l&#8217;intégration de nouveaux bultins type Spring ou Seam et permettra de ce fait la gestion transparente d&#8217;annotations du type <code>@Singleton</code>, <code>@Immutable</code>, <code>@Lazy</code>, <code>@Delegate</code> ou <code>@Binding</code>.</p><p>D&#8217;autre part, voici en vrac la liste des nouveautés plus terre-à-terre apportées par cette nouvelle version (nous n&#8217;en détaillerons pas les cas d&#8217;utilisation ici) :</p><ul><li>Affectations multiples : def (a,b) = [1,2]</li><li>Retours optionnels dans les blocks if/else et try/catch</li><li>Améliorations des builders Swing</li><li>Builtin permettant l&#8217;exécution de scripts au sens <a
title="JSR223" href="http://jcp.org/en/jsr/detail?id=223">JSR-223</a> (si si, du script dans un language de scripting)</li><li>L&#8217;intégration d&#8217;un builder JMX</li></ul><h4><a
name="AribaWebpasseenOpenSource"></a>AribaWeb passe en OpenSource</h4><p>Après quatre versions de sa stack de développement d&#8217;applications web, la société <a
title="Ariba Inc." href="http://www.ariba.com/">Ariba Inc.</a> a décidé de la passer en OpenSource. La version 5, actuellement en Release Candidate 1 vient d&#8217;être publiée en même temps chez <a
title="SourceForge" href="http://sourceforge.net/projects/aribaweb/">SourceForge</a> et <a
title="Google Code" href="http://code.google.com/p/aribaweb/">Google Code</a>. Le projet AribaWeb passe donc en licence <a
title="Apache Version 2.0" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache Version 2.0</a> et l&#8217;équipe de développement nous gratifie pour sa sortie d&#8217;un <a
title="joli site de promotion" href="http://aribaweb.org/">joli site de promotion</a> avec tutoriaux et screencasts de démonstration.</p><p>Relativement peu connu, du fait de son utilisation propriétaire dans ses premières versions, AribaWeb promet une productivité sans commune mesure avec les autres stacks de développement web : à application équivalente, 100 fois moins de code à écrire qu&#8217;avec Rails ! Ils annoncent également avoir besoin de 10 fois moins de code qu&#8217;avec GWT pour développer une application GoogleMaps. La fonction LiveEdit, permettant de replacer ses composants UI et éditer les règles d&#8217;accès aux écrans directement dans un navigateur, vaut le détour. Des plugins Eclipse et IntelliJ IDEA sont livrés en standard pour permettre de tester rapidement dans un environnement familier.</p><p>Souhaitons une longue vie à ce nouveau projet, dont le passage en OpenSource a été initié pour &laquo;&nbsp;offrir un retour à la communauté qui a rendu son développement possible&nbsp;&raquo;.</p><h4><a
name="Maven"></a>Maven 2.0.10</h4><p>Dix mois après la <a
title="sortie de la version 209" href="http://blog.xebia.fr/2008/04/14/revue-de-presse-xebia-52/#Maven209">sortie de la version 2.0.9</a>, la version 2.0.10 de Maven vient d&#8217;être mise en ligne.<br
/> Au programme, essentiellement <a
title="des corrections danomalies" href="http://maven.apache.org/release-notes.html">des corrections d&#8217;anomalies</a>. De nouvelles fonctionnalités devaient au départ être intégrées dans cette version, mais elles ont été reportées dans la branche 2.1.<br
/> Vous trouverez plus d&#8217;informations sur la sortie de la nouvelle version sur <a
title="le blog de Sonatype" href="http://www.sonatype.com/people/2009/02/maven-2010-released/">le blog de Sonatype</a> (la société de Jason van Zyl, le père de Maven), ils y donnent en particulier un rapide tour d&#8217;horizon des différentes branches actuelles (2.0.x, 2.1.x et 3.0.x).<br
/> Si vous utilisez Maven 2.0.9 et que vous n&#8217;êtes pas affectés par une des anomalies corrigées, la migration n&#8217;est pas bien urgente&#8230;</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/02/23/revue-de-presse-xebia-97/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/</link> <comments>http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#comments</comments> <pubDate>Mon, 17 Nov 2008 18:04:04 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[Cocomo]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[Grails]]></category> <category><![CDATA[Hyperic]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[SpringSource]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=997</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Sun supprime 5.000 à 6.000 emplois dans la continuité de sa mutation en un acteur Open Source SpringSource dévoile sa roadmap RIA Le framework préféré des développeurs Flex Adobe lance Cocomo Le coin de la technique Essayez le nouvel algorithme [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#Sunsupprimeemploisdanslacontin">Sun supprime 5.000 à 6.000 emplois dans la continuité de sa mutation en un acteur Open Source</a></li><li><a
href="http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#SpringSourcedvoilesaroadmap">SpringSource dévoile sa roadmap</a></li></ul><p><strong>RIA</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#LeframeworkprfrdesdveloppeursF">Le framework préféré des développeurs Flex</a></li><li><a
href="http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#AdobelanceCocomo">Adobe lance Cocomo</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#EssayezlenouvelalgorithmeGarba">Essayez le nouvel algorithme Garbage First</a></li><li><a
href="http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#GestiondesdocumentsOffice">Gestion des documents Office 2007</a></li><li><a
href="http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#Hypericvlemonitoringdapplicati">Hyperic v4.0 : le monitoring d&#8217;applications Java passe par JMX</a></li><li><a
href="http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#SortiedeGrails">Sortie de Grails 1.0.4</a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#OpenSourceEchangecomptesrendus">Open Source eXchange : comptes-rendus des participants</a></li><li><a
href="http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/#LAquariumParisledcembreinscrip">L&#8217;Aquarium à Paris le 12 décembre : inscriptions ouvertes</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="Sunsupprimeemploisdanslacontin"></a>Sun supprime 5.000 à 6.000 emplois dans la continuité de sa mutation en un acteur Open Source</h4><p>Sun annonce un plan de restructuration assez conséquent puisqu&#8217;il touchera plus de 15% de ses effectifs.</p><p>Triste nouvelle. La nécessaire mutation de ce fleuron de l&#8217;informatique des années 90, tiraillé entre son activité hardware en déclin <em>(traditionnellement haut de gamme, mais malheureusement à contre-courant d&#8217;investissements en berne en période de crise)</em> et son activité software <em>(en recherche d&#8217;un second souffle &#8211; le patron de la branche logicielle, Steve Green est parti Vendredi dernier)</em>, est en marche depuis plusieurs années et n&#8217;est pas une surprise.</p><p>L&#8217;annonce faite <a
href="http://www.sun.com/aboutsun/pr/2008-11/sunflash.20081114.1.xml" title="sur le site Corporate de Sun" >sur le site Corporate de Sun</a> est claire : Software et Open Source !<br
/> Espérons pour Sun que les récentes <em>(pour certaines judicieuses)</em> et coûteuses acquisitions porteront leurs fruits.</p><p>Si nous osions, nous dirions que, toute activité hardware mise à part, Sun ressemble de plus en plus à des pures players de l&#8217;Open Source au même titre que Redhat par exemple.</p><p>Il n&#8217;est en effet pas surprenant que Sun ait choisi cette voie. Lors de la conférence de Malaga des partenaires de Redhat, à laquelle Xebia était invitée, James Whitehust nous époustouflait en nous annonçant que sa marge et sa croissance étaient parmi les plus élevées de l&#8217;industrie logicielle <em>(information vérifiée et qui s&#8217;avère exacte)</em>.</p><p>Bonne continuation à Sun dans cette voie, elle est légitime. Et bonne chance avec la prometteuse gamme Sun Storage 7000, un <a
href="http://bigtech.blogs.fortune.cnn.com/2008/11/12/sun-gambles-big-as-outlook-darkens/" title="condensé de hardware, d'open source et d'innovation" >condensé de hardware, d&#8217;open source et d&#8217;innovation</a> dans le lignée du nouveau modèle Sun !</p><h4><a
name="SpringSourcedvoilesaroadmap"></a>SpringSource dévoile sa roadmap</h4><p>Vous avez probablement entendu parler des rencontres Spring qui se sont déroulées jeudi dernier. Nous ne résumerons pas ici le contenu de l&#8217;ensemble des conférences, d&#8217;autres blogs s&#8217;en sont déjà chargés avec brio <em>(cf liens annexes)</em>. Si, dans l&#8217;ensemble, les conférences étaient plutôt réussies, nous avouons être un peu restés sur notre faim :</p><ul><li>Les discussions ont beaucoup tourné autour du <a
href="http://www.springsource.com/g2one" title="rachat par SpringSource de G2One" >rachat par SpringSource de G2One</a> sans pour autant révéler clairement la place de Groovy et Grails dans la stack Spring. Elles ont tout de même permis de servir de point de départ à des discussions off bien plus intéressantes lors de la pause.</li><li>Aucune explication sur les <em>(petits)</em> retards de la M1 de Spring 3.0, aucune référence à <a
href="http://www.springsource.org/javaconfig" title="Spring JavaConfig" >Spring JavaConfig</a> ni à l&#8217;intégration des Servlet 3.0, pas de communication sur le contenu des M2 et M3, bref, rien de neuf depuis le billet que nous <a
href="http://blog.xebia.fr/2008/10/08/spring-30-le-grand-nettoyage-du-printemps/" title="avons publié le mois dernier sur Spring 3.0" >avons publié le mois dernier sur Spring 3.0</a>.</li></ul><p>Heureusement donc que ce rachat, annoncé en début de semaine, et la présence de <strong>speakers d&#8217;exceptions</strong> ont permis de pimenter cette demi-journée.</p><p>La partie la plus intéressante a été probablement celle de Peter Cooper Ellis nous présentant de la roadmap Spring dont voici les points à retenir :</p><ul><li>Concernant <a
href="http://blog.xebia.fr/2008/10/08/spring-30-le-grand-nettoyage-du-printemps/" title="Spring 3.0" >Spring 3.0</a> : le premier milestone doit sortir d&#8217;ici fin novembre. Il sera probablement suivi d&#8217;un M2 et d&#8217;un M3 avant l&#8217;arrivée d&#8217;une Release Candidate prévue en mars 2009. La sortie officielle devrait arriver en avril si tout se passe bien.</li><li>Sortie de <a
href="http://blog.xebia.fr/2008/07/30/introduction-a-spring-integration/" title="Spring Integration" >Spring Integration</a> d&#8217;ici la fin de l&#8217;année.</li><li>La version 1.2 de Spring DM devrait sortir durant le premier trimestre 2009 offrant le support au <a
href="http://felix.apache.org/site/apache-felix-configuration-admin-service.html" title="Configuration Admin service" >Configuration Admin service</a>. Elle sera suivie peu de temps après par la version 2.0 qui implémentera <em>l&#8217;OSGi Blueprint Service</em> (RFC 124) partie <a
href="http://www.osgi.org/download/osgi-4.2-early-draft.pdf" title="d'OSGi R4.2" >d&#8217;OSGi R4.2</a>. Spring DM 2.0 sera d&#8217;ailleurs probablement la <em>reference implementation</em> de ces spécifications. Sa date de sortie est prévue pour le second trimestre 2009.</li><li>En parallèle à cela, deux nouvelles versions de Spring dmServer sont planifiées l&#8217;année prochaine. La première, dmServer Jersey, offrira, entre autres, une compatibilité Tomcat. Cette version devrait voir le jour au second trimestre 2009. L&#8217;autre version est prévue pour fin 2009 : dmServer Ockney. En voici quelques nouveautés : load balancer dynamique, enregistrement et exécution de scripts sur la console &#8230;</li><li>Notons également au premier trimestre 2009 : une mise à jour de Spring IDE <em>(2.5)</em> et les versions 1.6 de Groovy et 1.1 de Grails, dont Guillaume Laforge vente les mérites depuis la <a
href="http://blog.xebia.fr/2008/09/10/paris-jug-resume-de-la-soiree-groovy-et-grails/" title="soirée Groovy du Paris JUG" >soirée Groovy du Paris JUG</a>.</li><li>Mais c&#8217;est le second trimestre qui sera le plus chargé avec au programme : Spring Batch 2.0, Spring Security 2.5, Spring ROO et Spring Web. La version 2.0 de Spring Batch apportera une mise à jour importante de ce framework : passage à Java 5, configuration via annotations, on parle également d&#8217;une éventuelle intégration avec la stack apportée par G2One. Vous aurez également remarqué la présence d&#8217;un nouveau framework baptisé Spring ROO. Il s&#8217;agirait d&#8217;un framework RAD / DDD de génération de codes privilégiant les conventions à la configuration <em>(tiens, tiens, ça nous rappelle quelque chose)</em>. Ici encore, aucune information n&#8217;est donnée quant à la place de ce framework vis-à-vis de Grails.</li></ul><div
align="center"><img
src="http://blog.xebia.fr/wp-content/uploads/2008/11/spring-roadmap.jpg" alt="" title="spring-roadmap" width="500" height="186" class="aligncenter size-full wp-image-999" /></div><p>Notez que ce planning ne se veut ni complet ni définitif, certaines de ces dates seront très probablement amenées à évoluer.</p><p><strong>Liens connexes :</strong></p><ul><li>Consultez <a
href="http://www.rencontres-spring.com/post/2008/11/04/Agenda" title="l'agenda de la demi-journée" >l&#8217;agenda de la demi-journée</a>.</li><li>Téléchargez-les <a
href="http://www.rencontres-spring.com/post/2008/11/14/Merci-a-tous-mise-a-disposition-des-slides" title="slides des conférences" >slides des conférences</a>.</li><li>Remerciements post-conférences par <a
href="http://www.springsource.com/node/854" title="Julien Dubois" >Julien Dubois</a>.</li><li>Résumé de la demi-journée par <a
href="http://www.insideit.fr/post/2008/11/13/les-Rencontres-Spring-2008" title="Pierre Mage" >Pierre Mage</a>.</li><li>Résumé de la demi-journée par <a
href="http://blog.octo.com/index.php/2008/11/13/184-les-rencontres-spring-2008" title="Olivier Mallassi" >Olivier Mallassi</a>.</li><li>Résumé de la demi-journée par <a
href="http://www.touilleur-express.fr/2008/11/13/compte-rendu-des-rencontres-spring-2008/" title="Nicolas Martignole" >Nicolas Martignole</a>.</li><li>Autres billets : <a
href="http://www.tomsquest.com/blog/spring-dm-server-le-pari-fou/" title="Spring dmServer, le pari fou ?" >Spring dmServer, le pari fou ?</a>, <a
href="http://www.tomsquest.com/blog/tuning-de-tomcat-par-mark-thomas/" title="Tuning Tomcat" >Tuning Tomcat</a> par Thomas Queste.</li></ul><h3><a
name="RIA"></a>RIA</h3><h4><a
name="LeframeworkprfrdesdveloppeursF"></a>Le framework préféré des développeurs Flex</h4><p>Rich Tetrola a lancé la semaine dernière un <a
href="http://www.insideria.com/2008/11/new-poll-which-flex-framework.html" title="sondage" >sondage</a> sur le framework préféré des développeurs Flex. Et voici le <a
href="http://www.insideria.com/2008/11/poll-results-which-flex-framew.html" title="résultat" >résultat</a>. PureMVC remporte le sondage à la surprise de l&#8217;auteur lui-même qui misait plutôt sur Cairngorm. Les candidats au titre de framework préféré des développeurs Flex étaient :</p><ul><li><a
href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm;jsessionid=F94BB8C296D6BDBBB5F4410E67CF0959" title="Cairngorm" >Cairngorm</a> : une micro architecture fournissant plusieurs motifs de conception <em>(notamment le Modèle-Vue-Contrôleur)</em>.</li><li><a
href="http://puremvc.org/" title="PureMVC" >PureMVC</a> : un framework permettant de concevoir des applications basées sur le motif de conception Modèle-Vue-Contrôleur.</li><li><a
href="http://mate.asfusion.com/" title="Mate" >Mate</a> : un framework qui gère les évènements dont voici une démonstration <a
href="http://nwebb.co.uk/videotutorials/mate_helloworld/" title="Hello World" >Hello World</a>.</li><li><a
href="http://code.google.com/p/swizframework/" title="Swiz" >Swiz</a> : un framework facilitant le développement d&#8217;applications riches.</li><li><a
href="http://projects.simb.net/easyMVC/" title="EasyMVC" >EasyMVC</a> : il permet également de concevoir des applications sur le motif de conception Modèle-Vue-Contrôleur.</li><li><a
href="http://ruboss.com/" title="Ruboss" >Ruboss</a> : il facilite le développement d&#8217;application Flex/Rails.</li></ul><p>Cairngorm, bien qu&#8217;il soit un produit d&#8217;Adobe Labs, n&#8217;a pas remporté le succès attendu à cause de sa complexité, c&#8217;est ce qui ressort des commentaires. Peut être est ce à cause de son <a
href="http://blog.iconara.net/2008/04/13/architectural-atrocities-part-x-cairngorms-model-locator-pattern/ " title=""ModelLocator fourre tout"" >&laquo;&nbsp;ModelLocator fourre tout&nbsp;&raquo;</a>. Les résultats sont intéressants mais il ne faut pas les prendre au pied de la lettre. Tous ces frameworks ont pour but de mettre en place de bonnes pratiques dans le développement d&#8217;applications riches. Chacun dispose d&#8217;avantages et d&#8217;inconvénients à bien évaluer lorsqu&#8217;on veut choisir d&#8217;utiliser l&#8217;un de ces frameworks.</p><h4><a
name="AdobelanceCocomo"></a>Adobe lance Cocomo</h4><p>Avec cette première version bêta dans les <a
href="http://labs.adobe.com/" title="labs" >labs</a>, Adobe étoffe encore son offre RIA.<br
/> Cocomo est une plateforme Flex permettant au développeur d&#8217;ajouter des capacités <em>&laquo;&nbsp;sociales&nbsp;&raquo;</em> aux applications RIA. Cocomo mêle une partie cliente Flex et les infrastructures réseau mises à disposition par Adobe. En bref, il permet de facilement mettre en place des outils collaboratifs dans vos applications Flex. La version bêta propose déjà le support de :</p><ul><li>Conférences audio <em>(par VoIP)</em>.</li><li>Conférences vidéo <em>(par Webcam)</em>.</li><li>Chat texte.</li><li>Echange de fichiers.</li><li>Gestion des utilisateurs.</li><li>Et d&#8217;autres choses à découvrir.</li></ul><p>Pour plus d&#8217;informations rendez vous sur le site d&#8217;Adobe : <a
href="http://labs.adobe.com/technologies/cocomo/" title="Présentation de Cocomo" >Présentation de Cocomo</a>.</p><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="EssayezlenouvelalgorithmeGarba"></a>Essayez le nouvel algorithme Garbage First</h4><p>Danny Coward, dont nous avons déjà parlé à plusieurs reprises, a publié cette semaine sur son blog un billet <a
href="http://blogs.sun.com/theplanetarium/entry/java_vm_trying_a_new" title="annonçant la disponibilité" >annonçant la disponibilité</a> du nouvel algorithme pour le ramasse-miettes Java sur le <a
href="http://download.java.net/jdk7/" title="dernier build du JDK 7" >dernier build du JDK 7</a> <em>(bon courage pour l&#8217;installer &#8230;)</em>. Trois saisons ont passé depuis la publication sur notre blog d&#8217;un article présentant le fonctionnement de celui-ci. Son principe n&#8217;a pas changé, vous pouvez donc toujours vous y référer si le sujet vous intéresse : <a
href="http://blog.xebia.fr/2008/03/12/gc-generationnels-traditionnels-jdk6-vs-gc-garbage-first-jdk7/" title="GC générationnels traditionnels (JDK 6) VS Garbage First (JDK 7)" >GC générationnels traditionnels <em>(JDK 6)</em> VS Garbage First <em>(JDK 7)</em></a>.</p><p>À retenir sur ce nouvel algorithme, Garbage First <em>(G1)</em> :</p><ul><li>Il est destiné à remplacer le <em>parrallel and concurrent mark and sweep</em>.</li><li>Il devrait être <strong>activé par défaut</strong> dès le JDK 7.</li><li>Il propose un <strong>nouveau découpage du tas</strong> : la taille des zones mémoire se réduit, plus de zones sont créées en contrepartie.</li><li>Il permet également d&#8217;exploiter les forces des architectures multicœurs.</li><li>Il se veut plus prédictible et moins intrusif en offrant par exemple des <strong>garanties sur des temps de pauses</strong>.</li><li>Il permet en moyenne d&#8217;obtenir un <strong>meilleur débit</strong> de nettoyage, tout en offrant une implémentation <strong>simple à comprendre</strong>.</li></ul><h4><a
name="GestiondesdocumentsOffice"></a>Gestion des documents Office 2007</h4><p>La société <a
href="http://www.aspose.com/" title="Aspose" >Aspose</a> annonce la sortie d&#8217;une nouvelle version de son produit <a
href="http://www.aspose.com/community/blogs/aspose.words/archive/2008/11/07/this-aspose-words-for-java-2-6-0-released.aspx" title="Aspose.Word" >Aspose.Word</a> permettant de gérer nos fichiers <strong>Word 2007</strong>, les fameux <em>.docx</em> de <strong>Microsoft Office 2007</strong> <em>(annonce relayée par <a
href="http://www.theserverside.com/news/thread.tss?thread_id=51816" title="The Server Side" >The Server Side</a>)</em>.</p><p>Cette 2.6.0 ajoute l&#8217;importante fonctionnalité de pouvoir charger un fichier Word existant, rendant possible l&#8217;édition de celui-ci. Un produit très complet donc, qui gère aussi les images, les zones de texte, les objets OLE et Active X et bien d&#8217;autres fonctionnalités de Microsoft Word.</p><p>A noter que la gestion des fichiers <strong>Excel 2007</strong> <em>(.xlsx)</em> et <strong>PowerPoint 2007</strong> <em>(.pptx)</em> est en très bonne voie chez <a
href="http://poi.apache.org/" title="Apache POI" >Apache POI</a>, le support du format OOXML étant déjà disponible dans POI en version <a
href="http://www.apache.org/dyn/closer.cgi/poi/dev/" title="3.5 beta 3" >3.5 beta 3</a>. Ce support est désormais une priorité pour le projet. Rappelons que depuis quelques mois <a
href="http://www.microsoft.com/presspass/press/2008/mar08/03-25SourcesensePR.mspx" title="Microsoft est partenaire du projet Apache POI" >Microsoft est partenaire du projet Apache POI</a> et contribue ainsi à l&#8217;intégration de son format dans POI.</p><h4><a
name="Hypericvlemonitoringdapplicati"></a>Hyperic v4.0 : le monitoring d&#8217;applications Java passe par JMX</h4><p><a
href="http://www.hyperic.com/products/hq_oss.html" title="Hyperic HQ" >Hyperic HQ</a>, l&#8217;outil de supervision choisi par Iona <em>(<a
href="http://fusesource.com/products/fuse-hq/" title="Fuse HQ" >Fuse HQ</a>)</em>, Redhat <em>(<a
href="http://www.jboss.com/products/jbosson" title="JBoss Operations Network" >JBoss Operations Network</a>)</em> et SpringSource <em>(<a
href="http://www.springsource.com/products/suite/ams" title="Application Management Suite" >Application Management Suite</a>)</em>, dévoile cette semaine sa version 4.0 dont une des nouveautés clefs est le nouveau <a
href="http://support.hyperic.com/display/DOC/ui-Monitor.Server.MbeanBrowser" title="JMX MBean Browser" >JMX MBean Browser</a>.</p><p>Nous retiendrons de cette annonce que <strong>JMX est la technologie incontournable pour superviser des applications Java</strong>. Le développement d&#8217;indicateurs en MBean JMX est aujourd&#8217;hui très facile pour les équipes applicatives avec des frameworks comme <a
href="http://static.springframework.org/spring/docs/2.5.x/reference/jmx.html" title="Spring JMX" >Spring JMX</a> et la consultation de ces informations est banalisée avec l&#8217;incontournable <a
href="https://visualvm.dev.java.net/description.html" title="Visual VM" >Visual VM</a> <em>(cf <a
href="http://blog.xebia.fr/2008/10/22/diagnostic-dune-jvm-a-distance/" title="Blog Xebia : Diagnostique d'une JVM à distance" >Blog Xebia : Diagnostique d&#8217;une JVM à distance</a>)</em>.</p><p>Ne pas s&#8217;intégrer facilement à JMX est aujourd&#8217;hui un très sévère handicap pour une solution de supervision d&#8217;applications Java.</p><h4><a
name="SortiedeGrails"></a>Sortie de Grails 1.0.4</h4><p>La sortie officielle de Grails 1.0.4 vient d&#8217;être annoncée par SpringSource. Pour ceux qui ne le connaissent pas, Grails est un framework orienté web écrit en Java et Groovy et placé sous licence Apache. Il s&#8217;inspire fortement du framework Rails <em>(Ruby on Rails)</em>. Mais contrairement à Rails, Grails est ancré complètement dans l&#8217;univers Java, et repose sur des frameworks très connus comme Spring ou Hibernate.</p><p>Cette nouvelle version propose des nouvelles fonctionnalités pour une meilleure intégration avec Spring et Hibernate, un support des tags JSP dans GSP, de nouveaux plugins pour Java Content Repository <em>(JCR API)</em>, Java Persistence API <em>(JPA)</em> et l&#8217;api Portlet.</p><p>L&#8217;année prochaine s&#8217;annonce très prometteuse, avec la possibilité d&#8217;intégration de Groovy avec Grails et des produits du portefeuille Spring comme Spring Batch, Spring Integration, et Spring dm Server.</p><p>Autres liens :</p><ul><li>Le site officiel de <a
href="http://grails.org/" title="Grails" >Grails</a>.</li><li>La documentation officielle : <a
href="http://grails.org/doc/1.0.4" title="http://grails.org/doc/1.0.4" >http://grails.org/doc/1.0.4</a>.</li></ul><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="OpenSourceEchangecomptesrendus"></a>Open Source eXchange : comptes-rendus des participants</h4><p>Si vous n&#8217;avez pas pu assister à la journée <a
href="http://blog.xebia.fr/2008/11/14/conference-open-source-exchange-un-grand-merci-et-a-lannee-prochaine-si-vous-le-voulez-bien/" title="OpenSource Exchange" >OpenSource Exchange</a> organisée conjointement par Skills Matter et Xebia de la semaine dernière, nous vous proposons ici en rattrapage quelques-uns des retours effectués par les participants à cette journée.</p><ul><li><a
href="http://ericlefevre.net/wordpress/2008/11/12/back-from-open-source-exchange/" title="Éric Lefevre met à disposition sur son blog" >Éric Lefevre met à disposition sur son blog</a> un compte rendu synthétisant l&#8217;ensemble de la journée.</li><li>Olivier Croisier a quant à lui effectué une série d&#8217;articles fort intéressante sur chacune des conférences :</li><ul><li>Compte rendu <a
href="http://olivier.croisier.free.fr/blog/index.php?2008/11/13/119-opensource-exchange-compte-rendu" title="SpringSource dmServer" >SpringSource dmServer</a>, dont la conférence était présentée par <a
href="http://www.skillsmatter.com/expert-profile/home/michael-isvy" title="Michael Isvy" >Michael Isvy</a>.</li><li>Compte rendu <a
href="http://olivier.croisier.free.fr/blog/index.php?2008/11/14/120-opensource-exchange-compte-rendu-sur-exo-platform" title="eXo Platform" >eXo Platform</a>, dont la conférence était présentée par <a
href="http://www.skillsmatter.com/expert-profile/home/tugdual-grall" title="Tugdal Grall" >Tugdal Grall</a>.</li><li>Compte rendu <a
href="http://olivier.croisier.free.fr/blog/index.php?2008/11/14/122-opensource-exchange-compte-rendu-sur-jee6" title="Java EE 6" >Java EE 6</a>, dont la conférence était présentée par <a
href="http://skillsmatter.com/expert-profile/home/antonio-gonclaves" title="Antonio Goncalves" >Antonio Goncalves</a>.</li><li>Compte rendu <a
href="http://olivier.croisier.free.fr/blog/index.php?2008/11/14/121-opensource-exchange-compte-rendu-sur-groovy-et-grails" title="Groovy" >Groovy</a>, dont la conférence était présentée par <a
href="http://www.skillsmatter.com/expert-profile/home/guillaume-laforge" title="Guillaume Laforge" >Guillaume Laforge</a>.</li><li>Compte rendu <a
href="http://olivier.croisier.free.fr/blog/index.php?2008/11/15/123-opensource-exchange-compte-rendu-sur-glassfish-v3" title="Glassfish v3" >Glassfish v3</a>, dont la conférence était présentée par <a
href="http://blogs.sun.com/alexismp/" title="Alexis Moussine-Pouchkine" >Alexis Moussine-Pouchkine</a>.</li><li>Compte rendu <a
href="http://olivier.croisier.free.fr/blog/index.php?2008/11/15/124-opensource-exchange-compte-rendu-sur-portlets-20" title="Portlet 2.0" >Portlet 2.0</a>, dont la conférence était présentée par <a
href="http://www.skillsmatter.com/expert-profile/home/christophe-laprun" title="Christophe Laprun" >Christophe Laprun</a>.</li><li>Compte rendu <a
href="http://olivier.croisier.free.fr/blog/index.php?2008/11/16/125-opensource-exchange-compte-rendu-sur-hadoop" title="Hadoop" >Hadoop</a>, dont la conférence était présentée par <a
href="http://skillsmatter.com/expert-profile/home/hugues-le-bars" title="Hugues Le Bars" >Hugues Le Bars</a>.</li></ul></ul><p>Nous profitons de cette revue de presse pour les remercier.</p><p>Vous pouvez également nous proposer d&#8217;autres comptes-rendus si vous le désirez.</p><h4><a
name="LAquariumParisledcembreinscrip"></a>L&#8217;Aquarium à Paris le 12 décembre : inscriptions ouvertes</h4><p>Nous en parlions <a
href="http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia-82/#JourneGlassFishetJavaParischez" title="la semaine dernière" >la semaine dernière</a>, Sun organise le vendredi 12 décembre une journée gratuite &laquo;&nbsp;GlassFish et Java&nbsp;&raquo; dans ses locaux au 42, avenue d&#8217;Iéna à Paris.<br
/> Cette journée a été baptisée &laquo;&nbsp;<a
href="http://fr.sun.com/sunnews/events/2008/dec/open_source/agenda.jsp" title="L'Aquarium à Paris" >L&#8217;Aquarium à Paris</a>&nbsp;&raquo; et sera l&#8217;occasion de couvrir un large spectre de la gamme Sun :</p><ul><li><a
href="https://glassfish.dev.java.net/" title="GlassFish" >GlassFish</a>,</li><li>Java EE 6,</li><li><a
href="https://grizzly.dev.java.net/" title="Grizzly Comet" >Grizzly Comet</a>,</li><li><a
href="https://jersey.dev.java.net/" title="Jersey" >Jersey</a>,</li><li><a
href="https://mq.dev.java.net/" title="OpenMQ" >OpenMQ</a>,</li><li><a
href="http://javafx.com/" title="JavaFX" >JavaFX</a>,</li><li><a
href="http://www.mysql.fr/" title="MySQL" >MySQL</a>,</li><li><a
href="https://opensso.dev.java.net/" title="OpenSSO" >OpenSSO</a>,</li><li><a
href="https://open-esb.dev.java.net/" title="OpenESB" >OpenESB</a>.</li></ul><p>Parmi les intervenants: Roberto Chinnici <em>(spec lead)</em>, Richard Bair <em>(tech lead)</em>, Paul Sandoz <em>(spec lead)</em>, Linda Schneider <em>(tech lead)</em>, Jean-François Arcand <em>(tech lead)</em>, etc&#8230;</p><p>Les <a
href="http://fr.sun.com/sunnews/events/2008/dec/open_source/" title="inscriptions" >inscriptions</a> sont désormais ouvertes.</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/11/17/revue-de-presse-xebia-83/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia-82/</link> <comments>http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia-82/#comments</comments> <pubDate>Mon, 10 Nov 2008 17:57:51 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[JBoss]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[Restlet]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Sun]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=970</guid> <description><![CDATA[La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII Sun délaisserait Swing ? Entre sur réaction et conflit d&#8217;intérêts Agilité ScrumMaster A.O.C Getting Real : les conseils de 37Signals Le coin de la technique GlassFish v3 Prelude, Sun fait le Buzz Restlet 1.1.0: Plus de souplesse et une implémentation [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l’actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia/#SundlaisseraitSwingEntresurrac">Sun délaisserait Swing ? Entre <em>sur réaction</em> et conflit d&#8217;intérêts</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia/#ScrumMasterAOC">ScrumMaster A.O.C</a></li><li><a
href="http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia/#GettingReallesconseilsdeSignal">Getting Real : les conseils de 37Signals</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia/#GlassFishvPreludeSunfaitleBuzz">GlassFish v3 Prelude, Sun fait le Buzz</a></li><li><a
href="http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia/#RestletPlusdesouplesseetuneimp">Restlet 1.1.0: Plus de souplesse et une implémentation de JAX-RS 1.0:</a></li><li><a
href="http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia/#modclusterJBossfaitcavalierseu">mod_cluster : JBoss fait cavalier seul pour l&#8217;après mod_jk</a></li><li><a
href="http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia/#JSRWebBeansdisponibleenPublicR">JSR-299 : Web Beans disponible en <em>Public Review Draft</em></a></li></ul><p><strong>Evènements de notre communauté en France et à l&#8217;étranger</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia/#JourneGlassFishetJavaParischez">Journée &laquo;&nbsp;GlassFish et Java&nbsp;&raquo; à Paris chez Sun</a></li></ul><h3><a
name="ActualitditeursSSII"></a>Actualité éditeurs / SSII</h3><h4><a
name="SundlaisseraitSwingEntresurrac"></a>Sun délaisserait Swing ? Entre <em>sur réaction</em> et conflit d&#8217;intérêts</h4><p>Il a suffit que Sun annonce son désengagement temporaire de <a
href="http://swinglabs.org/" title="SwingLabs" >SwingLabs</a> pour que la blogosphère s&#8217;enflamme et prédise la fin de Swing <em>(<a
href="http://forums.java.net/jive/thread.jspa?messageID=315074&#038;tstart=0#315074" title="ici" >ici</a>, <a
href="http://glaforge.free.fr/weblog/?itemid=258" title="là" >là</a>, ou encore <a
href="http://weblogs.java.net/blog/kirillcool/archive/2008/11/sun_setting_dow.html" title="là" >là</a> )</em>.</p><p>Swing Labs est l&#8217;incubateur des nouveaux composants et des nouvelles fonctionnalités de Swing <em>(cf. <a
href="http://swinglabs.org/docs/presentations/2008/JavaOne/J1-Swinglabs.pdf" title="SwingLabs - Status Update @ Java One 2008" >SwingLabs &#8211; Status Update @ Java One 2008</a> par Richard Bair, SwingLabs Project Lead, Sun Microsystems)</em>. Les développements y sont réalisés en open source <em>(GNU LGPL)</em> avec un copyright &laquo;&nbsp;Sun Microsystems, Inc&nbsp;&raquo;. On retrouve ici la stratégie fréquente de Sun d&#8217;un mode Open Source à gouvernance exclusive avec Copyright Sun qui permet un <a
href="http://en.wikipedia.org/wiki/Dual-licensing" title="dual licensing" >dual licensing</a>. Grâce à son copyright, Sun est libre de proposer le code sous un autre contrat de licence. La contre partie de ce copyright Sun Microsystems est que les contributions extérieures à Sun sont peu probables ; peu de développeurs et d&#8217;entreprise sont prêts à céder leur copyright à un a acteur commercial (1).</p><p>Le désengagement de Sun peut s&#8217;expliquer par l&#8217;énergie que la société place actuellement dans le lancement de son produit <a
href="http://www.sun.com/software/javafx/" title="Java FX" >Java FX</a> qui doit occuper ses développeurs d&#8217;interface graphique les plus talentueux. Si l&#8217;on ajoute que Sun restructure en ce moment ses équipes pour des raisons financières, cela laisse peut de monde pour s&#8217;occuper des nouveaux composants de Swing <em>(JavaFX et Swing partagent le même socle mais ont des composants de haut niveau différents)</em>.</p><p>Quel impact aura ce désengagement sur les évolutions de Swing ? On peut voir ici un conflit d&#8217;intérêts entre l&#8217;éditeur Sun Microsystem qui lance un produit stratégique et la responsabilité du fondateur du langage Java qui a pris la gouvernance exclusive sur un chantier d&#8217;évolution du langage.</p><p>Alors, Java FX a tué Swing ? On peut en douter ; Swing a toujours été important pour Sun <em>(Netbeans, Matisse, etc)</em> et Java FX enrichiera probablement plus Swing qu&#8217;il ne lui nuira. En revanche, l&#8217;agenda commercial de Sun et le lancement de Java FX risquent de retarder temporairement les évolutions de Swing.</p><p><em>(1) On notera que certains projets open source prennent eux aussi le copyright du code (les développeurs se dépossèdent de leur travail) et que cela ne freine pas les contributions. Par exemple, la Fondation Apache utilise l&#8217;<a
href="http://www.apache.org/licenses/LICENSE-2.0.html" title="Apache Software License" >Apache Software License</a> (ASL) et est propriétaire du copyright (&laquo;&nbsp;Licensed to the Apache Software Foundation (ASF)&#8230;&nbsp;&raquo;) ; la Fondation peut à tout moment exposer le code sous un nouveau contrat de licence, ce fut notamment le cas lors du passage de l&#8217;ASL version 1 à la version 2. Spring Framework a une approche différente puisque ce projet utilise lui aussi l&#8217;<a
href="http://www.apache.org/licenses/LICENSE-2.0.html" title="Apache Software License " >Apache Software License </a> mais a laissé le copyright aux auteurs (&laquo;&nbsp;Copyright 2002-2005 the original author or authors&nbsp;&raquo;).</em></p><h3><a
name="Agilit"></a>Agilité</h3><h4><a
name="ScrumMasterAOC"></a>ScrumMaster A.O.C</h4><p>À partir de janvier 2009, il vous faudra passer <a
href="http://www.infoq.com/news/2008/11/scrum-certification-test" title="un test" >un test</a> en plus du <a
href="http://www.scrumalliance.org/training/" title="CSM" >CSM</a> pour pouvoir être certifié ScrumMaster, comme l&#8217;annonce <a
href="http://danube.com/blog/michaeljames/the_scrummaster_certification_test" title="Michael James" >Michael James</a>. Il s&#8217;agira d&#8217;un questionnaire à choix multiple, actuellement en bêta-test au <a
href="http://jeffsutherland.com/scrum/2008/10/scrum-gathering-stokholm-pretty-good.html" title="Scrum Gathering Stockholm" >Scrum Gathering Stockholm</a>.<br
/> En effet jusqu&#8217;à maintenant il suffisait d&#8217;assister à un CSM pour être certifié ScrumMaster. N&#8217;importe qui, même sans aucune connaissance sur Scrum, pouvait assister à la formation et devenir ainsi &laquo;&nbsp;ScrumMaster&nbsp;&raquo;. Le terme &laquo;&nbsp;certification&nbsp;&raquo; était donc <a
href="http://www.aubryconseil.com/dotclear/index.php/2007/02/26/181-la-certification-scrummaster-c-est-pipeau" title="trompeur" >trompeur</a>. Ce manque de garantie était d&#8217;ailleurs largement <a
href="http://www.infoq.com/news/2007/03/Scrum-CSM-debate" title="critiqué" >critiqué</a> par la communauté agile.<br
/> Tom Mellor rappelle qu&#8217;à l&#8217;origine Ken Schwaber a créé le CSM en pied-de-nez au <a
href="http://fr.wikipedia.org/wiki/PMI" title="PMI" >PMI</a>. L&#8217;objectif du CSM n&#8217;est pas de découvrir le rôle de ScrumMaster mais de comprendre et maîtriser les concepts de Scrum.</p><h4><a
name="GettingReallesconseilsdeSignal"></a>Getting Real : les conseils de 37Signals</h4><p>Kris Jordan avait recueilli les <a
href="http://www.krisjordan.com/2008/09/17/jason-fried-10-things-weve-learned-at-37signals/" title="leçons qu'ils ont apprises chez 37Signals" >leçons qu&#8217;ils ont apprises chez 37Signals</a> lors de la conférence donnée par Jason Fried pendant la <a
href="http://en.oreilly.com/webexny2008/" title="Web 2.0 Expo" >Web 2.0 Expo</a>.<br
/> David Larlet <a
href="http://www.biologeek.com/conferences,life-hacks,traduction/37signals-ce-quils-ont-appris/" title="a traduit" >a traduit</a> ce recueil qui synthétise les idées du célèbre manifeste <a
href="https://gettingreal.37signals.com/" title="Getting Real" >Getting Real</a> de <a
href="https://www.37signals.com/" title="37Signals" >37Signals</a>. L&#8217;occasion de revoir les points importants :</p><ul><li><strong>Volatilité</strong> : les décisions sont limitées dans le temps, les plannings aussi. Les projections long terme ne servent à rien, les choses changent.</li><li><strong>Restez concentrés</strong> : concentrez-vous sur l&#8217;essentiel, le réel, ce qui est simple et qui ne change pas. Évitez les interruptions qui nuisent à la productivité.</li><li><strong>Travailler moins pour produire plus</strong> : ignorez ce qui n&#8217;est pas important, vous pourrez travailler moins pour aboutir à un produit plus simple mais d&#8217;aussi bonne qualité.</li></ul><h3><a
name="Lecoindelatechnique"></a>Le coin de la technique</h3><h4><a
name="GlassFishvPreludeSunfaitleBuzz"></a>GlassFish v3 Prelude, Sun fait le Buzz</h4><p>Difficile de passer à côté de cette actualité cette semaine : la sortie de <a
href="http://www.sun.com/software/products/glassfishv3_prelude/index.xml" title="GlassFish V3 Prelude" >GlassFish V3 Prelude</a>. Une <a
href="http://blogs.sun.com/theaquarium/entry/glassfish_v3_prelude_launching_today" title="pluie de billets" >pluie de billets</a> sur les blogs de Sun a accompagné la sortie de cette version &#8216;démo&#8217; de son futur nouveau serveur d&#8217;applications dont la sortie est prévue pour 2009. Notez tout de même que cette version est supportée par Sun et est prête pour tourner en production, veillez donc à ne pas le comparer à une version bêta.</p><p>Le kernel de FlassFish v3 Prelude repose sur une architecture modulaire. Pas de surprise à ce niveau, Sun reste dans la lignée de <a
href="http://blog.xebia.fr/2008/04/21/revue-de-presse-xebia-53/#JavaModuleSystemJSRvsOSGILarco" title="ses previews" >ses previews</a>, GlassFish repose sur <a
href="http://felix.apache.org" title="Apache Felix" >Apache Felix</a>, l&#8217;implémentation Apache du runtime <a
href="http://www.osgi.org/Specifications/HomePage" title="OSGi R4" >OSGi R4</a>. La liaison entre cette technologie et le centre de mises à jour inclus, vous permettra d&#8217;activer, supprimer simplement les différentes technologies proposées : Servlet 3.0, JRuby, Groovy, Grails, &#8230; Et c&#8217;est la que repose toute l&#8217;utilité d&#8217;un tel kernel, vous ne chargez que ce qui vous intéresse et optimisez du même coup les temps de démarrage et consommation mémoire.</p><p>Offrant également un avant-goût de JEE 6 (dont la sortie est prévue pour début 2009), cette version de GlassFish vous permettra de tester certaines fonctionnalités de la future version de Java Enterprise, dont :</p><ul><li>JAX-RS 1.0, vous permettant le développement de services REST, les <a
href="http://blog.xebia.fr/2008/09/29/revue-de-presse-xebia-76/#LesspcificationsRESTseterminen" title="spécifications sont stables" >spécifications sont stables</a></li><li>EJB 3.1 Lite, se voulant résoudre les dernières <a
href="http://blog.xebia.fr/2008/10/06/revue-de-presse-xebia-77/#EJBsedvoile" title="lourdeurs" >lourdeurs</a> des EJB, GlassFish en sera la <a
href="http://blog.xebia.fr/2008/09/22/revue-de-presse-xebia-75/#JavaEEetsesRI" title="reference implementation" >reference implementation</a></li><li>JSF 2.0, dont les spécifications ne sont pas encore terminées</li></ul><p>Sun a fait en sorte que toutes les conditions soient réunies pour que le buzz prenne autour de cette sortie (sortie prématurée, technologies affriandantes&#8230;). Force est de constater que l&#8217;objectif est rempli ! GlassFish v2 était déjà considéré comme le nouveau chouchou des développeurs, cette nouvelle version séduira elle en plus les exploitants ? Le futur nous le dira.</p><p>Comme l&#8217;indique, le créateur de Java et employé à Sun, James Gosling dans <a
href="http://blogs.sun.com/jag/entry/we_ve_been_cranking" title="We've been cranking!" >We&#8217;ve been cranking!</a>, en complément de la sortie de Glassfish, Sun a mis à jour différents types de logiciels : son framework avec JDK6u10, son IDE avec Netbeans 6.5RC, sa base de données avec MySQL 5.1, son système d&#8217;exploitation avec OpenSolaris 2008.11.</p><h4><a
name="RestletPlusdesouplesseetuneimp"></a>Restlet 1.1.0: Plus de souplesse et une implémentation de JAX-RS 1.0:</h4><p>Restlet est un framework Java qui permet de développer des applications REST-ful. La version 1.1.0 est sortie fin octobre 2008. Le blog de <a
href="http://www.noelios.com/" title="Noelios Technologies" >Noelios Technologies</a> (la société qui dirige les développements sur Restlet) nous parle des différentes améliorations :</p><ul><li>Un support du protocole HTTP plus large.</li><li>Une implémentation de la <a
href="http://jcp.org/en/jsr/detail?id=311" title="JSR 311" >JSR 311</a> sur JAX-RS 1.0 la plus complète du moment.</li><li>Une intégration étendue et facilitée avec les technologies en vogue (Spring 2.5, JAXB 2.1, etc.)</li><li>Un portage de l&#8217;API côté client Restlet vers GWT 1.5 permettant d&#8217;appeler des applications REST-ful directement depuis le navigateur WEB. Ce fût d&#8217;ailleurs le sujet de la deuxième partie du <a
href="http://www.touilleur-express.fr/2008/11/05/soiree-gwt-et-restlet-au-paris-jug/" title="Paris JUG du mardi 4 novembre" >Paris JUG du mardi 4 novembre</a> présenté par Jérôme Louvel.</li><li>&#8230; et beaucoup d&#8217;autres disponibles sur <a
href="http://blog.noelios.com/2008/10/28/restlet-110-released/" title="le billet" >le billet</a> posté sur le blog de Noelios.</li></ul><p>Jérôme Louvel est le responsable principal du développement de Restlet. Il a été interviewé par <a
href="http://www.infoq.com/news/2008/11/restlet_1_1" title="InfoQ" >InfoQ</a> à propos de cette nouvelle version.<br
/> Trois questions ont été posées sur les points suivants :</p><ul><li>L&#8217;implémentation de la JSR 311 dans Restlet<br
/> <u>Réponse</u> : La plus complète, et l&#8217;objectif est d&#8217;obtenir le kit de compatibilité (TCK) nécessaire pour être certifié.</li><li>Les conditions d&#8217;utilisation de JAX-RS : seul ou avec l&#8217;API Restlet<br
/> <u>Réponse</u> : Après avoir distingué les différentes approches de JAX-RS et de Restlet API, annotations sur un POJO pour le premier, héritage des classes de base pour le second, Jérôme pense que s&#8217;il n&#8217;y a pas nécessité d&#8217;être conforme avec les standards de JEE, il est plus simple et puissant d&#8217;utiliser Restlet.</li><li>L&#8217;importance de la communauté Restlet<br
/> <u>Réponse</u> : 8 valideurs sur le core, 6 sur les extensions et 160 contributeurs soutenus par une communauté solidaire.</li></ul><p>Restlet 1.1.0 offre une implémentation très complète de JAX-RS 1.0 et s&#8217;intègre à plusieurs frameworks importants du marché.</p><h4><a
name="modclusterJBossfaitcavalierseu"></a>mod_cluster : JBoss fait cavalier seul pour l&#8217;après mod_jk</h4><p>Alors que la Fondation Apache propose depuis Httpd 2.2 le <a
href="http://blog.xebia.fr/2008/08/25/revue-de-presse-xebia-71/#TuningetoptimisationdeTomcatmo" title="duo mod_proxy_balancer / mod_proxy_http comme successeur de mod_jk pour se connecter à Tomcat" >duo mod_proxy_balancer / mod_proxy_http comme successeur de mod_jk pour se connecter à Tomcat</a>, JBoss se lance dans le développement de son propre module Httpd, <a
href="http://www.jboss.org/mod_cluster/" title="mod_cluster" >mod_cluster</a>, pour connecter le moteur Tomcat embarqué dans JBoss AS au serveur. mod_cluster met en avant les fonctionnalités suivantes :</p><ul><li><strong>Configuration dynamique des <em>workers http</em></strong> : alors que mod_proxy_balancer se limite pour le moment à l&#8217;interface web (/<a
href="http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html#enable" title="balancer-manager" >balancer-manager</a>) destinée aux humains, mod_cluster expose un <a
href="http://www.jboss.org/community/docs/DOC-11425" title="Cluster Management Protocol" >Cluster Management Protocol</a> qui permettra à des outils de déploiement de centraliser les opérations sur le serveur moteur de servlet et sur le serveur web (installation, mise à jour, désinstallation). Nous noterons au passage qu&#8217;une application Tomcat arrêtée renvoi des erreurs 404 qu&#8217;un load balancer ne sait pas interpréter pour marquer comme indisponible le servant alors qu&#8217;une erreur <a
href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.4" title="503 Service Unavailable" >503 Service Unavailable</a> ferait l&#8217;affaire. Ces fonctionnalités d&#8217;administration sont déjà disponibles dans des serveurs Java EE tels que Websphere (c.f. <a
href="http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.ibm.iea.was_v6/was/6.1/InstallationAndMigration/WASv61_CreateLocalWebServerDefinition/WASv61_CreateLocalWebServerDefinition_viewlet_swf.html" title="Websphere Education Center : eate a remote Web server definition" >Websphere Education Center : eate a remote Web server definition</a>).</li><li><strong>Gestion du cycle de vie des applications</strong> : mod_cluster apporte le très important concept de désactivation d&#8217;un servant (<a
href="http://www.jboss.org/community/docs/DOC-11425" title="DISABLE-APP:" >DISABLE-APP:</a>) qui fait hélas défaut à l&#8217;actuel mod_proxy_balancer. On pourra éteindre en douceur un noeud en reportant la charge vers les autres servants sans pour autant perdre les sessions en cours (dans le cas ou l&#8217;on n&#8217;a pas de réplication de sessions).</li><li><strong>Algorithme de load balancing basé sur la charge des serveurs</strong> : les load balancers déduisent le plus souvent la charge des servants à partir du nombre de requêtes ou du nombre de requêtes en cours d&#8217;exécution. mod_cluster expose une API pour que chaque servant puisse communiquer des informations plus fines (charge CPU de la machine, etc). Ce mécanisme sophistiqué concernera les besoins avancés alors que la plupart des installations peuvent se contenter d&#8217;un simple algorithme round robin</li><li><strong>Mise en avant du protocole HTTP en substitution à AJP</strong> : JBoss continuait à mettre en avant mod_jk et le protocole AJP (cf <a
href="http://www.jboss.org/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/beta500/html/ch18s01.html" title="JBoss AS Guide - 18.1. Configuring load balancing using Apache and mod_jk" >JBoss AS Guide &#8211; 18.1. Configuring load balancing using Apache and mod_jk</a>). La page semble aujourd&#8217;hui se tourner au profit du connecteur HTTP sur lequel portent les efforts du projet Tomcat.</li></ul><p>Espérons que ces travaux bénéficieront un jour au module mod_proxy_balancer intégré à Apache Httpd.</p><h4><a
name="JSRWebBeansdisponibleenPublicR"></a>JSR-299 : Web Beans disponible en <em>Public Review Draft</em></h4><p>Gavin King, le créateur d&#8217;Hibernate et le <em>Spec Lead</em> sur Web Beans, a annoncé sur le blog <a
href="http://in.relation.to/" title="InRelationTo" >InRelationTo</a> la sortie de la spécification Web Beans en <em>Public Review Draft</em> : <a
href="http://in.relation.to/Bloggers/WebBeansPublicReviewDraftReleased" title="Web Beans Public Review Draft released" >Web Beans Public Review Draft released</a>.</p><p>Cette spécification est issue des travaux ménés sur le framework <a
href="http://www.seamframework.org/" title="Seam" >Seam</a>. De plus, elle s&#8217;inspire des moteurs d&#8217;injection <a
href="http://code.google.com/p/google-guice/" title="Guice (Google)" >Guice (Google)</a> et <a
href="http://www.springframework.org/" title="Spring" >Spring</a>. Cependant Web Beans (et Seam) se démarque de Spring dans une approche orientée annotation plutôt que XML pour la configuration.</p><p>Web Beans a pour objectif de fournir un ensemble de services pour les composants JEE. La spécification définit :</p><ul><li>Le cycle de vie et les interactions de composants à état <em>(stateful)</em> dans des contextes définis et extensibles.</li><li>Un mécanisme d&#8217;injection de dépendance permettant de choisir les dépendances d&#8217;un composant au déploiement.</li><li>La possibilité d&#8217;utiliser un langage EL <em>(Expression Language)</em> étendu dans les pages JSP et JSP.</li><li>Un paradigme d&#8217;intercepteur dont un nouveau type d&#8217;intercepteur baptisé <em>Decorator</em>.</li><li>Un modèle de notification par événement.</li><li>Un contexte d&#8217;exécution Web.</li><li>Un SPI <em>(Service Provider Interface)</em> permettant l&#8217;intégration de framework tier dans Web Beans.</li></ul><p>Cette spécification a pour vocation d&#8217;uniformiser de manière globale le développement d&#8217;applications de gestion en se reposant sur d&#8217;autres spécifications : EJB, JSF, Java Servlets, Common Annotation.</p><p>C&#8217;est une spécification assez velue, car elle introduit beaucoup de nouveaux concepts largement expérimentés dans Seam :</p><ul><li>Scope,</li><li>Conversation,</li><li>Composant à état,</li><li>Intégration des standards ensemble EJB/JSF,</li><li>Modèle d&#8217;annotations, d&#8217;intercepteurs, &#8230;</li></ul><p>Cette spécification est indispensable dans le cas où vous voulez essentiellement développer avec des standards, mais elle peut être aussi, bien utile dans d&#8217;autres cas. Elle vous permettra de développer avec les standards comme JSF et EJB en utilisant leurs pleines puissances et en ayant à développer très peu de code pour intégrer les 2 technologies (pas de DTO <strike> <em>Data Transfer Object</em> </strike>, utilisation de <em>Binding</em> par annotation et EL).</p><h3><a
name="EvnementsdenotrecommunautenFra"></a>Evènements de notre communauté en France et à l&#8217;étranger</h3><h4><a
name="JourneGlassFishetJavaParischez"></a>Journée &laquo;&nbsp;GlassFish et Java&nbsp;&raquo; à Paris chez Sun</h4><p><a
href="http://blogs.sun.com/alexismp/entry/bloquez_la_date_12_decembre" title="Sun organise le vendredi 12 décembre une journée gratuite "GlassFish et Java"" >Sun organise le vendredi 12 décembre une journée gratuite &laquo;&nbsp;GlassFish et Java&nbsp;&raquo;</a> dans ses locaux au 42, avenue d&#8217;Iéna à Paris.<br
/> Cette journée sera l&#8217;occasion de couvrir un large spectre de la gamme Sun :</p><ul><li><a
href="https://glassfish.dev.java.net/" title="GlassFish" >GlassFish</a>,</li><li>Java EE 6,</li><li><a
href="https://grizzly.dev.java.net/" title="Grizzly Comet" >Grizzly Comet</a>,</li><li><a
href="https://jersey.dev.java.net/" title="Jersey" >Jersey</a>,</li><li><a
href="https://mq.dev.java.net/" title="OpenMQ" >OpenMQ</a>,</li><li><a
href="http://javafx.com/" title="JavaFX" >JavaFX</a>,</li><li><a
href="http://www.mysql.fr/" title="MySQL" >MySQL</a>,</li><li><a
href="https://opensso.dev.java.net/" title="OpenSSO" >OpenSSO</a>,</li><li><a
href="https://open-esb.dev.java.net/" title="OpenESB" >OpenESB</a>.</li></ul><p>Parmi les intervenants: Roberto Chinnici (spec lead), Richard Bair (tech lead), Paul Sandoz (spec lead), Linda Schneider (tech lead), Jean-François Arcand (tech lead), etc&#8230;</p><p>L&#8217;ouverture des inscriptions ne devrait pas tarder : A suivre sur <a
href="http://blogs.sun.com/alexismp/" title="le blog d'Alexis Moussine-Pouchkine" >le blog d&#8217;Alexis Moussine-Pouchkine</a> &#8230;</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/11/10/revue-de-presse-xebia-82/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Revue de Presse Xebia</title><link>http://blog.xebia.fr/2008/03/31/revue-de-presse-xebia-50/</link> <comments>http://blog.xebia.fr/2008/03/31/revue-de-presse-xebia-50/#comments</comments> <pubDate>Mon, 31 Mar 2008 16:17:34 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Revue de presse]]></category> <category><![CDATA[BEA]]></category> <category><![CDATA[GlassFish]]></category> <category><![CDATA[IBM]]></category> <category><![CDATA[J2EE]]></category> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Méthodes agiles]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[SCRUM]]></category> <category><![CDATA[Spring]]></category> <category><![CDATA[Weblogic]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/2008/03/31/revue-de-presse-xebia-50/</guid> <description><![CDATA[La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia. Actualité éditeurs / SSII GlassFish et MySQL, premiers signes d&#8217;intégration IBM investit dans EnterpriseDB DomainHealth : Un outil de monitoring pour les serveurs Weblogic (9 &#38; 10) Agilité Certification ScrumMaster, on en parle Le coin de la technique Spring WS 1.5 : un fort [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://blog.xebia.fr/wp-content/uploads/2007/06/revuedepresse.png" alt="Revue de Presse Xebia" style="margin: 1em 1em 1em 1em; float: right;" /><br
/> <em>La revue de presse de l&#8217;actualité Java/J2EE hebdomadaire proposée par Xebia.</em></p><p><strong>Actualité éditeurs / SSII</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/03/31/revue-de-presse-xebia-50/#GlassFishMySQL">GlassFish et MySQL, premiers signes d&#8217;intégration</a></li><li><a
href="http://blog.xebia.fr/2008/03/31/revue-de-presse-xebia-50/#IBM">IBM investit dans EnterpriseDB</a></li><li><a
href="http://blog.xebia.fr/2008/03/31/revue-de-presse-xebia-50/#DomainHealth">DomainHealth : Un outil de monitoring pour les serveurs Weblogic (9 &amp; 10)</a></li></ul><p><strong>Agilité</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/03/31/revue-de-presse-xebia-50/#CertificationScrumMaster">Certification ScrumMaster, on en parle</a></li></ul><p><strong>Le coin de la technique</strong></p><ul><li><a
href="http://blog.xebia.fr/2008/03/31/revue-de-presse-xebia-50/#SpringWS">Spring WS 1.5 : un fort potentiel à concrétiser</a></li><li><a
href="http://blog.xebia.fr/2008/03/31/revue-de-presse-xebia-50/#SpringJavaConfiguration">Milestone 3 pour Spring Java Configuration</a></li></ul><hr/><h3>Actualité éditeurs / SSII</h3><h4><a
name="GlassFishMySQL"></a>GlassFish et MySQL, premiers signes d&#8217;intégration</h4><p>L&#8217;intégration de MySQL au groupe Sun Microsystem n&#8217;a pas tardé. Alexis Moussine-Pouchkine nous présente dans <a
href="http://blogs.sun.com/alexismp/entry/mysql_et_glassfish_dans_un">MySQL et GlassFish dans un bateau</a> l&#8217;intégration du serveur Open Source Glassfish à la célèbre base de données. On y découvre notamment les tarifs des contrats de support et de maintenance, des éléments décisifs pour les équipes d&#8217;exploitation.</p><h4><a
name="IBM"></a>IBM investit dans EnterpriseDB</h4><p><a
href="http://www.enterprisedb.com/">EnterpriseDB</a> vient d&#8217;<a
href="http://www.enterprisedb.com/about/news_events/press_releases/03_25_08a.do">annoncer</a> une levée de fonds de 10 millions de dollars, dont l&#8217;un des principaux investisseurs n&#8217;est autre que IBM. L&#8217;éditeur de DB2 justifie ce choix en rappellant ses investissements dans le monde open source sur des projets tels que Linux, Eclipse et Apache.</p><p>Ce choix peut peut-être aussi s&#8217;expliquer par le fait qu&#8217;EnterpriseDB édite <a
href="http://www.enterprisedb.com/products/postgres_plus_as.do">Postgres Plus Advanced Server</a>, qui se veut être un concurrent direct des bases de données Oracle. Produit commercial s&#8217;appuyant sur la base de données open source <a
href="http://www.postgresql.org/">Postgresql</a> (sous license BSD), Postgres Plus Advanced Server fournit entre autres des outils de migration pour Oracle.</p><p>Quelques liens :</p><ul><li><a
href="http://ostatic.com/158698-blog/enterprisedb-a-new-stake-from-ibm-and-its-novel-approach">http://ostatic.com/158698-blog/enterprisedb-a-new-stake-from-ibm-and-its-novel-approach</a></li><li><a
href="http://news.dzone.com/news/ibm-buys-enterprisedb">http://news.dzone.com/news/ibm-buys-enterprisedb</a></li><li><a
href="http://developers.slashdot.org/article.pl?sid=08/03/25/207211&amp;from=rss">http://developers.slashdot.org/article.pl?sid=08/03/25/207211&amp;from=rss</a></li><li><a
href="http://www.lemondeinformatique.fr/actualites/lire-ibm-injecte-de-l-argent-dans-enterprisedb-25697.html">http://www.lemondeinformatique.fr/actualites/lire-ibm-injecte-de-l-argent-dans-enterprisedb-25697.html</a></li><li><a
href="http://www.01net.com/editorial/375401/ibm-investit-dans-les-bases-de-donnees-open-source-d-enterprisedb/?rss">http://www.01net.com/editorial/375401/ibm-investit-dans-les-bases-de-donnees-open-source-d-enterprisedb/?rss</a></li></ul><h4><a
name="DomainHealth"></a>DomainHealth : Un outil de monitoring pour les serveurs Weblogic (9 &amp; 10)</h4><p>Dans cet <a
href="http://dev2dev.bea.com/blog/pdone/archive/2008/03/new_open_source.html">article</a> disponible sur le blog dev2dev de BEa, j&#8217;apprend l&#8217;existence d&#8217;un produit Open Source permettant de surveiller la bonne santé des serveurs Weblogic. Il permet entre autres de consulter la taille et l&#8217;utilisation de la Heap de la JVM, l&#8217;utilisation des pool de threads d&#8217;exécution, les datasources, les destinations JMS, les WorkManagers et beaucoup autres choses. Bea fournit déjà un outil similaire, une extension de la console d&#8217;administration qui permet d&#8217;obtenir ce type d&#8217;information basé sur le framework de diagnostiques de Weblogic (WLDF). Cependant, cette extension a quelques défaut que comble &#8216;DomainHealtn&#8217;:</p><ul><li>elle n&#8217;est pas activée par défaut, il faut ajouter un jar complémentaire dans un répertoire et redémmarer le serveur (DomainHealth se compose d&#8217;un simple war à déployer)</li><li>elle ne propose pas de vue d&#8217;ensemble sur une page.</li></ul><p>DomainHealth offre de parcourir les données collectées pendant toute la vie du domaine, quid de la consommation mémoire sur un domaine qui ne redémarre jamais ou très rarement ?</p><p>Bref un outil à tester et à surveiller <a
href="http://sourceforge.net/projects/domainhealth">ici</a> !</p><h3>Agilité</h3><h4><a
name="CertificationScrumMaster"></a>Certification ScrumMaster, on en parle</h4><p>Xebia a organisé les 25 et 26 Mars 2008 une formation ScrumMaster certifiante, dispensée par <a
href="http://jeffsutherland.com/">Jeff Sutherland</a>.<br
/> Premiers retours:</p><ul><li><a
href="http://www.touilleur-express.fr/2008/03/26/im-now-a-scrum-master/">http://www.touilleur-express.fr/2008/03/26/im-now-a-scrum-master/</a></li><li><a
href="http://jefute.blogspot.com/2008/03/formation-scrum-master-la-dfense.html">http://jefute.blogspot.com/2008/03/formation-scrum-master-la-dfense.html</a></li></ul><h3>Le coin de la technique</h3><h4><a
name="SpringWS"></a>Spring WS 1.5 : un fort potentiel à concrétiser</h4><p>Spring WS, arrivé bien après les leaders <a
href="http://incubator.apache.org/cxf/">CXF</a> (ex XFire), <a
href="http://ws.apache.org/axis2/">Axis2</a> et <a
href="https://jax-ws.dev.java.net/">Metro</a> (JAXWS-RI par Sun), se démarque par une approche originale qui préfère le <a
href="http://en.wikipedia.org/wiki/Plain_Old_XML">Plain Old Xml</a> à <a
href="http://en.wikipedia.org/wiki/SOAP">SOAP</a> et cherche à s&#8217;affranchir des <a
href="http://en.wikipedia.org/wiki/Web_Services_Description_Language">WSDL</a>. Cette démarche en fait un bon candidat pour traiter les communications non-soap encore très nombreuses dans nos applications.<br
/> Arjen Poutsma nous présente dans <a
href="http://blog.springsource.com/main/2008/03/28/whats-new-in-spring-web-services-15/">What&#8217;s New in Spring Web Services 1.5?</a> les nouvelles fonctionnalités du framework. On notera en particulier le support de JMS, de <a
href="http://www.ibm.com/developerworks/library/specification/ws-secure/">WS-Security</a> et <a
href="http://en.wikipedia.org/wiki/WS-Addressing">WS-Adressing</a>.<br
/> Les points que nous avons aimé dans Spring-WS :</p><ul><li>L&#8217;ouverture aux communications non-SOAP (situation particulièrement fréquente pour les communications sur JMS)</li><li>L&#8217;intégration à la stack Spring plus poussée que celle de CXF ou d&#8217;Axis2.</li><li>La qualité de l&#8217;intégration à JAXB 2 avec le <a
href="http://static.springframework.org/spring-ws/site/apidocs/index.html?org/springframework/oxm/jaxb/Jaxb2Marshaller.html">Jaxb2Marshaller</a> qui est un modèle d&#8217;utilisation de cette API.</li></ul><p>Les points que nous espérons pour les prochaines versions de Spring-WS :</p><ul><li>Un support naturel et documenté de l&#8217;approche wsdl2java avec un plugin maven similaire au <a
href="http://cwiki.apache.org/CXF20DOC/maven-integration-and-plugin.html">cxf-codegen-plugin</a>.</li><li>Des points d&#8217;extension dans l&#8217;API pour enrichir les messages échangés (ajout du header <tt>JMS_IBM_Character_Set</tt> avec Websphere MQ, appel à <tt>Tibjms.setEncoding(Message, String)</tt> pout Tibco EMS, etc).</li><li>Une documentation plus étoffée.</li></ul><h4><a
name="SpringJavaConfiguration"></a>Milestone 3 pour Spring Java Configuration</h4><p>Google avait défrayé la chronique en révélant <a
href="http://code.google.com/p/google-guice/">Google Guice</a>, le framework d&#8217;injection de dépendances d&#8217;<a
href="http://adwords.google.com/">Adwords</a> dont la configuration est gérée avec du code Java plutôt qu&#8217;avec des fichiers XML.<br
/> SpringSource a répondu avec <a
href="http://blog.springsource.com/main/2008/01/28/spring-25s-comprehensive-annotation-support/">l&#8217;utilisation élargie des annotations dans Spring 2.5</a> (<tt>@Autowired</tt>, etc) et le lancement de <a
href="http://springframework.org/javaconfig">Spring Java Configuration Project</a>. Ce deuxième chantier avance plus lentement, probablement parce que le concurrent Google Guice reste peu utilisé et parce que la tâche s&#8217;avère très délicate.<br
/> Chris Beams nous présente les dernières évolutions dans <a
href="http://blog.springsource.com/main/2008/03/26/spring-java-configuration-whats-new-in-m3/">Spring Java Configuration &#8211; What&#8217;s New in M3</a>.<br
/> Nous avons été sensibles à :</p><ul><li>L&#8217;externalisation des variables (<tt>@ExternalValue</tt>) équivalent au <tt>PropertyPlaceholderConfigurer</tt> des configurations XML. Ce mécanisme, incomplet dans Google guice, est particulièrement important pour gérer les paramètres de configuration dont la valeur change suivant les environnements (développement, intégration, production, etc).</li><li>L&#8217;étoffement de la documentation qui accorde notamment une place à l&#8217;intégration à Maven2.</li></ul><p>Si l&#8217;utilisation de Spring JavaConfig n&#8217;est pas encore d&#8217;actualité, voici une bonne occasion de se pencher sur le <a
href="http://static.springframework.org/spring/docs/2.5.x/reference/xsd-config.html">XML Schema-based configuration</a> introduite en version 2.5 qui allège avantageusement la gestion des configurations XML.</p><p>Ressource complémentaire : <a
href="http://blog.springsource.com/main/2008/03/18/spring-dependency-injection-java-5-including-slides-and-code/">Spring Dependency Injection &amp; Java 5</a> par Alef Arendsen ( <a
href="http://blog.springsource.com/main/wp-content/uploads/2008/03/di_with_spring.pdf">slides</a>, <a
href="http://blog.springsource.com/main/wp-content/uploads/2008/03/carplant.zip">exemple source</a>).</p> ]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2008/03/31/revue-de-presse-xebia-50/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
