<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.netapsys.fr/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Netapsys Blog - java</title>
  <link>http://blog.netapsys.fr/index.php/</link>
  <description></description>
  <language>fr</language>
  <pubDate>Tue, 06 Jan 2009 10:51:28 +0100</pubDate>
  <copyright>Netapsys 2008</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Groovy : retour sur la présentation du Paris JUG</title>
    <link>http://blog.netapsys.fr/index.php/post/2008/09/10/Groovy-%3A-retour-sur-la-presentation-du-Paris-JUG</link>
    <guid isPermaLink="false">urn:md5:98c0b313db0f93c733d4fa2f558f985b</guid>
    <pubDate>Wed, 10 Sep 2008 08:17:00 +0200</pubDate>
    <dc:creator>Can Atac</dc:creator>
        <category>Groovy / Grails</category>
        <category>grails</category><category>groovy</category><category>java</category><category>parisJUG</category>    
    <description>&lt;p&gt;Le JUG de Paris présentait le 9 septembre le langage Groovy et le framework associé Grails. Près de 200 personnes y assistaient dont, au moins, trois représentantes de la gente féminine&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Piètre programmeur java et amoureux de musique 'soul', je dois avouer que ma curiosité a d'abord porté sur le caractère &quot;funky groove&quot; du nom du langage et de son logo.
