<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de la rubrique java &#187; Événements Java</title>
	<atom:link href="https://blog.developpez.com/java/pcategory/1-news/evenements-java/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/java</link>
	<description></description>
	<lastBuildDate>Sat, 04 Apr 2015 17:15:59 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Troisième journée de conférences &#8211; Jeudi 03/06 &#8211; Après-midi</title>
		<link>https://blog.developpez.com/java/p8978/1-news/evenements-java/jazoon/troisieme_journee_de_conferences_jeudi_0</link>
		<comments>https://blog.developpez.com/java/p8978/1-news/evenements-java/jazoon/troisieme_journee_de_conferences_jeudi_0#comments</comments>
		<pubDate>Sat, 05 Jun 2010 15:26:27 +0000</pubDate>
		<dc:creator><![CDATA[dissert]]></dc:creator>
				<category><![CDATA[Jazoon]]></category>
		<category><![CDATA[Jazoon 2010]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voilà, Jazoon c&#8217;est fini. A l&#8217;heure où je vous écris ces lignes, je suis en région parisienne, et met de l&#8217;ordre dans mes notes. Je n&#8217;ai pas vraiment de point de comparaison avec les autres grands conférences de l&#8217;ecosystème Java &#8230; <a href="https://blog.developpez.com/java/p8978/1-news/evenements-java/jazoon/troisieme_journee_de_conferences_jeudi_0">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Voilà, Jazoon c&rsquo;est fini. A l&rsquo;heure où je vous écris ces lignes, je suis en région parisienne, et met de l&rsquo;ordre dans mes notes.</p>
<p>Je n&rsquo;ai pas vraiment de point de comparaison avec les autres grands conférences de l&rsquo;ecosystème Java (JavaOne, Devoxx), mais voici mon sentiment par rapport à celle-ci.</p>
<p><span id="more-280"></span></p>
<p>Je m&rsquo;attendais à beaucoup plus de participants. Compte tenu de la portée, des sujets et de la renomée de la conférence. Sans être réellement confidentielle, la quantité de personnes présentes n&rsquo;est pas plus impressionante que cela.</p>
<p>J&rsquo;ai identifié une demi-douzaine de français, Emmanuel Bernard (RedHat, JBoss, Hibernate) qui était conférencier, et des représentants de Xebia et Sfeir. Il y avait d&rsquo;autres francophones, venant de suisse romande, mais je ne suis pas combien. La grande majorité des participants étaient des germanophones.</p>
<p>La totalité des conférences était en anglais. Seul un évènement attaché, concernant un retour d&rsquo;expérience sur la mise en place d&rsquo;une carte/certificat pour signatures électroniques était en allemand (et partant je ne suis pas en mesure de vous en parler).</p>
<p>L&rsquo;infrastructure est bien prévue et très bien gérée. Rien à redire, si ce n&rsquo;est les problèmes de connexion WIFI le premier jour, qui ont été réparés par la suite. A charge des participants de faire attention à leur ligne : une consommation excessive de muffins ou de croissants est contre-indiquée pour la santé. L&rsquo;évènement a lieu dans un énorme complexe cinématographique, ce qui présente des avantages (fauteuil, bar, toilette en conséquence, &#8230;), mais un petit inconvénient : il n&rsquo;y a pas de tablette pour prendre des notes ou poser son portable. En ce qui me concerne, le lattitude E6500 a tendance à enormément chauffer au bout d&rsquo;un moment, et prendre des notes en permanence n&rsquo;a pas toujours été une partie de plaisir.</p>
<p>Les stands des sponsors (SSII ou clients finaux, surtout des banques) ne sont pas intrusifs et pas gênant du tout.</p>
<p>En ce qui concerne le fond, le choix des conférences, et surtout la répartition entre la grande salle et les autres, les choix n&rsquo;ont pas toujours été pertinents. Par exemple, parmi les sessions auxquelles j&rsquo;ai participé, celles sur la gestion des tests unitaires, et celle sur la programmation parallèle auraient été bien mieux dans la grande salle. Certains sujets n&rsquo;étaient à mon sens plus vraiment à la mode.</p>
<p><strong>Session technique : Building DSL with Eclipse, Peter Friese, Itemis</strong></p>
<p>Cette session porte sur la création d&rsquo;un DSL externe, en utilisant essentiellement l&rsquo;outil <a href="http://www.eclipse.org/Xtext/">Xtext</a>, qui est un plugin Eclipse.</p>
<p>Il vallait mieux avoir suivit la conférence de Neal Ford sur les DSL au préalable, pour suivre celle-ci.</p>
<p>Peter Friese rappelle qu&rsquo;un DSL est un language:</p>
<ul>
<li>qui permet d&rsquo;exprimer son intention</li>
<li>qui permet de résoudre uniquement UN problème</li>
</ul>
<p>A cet égard, Java est un couteau suisse, un langage général avec lequel on peut tout faire, un DSL ne permet de faire qu&rsquo;une seule chose.</p>
<p>Le conférencier donne deux exemples de DSL:</p>
<ul>
<li>SQL</li>
<li>Ant</li>
</ul>
<p>Selon lui, SQL est un bon exemple de DSL, on exprime uniquement ce que l&rsquo;on a besoin d&rsquo;exprimer, et il n&rsquo;est pas possible de faire autre chose avec.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">1 &nbsp;SELECT colonne1, colonne2 <br />
2 &nbsp;FROM maTable <br />
3 &nbsp;WHERE colonne1.champX = colonne2.champY;</div></div>
<p>Il est important, dans cet exemple que le FROM soit avant le WHERE, même si, d&rsquo;un point de vue sémantique, tout serait identique en inversant ces deux lignes, parce que si on a pas écrit auparavant la ligne 2, aucun IDE ne serait en mesure de vous faire de la completion automatique à partir des informations précédentes (il faut savoir que les colonnes proviennent de la table maTable pour proposer les champs champX et champY).</p>
<p>Il montre ensuite un exemple de script Ant, et exemple que, dans ce cas, on met dans le script beaucoup plus de choses que juste ce dont il y a besoin pour exprimer un build. Cela est du à des raisons historiques, l&rsquo;auteur de Ant aurait créé cet outil dans lors d&rsquo;un voyage, et il n&rsquo;avait qu&rsquo;un parser XML sous la main, et pas envie de redévelopper un parser.</p>
<p>Un SQL interne (ce qui n&rsquo;est pas le sujet de cette session) est une API qui permet de faire une seule chose, comme par exemple :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp;Mailer.mail() <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.to(&quot;receiver@example.com&quot;) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.from(&quot;sender@example.com&quot;) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.subject(&quot;Example of internal DSL&quot;) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.body(&quot;Hello World !&quot;) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.send();</div></div>
<p>Le conférencier cite l&rsquo;ouvrage suivant : <a href="http://pragprog.com/titles/tpantlr/the-definitive-antlr-reference">The definitive ANTLR reference, Building DSL de Terence Parr</a>.<br />
Ce livre donne une liste de ce qu&rsquo;il y a à faire pour créer un DSL externe:<br />
    1/ Créer une grammaire ANTLR<br />
    2/ Générer un parseur lexical à partir de la grammaire<br />
    3/ Le parseur va créer un arbre représentant le parsing<br />
    4/ Transformer l&rsquo;arbre en modèle sémantique<br />
    5/ Itérer sur le modèle<br />
    6/ Donner les élément du modèle à un template</p>
<p>Le conférencier a passé des extraits d&rsquo;une <a href="http://www.infoq.com/presentations/domain-specific-languages">vidéo introductive sur les DSLs dans laquelle Martin Fowler</a> expliquait qu&rsquo;il y avait des problématiques spécifiques concernant l&rsquo;écriture de DSL externes :</p>
<ul>
<li>Manque d&rsquo;éléments symboliques d&rsquo;intégration (accolades, &#8230;)</li>
<li>Ecriture d&rsquo;un parseur compliquée</li>
<li>Intégration des DSL non native dans les IDE (complétion automatique, navigation par ctrl-click, outlines, &#8230;)</li>
</ul>
<p>A fin de résoudre ces problèmatique, il existe un outil : <a href="http://www.eclipse.org/Xtext/">Xtext</a>, qui est un plugin Eclipse permettant de définir formellement des grammaires dans une syntaxe proche de <a href="http://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form">EBNF</a>.</p>
<p>La syntaxe de définition de ces grammaires est elle même définie par une grammaire (DSL) qui, à l&rsquo;aide du moteur interne de Xtext permet de bénéficier des avantages d&rsquo;un IDE pour ce language (complétion, outlines, navigation rapide, &#8230;).</p>
<p>Xtext contient à la fois la définition de la grammaire pour l&rsquo;écriture des grammaires, mais également un mécanisme qui fabrique un meta-modèle ecore à partir d&rsquo;une grammaire particulière. <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.5.0/org/eclipse/emf/ecore/package-summary.html#details">Ecore</a> est l&rsquo;API interne d&rsquo;Eclipse permettant de modéliser un méta-modèle.</p>
<p>A partir de ce meta-modèle ecore, Xtext génère un IDE pour cette grammaire, et donc pour ce DSL.</p>
<p>Il y a ensuite un exemple d&rsquo;utilisation pour créer un DSL de création d&rsquo;application mobiles. Les étapes sont:</p>
<ul>
<li>1/ Analyser la problématique métier (du domaine)</li>
<li>2/ Etablir une relation entre les concepts métier du domaine et un langage</li>
<li>3/ Ecrire un générateur</li>
</ul>
<p>Pour générer du code (en Objective-C en l&rsquo;occurence, pour les applications mobiles) à partir des données exprimées avec ce DSL, il utilise un autre plugin Eclipse qui s&rsquo;appelle <a href="http://wiki.eclipse.org/Xpand">Xpand</a> (language specialized on code generation based on EMF models). Je ne connais pas ce plugin, mais visiblement, compte-tenu des réactions de certaines personnes dans la salle, ce plugin ne serait pas très pratique, ou très stable.</p>
<p>Pour conclure, implémenter un DSL avec Xtext est, sinon facile, au moins aussi facile que possible. Xtext fournit un support important des DSL ansin décrit sous Eclipse. Par ailleurs, une intégration entre des DSL et Java est possible (Xtext fournissant un meta-modèle ecore nativement pour Java).</p>
<p>Le présentateur a annoncé un futur (8 juin) <a href="http://live.eclipse.org/node/886">Webinar sur Xtext</a>.</p>
<p><strong>Technical Session : Easy to use, Highly available, High performance, Java Database access: seriously ? Craig Russell, Oracle</strong></p>
<p>Cette session parle d&rsquo;un outil, ClusterJ, permettant d&rsquo;établir des clusters sur des bases MySQL.</p>
<p><strong>High Performance File I/O The Perl/Java battle, Daniel Echhorn, Stephan Rufer</strong></p>
<p>Cette session ansi que la suivante étaient des sessions courte, d&rsquo;une vingtaine de minute et présentant donc trés rapidement une chose/une idée. C&rsquo;est à mon sens un très bon format de présentation.</p>
<p>La problématique de cette mini-session, avec un titre ayant une odeur de troll, était de montrer les différences de performances d&rsquo;I/O entre un code legacy écrit en Perl et un code plus récent écrit en Java.</p>
<p>La forme de la présentation était très intéressante :</p>
<ul>
<li>On pose le contexte, on explique ce qu&rsquo;on a fait</li>
<li>Test qui se déroule en live (démo), sous une forme graphique qui fait penser à un &laquo;&nbsp;Google fight&nbsp;&raquo;, et les conférenciers qui en rajoute (&laquo;&nbsp;Allez Java !&nbsp;&raquo;)</li>
<li>On discute du résultat</li>
</ul>
<p>En l&rsquo;occurence, il s&rsquo;agissait d&rsquo;un batch qui traitait et parsait des lignes avec un format contraint. Le résultat, graphiquement est que Java est beaucoup plus mauvais au départ et rattrape quasiment au bout d&rsquo;un moment les perfomances de Perl, sans toutefois tout à fait les atteindre.</p>
<p>Je n&rsquo;ai pas la possibilité (ni le temps) de faire un audit sur leur code, mais à mon avis leurs conclusions sont un peu erronées. Il y a peu de chance que le programme Java optimise ses performances sur proprement les IO, je pense que le gain de performances observé entre le début et la suite est surtout du à la gestion des String en Java. Les mêmes patterns doivent se retrouver dans les jeux de données, et au début, cela instancie beaucoup de String, qui se retrouve dans le pool de String au bout d&rsquo;un certain temps. Je leur ai demandé à la suite de la conférence s&rsquo;ils avaient examiné cela, ce qui n&rsquo;était pas le cas.</p>
<p><strong>DROIDinfo and DROIDparade, two little helpers for Android developers, Jörg Pleumann &amp; Felic Jost, Noser Engineering AG</strong></p>
<p>2010 est une bonne année pour les smartphones en général et pour les Androids en particulier.</p>
<p>Google fait en sorte de faciliter les choses pour les développeurs </p>
<p>http://developer.android.com/resources/dashboard/platform-versions.html</p>
<p>http://developer.android.com/</p>
<p>DROIDinfo développé par la société du conférencier permet d&rsquo;avoir:</p>
<ul>
<li>des informations supplémentaires sur le matériel d&rsquo;un Android particulier</li>
<li>des résultats de benchs</li>
</ul>
<p>Cela a permit de se rendre compte que:</p>
<ul>
<li>Le HTC Dream contient un thermometre</li>
<li>Le péripharique de stockage externe n&rsquo;est pas toujours récupéré par &laquo;&nbsp;/sdcard&nbsp;&raquo;</li>
<li>La CPU et les différence d&rsquo;IO varient énormément d&rsquo;un modèle à l&rsquo;autre</li>
</ul>
<p>Conclusion:</p>
<ul>
<li>Supposer que les smartphones sont lents</li>
<li>Réalisez les traitements de manière asynchrone par rapport aux actions de l&rsquo;interface</li>
<li>DROIDinfo est disponible sur l&rsquo;AndroidMarket (attention deux versions différentes selon la version d&rsquo;Android)</li>
<li><a href="http://droidparade.noser.com/droidparade/">DROIDparade (beta)</a> est une base de donnée des périphériques Android avec les caractéristiques déterminées par DROIDinfo</li>
</ul>
<p><strong>End keynote : Software in the service of handicapped people, Hans-Willem van Vliet, R et D at Otto Bock</strong></p>
<p>Je n&rsquo;ai malheureusement pas pu rester à la keynote de fermeture, pour cause d&rsquo;avion à prendre, et donc je n&rsquo;ai pu assister à la conclusion de cette présentation.</p>
<p>Vous pouvez néanmoins vous référer au <a href="http://jazoon.com/Conference/Day3">compte-rendu officiel de Jazoon sur cette troisième journée</a>.</p>
<p>Comme la keynote d&rsquo;ouverture de la journée, cette keynote commence (et je n&rsquo;ai eu que le début) par des explications techniques métiers.</p>
<p>Otto Bock était un prothésiste qui a inventé la prothèse modulaire en 1919. En 1919 également, la fondation <a href="http://www.ottobock.com/">Otto Bock</a> a été créée, originellement pour opérer les amputés de la première guerre mondiale, puis elle a été fermée pour réouvrir à l&rsquo;issue de la seconde guerre mondiale.</p>
<p>En 2010, la fondation a 4000 employés, est le leader mondial de la prothèse avec 40 sites internationaux et une R et D très importante.</p>
<p>J&rsquo;ai appris que l&rsquo;essentielle des amputations dans les pays industrialisés n&rsquo;est pas du aux accidents, mais au diabète qui créé des infections.</p>
<p><strong>Conclusion</strong></p>
<p>Je suis content d&rsquo;avoir passé ces trois jours à Jazoon, j&rsquo;ai la tête un peu pleine comme un melon (mais je deverse dans ce blogue pour faire de la place).</p>
<p>Les sessions les plus intéressantes à mon sens ont été celles sur:</p>
<ul>
<li>La programmation parallèle</li>
<li>La sécurité (mais pas toutes)</li>
<li>Les DSLs</li>
<li>Le management de la boite à outils de tests unitaires</li>
<li>Les chargeurs de classe</li>
</ul>
<p>N&rsquo;hésitez pas à poser des <a href="http://www.developpez.net/forums/d841589/java/communaute-java/jazoon10-1er-3-juin-y-va-quen-pensez/">questions dans le forum</a> si vous voulez que je détaille quelque chose.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Troisième journée de conférences &#8211; Jeudi 03/06 &#8211; Matin</title>
		<link>https://blog.developpez.com/java/p8969/1-news/evenements-java/jazoon/troisieme_journee_de_conferences_jeudi_0_06</link>
		<comments>https://blog.developpez.com/java/p8969/1-news/evenements-java/jazoon/troisieme_journee_de_conferences_jeudi_0_06#comments</comments>
		<pubDate>Thu, 03 Jun 2010 14:20:00 +0000</pubDate>
		<dc:creator><![CDATA[dissert]]></dc:creator>
				<category><![CDATA[Jazoon]]></category>
		<category><![CDATA[Jazoon 2010]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Cette troisième et dernière journée de conférences démarre par une keynote au titre aussi étrange qu&#8217;exotique dont je n&#8217;ai pas compris le sujet pour l&#8217;instant. La keynote de fermeture est dédié à l&#8217;accessibilité numérique. C&#8217;est une bonne chose que l&#8217;accessibilité &#8230; <a href="https://blog.developpez.com/java/p8969/1-news/evenements-java/jazoon/troisieme_journee_de_conferences_jeudi_0_06">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Cette troisième et dernière journée de conférences démarre par une keynote au titre aussi étrange qu&rsquo;exotique dont je n&rsquo;ai pas compris le sujet pour l&rsquo;instant. La keynote de fermeture est dédié à l&rsquo;accessibilité numérique. C&rsquo;est une bonne chose que l&rsquo;accessibilité numérique soit mise en avant, c&rsquo;est dommage que ce soit dans la keynote de fermeture, dans la mesure où de nombreux auditeurs (dont votre serviteur) devront écourter leur attention pour aller prendre leur avion ou train respectifs.<br />
<span id="more-279"></span></p>
<p><strong>Keynote d&rsquo;ouverture : The Gaïa satellite, data processing and challenges, William O&rsquo;Mullane, ESAC</strong></p>
<p>L&rsquo;ESAC est le Centre Européen d&rsquo;Astronomie Spaciale. Le présentateur est un spécialiste à l&rsquo;ESAC du data mining. Le sujet de la keynote concerne les problématiques liées à la mise en place d&rsquo;un satellite embarquant un télescope géant, <a href="http://www.rssd.esa.int/Gaia">Gaia</a>.</p>
<p>Le présentateur commence en donnant un petit cours d&rsquo;astronomie dont j&rsquo;ai essentiellement retenu que l&rsquo;origine du terme &laquo;&nbsp;voie lactée&nbsp;&raquo; vient du sein de Junon qui l&rsquo;aurait généré.</p>
<p>Willian O&rsquo;Mullane explique quelles sont les problématiques techniques physiques liées à l&rsquo;environnement terrestre qui limitent fortement la précision possible pour les télescopes (atmosphère, gravité supérieure, &#8230;) qui imposent de créer des télescope sur un satellite. Il explique ensuite quel sont les besoins de précision, les quantités de données qui sont récupérées, puis persistées (de l&rsquo;ordre de 10TB par jours il me semble).</p>
<p>Il donne ensuite les besoins des utilisateurs, par rapport au format de données récupérée et indique les types de traitement à effectuer pour avoir des rapports pertinents.</p>
<p>Compte tenu des problématiques on pourrait penser que la taille du projet informatique est gigantesque, mais il relative en comparant les nombres de ligne de code avec celles de projets comme Linux. D&rsquo;un point de vue ordre de grandeur, le projet est cent fois plus petit que des projets comme Linux.</p>
<p>L&rsquo;ESAC utilise Java pour le traitement des données, de manière quasiment exclusive, depuis 2000. Les raisons en sont :</p>
<ul>
<li>La portabilité : cela doit pouvoir fonctionner au moins jusqu&rsquo;en 2020</li>
<li>C&rsquo;est plus facile d&rsquo;écrire du code correct (typage statique : Eclipse!)</li>
</ul>
<p>L&rsquo;ESAC utilise :</p>
<ul>
<li>JUnit, Hudson;</li>
<li>Apache common Math, log4J</li>
<li>JBoss</li>
<li>Aucun <a href="http://fr.wikipedia.org/wiki/Message_Passing_Interface">MPI</a> particulier ou bibliothèque de grid</li>
</ul>
<p>Du point de vue des performances, ils constatent de fait que le Java est plus rapide que le C, pour un code équivalent, métier, grâce au JIT sur un processeur Intel.</p>
<p>Il y a néanmoins un certain nombre d&rsquo;inconvénients/limitation en Java :</p>
<ul>
<li>Java n&rsquo;est pas la balle traçante (cela peut s&rsquo;interpréter de différentes manière, je vous laisse interpréter);</li>
<li>Trop peu de bibliothèques mathématiques maintenues (la meilleure étant ApacheCommon Math);</li>
<li>Support numérique natif prévu non implémenté;</li>
<li>Un respect des standards IEEE souvent défaillant et quasiment jamais corrigé.</li>
</ul>
<p>Remarques supplémentaires :</p>
<ul>
<li>Il y a beaucoup de tests unitaires sur le projets;</li>
<li>Les standards ont souvent besoins d&rsquo;être adaptés sur mesure pour répondre aux besoins;</li>
</ul>
<p>Des tests de virtualisation, en particulier de data grid ont été fait. Il semblerait qu&rsquo;il y ait des problèmes sur le cloud d&rsquo;Amazon quand on fait du DataGrid avec plus de 1000 noeuds (parce qu&rsquo;en dessous ça vaut pas la peine, les noeuds sont même pas des super calculateurs, alors hein!). </p>
<p>Présentation très intéressante, comme tous les retours d&rsquo;expérience, mais en l&rsquo;occurrence, pour moi, le métier était trop pointu pour que je profite de tous ses apports.</p>
<p><strong>Session technique : Essential of testing: the tools you need to know, Bettina Polasek, Marco Sicolini, AdNovum Informatik AG</strong></p>
<p>On peut ajouter un sous-titre : <strong>One tool, one purpose</strong></p>
<p>C&rsquo;est fait, visiblement le sujet de cette présentation intéresse beaucoup: toutes les places (petite salle) sont prises et il y a une quarantaine de personnes assises sur les marches ou debout.</p>
<p>Les sessions d&rsquo;aujourd&rsquo;hui commencent fort avec cette présentation remarquable, qui portent plus sur la politique à avoir vis-vis des outils de tests, et de manière générale la manière de gérer ses outils, que sur les aspects les plus techniques, même si on a eu droit à toute une série de démo illustrant différents usage de tests.</p>
<p>Les équipes d&rsquo;AdNovum ont poussé très loin les pratiques en matière de management des outils de travail, et en particulier des outils de développement.</p>
<p>Ces équipes ont fait le constat suivant :</p>
<ul>
<li>il y a de nombreux outils;</li>
<li>chaque outils a ses avantages et ses inconvénients;</li>
<li>il y a un recouvrement non négligeable entre ces outils.</li>
</ul>
<p>Les objectifs sont:</p>
<ul>
<li>Savoir déterminer établir une bonne adéquation objectif / outil ;</li>
<li>Pouvoir gérer et maintenir à niveau les compétences des équipes par rapport aux outils sélectionnés;</li>
<li>Sélectionner un ensemble restreint mais suffisamment complet d&rsquo;outils; </li>
<li>Pouvoir gérer la mise à jour de cette boite à outil (et donc les compétences liées et l&rsquo;historique de code).</li>
</ul>
<p>Les critères de sélection sont:</p>
<ul>
<li>
    Technologiques:</p>
<ul>
<li>Java</li>
<li>.NET</li>
<li>JavaFX</li>
<li>&#8230;</li>
</ul>
</li>
<li>
    Méthodologiques:</p>
<ul>
<li>Statiques</li>
<li>Fonctionnels</li>
<li>De robustesse, de performance</li>
<li>D&rsquo;ergonomie</li>
<li>De maintenabilité, de non-régression</li>
<li>&#8230;</li>
</ul>
</li>
<li>
    Couche concerné:</p>
<ul>
<li>Web (UI)</li>
<li>Métier</li>
<li>Donnée</li>
</ul>
</li>
</ul>
<p>Ils considèrent que les décisions se prennent à différents niveau et qu&rsquo;il faut en être conscient:</p>
<ul>
<li>Stratégique. Exemple: on choisit un contexte JEE</li>
<li>Tactique. Exemple: on choisit JUnit </li>
<li>Opérationnel. Exemple: on choisit JUnit 4.7</li>
</ul>
<p>Les choix des différents niveau doivent être remis en question périodiquement, avec une période plus grande pour les hauts niveaux.</p>
<p>Avec cette approche, au jour présent, en ce qui concerne les tests, leur choix s&rsquo;est porté vers les outils suivants (dans des catégories différentes):</p>
<ul>
<li>Grinder</li>
<li>JUnit</li>
<li>Selenium</li>
<li>HtmlUnit</li>
<li>Mockito</li>
<li>Grinder</li>
<li>Glassfish (embeddable)</li>
<li>SOAP/REST Drivers</li>
<li>SOAPUI</li>
<li>PMD</li>
<li>jDepends</li>
</ul>
<p>Il y a ensuite toute une série de démos.</p>
<p>Avec Selenium, un test de niveau (UI). Remarque: il est possible de spécifier une vitesse inférieur pour voir le déroulement du test s&rsquo;il est trop rapide.<br />
Avec HtmlUnit, test de niveau UI également. Les développeurs ont le choix entre les deux, il y a un compromis à faire lorsqu&rsquo;ils implémentent leurs tests sachant que :</p>
<ul>
<li>HtmlUnit est beaucoup plus rapide que Selenium;</li>
<li>En contrepartie, Selenium utilise les vrais moteurs des navigateurs, alors que HtmlUnit comprend son propre interpréteur de requête, par ailleurs, avec Selenium, on peut vérifier la présence d&rsquo;éléments dans le DOM, et donc tester des interactions Javascript, en particulier AJAX, alors que HtmlUnit est au niveau des requêtes HTTP.</li>
</ul>
<p>Il y a ensuite un test d&rsquo;un composant métier EJB, avec le moteur d&rsquo;EJB embedabble de Glassfish (Dans la spéc. JavaEE6), sans démarrer le serveur d&rsquo;application.<br />
En dernier une démo d&rsquo;un test d&rsquo;un composant logique métier avec Mockito et JUnit.</p>
<p>Le message qui voulait être passé par ces démonstrations, est que, en fonction des développements, il faut faire des tests au niveau approprié, avec les outils appropriés.</p>
<p>Les retours d&rsquo;expérience qui leurs semblent importants sont les suivants :</p>
<ul>
<li>Communiquer sur la stratégie de test à ses clients (internes ou externes);</li>
<li>Concevoir des tests simples et performants;</li>
<li>Décider de manière claire ce que l&rsquo;on test;</li>
<li>Avoir le bon niveau de test;</li>
<li><strong>Traiter votre code de tests comme un citoyen de première classe !! (documentation, qualité, performance, respect des patterns) Faites comme si vos tests allaient en production.</strong></li>
<li>Un outil : un usage;</li>
<li>Les outils doivent <strong>simplifier</strong> les tests;</li>
<li>Mettre en place des recommandations d&rsquo;utilisation et de la documentation;</li>
<li>Former des experts de référence pour ces outils;</li>
<li>Entrainer les développeurs à l&rsquo;usage des outils.</li>
</ul>
<p>Les présentateurs nous ont également fait part des pistes qu&rsquo;ils regardent pour intégrer de nouveaux outils à leur boite à outils :</p>
<ul>
<li>Tests unitaires polyglottes (Groovy ?) : L&rsquo;idée serait de rendre les tests moins verbeux et partant faciliter leur maintenance;</li>
<li>DSL ? Cela pourrait permettre que les analystes métiers puissent écrire leur tests.</li>
</ul>
<p>Ils concluent en disant qu&rsquo;une boite à outils (de test ou en général) de développement est extrêmement puissante, mais que cela nécessitait une maintenance régulière. </p>
<p>La salle était comble et le sujet et la présentation (et les présentateurs) étaient largement à la hauteur. Très bonne présentation.</p>
<p><strong>Session technique : Spring Framework 3.0, Key themes and features, Jürgen Höller, SpringSource</strong></p>
<p>Je pensais apprendre beaucoup de chose pendant cette conférence, des détails techniques et des annonces croustillantes. En fait Jörgen Höller s&rsquo;est contenté d&rsquo;introduire la manière intrusive de faire du Spring (c&rsquo;est-à-dire avec des annotations, disponibles depuis Spring 2.5) et d&rsquo;expliquer qu&rsquo;avec Spring 3.0 (sorti en décembre dernier quand même), cela avait été amélioré, et en partie standardisé. J&rsquo;ai donc passé la présentation, qui n&rsquo;a pas semblé passionner grand monde non plus en dehors de moi, à rédiger les notes de la présentation précédente pour les lecteurs du Blogue.</p>
<p><strong>Transition</strong></p>
<p>Je prend l&rsquo;avion ce soir et ne pourrai rédiger le compte-rendu des conférences de cet après-midi pour que vous l&rsquo;ayez avec votre café demain matin. J&rsquo;interromps donc ce billet après les sessions du matin, et vous proposerai un autre billet pour l&rsquo;après-midi demain ou après-demain.</p>
<p>Si vous avez des commentaires, <a href="http://www.developpez.net/forums/d841589/java/communaute-java/jazoon10-1er-3-juin-y-va-quen-pensez/">rendez-vous sur le forum</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seconde journée de conférences &#8211; Mercredi 02/06</title>
		<link>https://blog.developpez.com/java/p8964/1-news/evenements-java/jazoon/java_jazoon_2010_seconde_journee_de_conf_06</link>
		<comments>https://blog.developpez.com/java/p8964/1-news/evenements-java/jazoon/java_jazoon_2010_seconde_journee_de_conf_06#comments</comments>
		<pubDate>Wed, 02 Jun 2010 21:27:42 +0000</pubDate>
		<dc:creator><![CDATA[dissert]]></dc:creator>
				<category><![CDATA[Jazoon]]></category>
		<category><![CDATA[Jazoon 2010]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Il y a un poil plus de monde pour cette seconde journée, certain participants ayant pris un passe pour mercredi et jeudi. Cette seconde journée commence par une keynote de Ken Schwaber, inventeur, avec Jeff Sutherland de la méthode Scrum, &#8230; <a href="https://blog.developpez.com/java/p8964/1-news/evenements-java/jazoon/java_jazoon_2010_seconde_journee_de_conf_06">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Il y a un poil plus de monde pour cette seconde journée, certain participants ayant pris un passe pour mercredi et jeudi.</p>
<p>Cette seconde journée commence par une keynote de <a href="http://en.wikipedia.org/wiki/Ken_Schwaber">Ken Schwaber</a>, inventeur, avec Jeff Sutherland de la méthode <a href="http://www.scrum.org/">Scrum</a>, puis enchaine sur les sessions, avant de finir sur les &laquo;&nbsp;Jazoon Rookies&nbsp;&raquo;. Les Jazoon rookies sont un format de conférences spécifique à Jazoon, où des intervenants qui ne sont pas encore des stars de la scène (Java) internationale, peuvent faire leurs premiers pas dans une conférence à caractère international.<br />
<span id="more-278"></span><br />
<strong>Keynote d&rsquo;ouverture de la seconde journée : Total Cost of Ownership, Ken Schwaber</strong></p>
<p>A part la présentation de ce que présente scrum.org en terme de formation, certification, Ken Schwaber explique un principe et énonce une idée forte. </p>
<p>Scrum est très léger et est un &laquo;&nbsp;framework&nbsp;&raquo;, au sens où il pratique le principe de Hollywood. En particulier, lors des itérations, il faut donner un sens à &laquo;&nbsp;done&nbsp;&raquo;. Il nous demande de nous interroger entre participants voisins (ce qui n&rsquo;est pas évident quand ses voisins parlent uniquement allemand), pour savoir ce que l&rsquo;on entend par &laquo;&nbsp;done&nbsp;&raquo;, dans le cadre d&rsquo;une itération de développement (sprint).</p>
<p>Puis il demande si les réponses que l&rsquo;on a reçu comprennent :</p>
<ul>
<li>Les benchs de performances</li>
<li>Les tests de robustesse (stabilité)</li>
<li>Les tests de réponse immunologique (si vous savez ce que c&rsquo;est, merci de mettre un commentaire)</li>
<li>La vérification de la bonne intégration avec les six autres équipes (en supposant qu&rsquo;il y ait six autres équipes)</li>
<li>Tests d&rsquo;intégration avec les incréments des six autres équipes, pour valider un incrément global</li>
<li>Mise à jour des releases notes</li>
<li>Internationalisation du produit dans les six locales des utilisateurs du produit</li>
<li>Tests d&rsquo;acceptance utilisateur</li>
<li>Tests anti-regression</li>
<li>Revue de code</li>
</ul>
<p>La &laquo;&nbsp;stabilisation&nbsp;&raquo; est ce qu&rsquo;il faut faire après les itérations pour avoir un produit fini. Si notre définition de &laquo;&nbsp;done&nbsp;&raquo; n&rsquo;est pas rigoureusement définie, la stabilisation augmente après chaque itération de manière exponentielle (ou peu s&rsquo;en faut).</p>
<p><strong>Session technique : Unleash your processor(s), Vaclav Pech, JetBrains</strong></p>
<p>Cette session très technique intéresse beaucoup de monde. La salle dans laquelle elle a lieu, qui n&rsquo;est pas la grande salle, suffit à peine pour tous les participants.</p>
<p>Vaclav Pech est employé par JetBrains, mais est impliqué, ainsi que Dierk König (cf plus loin) dans <a href="http://gpars.codehaus.org/Team">l&rsquo;équipe de développement </a> de <a href="http://gpars.codehaus.org/">GPars</a>, une librairie Groovy qui propose des abstractions de haut niveau pour programmer de manière parallèle en utilisant les patterns les plus modernes.</p>
<p>Vaclav commence par dire qu&rsquo;il va nous faire peur. Je pensais qu&rsquo;il allait nous sortir <a href="http://www.javaspecialists.eu/archive/Issue146.html">des horreurs comme on en rencontre que en programmation concurrente</a>. Il nous a juste montré qu&rsquo;avec un code très simple invoquant beaucoup de calculs, en ayant un quadri-processeur, double coeurs, notre programme n&rsquo;utilise qu&rsquo;un huitième de la ressource CPU disponible.</p>
<p>Selon lui, la plupart des programmes utilisant plusieurs coeurs le font par hasard.</p>
<p>Peut-on faire mieux ?</p>
<p>Il existe des patterns de conception modernes permettant de programmer du code essentiellement métier, en profitant du parallélisme.</p>
<p>Il y a une distinction entre parallélisme et concurrence :</p>
<ul>
<li>On parle de <em>parallélisme</em> quand il y a deux exécutions simultanées : il faut au moins deux processeurs, ou un processeur multi-coeur;</li>
<li>On parle de <em>concurrence</em> quand il y a parallélisme ou émulation : pour le programmeur client, les problématiques sont semblables.</li>
</ul>
<p>Patterns de concurrence </p>
<ul>
<li>Map/Filter/Reduce</li>
<li>Fork/Join</li>
<li>Actors</li>
<li>Software Transactional Memory (STM)</li>
<li>Invocations asynchrones</li>
</ul>
<p>Les <em>invocations asynchrones</em> se font en utilisant, en Java, les Parallel*Array définis dans la spécification JSR166y. Comment ? Vous ne connaissez pas et ce n&rsquo;est pas dans votre JDK ? En réalité c&rsquo;est une API qui n&rsquo;a pas été inclue dans le JDK 6, et donc a été sortie de la JSR166, pour être incluse dans le JDK7 avec JSR166y.<br />
Le principe des ces invocations asynchrones est qu&rsquo;elles sont bloquantes de manière lazy, c&rsquo;est-à-dire qu&rsquo;on manipule des références vers le résultats d&rsquo;un calcul, mais tant qu&rsquo;on utilise pas le résultat du calcul, on n&rsquo;est pas bloqué (au sens verrou).</p>
<p>Les STM (Software transactional memory) sont à la manipulation d&rsquo;objets en mémoire ce que la transaction JTA est à l&rsquo;INSERT SQL (raccourcis opportun pour faire comme si j&rsquo;avais vraiment compris). Il faut faire très attention quand on fait des choses transactionnelles dans un contexte de concurrence (et donc encore plus dans un contexte de parallélisme, si vous avez suivis). Par ailleurs, il n&rsquo;y a rien de magique, l&rsquo;usage des transactions, quelqu&rsquo;en soient les objets pénalisent fortement les performances (création de logs, utilisation de verrous et synchronisation, scheduling &#8230;).</p>
<p>Je n&rsquo;entrerais pas plus dans le détail, dans ce billet, pour vérifier la validité de mes notes, mais j&rsquo;ai appris en vrac que :</p>
<ul>
<li>il existe des inter-blocages sympathiques (enfin, plus sympathiques que d&rsquo;autres: ceux qui se reproduisent de manière déterministe) !</li>
<li>les acteurs, n&rsquo;ont pas leur propres threads, ils interagissent avec le provider de thread (pool ou plus complexe)</li>
<li>la communication entre acteurs se fait par des messages immutables</li>
</ul>
<p>Le présentateur a pris le soin de préciser que la session s&rsquo;adressait à des développeurs Java, que la session de l&rsquo;après-midi sur GPars serait plus focalisée sur Groovy, mais que les exemples de code serait en Groovy, en Scala ou en Clojure, parce que les exemples en Java ne tiennent pas sur un slide !!!</p>
<p>Indépendamment des futurs API disponibles dans Java7, il existe des frameworks pour disposer de telles API. Par exemple, <a href="http://akkasource.org/">Akka</a>, très utilisé en Scala, est également utilisable en Java.</p>
<p><strong>Session technique : Harnessing the Power of HTML 5 WebSocket to Create Scalable Real-Time Applications, Peter Lubbers, Kaazing</strong></p>
<p>Le présentateur a fait parti du groupe d&rsquo;experts qui ont établis la spécification des <a href="http://dev.w3.org/html5/websockets/">WebSockets</a> au sein du W3C. Il est employé par la société <a href="http://www.kaazing.com/">Kaazing</a> qui propose des solutions clients/serveurs pour utiliser les WebSockets.</p>
<p>Peter Lubbers commence par rappeler certains principes de HTTP, pour présenter pourquoi, pour certains usages, HTTP n&rsquo;est pas adapté et les WebSockets permettent de résoudre un pain-point :</p>
<ul>
<li>HTTP a été conçu initialement pour transférer des documents (pas des données, pas des applications);</li>
<li>HTTP est &laquo;&nbsp;half-duplex&nbsp;&raquo;, c&rsquo;est-à-dire que le flux de données est monodirectionnel à un moment donné;</li>
<li>C&rsquo;est compliqué de faire du temps réel, pour différentes raisons et limitations.</li>
</ul>
<p>Quand on a pas de WebSockets, on utilise les techniques AJAX et Comet pour palier à ces limitation. Mais</p>
<ul>
<li>Cela ne résoud pas réellement la problématique du temps réel;</li>
<li>Pour simuler du temps réel, on utilise souvent des techniques de polling ou de long-polling (COMET ou reverse AJAX, c&rsquo;est-à-dire qu&rsquo;on fait un ping régulièrement en AJAX)</li>
<li>COMET est un hack (une requête reçue devrait avoir une réponse de manière synchrone), qui manque donc de spécifications et de standards.</li>
</ul>
<p>Il résume &laquo;&nbsp;Use COMET to spell COMplExiTy&nbsp;&raquo;, parce qu&rsquo;il n&rsquo;y a pas de socket nativement.</p>
<p>A propos de la technique du <em>polling</em>, qui consiste à pinger régulièrement le serveur, il parle de &laquo;&nbsp;temps réel approximatif&nbsp;&raquo;, ce n&rsquo;est qu&rsquo;une simulation, et que trop de connections sont établies.  </p>
<p>La technique du <em>long polling</em> consiste faire en sorte que le client envoie une requête HTTP, que le serveur réponde partiellement, sans fermer la réponse. Eventuellement, de temps à autre, il y a fermeture de la réponse puis émission d&rsquo;une nouvelle requête, de manière à supporter les proxies qui ferment automatiquement les réponses au bout d&rsquo;un certain time out. Cela fonctionne, mais il y a un overhead inutile de données dans les en-têtes de requête et de réponse, de plus c&rsquo;est un hack (d&rsquo;après la spécification, une requête HTTP attend une réponse synchrone).</p>
<p>Le streaming est encore plus efficace, mais parfois problématique. Il peut y avoir des complications avec les proxies et les firewalls. Les réponses doivent être flushées périodiquement. Il y a des problématiques de limitations dues au nombre de connexions maximale que le navigateur autorise pour un même domaine (et la navigation par onglets).</p>
<p>Il peut y avoir avec ces techniques, des overhead allant jusqu&rsquo;à 2 kilo octets par requête HTTP.</p>
<p>Si on imagine comme cas d&rsquo;utilisation 1000 clients (application de chat ou de jeu en ligne) qui ping toute les secondes (Polling), il y a une sur-utilisation d&rsquo;un méga par seconde.</p>
<p>Kaazing a implémenté un serveur TCP pour la compatibilité avec les WebSockets HTML5. L&rsquo;API des WebSocket fait partie de HTML5, spécifié par le W3C et le protocole WebSocket est spécifié par l&rsquo;IETF.</p>
<ul>
<li>Ce sont des sockets plein texte, full-duplex</li>
<li>Elles permettent une communication avec un host distant.</li>
<li>Elles traversent les firewalls, proxies et routeurs de manière (à peu près) transparentes.</li>
<li>Elles utilisent un port HTTP.</li>
</ul>
<p>Il y a deux schémas de protocoles pour les WebSockets, à savoir ws et wss, le second pour la version sur TLS (WebSocket Secure). Il y a un handshake établi en HTTP. Pour établir une connexion WebSocket, le navigateur envoie une requête HTTP, avec un en-tête &laquo;&nbsp;Upgrade: WebSocket&nbsp;&raquo;.</p>
<p>Exemple:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Requête: <br />
GET /websocketresource HTTP/1.1 <br />
Host: example.com <br />
Connection: Upgrade <br />
Upgrade: WebSocket <br />
Origin: http://example.com <br />
&nbsp;<br />
Réponse: <br />
HTTP/1.1 101 WebSocket Protocol Handshake <br />
Upgrade: WebSocket <br />
Connection: Upgrade</div></div>
<p>Une fois l&rsquo;upgrade obtenu, il peut y avoir des communications dans les deux sens. Le modèle programmatique, à ce moment devient celui des sockets asynchrones.</p>
<p>Dans les browser le supportant, on a une API Javascript, pour manipuler ces WebSockets:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;if (window.WebSocket) { <br />
&nbsp; &nbsp;var mySocket = new WebSocket(&quot;ws://www.example.com/websocketresource&quot;); <br />
&nbsp; &nbsp;mySocket.onopen = function(evt) { <br />
&nbsp; &nbsp; &nbsp;alert(&quot;conection open&quot;); <br />
&nbsp; &nbsp;}; <br />
&nbsp;<br />
&nbsp; &nbsp;mySocket.send(&quot;HTML5 Web sockets rockes&quot;); <br />
&nbsp; &nbsp;mySocket.close(); <br />
&nbsp;}</div></div>
<p>Evidemment, cet exemple n&rsquo;a aucun sens, on n&rsquo;ouvre pas une socket pour envoyer un unique message et fermer la connexion quand on peut envoyer des requêtes HTTP.</p>
<p>Les navigateurs actuels supportant les WebSockets sont les suivants :</p>
<ul>
<li>Chrome 4.0+</li>
<li>WebKit nightly builds</li>
<li>Planned for Opera and Firefox</li>
</ul>
<p>Il semblerait que ce ne soit pas dans la prochaine version de IE (parce qu&rsquo;ils ne l&rsquo;ont pas annoncé)</p>
<p>L&rsquo;inspecteur natif de Chrome permet une inspection des WebSockets.</p>
<p>Un certain nombre de librairies permettent d&rsquo;établir une dégradation gracieuse (gracefull degradation), par une émulation des WebSockets (entre autre la &lsquo;classe&rsquo; Javascript WebSocket est créée) : </p>
<ul>
<li>Kaazing Websocjet gateway;</li>
<li>Flash WebSocket Emulation: web-socket-js sur github</li>
</ul>
<p>Parmi les usages envisageables on a: </p>
<ul>
<li>XMPP, Jabber;</li>
<li>Stomp, AMQP;</li>
<li>Protocole de jeux spécifiques (voire propriétaires);</li>
<li>Binaires;</li>
<li>Tout protocole au dessus de TCP;</li>
<li>LE navigateur devient un citoyen de première classe au niveau des protocoles de communication.</li>
</ul>
<p>Parmi les exemples en production, on a :</p>
<ul>
<li>des applications financière temps réel;</li>
<li>un portage par Google de Quake II.</li>
</ul>
<p>Les WebSockets peuvent ne pas bien passer les répartiteurs de charges, proxies et firewalls de niveau 7 (HTTP, applicatifs). Par contre, la version sur TLS passe sans problème. Il est donc possible d&rsquo;utiliser wss pour être sûr de passer en environnement inconnu (cela ne me semble pas satisfaisant intellectuellement).</p>
<p>Il finit en donnant un exemple de site réel de poker en ligne, dont la réactivité est déjà satisfaisante, puis montre la version de Kaazing, (&laquo;&nbsp;Kaasino&nbsp;&raquo; ha! ha! ha!), dont la réactivité est effectivement impressionnante.</p>
<p><strong>Session technique : GPars : Parallel programming concepts for the jvm in Groovy, Dierk Koenig</strong></p>
<p>L&rsquo;objectif de cette session est de présenter <a href="http://gpars.codehaus.org/">GPars</a>, une API Groovy permettant d&rsquo;utiliser la plupart des patterns dont il était question dans la première session.</p>
<p>Il a fait une démonstration pour les concepts suivants  : Fork/Join, Map/Filter/Reduce, Dataflow et a montré le code sur des slides pour les Agents et les Actors.</p>
<p>En fonction de l&rsquo;API utilisée, la coordination est :</p>
<ul>
<li>Pour le Fork/Join et le Map/Filter/Reduce: predefinie;</li>
<li>Pour les Dataflow: implicite;</li>
<li>pour les Agents: déléguée;</li>
<li>Pour les Actors: explicite.</li>
</ul>
<p>Les nouvelles API essaient de faire en sorte que la coordination ne puisse être erronée.</p>
<p>Le principe avec les Data Flow est que si ça marche en developpement (ou en test), ça marche en production (coordination implicite).</p>
<p>Il y a également une API pour les CSP (Communication Sequence Processing) et il devrait prochainement en avoir une pour les STM (Software Transaction in Memory).</p>
<p>Avec l&rsquo;approche Map/Filter/Reduce, on a plus de contrôle sur l&rsquo;ordonnancement qu&rsquo;avec le Fork/Join.</p>
<p>Les Agents sont une façon de proteger les objets (pour assurer une contrainte de manière concurrente). Souvent une variable d&rsquo;une instance d&rsquo;un agent est appelée &laquo;&nbsp;guard&nbsp;&raquo;.</p>
<p>Le présentateur conclus que :</p>
<ul>
<li>GPars rend la programmation concurrente simple;</li>
<li>Il faut apprendre les concepts;</li>
<li>Groovy et Java sont prêts pour les nouveaux défis (multicoeurs, &#8230;)</li>
</ul>
<p><strong>Session technique : Cloud Computing with Scala and GridGain, Nikita Ivanov, GridGain</strong></p>
<p>Avec la session suivante, on passe de Groovy à Scala. Le présentateur montre l&rsquo;usage d&rsquo;une API développée en Scala pour non seulement rédiger du code qui sera déployé sur le Cloud, mais également pour configurer les instances des noeuds de son cloud et pour déployer automatiquement son code sur les différents noeuds, pour faire du grid computing.</p>
<p>Le présentateur explique qu&rsquo;ils ont choisit de faire l&rsquo;API en Scala pour les raisons suivantes:</p>
<ul>
<li>Langage scalable</li>
<li>Post-fonctionnel</li>
<li>Performances équivalentes à Java</li>
<li>Statiquement typé</li>
<li>Pleinement compatible avec Java</li>
</ul>
<p>Gridgain a étudié une série de language avant de choisir Scala. L&rsquo;avantage le plus important de Scala à leurs yeux est que l&rsquo;on peut ajouter des mots-clés TOUT EN RESTANT statiquement typé.</p>
<p>Il a dit plus ou moins que Martin Odersky avait créé Scala parce qu&rsquo;on lui avait dit que ce ne serait pas possible de le faire.</p>
<p>Il a introduit également Scala<strong>r</strong>, un DSL de cloud computing Scala basé sur Gridgain.</p>
<p>A suivit une séance de codage en direct, dans lequel il créé une application de grid computing en quelques minutes, sans copier-coller, sans code pré-compilé ou pré-buildé, sans configuration spécifique. Dans un premier temps, il a utilisé juste GridGain, puis avec Scala<strong>r</strong> il a fait la même chose avec un mot clé additionnel qui simplifie encore la syntaxe (en gros une ligne de code en moins de 80 colonnes suffit pour une application de grid computing).</p>
<p><strong>Session technique : How Java Powers Large Online Retail Sites, Robert Brazile ATG</strong></p>
<p>Cette session n&rsquo;était pas vraiment technique, au sens le plus strict. ATG est un des fournisseurs de solution de e-commerce les plus importants au monde. Ce sont également des early adopter de Java. En 1996, ils utilisaient le serveur d&rsquo;application Dynamo (rien à voir avec la solution de persistance NoSQL d&rsquo;Amazon).</p>
<p>La sessions concernait essentiellement les problématiques auxquelles ils ont été confrontés, des retours d&rsquo;expérience, des chiffres que je n&rsquo;ai pu noter de manière complète, donc je préfère ne pas énumérer. Je vais uniquement énumérer les tendances business et technologiques qu&rsquo;ils suivent :<br />
Business:</p>
<ul>
<li>Mobile</li>
<li>Remarque: dans les pays émergents, le mobile est le seul vecteur de e-commerce</li>
<li>Social networks</li>
<li>Convergence of these and other channels</li>
<li>Growing use in the developing world</li>
<li>ease of use in the business user</li>
<li>spawning of many smaller sites rather that changing big one</li>
</ul>
<p>Technologiques:</p>
<ul>
<li>Virtualization/Cloud computing</li>
<li>NoSQL</li>
<li>Scripting (PHP, Ruby, Groovy, Scala, Clojure, Erlang, &#8230;)</li>
<li>Framework (Rails, Grails, Lift, &#8230;)</li>
<li>Multi-core, more concurency, STM</li>
</ul>
<p><strong>Jazoon Rookies</strong></p>
<p>Il s&rsquo;agissait de trois conférences réalisées par des conférenciers débutants, auxquels l&rsquo;opportunité de faire une présentation auprès d&rsquo;un auditoire international était offert.</p>
<p>La première conférence était une présentation de l&rsquo;API OpenSocial. Le sujet est très à la mode, mais je ne suis pas sûr que cela valait le coup de faire une conférence. C&rsquo;est un standard. On prend les spécifications et on sait implémenter.</p>
<p>La seconde portait sur la problématique du facteur humain et sa prise en compte dans les réalisations logicielles d&rsquo;un point de vue sécurité. La forme de la conférence était originale, avec une sorte d&rsquo;histoire qui mettait en parallèle des chevaliers &#8230; avec &#8230; j&rsquo;ai oublié. Impossible de prendre des notes. La présentation était bien mise en scène, mais en tant qu&rsquo;auditeur, on perd le fil. Même si j&rsquo;ai compris le message final, j&rsquo;ai perdu le cheminement de la présentation.</p>
<p>La troisième conférence voulait démontrer l&rsquo;intérêt de l&rsquo;outil <em>Eclipse Memory Analyzer</em> récemment disponible avec Eclipse. La présentation était essentiellement deux démo. Prévoir une démo dans une présentation est risqué. Quand c&rsquo;est la première présentation, c&rsquo;est vraiment courageux. De surcroit, l&rsquo;infrastructure était défaillante (exceptionnel depuis deux jours à Jazoon &#8211; sauf pour le WIFI hier. Tiens, je vous ai dit qu&rsquo;aujourd&rsquo;hui c&rsquo;était bon ?). Bref, il s&rsquo;est débrouillé comme un chef, sauf qu&rsquo;il a manqué quelques explications préalables à sa démo pour nous indiquer l&rsquo;intérêt de sa deuxième démo. (en gros Eclipse Memory Analyzer analyze les fichiers dump.hprof et propose une vue qui permet assez facilement de déterminer les memory leaks et dans la seconde démo, il le faisait à distance sur un serveur de production, mais sous des hypothèses que je n&rsquo;ai pas comprises).</p>
<p><strong>Conclusion</strong></p>
<p>Cette journée était beaucoup technique et intéressante (subjectivement) qu&rsquo;hier, mais je commence à saturer. Je comprend certain compatriotes qui ont pris le chemin du retour ce soir. A demain pour de nouvelles aventures !</p>
<p>Si vous avez des commentaires, <a href="http://www.developpez.net/forums/d841589/java/communaute-java/jazoon10-1er-3-juin-y-va-quen-pensez/">rendez-vous sur le forum</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Première journée de conférences &#8211; Mardi 01/06</title>
		<link>https://blog.developpez.com/java/p8963/1-news/evenements-java/jazoon/jazoon2010_java_premiere_journee_de_conf_06</link>
		<comments>https://blog.developpez.com/java/p8963/1-news/evenements-java/jazoon/jazoon2010_java_premiere_journee_de_conf_06#comments</comments>
		<pubDate>Tue, 01 Jun 2010 23:03:55 +0000</pubDate>
		<dc:creator><![CDATA[dissert]]></dc:creator>
				<category><![CDATA[Jazoon]]></category>
		<category><![CDATA[Jazoon 2010]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je me suis rendu à Jazoon 2010 (première fois que j&#8217;y vais) et vais me faire en quelque sorte l&#8217;envoyé spécial de Developpez.com. D&#8217;après d&#8217;autres participants, le nombre de personnes présentes est beaucoup moins important que l&#8217;année dernière, sans doute &#8230; <a href="https://blog.developpez.com/java/p8963/1-news/evenements-java/jazoon/jazoon2010_java_premiere_journee_de_conf_06">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Je me suis rendu à Jazoon 2010 (première fois que j&rsquo;y vais) et vais me faire en quelque sorte l&rsquo;envoyé spécial de Developpez.com.</p>
<p>D&rsquo;après d&rsquo;autres participants, le nombre de personnes présentes est beaucoup moins important que l&rsquo;année dernière, sans doute 400 personnes à peu près contre plus de 600 l&rsquo;année dernière. Est-ce que ça reflète une diminution de budget de la part de certaines boites ou un flou dans l&rsquo;implication des Javaïstes du aux incertitudes suite au rachat de Sun par Oracle ?</p>
<p>Certains sujets sont bien présents en terme de nombre de sessions :</p>
<ul>
<li>Onze sessions parlent de Java EE 6 ou d&rsquo;une partie (Servlet 3.0, JPA 2.0, JSF 2.0, &#8230;), mais on pouvait s&rsquo;en douter, puisque la spécification est sortie le 10 décembre 2009;</li>
<li>Cinq sessions parlent d&rsquo;OSGi;</li>
<li>Six évènements sont relatifs à la sécurité;</li>
<li>Huit évènements (sessions ou keynotes) sont relatifs à la conception ou à l&rsquo;artisanat logiciel (software craftmanship).</li>
</ul>
<p><span id="more-277"></span></p>
<p>D&rsquo;un point de vue infrastructure, l&rsquo;organisation est impeccable, à part le WIFI qui est passé de mauvais, pendant les trois quarts de la journée, à inexistant à partir de 16 heure (c&rsquo;était comique, d&rsquo;ailleurs, puisque les twits #Jazoon étaient affichés, et que l&rsquo;un des derniers se plaignait justement du mauvais réseau).</p>
<p><strong>Keynote d&rsquo;ouverture : Java SE and JavaFX : the road Ahead</strong></p>
<p>Nous n&rsquo;avons évidement pas eu droit à James Goslin cette année, mais Oracle nous a quand même envoyé un représentant: <a href="http://jazoon.com/Conference/Tuesday/Coward">Danny Coward</a>.</p>
<p>Oui, voilà voilà, Danny Coward, est Chief Architect, Client Software chez Sun Microsystems, ce qui signifie qu&rsquo;il connait bien, entre autres JavaFX.</p>
<p>Il a commencé sur un historique de Java, pour continuer sur l&rsquo;avenir et évoquer les nouveautés promises dans Java7 (qui ont été largement évoquées sur Developpez.com).<br />
Il explique également que le JDK est devenu trop important et qu&rsquo;il y a un refactoring important interne au JDK et que c&rsquo;est essentiellement pour ces besoins internes qu&rsquo;est apparu le besoin de modularité (et la JSR 294 et le project Jigsaw).</p>
<p>Danny Coward, en rappelant que Java a officiellement 15 ans depuis le 14 mai dernier, a montré <a href="http://www.youtube.com/watch?v=Ahg8OBYixL0">une vidéo dans laquelle James Gosling montre un PDA en 1992 Star7 (Green project)</a>. </p>
<p>Il part de cette vidéo pour prouver qu&rsquo;il y avait déjà des interactions modernes (il évoque le multitouch) avec des widgets à l&rsquo;époque, dans les labo de Sun.<br />
Puis il passe à JavaFX, pour lequel il énumère les versions avec les apports et indique qu&rsquo;aujourd&rsquo;hui JavaFX est rapide et a une quantité phénoménale de widgets.</p>
<p>Ma faible connaissance de JavaFX me fait peut-être rapporter les choses de manière incorrecte, mais j&rsquo;ai noté :</p>
<ul>
<li>qu&rsquo;il y a eu 4 releases en 18 mois ;</li>
<li>avec la version 1.3, il y a eu beaucoup de nouveaux widgets ;</li>
<li>avec la version 1.2 il y a eu un support des téléviseurs ;</li>
<li>dans la version à venir, ce support des téléviseurs va aller en s&rsquo;améliorant (navigation), et il y aura un émulateur comme outil fournit dans le JDK.
</li>
</ul>
<p>Il a fini en montrant un usage réel de JavaFX pour une application web utilisée dans le cadre des jeux Olympiques de Vancouver, avec beaucoup de widgets dans tous les sens.</p>
<p><strong>Les sessions du jour</strong></p>
<p>Je ne vais pas détailler les sessions que j&rsquo;ai suivies, pour dormir un peu avant la seconde journée, mais en donner un bref résumé.</p>
<p>J&rsquo;ai suivis trois sessions sur la sécurité :</p>
<ul>
<li>Pattern Driven Security Design, for Web Tier, par Manish Kumar Maheshwari<br />
VeriSign Services : Il ne s&rsquo;agissait que de revenir sur les patterns de JAAS et/ou d&rsquo;évoquer leurs alternatives à base de framework, en particulier Spring Security</li>
<li>Framework &amp; Security : how web applications frameworks kill your security scanning : Christian Hang Armorize Technologies<br />
Cette session parlait essentiellement des outils de SCA (Static Code Analysis) qui essaient de détecter les failles de sécurité dans votre code pour que vous les corrigiez. Il explique les mécanismes qu&rsquo;utilisent ces CSA et montre qu&rsquo;il y a des problèmes quand le code qui est analysé utilise de la reflexion, ou des suites d&rsquo;invocation avec propagation de contexte (lors d&rsquo;un forward de requête par exemple). C&rsquo;est évidemment le cas quand vous utilisez un framework comme Spring, Struts, &#8230; Il montre enfin quelque pistes pour essayer de rendre les SCA compatibles avec l&rsquo;usage des frameworks.</li>
<li>Security as intrisinc part of any Java EE developement, Wolfgang Giersche : Parmi les limites de JAAS, il y a le fait que les rôles sont des chaines de caractères prévues à l&rsquo;avance et que l&rsquo;on ne peut en rajouter. Le speaker montre ici qu&rsquo;il y a des patterns et des efforts de standardisation (XSPA Profile for XACML) de définition sémantique de politique d&rsquo;accès, qui permettent de définir applicativement des nouveaux rôles, avec une définition dynamique des habilitations.</li>
</ul>
<p>J&rsquo;ai suivi ensuite une session de Neal Ford sur les DSL. Il nous a appris entre autre que Java n&rsquo;est pas forcément pertinent pour faire des DSL internes, c&rsquo;est-à-dire des DSL qui s&rsquo;expriment en Java. On peut par contre, faire un programme en Java, qui interprète un DSL en Groovy par exemple.</p>
<p>La dernière session suivie par moi de la journée était menée par Jevgeni Kabanov, le CTO de ZeroTurnaround, la société qui édite JRebel, l&rsquo;outil magique qui modifie le runtime en même temps que vous modifiez votre code, à la barbe de la JVM. Cette session était intitulée &laquo;&nbsp;Do you really get class loader&nbsp;&raquo;.</p>
<p>En ce qui me concerne, je croyais que c&rsquo;était le cas, mais j&rsquo;ai quand même appris des choses très intéressantes.<br />
Jevgeni a dit qu&rsquo;il est amoureux des classloaders.</p>
<p>Il explique que l&rsquo;exception qui est faite, dans le cas des serveurs d&rsquo;application qui fait qu&rsquo;une classe est recherchée en premier dans les classloaders des webapps avant les classloaders parent est source de nombre de bugs et il nous le montre dans plusieurs cas unitaires.<br />
Il nous recommande de reconnaître les différentes exceptions et de savoir comment elles peuvent arriver (eg. java.lang.LinkageError) et penser qu&rsquo;on peut accéder au chemin d&rsquo;une classe en faisant :</p>
<p><code class="codecolorer text default"><span class="text">&nbsp;this.getClass().getClassLoader().getRessource(MaClasseACharger.class.getName()).replace('.', &quot;/&quot;)</span></code></p>
<p>et souvent on peut récupérer le classpath en faisant :</p>
<p><code class="codecolorer text default"><span class="text">&nbsp;((URLClassLoader)getClass().getClassLoader()).getURLs()</span></code></p>
<p>Il nous a montré aussi comment reproduire (facilement) les leaks memory que l&rsquo;on obtient sous Tomcat.</p>
<p><strong>Keynote de fermeture : 97 Things Every Programmer should know, Kevlin Henney</strong></p>
<p>Kevlin Henney a d&rsquo;abord passé un peu de temps à expliquer pourquoi et comment il avait écrit ce livre, avant d&rsquo;aborder un certain nombre d&rsquo;items.</p>
<p>Il a écrit ce bouquin pour savoir ce que les autres pensent, par rapport au codage, puis parce qu&rsquo;il s&rsquo;est rendu compte qu&rsquo;en demandant les dix items les plus importants on passait à côté de beaucoup de choses.</p>
<p>Pourquoi 97 ? Il répond souvent que c&rsquo;est parceque 97 est premier, puis que ce livre fait tout bêtement parti d&rsquo;une série de livre qui s&rsquo;appellent tous comme cela.</p>
<p>C&rsquo;est à ce moment que je suis tombé en rade de batterie, donc je vous laisse découvrir <a href="http://programmer.97things.oreilly.com/wiki/index.php/Contributions_Appearing_in_the_Book">la liste sur le wiki du livre</a>.</p>
<p>Il a évoqué lors de cette énumération le fait que <a href="http://twitpic.com/1t21b">le singleton sur cette image</a> a été souvent meilleur que le pattern singleton.</p>
<p>Maintenant je vais me reposer pour être en forme pour vous prendre en notes les conférences de demain.</p>
<p>N&rsquo;hésitez pas à partager vos impressions ou vos retours via le forum : http://www.developpez.net/forums/d841589/java/communaute-java/jazoon10-1er-3-juin-y-va-quen-pensez/</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Une annonce de James Gosling (papa Java) pour les membres de Developpez.com</title>
		<link>https://blog.developpez.com/java/p7700/1-news/evenements-java/javaone/une_annonce_de_james_gosling_papa_java_p</link>
		<comments>https://blog.developpez.com/java/p7700/1-news/evenements-java/javaone/une_annonce_de_james_gosling_papa_java_p#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:13:18 +0000</pubDate>
		<dc:creator><![CDATA[X-plode]]></dc:creator>
				<category><![CDATA[JavaOne]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dois-je présenter la personne qui grâce à elle, les développeurs Java existe ? Voici l&#8217;annonce rien que pour vous : James Gosling]]></description>
				<content:encoded><![CDATA[<p>Dois-je présenter la personne qui grâce à elle, les développeurs Java existe ?</p>
<p>Voici l&rsquo;annonce rien que pour vous : <a href="http://www.youtube.com/watch?v=_cVa0fYcKGo">James Gosling</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La rubrique Java héberge désormais des sites web Java</title>
		<link>https://blog.developpez.com/java/p7431/1-news/la_rubrique_java_heberge_desormais_des_s</link>
		<comments>https://blog.developpez.com/java/p7431/1-news/la_rubrique_java_heberge_desormais_des_s#comments</comments>
		<pubDate>Thu, 02 Apr 2009 07:20:24 +0000</pubDate>
		<dc:creator><![CDATA[Ricky81]]></dc:creator>
				<category><![CDATA[1. News]]></category>
		<category><![CDATA[Java User Group]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Bonjour, Après la mise en ligne et l&#8217;enrichissement de JavaSearch (idée originale de Laurent Perron, maintenu par Baptiste Wicht), l&#8217;équipe Java a le plaisir de vous annoncer ce nouveau service que nous mettons à dispositions gratuitement à nos partenaires et &#8230; <a href="https://blog.developpez.com/java/p7431/1-news/la_rubrique_java_heberge_desormais_des_s">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Après la mise en ligne et l&rsquo;enrichissement de <a href="http://javasearch.developpez.com/">JavaSearch</a> (idée originale de Laurent Perron, maintenu par Baptiste Wicht), l&rsquo;équipe Java a le plaisir de vous annoncer ce nouveau service que nous mettons à dispositions gratuitement à nos partenaires et contributeurs bénéficiant déjà d&rsquo;un <a href="http://www.developpez.com/hebergement/">hébergement classique</a>.</p>
<p>Parmi les heureux bénéficiaires, on retrouve notamment 2 JUGs :</p>
<ul>
<li><a href="http://www.toursjug.org/" target="_blank">Le Tours JUG</a></li>
<li><a href="http://www.lyonjug.org/" target="_blank">Le Lyon JUG</a></li>
</ul>
<p>Ces 2 JUGs ont choisi XWiki comme outil, et l&rsquo;équipe Java leur met à disposition, tout comme le fait XWiki SAS pour l&rsquo;ensemble des JUGs, à la seule nuance près que nous ne nous limitons (limiterons) pas à cette technologie et accompagnerons ces communautés tout au long de leur évolution et ceci quelle que soit la solution logicielle retenue (pourvu qu&rsquo;elle repose sur Java).<br />
Avis aux autres JUGs francophones naissants ou déjà existants, n&rsquo;hésitez pas à nous contacter via le forum ou par email.</p>
<p>Mais l&rsquo;hébergement Java prend également une autre forme : celle de la mise en ligne d&rsquo;applications de type <strong>démo</strong><br />
Vous trouverez une première démo illustrant <a href="http://www.developpez.net/forums/d717308/java/communaute-java/creation-application-type-crud-jsf-jpa/" target="_blank">l&rsquo;article CRUD avec JSF et JPA de Jawher Moussa</a> à l&rsquo;adresse suivante : <a href="http://demo.java.developpez.com/crud-jsf-jpa/">http://demo.java.developpez.com/crud-jsf-jpa/</a> (ne cherchez pas, il n&rsquo;y a rien pour l&rsquo;instant sur la home du domaine demo). Cette possibilité sera désormais offerte à tous les rédacteurs de l&rsquo;équipe Java souhaitant illustrer leurs publications par des exemples concrets.</p>
<p>Je tiens tout particulièrement à remercier <a href="http://www.developpez.net/forums/u9119/lunatix/" target="_blank">lunatix</a>, administrateur bénévole de cet hébergement, sans qui tout ceci ne serait possible, ainsi que les membres de <a href="http://java.developpez.com/equipe/">l&rsquo;équipe bénévole Java</a> participant à ce projet, mais également les administrateurs de Developpez.com pour l&rsquo;aide à la mise en place.</p>
<p>Si vous avez des remarques constructives, l&rsquo;envie de participer à ce projet en apportant vos idées et votre aide, n&rsquo;hésitez pas à revenir vers nous que ce soit ici, par message privé sur le forum, ou par mail, car nous ne nous arrêterons bien sur pas là <img src="https://blog.developpez.com/java/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /></p>
<p>Pour la rubrique Java<br />
Eric</p>
<p><a href="http://www.developpez.net/forums/d717520/java/communaute-java/rubrique-java-heberge-desormais-sites-web-java/" target="_blank">Vos commentaires</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Soirée GlassFish v3 et Java EE 6 au JUG Nantes</title>
		<link>https://blog.developpez.com/java/p7316/3-technologie-j2ee/soiree_glassfish_v3_et_java_ee_6_au_jug</link>
		<comments>https://blog.developpez.com/java/p7316/3-technologie-j2ee/soiree_glassfish_v3_et_java_ee_6_au_jug#comments</comments>
		<pubDate>Thu, 05 Mar 2009 12:28:03 +0000</pubDate>
		<dc:creator><![CDATA[Ricky81]]></dc:creator>
				<category><![CDATA[3. Technologie J2EE]]></category>
		<category><![CDATA[Java User Group]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[L&#8217;incontournable Alexis Moussine-Pouchkine (blog), évangéliste Java chez Sun Microsystems, animera le jeudi 12 mars une session organisée par le Nantes JUG. Cette session de 2h, qui aura lieu à l&#8217;Ecole des Mines de Nantes, est intitulée GlassFish v3, en route &#8230; <a href="https://blog.developpez.com/java/p7316/3-technologie-j2ee/soiree_glassfish_v3_et_java_ee_6_au_jug">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>L&rsquo;incontournable <em>Alexis Moussine-Pouchkine</em> (<a href="http://blogs.sun.com/alexismp/" target="_blank">blog</a>), évangéliste Java chez Sun Microsystems, animera le jeudi 12 mars une session organisée par le <strong>Nantes JUG</strong>.</p>
<p>Cette session de 2h, qui aura lieu à l&rsquo;Ecole des Mines de Nantes, est intitulée <em>GlassFish v3, en route pour Java EE 6 et le développement Java indolore!</em>. Elle sera certainement très riche en information et l&rsquo;occasion pour les heureux participants de découvrir l&rsquo;environnement modulaire basé <strong>GlassFish v3 Prelude</strong> sur OSGi.</p>
<p>Pour vous inscrire (actuellement 23 inscrits !) suivez ce <a href="http://jugevents.jugpadova.it/jugevents/event/registration.form?event.id=14277" target="_blank">lien</a></p>
<p>N&rsquo;oubliez pas qu&rsquo;<a href="http://www.developpez.net/forums/u53233/alexismp/" target="_blank">Alexis</a> est présent sur les forums Developpez et se fera un plaisir de répondre à vos questions techniques dans le forum <strong><a href="http://www.developpez.net/forums/f530/java/serveurs-dapplication-java-java-ee/glassfish/" target="_blank">GlassFish</a></strong>.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Devox J4</title>
		<link>https://blog.developpez.com/java/p6923/1-news/devox_j4</link>
		<comments>https://blog.developpez.com/java/p6923/1-news/devox_j4#comments</comments>
		<pubDate>Thu, 11 Dec 2008 13:02:38 +0000</pubDate>
		<dc:creator><![CDATA[christopheJ]]></dc:creator>
				<category><![CDATA[1. News]]></category>
		<category><![CDATA[Devoxx]]></category>
		<category><![CDATA[Devoxx 2008]]></category>
		<category><![CDATA[Événements Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ce matin c&#8217;est encore Keynote. Le Keynote commence par une présentation de Joshua Bloch, l&#8217;auteur du livre &#171;&#160;Java Efficace&#160;&#187;. C&#8217;est vraiment un speaker doué pour faire passer simplement un message complexe. Il a présenté quelques cas issus de son livre &#8230; <a href="https://blog.developpez.com/java/p6923/1-news/devox_j4">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ce matin c&rsquo;est encore Keynote.</p>
<p>Le Keynote commence par une présentation de Joshua Bloch, l&rsquo;auteur du livre &laquo;&nbsp;Java Efficace&nbsp;&raquo;. C&rsquo;est vraiment un speaker doué pour faire passer simplement un message complexe. Il a présenté quelques cas issus de son livre : les collections et notamment l&rsquo;utilisation de super et extends dans les Generics., les bonnes pratiques sur les énumerations et enfin un tips sur la Lazy Initialisation.</p>
<p>Dans la seconde partie du keynote, Mark Reinhold a parlé de Java 7. La modularisation de Java avec l&rsquo;abandon de la JSR 277 pour le projet Jigsaw qui sera compatible avec OSGi. Il a aussi parlé de ce qui pourrait être et ne sera pas dans Java 7. Dans les élus on trouve la modularisation (JSR 294 + Jigsaw), les langages dynamiques (JSR 292), new new I/O (JSR 203 avec enfin une vraie API pour le filesystem), et quelques changement du langages (JSR à determiner). Ces changements sont le safe rethrow, l&rsquo;inférence de type, le multicatch. Swing n&rsquo;est pas mort, il y aura aussi le Swing Application Framework (JSR 296).</p>
<p><span id="more-293"></span></p>
<p>Enfin, autre sujet polémique, il y aura un Forward port des fonctions de Java 6u10 dans Open JDK ( Java Kernel, QuickStart, plugin&#8230;)<br />
Dans les changements plus petits on trouve un upgrade de l&rsquo;architecture du ClassLoader, support Unicode 5, des changements à Swing (JXLayer, DataPicker et peut être le CSS Styling).</p>
<p>Il y aura aussi des améliorations de performances de la JVM (G1 Garbage collector, compressed Pointer 64 Bits, Multiple Virtual Machine&#8230;).</p>
<p>Pour les améliorations ne venant pas de SUN, il y aura les annotations sur les types Java (JSR 308 avec son @NonNull), et les améliorations à la concurrence et aux Collections de Doug Lea et Josh Bloch.</p>
<p>Pour ce que l&rsquo;on ne trouvera pas dans Java7, il y aura les closures (deux ans de discussions n&rsquo;ont pas permis d&rsquo;atteindre un accord), first-class properties, les &laquo;&nbsp;reifed generics&nbsp;&raquo;, la surcharge d&rsquo;opérateur. Bean Binding (JSR 295) est aussi exclu car cela devient trop complexe. Cela tombera sans doute en faveur d&rsquo;une solution plus simple comme le bind de JavaFX.</p>
<p>Enfin le plus important la sortie est pour début 2010.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Devoxx J3</title>
		<link>https://blog.developpez.com/java/p6922/1-news/devoxx_j3</link>
		<comments>https://blog.developpez.com/java/p6922/1-news/devoxx_j3#comments</comments>
		<pubDate>Thu, 11 Dec 2008 11:00:21 +0000</pubDate>
		<dc:creator><![CDATA[christopheJ]]></dc:creator>
				<category><![CDATA[1. News]]></category>
		<category><![CDATA[Devoxx]]></category>
		<category><![CDATA[Devoxx 2008]]></category>
		<category><![CDATA[Événements Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Pour l&#8217;ouverture du troisième jour, c&#8217;est le Keynote. On commence avec une démonstration de Human BeatBox, vraiment impressionnant. Il est intervenu aussi entre les différentes présentations. Ensuite, Stephan Janssen a pris la parole pour donner quelques infos sur la conférence. &#8230; <a href="https://blog.developpez.com/java/p6922/1-news/devoxx_j3">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Pour l&rsquo;ouverture du troisième jour, c&rsquo;est le Keynote. On commence avec une démonstration de Human BeatBox, vraiment impressionnant. Il est intervenu aussi entre les différentes présentations. </p>
<p>Ensuite, Stephan Janssen a pris la parole pour donner quelques infos sur la conférence.<br />
L&rsquo;équipe de JavaFX a pris la parole pour une présentation rapide des capacités de JavaFX et la liste de Danny Coward sur les 10 points important de JavaFX.<br />
Le second sponsor a parler était IBM pour l&rsquo;utilisation du RFID cette année  à la conférence. Cela permet de savoir quelles sont les présentations attirant les foules et quelles sont celles dont les gens s&rsquo;enfuient vite&#8230;..</p>
<p><span id="more-291"></span></p>
<p>Ma première session technique était sur les patterns de sécurité en entreprise. Après une présentation des failles classiques (injection sql, XSS&#8230;) nous avons eu une présentation des patterns comme l&rsquo;intercepteur (utilisé dans les Bean Validator de la JSR 303) ou le SAO (Single Access Point) et dont l&rsquo;opposé est SOA (Surely Open Access&#8230;)</p>
<p>Le midi, un petit Quicky sur l&rsquo;utilisation de Derby et les Tables Function ou Virtual Table qui permettent par exemple de rechercher rapidement les différences entre des fichiers de localisation.</p>
<p>Après la pause déjeuner, j&rsquo;ai commencé par une présentation sur &laquo;&nbsp;Effective Pairing&nbsp;&raquo;. Le présentateur faisait descendre sur scène des personnes ayant eu un problème avec le pair-programming pour le mettre en scène et ensuite parler du problème. J&rsquo;ai assisté au deux premières mises en scène, mais la mauvaise utilisation du micro rendait l&rsquo;expérience difficile. De plus le speaker présentait la difficulté rencontrée mais ne donnait pas vraiment de solution&#8230;.</p>
<p>J&rsquo;ai donc fuit la présentation après 20 minutes pour aller errer du coté des stands. J&rsquo;ai alors discuté avec VIncent Massol qui m&rsquo;a fait une présentation de Xclipse et des dernières nouveautés de XWiki depuis le repository&#8230;.. Il y a vraiment des nouveautés puissantes sur lesquelles je prendrai le temps de revenir.</p>
<p>Comme 2009 est aussi l&rsquo;année de Android, je suis allé voir Romain Guy pour sa présentation sur &laquo;&nbsp;filthy rich client with Android&nbsp;&raquo;. Peu d&rsquo;effets cette année car il a passé plus de temps à expliquer l&rsquo;API de Android notamment les différences avec celle de Swing.</p>
<p>Enfin j&rsquo;ai fini la série des conférences par une session sur Web Beans. Les exemples choisis n&rsquo;étais pas forcément judicieux à mon gout et surtout j&rsquo;en suis sorti plutôt inquiet en pensant aux longues journées de débuggage qui nous attentent. Le container fait de l&rsquo;injection, outjection sur tout un tas d&rsquo;annotation qu&rsquo;on peut en plus redéfinir. J&rsquo;ai peur que cela ressemble trop à une tentative de faire une puzzle en mettant un ensemble de pièces dans une boite et en secouant fort.</p>
<p>Après la session était le Meet and Greets avec Frites et Bière à volonté. Il y avait aussi le JUG Leader BOF. Les JUG Européens sont en train de s&rsquo;organiser, on devrait voir des initiatives intéressantes pour 2010. Pour nos amis du sud de la France, si les choses se concrétisent, vous devriez prochainement avoir deux JUG.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Devoxx J2</title>
		<link>https://blog.developpez.com/java/p6915/1-news/devoxx_j2</link>
		<comments>https://blog.developpez.com/java/p6915/1-news/devoxx_j2#comments</comments>
		<pubDate>Wed, 10 Dec 2008 13:14:32 +0000</pubDate>
		<dc:creator><![CDATA[christopheJ]]></dc:creator>
				<category><![CDATA[1. News]]></category>
		<category><![CDATA[Devoxx]]></category>
		<category><![CDATA[Devoxx 2008]]></category>
		<category><![CDATA[Événements Java]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ma seconde journée à Devoxx démarre par 3 heures de Seam. Si je trouve certaines choses intéressantes comme les scopes supplémentaires, l&#8217;EL étendu, une vraie lazy initialisation, le générateur qui permet d&#8217;avoir plein de morceaux de code généré, facilitant le &#8230; <a href="https://blog.developpez.com/java/p6915/1-news/devoxx_j2">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ma seconde journée à Devoxx démarre par 3 heures de Seam. Si je trouve certaines choses intéressantes comme les scopes supplémentaires, l&rsquo;EL étendu, une vraie lazy initialisation, le générateur qui permet d&rsquo;avoir plein de morceaux de code généré, facilitant le prototypage&#8230; Toutefois il y a encore des choses dont je doute de l&rsquo;intérêt ou que je ne comprend pas. Parmi ces derniers, il y a le PageAction qui permet de faire des contrôles et peut résulter en une redirection vers une autre page. Le speaker a dit qu&rsquo;il intervient avant le Render Response de JSF et l&rsquo;a présenté comme une solution pour protéger votre application. Mais si c&rsquo;est avant le Render Response, le code de l&rsquo;application est déjà exécuter&#8230; Si quelqu&rsquo;un peut m&rsquo;éclaircir sur ce point..</p>
<p>Le midi j&rsquo;ai vu deux morceaux de Quickies sur le développement d&rsquo;un jeu en JavaFX et l&rsquo;utilisation de JDBC dans JavaFX.</p>
<p>L&rsquo;après midi, j&rsquo;ai fait un morceau de la session sur GWT puis je suis sorti me battre avec le Wifi pour poster mon blog d&rsquo;hier. J&rsquo;ai finalement fini l&rsquo;après midi en discussion entre les stands et dans les couloirs.</p>
<p>La soirée s&rsquo;est terminée par un diner organisé entre les speakers, les sponsors et les JUG Leaders. L&rsquo;occasion de discuter des différentes organisations des JUGs, des différences culturelles entre les différents pays (carrière de développeurs, formation par les entreprises&#8230;), rencontrer quelques &laquo;&nbsp;stars&nbsp;&raquo; de mon aggrégateur de flux et naturellement boire des bières Belges.</p>
<p>Aujourd&rsquo;hui, c&rsquo;est Keynote, puis le début des conférences, des sessions de 1 heure qui seront plus techniques que l&rsquo;université, mais c&rsquo;est pour un autre billet. Le wifi ayant fait des progrès dans la nuit, nous pourrons poster plus souvent. </p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