&lt;img src=&quot;http://media.xircles.codehaus.org/_projects/groovy/_logos/medium.png&quot; alt=&quot;&quot; /&gt;
&lt;br /&gt;
Cela dit, quand un vieux bonhomme de 37 balais comme moi discute de Groovy avec une jeune recrue  et sort&amp;nbsp;: &lt;br /&gt;
&quot;Oh là là, encore un nouveau langage à apprendre&quot; et que ce dernier répond &lt;br /&gt;
&quot;Oui, mais c'est comme du java&quot;, &lt;br /&gt;
la crise naissante de la quarantaine m'a motivé à titiller mes neurones en comprenant mieux l'intérêt porté par les développeurs et ainsi, objectif ultime, de rester &quot;hype&quot; ;)&lt;/p&gt;    &lt;p&gt;La présentation de Groovy m'a rassuré en tout point&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;D'abord, vu le monde, c'est vraiment tendance ensuite c'est gratuit et open source&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;C'est un langage de script où le typage est dynamique (et donc un peu plus gourmand en ressources)&lt;/li&gt;
&lt;li&gt;C'est vrai, ça ressemble beaucoup à du java&lt;/li&gt;
&lt;li&gt;Je peux continuer à utiliser Eclipse avec un plugin adapté (à ce propos, le présentateur a une préférence pour IntelliJ)&lt;/li&gt;
&lt;li&gt;Je peux allier java et groovy dans une même application&amp;nbsp;: une classe groovy peut étendre une classe java, et vice-versa (c'est ce qu'on appelle la &quot;protection de son investissement&quot;), et je peux mettre des petits bouts de code groovy dans mon code java (version 6 avec l'API javax.script)&lt;/li&gt;
&lt;li&gt;Groovy est en avance sur Java&amp;nbsp;: il y a des &quot;closures&quot; (des fonctions définies dans des fonctions...je crois) dans la version actuelle (1.5 depuis nov. 2007), j'avoue que j'ai eu un peu de mal à saisir leur intérêt, j'attends que quelqu'un m'éclaire...&lt;/li&gt;
&lt;li&gt;Des grands comptes ont des applications en groovy&amp;nbsp;: 50000 lignes de code pour une mutuelle américaine (la moitié représentant des tests...ouch !...)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Côté productivité&amp;nbsp;:
Des petits exemples sur la manipulation de listes et de Datasets avec moins de lignes de code montrent qu'effectivement, le programmeur va plus vite.&lt;/p&gt;


&lt;p&gt;Quelle conclusion pour un débutant qui connaît java&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Facile à installer, à utiliser&lt;/li&gt;
&lt;li&gt;Une programmation plus rapide&lt;/li&gt;
&lt;li&gt;Pour ma part, une étape initiatique avant d'aller vers Ruby&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quelle conclusion pour un décideur&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La prise de connaissance ne coûte pas chère&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;Un gain de productivité (qui reste néanmoins à mesurer)&lt;/li&gt;
&lt;li&gt;Il protège son investissement&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bon c'est vrai, j'ai toujours un peu de mal à trouver des arguments chocs pour convaincre une Direction Financière de changer de techno...je vais travailler cela...&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.netapsys.fr/index.php/post/2008/09/10/Groovy-%3A-retour-sur-la-presentation-du-Paris-JUG#comment-form</comments>
      <wfw:comment>http://blog.netapsys.fr/index.php/post/2008/09/10/Groovy-%3A-retour-sur-la-presentation-du-Paris-JUG#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.netapsys.fr/index.php/feed/rss2/comments/39</wfw:commentRss>
      </item>
    
  <item>
    <title>Netapsys sur le JDN Développeurs - Intéropérabilité entre Java et .NET : rêve ou réalité ?</title>
    <link>http://blog.netapsys.fr/index.php/post/2008/09/01/Netapsys-sur-le-JDN-Developpeurs-Interoperabilite-Java-/-NET-%3A-reve-ou-realite</link>
    <guid isPermaLink="false">urn:md5:972fed83f939f5215b1ca2a0baf706a7</guid>
    <pubDate>Mon, 01 Sep 2008 11:39:00 +0200</pubDate>
    <dc:creator>Sébastien Hébert</dc:creator>
        <category>.NET</category>
        <category>.NET</category><category>glassfish</category><category>interopérabilité</category><category>java</category><category>metro</category><category>netapsys</category><category>WCF</category>    
    <description>    &lt;p&gt;Netapsys publie un &lt;a href=&quot;http://www.journaldunet.com/developpeur/expert/30084/interoperabilite-java----net---reve-ou-realite.shtml&quot; hreflang=&quot;fr&quot;&gt;nouvel article sur le Journal du Net&lt;/a&gt; dressant une synthèse sur l'interopérabilité entre Java et .NET via les Services Web.&lt;/p&gt;


&lt;p&gt;Si le sujet n'est pas nouveau en soi, quelques progrès sont à noter à savoir une meilleure prise en charge de la sécurité (authentification par certificat, etc.) et de la gestion transactionnelle. Les outils/technos dont il est question sont WCF 3.0 (Windows Communication Foundation apparu avec .NET 3.0) et Metro (piles de services Web) disponible dans Glassfish et utilisable sous Tomcat (implémentation à base de servlet disponible uniquement).&lt;/p&gt;


&lt;p&gt;PS&amp;nbsp;: Un grand merci à Yoann, Jérémy et Jean-Baptiste pour leurs retours.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.netapsys.fr/index.php/post/2008/09/01/Netapsys-sur-le-JDN-Developpeurs-Interoperabilite-Java-/-NET-%3A-reve-ou-realite#comment-form</comments>
      <wfw:comment>http://blog.netapsys.fr/index.php/post/2008/09/01/Netapsys-sur-le-JDN-Developpeurs-Interoperabilite-Java-/-NET-%3A-reve-ou-realite#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.netapsys.fr/index.php/feed/rss2/comments/38</wfw:commentRss>
      </item>
    
  <item>
    <title>Première rencontre du Nantes JUG</title>
    <link>http://blog.netapsys.fr/index.php/post/2008/08/09/Premiere-rencontre-de-Nantes-JUG</link>
    <guid isPermaLink="false">urn:md5:e1b3f04cbe8ee63ac4bdcb472dbd1fd7</guid>
    <pubDate>Sat, 09 Aug 2008 09:24:00 +0200</pubDate>
    <dc:creator>Sébastien Roul</dc:creator>
        <category>Java</category>
        <category>hudson</category><category>intégration continue</category><category>java</category><category>JUG</category><category>maven</category><category>nantes</category><category>sonar</category>    
    <description>    &lt;p&gt;&lt;img src=&quot;http://blog.netapsys.fr/public/images/gruesmall_transarent.png&quot; alt=&quot;Logo-jug&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;



&lt;h2&gt;Au menu, &lt;strong&gt;Intégration Continue.&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.nantesjug.org&quot; hreflang=&quot;fr&quot;&gt;Nantes JUG&lt;/a&gt; annonce sa première rencontre&amp;nbsp;: &lt;a href=&quot;http://jugevents.jugpadova.it/jugevents/event/show.html?id=7031&quot; hreflang=&quot;fr&quot;&gt;le jeudi 11 septembre&lt;/a&gt;&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;La rencontre sera l'occasion de voir&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quels outils peuvent être utilisés: &lt;em&gt;Maven, Hudson, CruiseControl, Sonar&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Quelles sont les étapes importantes de la mise en oeuvre&amp;nbsp;: &lt;em&gt;L'infrastructure&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Comment ça fontionne au quotidien&amp;nbsp;: &lt;em&gt;Mylyn, Jira, TRAC, les tests, un métier d'ingénieur qui change !&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Quel est le retour d'expérience&amp;nbsp;: &lt;em&gt;Retour sur un an d'utilisation&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;L'Ecole des Mines de Nantes nous accueillera dans ses locaux pour ce premier évènement.&lt;/p&gt;


&lt;p&gt;Inscrivez-vous vite&amp;nbsp;: &lt;a href=&quot;http://jugevents.jugpadova.it/jugevents/event/show.html?id=7031&quot; hreflang=&quot;fr&quot;&gt;ICI&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&lt;em&gt;NANTES JUG&amp;nbsp;: Communauté des utilisateurs JAVA de NANTES.&lt;/em&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.netapsys.fr/index.php/post/2008/08/09/Premiere-rencontre-de-Nantes-JUG#comment-form</comments>
      <wfw:comment>http://blog.netapsys.fr/index.php/post/2008/08/09/Premiere-rencontre-de-Nantes-JUG#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.netapsys.fr/index.php/feed/rss2/comments/36</wfw:commentRss>
      </item>
    
  <item>
    <title>Un JUG printanier</title>
    <link>http://blog.netapsys.fr/index.php/post/2008/06/11/Un-JUG-printanier</link>
    <guid isPermaLink="false">urn:md5:ab6044cea5da1b8a16b6367f7cea2930</guid>
    <pubDate>Wed, 11 Jun 2008 00:43:00 +0200</pubDate>
    <dc:creator>Darko Stankovski</dc:creator>
        <category>Java</category>
        <category>java</category><category>JUG</category><category>parisJUG</category><category>spring</category>    
    <description>&lt;p&gt;Pour le dernier JUG Parisien de printemps, le thème était le &lt;a href=&quot;http://springframework.org/&quot;&gt;framework Spring&lt;/a&gt;. La mouture 2.5 est en effet sortie il y a environ 2 mois, accompagnée de son lot de nouveautés.&lt;/p&gt;


&lt;p&gt;Retour sur cette soirée riche en enseignements.&lt;/p&gt;    &lt;p&gt;Une des évolutions, qui concernera le plus grand monde, est l'utilisation plus importante des annotations qui permet de décharger de manière très importante les fichiers de configuration. En effet, l'une des grandes critiques que l'on pouvait faire à propos de Spring, est le volume de fichier de configuration XML. Avec cette mouture 2.5, la configuration XML devrait elle aussi être réduite puisqu'elle ne devrait concerner que la partie initiale du projet. Au développeur par la suite de tirer profit des annotations que Spring met à disposition pour alléger le code technique. Ceci a été illustré par le développement d'une fonctionnalité de Blog par la méthode des TDD (Test Driven Developement, Développement Dirigé par les Tests) par Christian Blavier au micro et Jean-François Hélie au clavier. Cette démonstration a pu mettre en avant l'avantage de cette méthode qui tire pleinement avantage de ce qu'offre Spring 2.5, ainsi que des outils associés tel que &lt;a href=&quot;http://www.unitils.org/&quot;&gt;Unitils&lt;/a&gt; qui permet de tirer profit de DBUnit et EasyMock pour les tests (plus ou moins) unitaires.&lt;/p&gt;


&lt;p&gt;La présence de Julien Dubois et Michaël Isvy, de &lt;a href=&quot;http://www.springsource.com/fr&quot;&gt;SpringSource&lt;/a&gt;, a permis d'approfondir les nouveautés de Spring 2.5. Parmi celles-ci, &lt;a href=&quot;http://static.springframework.org/spring-security/site/index.html&quot;&gt;Spring Security&lt;/a&gt;, évolution d'Acegi Security, est l'une des plus marquante. Acegi Security, bien que très bon outil de sécurité, avait comme gros défaut d'être très complexe à manipuler. Spring Security 2.0 équilibre la donne en réduisant la complexité, notamment au niveau du fichier de configuration, tout en permettant une gestion fine de la sécurité. Il est ainsi possible de  laisser Spring Security gérer les cookies d'authentification, de bloquer 2 authentifications simultanées, et par les méthodes d'interception, de gérer les autorisations d'appel de toute méthode des objets gérés par Spring. Tout cela peut faire l'objet d'un prochain billet...&lt;/p&gt;


&lt;p&gt;Pour le &lt;a href=&quot;http://springframework.org/projects&quot;&gt;reste des nouveautés&lt;/a&gt;, il faut citer Spring Dynamic Modules For OSGi(tm) Service Platforms qui a pour objectif de proposer des modules Java (et non pas juste des archives). Je vous laisse découvrir ce sujet sur la présentation disponible sous peu sur le &lt;a href=&quot;http://www.parisjug.org/xwiki/bin/view/Main/&quot;&gt;site de Paris Jug&lt;/a&gt;. On citera donc aussi Spring Batch, Spring Web Flow, Spring WebServices... Tant de projets qui apportent de manière souple des facilités pour le développement de nos applications Java.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.netapsys.fr/index.php/post/2008/06/11/Un-JUG-printanier#comment-form</comments>
      <wfw:comment>http://blog.netapsys.fr/index.php/post/2008/06/11/Un-JUG-printanier#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.netapsys.fr/index.php/feed/rss2/comments/27</wfw:commentRss>
      </item>
    
  <item>
    <title>Nouvelle version de Sonar</title>
    <link>http://blog.netapsys.fr/index.php/post/2008/06/09/Nouvelle-version-de-Sonar</link>
    <guid isPermaLink="false">urn:md5:e1be1d86345a1bdc6ca33a9c9cfae99a</guid>
    <pubDate>Mon, 09 Jun 2008 14:22:00 +0200</pubDate>
    <dc:creator>Jean-Baptiste Defard</dc:creator>
        <category>Java</category>
        <category>java</category><category>qualité</category><category>sonar</category>    
    <description>    &lt;p&gt;La version 1.3RC1 est sortie la semaine dernière. J'ai retardé la mise en production car dans l'infrastructure test la migration depuis la version 1.2.1 supprimait des mesures. Renseignement pris (merci Simon), il semblerait qu'il faille relancer une collecte pour que les mesures réapparaissent.
Je suis vraiment très content de l'évolution du logiciel. Il s'améliore à chaque nouvelle version.&lt;/p&gt;


&lt;p&gt;Les nouveautés&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Possibilité de déployer sous Tomcat&lt;/li&gt;
&lt;li&gt;Détails des mesures par paquetage (très pratique :-))&lt;/li&gt;
&lt;li&gt;Nouveaux ratios pour les commentaires et le code dupliqué&lt;/li&gt;
&lt;li&gt;Amélioration des performances de l'ensemble&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour les notes de releases c'est par &lt;a href=&quot;http://jira.codehaus.org/browse/SONAR/fixforversion/14125&quot; hreflang=&quot;fr&quot;&gt;ici&lt;/a&gt;.
Un site de &lt;a href=&quot;http://nemo.hortis.ch&quot; hreflang=&quot;fr&quot;&gt;démonstration&lt;/a&gt; a été ouvert en même temps que la release de la 1.3RC1.&lt;/p&gt;


&lt;p&gt;La prochaine version (1.3) devrait sortir au début du mois de juin et semble bien &lt;a href=&quot;http://jira.codehaus.org/browse/SONAR?report=com.atlassian.jira.plugin.system.project:roadmap-panel&quot; hreflang=&quot;fr&quot;&gt;avancée&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.netapsys.fr/index.php/post/2008/06/09/Nouvelle-version-de-Sonar#comment-form</comments>
      <wfw:comment>http://blog.netapsys.fr/index.php/post/2008/06/09/Nouvelle-version-de-Sonar#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.netapsys.fr/index.php/feed/rss2/comments/26</wfw:commentRss>
      </item>
    
  <item>
    <title>Polymorphisme des listes génériques</title>
    <link>http://blog.netapsys.fr/index.php/post/2008/05/27/Polymorphisme-des-listes-generiques</link>
    <guid isPermaLink="false">urn:md5:4d8613555ff8eda671ebda11b96bc428</guid>
    <pubDate>Tue, 27 May 2008 13:19:00 +0200</pubDate>
    <dc:creator>Michael Courcy</dc:creator>
        <category>Java</category>
        <category>java</category><category>liste générique</category><category>polymorphisme</category>    
    <description>&lt;p&gt;Avec Java 5 les développeurs ont vu pour leur plus grand bonheur arriver dans le langage les types génériques. On allait enfin pouvoir manipuler les List, Set et Map avec un typage fort.&lt;/p&gt;


&lt;p&gt;Par exemple avec Java 4, lorsque l'on créait une list, on pouvait y mettre n'importe quel objet&amp;nbsp;:&lt;/p&gt;

&lt;pre class=&quot;java&quot;&gt;&lt;span style=&quot;color: #aaaadd; font-weight: bold;&quot;&gt;List&lt;/span&gt; menagerie = &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #aaaadd; font-weight: bold;&quot;&gt;ArrayList&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
menagerie.&lt;span style=&quot;color: #006600;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
menagerie.&lt;span style=&quot;color: #006600;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Cat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
menagerie.&lt;span style=&quot;color: #006600;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//arg faut pas que je fasse ça&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//mais le compilateur ne dit rien &lt;/span&gt;
menagerie.&lt;span style=&quot;color: #006600;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; HumanBeing&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Bien sur les risques d'erreurs étaient très élevés car le développeur était le seul garant qu'on ne mettait pas n'importe quoi dans la liste. Sans parler du code de cast que l'on devait écrire pour récupérer les type adhoc&amp;nbsp;:&lt;/p&gt;

&lt;pre class=&quot;java&quot;&gt;&lt;span style=&quot;color: #aaaadd; font-weight: bold;&quot;&gt;Iterator&lt;/span&gt; it = menagerie.&lt;span style=&quot;color: #006600;&quot;&gt;iterator&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//cast obligatoire même si je sais que ma &lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//list ne contient que des animaux&lt;/span&gt;
Animal animal = &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; it.&lt;span style=&quot;color: #006600;&quot;&gt;next&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Mais en Java 5 tous ces problèmes sont &quot;résolus&quot; avec les types génériques (je dis résolu entre guillemet vous allez bientôt voir pourquoi).&lt;/p&gt;    &lt;pre class=&quot;java&quot;&gt;&lt;span style=&quot;color: #aaaadd; font-weight: bold;&quot;&gt;List&lt;/span&gt; menagerie&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt; = &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; ArrayList&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
menagerie.&lt;span style=&quot;color: #006600;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
menagerie.&lt;span style=&quot;color: #006600;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Cat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
menagerie.&lt;span style=&quot;color: #006600;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//compile pas ....&lt;/span&gt;
menagerie.&lt;span style=&quot;color: #006600;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; HumanBeing&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Enfin plus de cast necessaires lorsqu' on parcourt la liste&amp;nbsp;:&lt;/p&gt;

&lt;pre class=&quot;java&quot;&gt;Iterator&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt; it = menagerie.&lt;span style=&quot;color: #006600;&quot;&gt;iterator&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//pas obligé de caster&lt;/span&gt;
Animal animal =  it.&lt;span style=&quot;color: #006600;&quot;&gt;next&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;h2&gt;Mais quid du polymorphisme des types génériques&amp;nbsp;?&lt;/h2&gt;


&lt;p&gt;C'est ici que les développeurs ne comprennent plus, et c'est compréhensible.&lt;/p&gt;


&lt;p&gt;Supposons que je développe une methode&lt;/p&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;void&lt;/span&gt; nourrit&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;List&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt; menagerie&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;J'aimerais pouvoir l'invoquer en lui passant une liste de chats par exemple&lt;/p&gt;
&lt;pre class=&quot;java&quot;&gt;List&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Cat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt; cats = &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; ArrayList&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Cat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//compile pas ....&lt;/span&gt;
nourrit&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;cats&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Ce code ne compile pas, la méthode nourrit attend une liste d'animaux pas une liste de chats, même si le chat est un animal ... Difficile de comprendre pourquoi, le chat hérite de animal, donc tout ce que cette méthode fait avec des animaux elle doit pouvoir le faire avec des chats. Logique et pourtant non le compilateur refuse.&lt;/p&gt;


&lt;p&gt;Deux questions viennent alors&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pourquoi&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;Il y a-t-il une solution à ce problème&amp;nbsp;?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Répondons à la première&amp;nbsp;: Pourquoi&amp;nbsp;? &lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Cette situation est d'autant plus troublante que le polymorphisme avec les tableaux est quant à lui possible&amp;nbsp;:&lt;/p&gt;

&lt;pre class=&quot;java&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//j'ai développé cette méthodes&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;void&lt;/span&gt; nourrit&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; menagerie&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//compile sans problème car Cat hérite de Animal&lt;/span&gt;
Cat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; cats = &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Cat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
nourrit&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;cats&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Seulement vous pouvez aussi faire de grosses bêtises&amp;nbsp;:
Supposons que je développe cette méthode qui met un chat en tête du tableau d'animaux qu'on lui passe&lt;/p&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;void&lt;/span&gt; metUnChatAuDebut&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; animals&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
   animals&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; = &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Cat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Je peux tout à fait invoquer cette méthode de la façon suivante&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;java&quot;&gt;Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; dogs = &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//ça compile parfaitement&lt;/span&gt;
metUnChatAuDebut&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;dogs&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//aïe !!! J'ai mis un chat dans un tableau de chiens, pauvre minou !&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Si vous exécutez ce code, vous déclencherez une ArrayStoreException. C'est le chat qui souffle&amp;nbsp;: jamais il n'aurait pensé que l'ArrayStoreException lui serait un jour salutaire.&lt;/p&gt;


&lt;p&gt;En clair à l'exécution la machine virtuelle sait que le tableau qui lui est passé est un tableau de Dog et qu'on ne peut y mettre que des Dog ou des classes héritant de Dog et si vous avez pu échapper à la vigilance du compilateur vous n'échapperez pas à celle de la machine virtuelle.&lt;/p&gt;


&lt;p&gt;Mais pour les listes typées, il en va tout autrement. En effet, pour pouvoir maintenir le code qui a été écrit à l'époque où les listes n'étaient pas génériques, Sun a choisi de ne faire de la généricité qu'une affaire de compilation. En fait au niveau bytecode ce sont toujours des Objects qui sont manipulés, ajoutés, retirés.&lt;/p&gt;


&lt;p&gt;Ce qui signifie que par rapport à l'exemple précédent, on pourrait aller un cran plus loin dans l'exécution et effectivement mettre un chat dans une liste de chiens, car pour la JVM on met finalement un Object dans une liste d'Objects et ça pour le chat ça risque d'être un moment très pénible.&lt;/p&gt;


&lt;p&gt;C'est parce que cette sécurité supplémentaire n'existe pas que  Sun a décidé d'interdire une utilisation aussi directe du polymorphisme&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;void&lt;/span&gt; ajouteUnChat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;List&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt; animals&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
   animals.&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Cat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt; 
&amp;nbsp;
List&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt; dogs = &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; ArrayList&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; 
dogs.&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; 
dogs.&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; 
dogs.&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//ça ne compilera pas !!!&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//et c'est peut être pas plus mal ...&lt;/span&gt;
ajouteUnChat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;dogs&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Et ceci nous amène à la deuxième question.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Y a-t-il une solution à ce problème ?&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Oui, mais  à deux conditions&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;si vous promettez de ne faire que des opérations de lecture sur la liste alors vous pourrez passer une liste de Dog à une méthode attendant une liste d'Animal&lt;/li&gt;
&lt;li&gt;En respectant la syntaxe wildcard&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;int&lt;/span&gt; compteLesAnimaux&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;List&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;?&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;extends&lt;/span&gt; Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt; animals&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//fait une opération qui n'ajoute pas d'élément à la liste &lt;/span&gt;
   &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//ou ne réassigne pas un élément de la liste &lt;/span&gt;
   &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//par exemple&lt;/span&gt;
   &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;return&lt;/span&gt; animals.&lt;span style=&quot;color: #006600;&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; 
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt; 
&amp;nbsp;
List&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt; dogs = &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; ArrayList&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; 
dogs.&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; 
dogs.&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; 
dogs.&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//ça compile !!&lt;/span&gt;
compteLesAnimaux&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;dogs&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Mais ce code ne compilera pas&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;void&lt;/span&gt; ajouteUnChat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;List&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;?&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;extends&lt;/span&gt; Animal&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt; animals&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//erreur de compilation &lt;/span&gt;
   animals.&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Cat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt; 
&amp;nbsp;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//ce qui suit ne présente pas beaucoup &lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//d'intérêt puisque ce qui précède ne &lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;//compile pas&lt;/span&gt;
List&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt; dogs = &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; ArrayList&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;lt;&lt;/span&gt;Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; 
dogs.&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; 
dogs.&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt; 
dogs.&lt;span style=&quot;color: #006600;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Dog&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;
ajouteUnChat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;dogs&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Si la généricité avait été proposée dès le départ, Sun aurait certainement eu d'autres options. On peut dire que les choix qui ont été faits sont ceux du moindre mal, mais dès lors ils deviennent un peu difficile à appréhender.&lt;/p&gt;


&lt;p&gt;Vous trouverez en pièce jointe un micro projet eclipse illustrant mes propos.&lt;/p&gt;</description>
    
          <enclosure url="http://blog.netapsys.fr/public/code/generic.zip"
      length="3892" type="application/zip" />
    
    
          <comments>http://blog.netapsys.fr/index.php/post/2008/05/27/Polymorphisme-des-listes-generiques#comment-form</comments>
      <wfw:comment>http://blog.netapsys.fr/index.php/post/2008/05/27/Polymorphisme-des-listes-generiques#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.netapsys.fr/index.php/feed/rss2/comments/24</wfw:commentRss>
      </item>
    
  <item>
    <title>Maven au ParisJUG</title>
    <link>http://blog.netapsys.fr/index.php/post/2008/05/14/Maven-au-Paris-JUG</link>
    <guid isPermaLink="false">urn:md5:b9136f319629391f70244cf8204b45f8</guid>
    <pubDate>Sun, 18 May 2008 12:19:00 +0200</pubDate>
    <dc:creator>Jean-Baptiste Defard</dc:creator>
        <category>Java</category>
        <category>java</category><category>JUG</category><category>maven</category><category>parisJUG</category>    
    <description>&lt;p&gt;J'ai assisté mardi soir dernier à la présentation, par Arnaud Heritier, de Maven au Paris JUG . C'était une présentation vraiment intéressante. Arnaud a répondu avec beaucoup d'intelligence et de gentillesse à un certain nombre de questions concernant la communauté, l'organisation des repositories, les plugins et l'avenir du projet. Il a présenté les principales nouveautés de la version 2.0.9 et &lt;a href=&quot;http://blog.octo.com/index.php/2008/05/03/112-maven-community-news-avril-2008&quot; hreflang=&quot;fr&quot;&gt;l'actualité de la communauté.&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Concernant les bonnes pratiques, des confirmations de ce que nous faisons déjà&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Utiliser Maven 2.0.9 sur lequel un gros travail d'amélioration a été réalisé, notamment en ce qui concerne la gestion des dépendances.&lt;/li&gt;
&lt;li&gt;Eviter les mises à jour automatiques des plugins en déclarant les versions des plugins utilisés dans le POM.&lt;/li&gt;
&lt;li&gt;Déclarer les versions des dépendances dans le POM parent et référencement dans les POM dérivés.&lt;/li&gt;
&lt;li&gt;Même si Maven 2.0.9 améliore les choses, ne pas faire (trop ) confiance à la résolution des dépendances transitives.&lt;/li&gt;
&lt;li&gt;Limiter l'utilisation des profils au strict minimum indispensable pour les configurations multi-environnements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour la configuration des plugins de rapport, il faut placer la configuration par défaut dans la section &amp;lt;report&amp;gt; et éventuellement modifier cette configuration par défaut dans la section &amp;lt;build&amp;gt; d'un POM dérivé. Autre information intéressante, configurer les plugins de rapport dans la section &amp;lt;pluginManagement&amp;gt; ne sert à rien, car cette configuration est ignorée.&lt;/p&gt;


&lt;p&gt;L'intégration à Eclipse devrait s'améliorer notablement d'ici à la fin de l'année. Eclipse prévoit d'intégrer dans ses distributions soit le plugin Q4e, soit le plugin m2Eclipse. Ces deux plugins sont actuellement en compétition pour l'intégration à Eclipse. Netbeans a, semble-t-il, un meilleur support de Maven 2.&lt;/p&gt;


&lt;p&gt;En passant, j'ai bien apprécié la nouvelle fonctionnalité de Maven 2.0.9 permettant de &lt;a href=&quot;http://blogs.sonatype.com/brian/2008/04/23/1208965980000.html&quot; hreflang=&quot;fr&quot;&gt;modifier les dépendances d'un plugin&lt;/a&gt;. Vraiment pratique, par exemple pour utiliser AspectJ 1.6.0 avec le plugin maven.&lt;/p&gt;


&lt;p&gt;En résumé, une bonne soirée au JUG et plein d'informations utiles pour améliorer les builds.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.netapsys.fr/index.php/post/2008/05/14/Maven-au-Paris-JUG#comment-form</comments>
      <wfw:comment>http://blog.netapsys.fr/index.php/post/2008/05/14/Maven-au-Paris-JUG#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.netapsys.fr/index.php/feed/rss2/comments/23</wfw:commentRss>
      </item>
    
  <item>
    <title>Nantes JUG : c'est parti !</title>
    <link>http://blog.netapsys.fr/index.php/post/2008/05/09/JUG-Nantes-%3A-cest-parti</link>
    <guid isPermaLink="false">urn:md5:729c7af09f2cf124110053d62379183f</guid>
    <pubDate>Fri, 09 May 2008 17:08:00 +0200</pubDate>
    <dc:creator>Sébastien Roul</dc:creator>
        <category>Java</category>
        <category>java</category><category>JUG</category><category>nantes</category><category>nantesjug</category>    
    <description>    &lt;p&gt;Le JUG (Java User Group) de Nantes est lancé !&lt;br /&gt;&lt;/p&gt;



&lt;p&gt;&lt;ins&gt;Un JUG pour quoi faire ?&lt;/ins&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Le but est de réunir les acteurs nantais du langage (professionnels, communautés open source, institutions, étudiants, enseignants...) afin d'échanger des idées et de discuter &quot;Java&quot;.&lt;/p&gt;


&lt;p&gt;&lt;ins&gt;Un JUG pour qui ?&lt;/ins&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Tous les passionnés de JAVA qui souhaitent échanger dans un autre cadre que l'école ou le boulot.&lt;/p&gt;


&lt;p&gt;&lt;ins&gt;Un JUG pour quand ?&lt;/ins&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Nous lançons les bases du projet dès la semaine prochaine, l'idée est d'être opérationnel en Septembre.&lt;/p&gt;



&lt;p&gt;Y a t'il des personnes motivées pour participer à l'aventure&amp;nbsp;? N'hésitez pas à nous contacter&amp;nbsp;: &lt;a href=&quot;http://blog.netapsys.fr/index.php/post/2008/05/09/mailto:%74%65%61%6d%40%6e%61%6e%74%65%73%6a%75%67%2e%6f%72%67&quot; hreflang=&quot;fr&quot;&gt;team@nantesjug.org&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.netapsys.fr/index.php/post/2008/05/09/JUG-Nantes-%3A-cest-parti#comment-form</comments>
      <wfw:comment>http://blog.netapsys.fr/index.php/post/2008/05/09/JUG-Nantes-%3A-cest-parti#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.netapsys.fr/index.php/feed/rss2/comments/22</wfw:commentRss>
      </item>
    
  <item>
    <title>JUG2B : le ParisJUG étend son périmètre d'action</title>
    <link>http://blog.netapsys.fr/index.php/post/2008/04/30/JUG2B-%3A-le-ParisJUG-etend-son-perimetre-daction</link>
    <guid isPermaLink="false">urn:md5:e251b05087d887320f9d1973f210fb53</guid>
    <pubDate>Wed, 30 Apr 2008 21:56:00 +0200</pubDate>
    <dc:creator>Yoann Hébert</dc:creator>
        <category>Java</category>
        <category>java</category><category>JUG</category><category>JUG2B</category><category>parisJUG</category>    
    <description>    &lt;p&gt;&lt;img src=&quot;http://blog.netapsys.fr/public/images/parisJug.png&quot; alt=&quot;paris jug&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; /&gt;Par définition, un JUG (Java User Group), concentre naturellement les adeptes les plus ferrus de Java&amp;nbsp;: du développeur au chef de projet technique en passant par l'architecte. Mais c'est bien connu, la consanguinité peut rapidement générer quelques problèmes...&amp;nbsp;! ;-)&lt;br /&gt;
L'équipe du ParisJUG l'a bien compris et a décidé, à peine 4 mois après le lancement du JUG, de l'ouvrir à une population plus large&amp;nbsp;: c'est le cadre du JUG2B (JUG to Business). Son objectif est d'associer les dirigeants (informatiques, ressources humaines, ...) à la démarche et de rassembler l'ensemble des acteurs tous les trimestres, autour de thèmes plus larges que lors des réunions mensuelles. Rassurez-vous, il y est toujours question d'informatique&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;La première session du JUG2B, prévue le 12 juin, abordera deux thèmes intitulés &quot;Meilleurs développeurs&quot; et &quot;Comment attirer et garder les développeurs&quot;.&lt;/p&gt;


&lt;p&gt;Plus d'infos sur &lt;a href=&quot;http://www.parisjug.org/xwiki/bin/view/Main/JUG2B&quot; hreflang=&quot;fr&quot;&gt;le site du JUG&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.netapsys.fr/index.php/post/2008/04/30/JUG2B-%3A-le-ParisJUG-etend-son-perimetre-daction#comment-form</comments>
      <wfw:comment>http://blog.netapsys.fr/index.php/post/2008/04/30/JUG2B-%3A-le-ParisJUG-etend-son-perimetre-daction#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.netapsys.fr/index.php/feed/rss2/comments/20</wfw:commentRss>
      </item>
    
  <item>
    <title>Java events : à vos agendas !</title>
    <link>http://blog.netapsys.fr/index.php/post/2008/04/15/Java-events-%3A-a-vos-agendas</link>
    <guid isPermaLink="false">urn:md5:7a01ef8f792a8e9f939f3b6d4edfa272</guid>
    <pubDate>Tue, 15 Apr 2008 11:38:00 +0200</pubDate>
    <dc:creator>Yoann Hébert</dc:creator>
        <category>Java</category>
        <category>conférence</category><category>java</category><category>Jazoon</category><category>TheServerSide Java Symposium</category>    
    <description>&lt;p&gt;Le retour du printemps et l'arrivée des beaux jours (si, si, ils finiront bien par arriver un jour), s'accompagnent traditionnellement de conférences et de rencontres en tout genre. Deux d'entre elles intéresseront particulièrement les développeurs et architectes Java, TheServerSide Java Symposium et Jazoon08.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2&gt;TheServerSide Java Symposium&lt;/h2&gt;

&lt;p&gt;La version européenne de cette manifestation aura lieu à Prague du 18 au 20 juin 2008. Sa version américaine avait eu lieu à Las Vegas du 26 au 28 mars 2008.&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Au programme de cette manifestation, de nombreuses présentations qui se veulent suffisament pragmatiques pour permettre aux développeurs et aux architectes java d'en tirer rapidement profit. Elles traiteront par exemple de sujets intitulés &quot;Spring Dynamic Modules&quot;, &quot;Integrating JPA and Hibernate with RIA&quot;, ou bien encore &quot;JRuby on Rails: Web Development Evolved&quot;.&lt;/p&gt;


&lt;p&gt;Comptez environ US $ 1 800 pour l'inscription (une réduction de US $ 200 est accordée aux Juggers).&lt;br /&gt;
Inscription et renseignements&amp;nbsp;: &lt;a href=&quot;http://javasymposium.techtarget.com/europe/index.html&quot; hreflang=&quot;en&quot;&gt;http://javasymposium.techtarget.com/europe/index.html&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2&gt;Jazoon08 - &quot;The international conference on java technology&quot;&lt;/h2&gt;

&lt;p&gt;Cette manifestation aura lieu du 23 au 26 juin 2008 à Zurich. Ces 4 jours seront ponctués de différents types de session&amp;nbsp;: &quot;Tutorials&quot;, &quot;Technical sessions&quot;, &quot;Exhibition&quot;, ... ainsi que, pour les passionnés de Java ET de foot, une &quot;After hours&quot; un peu spéciale consacrée à la demi finale de l'euro 2008&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Comptez 1 045 € pour l'inscription (tarif ramené à 785 € pour les membres d'un JUG).&lt;br /&gt;
Inscription et renseignements&amp;nbsp;: &lt;a href=&quot;http://jazoon.com&quot; hreflang=&quot;en&quot;&gt;http://jazoon.com&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.netapsys.fr/index.php/post/2008/04/15/Java-events-%3A-a-vos-agendas#comment-form</comments>
      <wfw:comment>http://blog.netapsys.fr/index.php/post/2008/04/15/Java-events-%3A-a-vos-agendas#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.netapsys.fr/index.php/feed/rss2/comments/15</wfw:commentRss>
      </item>
    
</channel>
</rss>