<?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>Le Touilleur Express &#187; parisjug</title>
	<atom:link href="http://www.touilleur-express.fr/tag/parisjug/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.touilleur-express.fr</link>
	<description>Blog sur Java, le métier de développeur et la vie de freelance par Nicolas Martignole</description>
	<lastBuildDate>Wed, 08 Feb 2012 11:54:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Soirée David Gageot au Paris JUG : les tests</title>
		<link>http://www.touilleur-express.fr/2011/01/15/david-gageot/</link>
		<comments>http://www.touilleur-express.fr/2011/01/15/david-gageot/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 12:52:07 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[parisjug]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=4778</guid>
		<description><![CDATA[Je vous souhaite une bonne année 2011. Je me rends compte que nous sommes mi-janvier et pas un article à se mettre sous la dent. Je travaille beaucoup en ce moment sur l&#8217;eXpress-Board. Le week-end passé j&#8217;ai ajouté l&#8217;authentification OpenId avec Google, Yahoo! et nous avons travaillé sur la partie profil. Il y a encore pas mal de travail pour aller vers ce que j&#8217;ai envie de faire, mais ça marche bien. Je travaille aussi en ce moment dans une équipe de développement pour un client dans la Banque. Les ...]]></description>
			<content:encoded><![CDATA[<p>Je vous souhaite une bonne année 2011. Je me rends compte que nous sommes mi-janvier et pas un article à se mettre sous la dent. Je travaille beaucoup en ce moment sur <a href="http://www.express-board.fr">l&#8217;eXpress-Board</a>. Le week-end passé j&#8217;ai ajouté l&#8217;authentification OpenId avec Google, Yahoo! et nous avons travaillé sur la partie profil. Il y a encore pas mal de travail pour aller vers ce que j&#8217;ai envie de faire, mais ça marche bien. Je travaille aussi en ce moment dans une équipe de développement pour un client dans la Banque. Les journées sont donc bien remplies. L&#8217;eXpress-Board est un vrai succès avec 31 annonces en 2011, plus de 170 profils, et plus de 89 recruteurs intéressés par le projet.</p>
<p><strong>Soirée David Gageot</strong><br />
<a href="http://www.touilleur-express.fr/wp-content/dgageot.jpg"><img src="http://www.touilleur-express.fr/wp-content/dgageot.jpg" alt="" title="dgageot" width="160" height="240" class="alignleft size-full wp-image-4784" /></a>Mardi dernier <a href="http://www.parisjug.org">le Paris JUG</a> avait invité David Gageot, responsable technique <a href="https://beta.algodeal.com/">d&#8217;Algodeal</a> pour nous parler des tests. Soirée très intéressante et très pragmatique. Pourquoi accélérer les tests unitaires et donc le temps pour construire globalement son logiciel ? Il cite le cas d&#8217;une équipe qui avait un build de 12 heures. Petit à petit, ce nightly build n&#8217;était lancé que toutes les 30 heures&#8230; Un build quotidien qui dure plus de 30 heures&#8230; cherchez le problème. </p>
<p>Lorsqu&#8217;il devient héroïque ou compliqué de construire, déployer et tester votre logiciel, il y a un souci. Cela veut dire que vous acceptez d&#8217;attendre 2 ou 3 jours avant de savoir si votre dernière modification fonctionne. Ajoutez à cela le fait que vous êtes 6 ou 7 développeurs, et vous l&#8217;avez compris, nous sommes en plein Chaos. Imaginez un médecin qui vous donne un médicament et qui revient 30 heures plus tard pour vérifier si tout va bien&#8230;</p>
<p>David parle de &laquo;&nbsp;<em>Continuous Testing</em>&laquo;&nbsp;. Les tests doivent tourner presque en permanence. Pour cela il nous montre <a href="http://infinitest.github.com/">Infinitest</a>. Ce plugin Eclipse permet de lancer les tests unitaires en tâche de fond dès lors que vous modifiez une classe. L&#8217;outil est assez intelligent pour n&#8217;exécuter que les tests en rapport avec la class Java sur laquelle vous travaillez. Il montre aussi <a href="http://moreunit.sourceforge.net/">MoreUnit</a> qui est un plugin Eclipse pour faciliter la navigation entre les tests et le code.  </p>
<p>Pour accélérer les tests David présente 3 stratégies :<br />
 &#8211; le tricheur<br />
 &#8211; le paresseux<br />
 &#8211; le brave</p>
<p>Le tricheur achètera une machine plus puissante. Il essayera de faire tourner plusieurs agents sur plusieurs machines, ou il essayera de ne pas faire tourner toute la compilation. Surefire 2.7.1 permet de faire tourner des tests unitaires dans plusieurs Threads. Avec Maven 3 il est possible de compiler son projet en parallèle lorsque vous avez plusieurs modules&#8230; Mais ces solutions ne s&#8217;attaquent pas au coeur du problème. Avec maven 3 vous pouvez par exemple lancer ceci :<br />
<code><br />
mvn -T1 clean install --> 5mn<br />
mvn -T4 clean install --> 3mn<br />
</code></p>
<p>Le paresseux va chercher le moindre effort. Il va par exemple effacer les tests unitaires qui ne servent à rien. Et c&#8217;est une très bonne chose. Il va aussi effacer le vieux code qui n&#8217;est plus utilisé. Vous pouvez aussi remplacer des tests d&#8217;intégration avec Oracle par des tests in-memory avec H2 ou HSQLDB. David cite <a href="http://commons.apache.org/vfs/">Apache Comons VFS</a> pour remplacer des tests avec accès réseaux par exemple. </p>
<p>Le brave enfin va vraiment s&#8217;attaquer à ce qui fait ralentir votre système. Premier conseil de David : ne testez pas les règles métiers de votre application via des tests d&#8217;intégration. Cela rajoute une couche d&#8217;infrastructure entre ce qui test et ce qui est testé. Ne prenez pas Selenium pour valider les règles métiers de votre application. Il est plus simple, plus rapide et plus efficace de prévoir des tests unitaires sur la partie purement métier. Le reste ne doit être que de l&#8217;infrastructure. </p>
<p>Pour optimiser son build, David recommande de s&#8217;attaquer aux 10 tests les plus lents dans votre compilation. Essayez de les repenser pour qu&#8217;ils ne testent que ce qui est indispensable. Utilisez aussi Mockito pour bouchonner les parties les plus lentes de l&#8217;application. Si vous faites un test d&#8217;intégration, vous n&#8217;avez pas forcément besoin d&#8217;une base de données en mémoire. Il suffit de moquer les DAO pour valider le métier. Pas l&#8217;accès à la base. C&#8217;est un travail qui demande de la pratique mais qui est très intéressant. </p>
<p><a href="http://www.touilleur-express.fr/wp-content/dgageot_test.jpg"><img src="http://www.touilleur-express.fr/wp-content/dgageot_test-300x199.jpg" alt="" title="dgageot_test" width="300" height="199" class="alignright size-medium wp-image-4783" /></a>David termine en nous recommandant de garder une approche simple. Non Ajax n&#8217;est pas une bonne approche à systématiser. Le coût est-il supérieur au gain attendu ? Je partage son idée de KISS (Keep it simple and stupid) et sa démarche qui est de faire toujours simple et efficace. <a href="http://www.touilleur-express.fr/2010/12/23/desintox/">Le dernier billet du Touilleur Express sur la complexité</a> a reçu 2200 visites en quelques semaines, ce qui est énorme.  </p>
<p>Après le buffet offert par <a href="http://www.objectif-informatique.fr">Objectif Informatique</a>, David a présenté ses outils préféres comme InfinitTest, MoreUnit et des techniques avancées avec JUnit 4. J&#8217;ai découvert par exemple les annotations @Theory et @DataPoints ainsi que @Rule. Il parle aussi de <a href="http://docs.codehaus.org/display/FEST/Fluent+Assertions+Module">FEST</a> (Fluent Interface) qui permet de rendre plus clair l&#8217;écriture des tests unitaires. JUnit 4 propose <a href="http://code.google.com/p/hamcrest/">Hamcrest</a> qui est déjà très bien, mais FEST est l&#8217;outil favori de David. </p>
<p><strong>Rendez-vous le 28 février pour l&#8217;anniversaire du Paris JUG</strong><br />
Les slides de présentation de David sont sur le site du Paris JUG <a href="http://www.parisjug.org/xwiki/bin/view/Meeting/20110111">à cette adresse</a> si vous souhaitez les parcourir. Le prochain RDV du Paris JUG c&#8217;est le lundi 28 février à la Cité Internationale Universitaire. Pour l&#8217;occasion nous avons trouvé une grande salle de 500 places avec Antonio. Il y aura de part et d&#8217;autre de cette salle un espace pour les exposants, pour les partenaires du Paris JUG. Le thème de la soirée sera &laquo;&nbsp;Sifflet en travaillant&nbsp;&raquo; avec le témoignage de plusieurs développeurs sur leur métier. Comment pouvons-nous travailler et continuer à s&#8217;amuser ? A exercer notre métier avec passion ? Si vous souhaitez venir partager votre expérience vous pouvez proposer un sujet via la page &laquo;&nbsp;<a href="http://www.parisjug.org/xwiki/bin/view/Blog/Call%20For%20Paper%20Pour%20Le%203e%20Anniversaire">Call for Paper</a>&laquo;&nbsp;. L&#8217;équipe délibère et rendra publique le programme mi-février. </p>
<p>En attendant, je vous souhaite une bonne année 2011 ! </p>
<p><strong>Autres articles</strong><br />
- Cédric Vidal a publié <a href="http://blog.proxiad.com/2011/01/15/paris-jug-du-11-janvier-tu-testes-pas-tes-so-2010/">un résumé plus précis</a> sur le blog de Proxiad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2011/01/15/david-gageot/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Java et le Web au Paris JUG</title>
		<link>http://www.touilleur-express.fr/2010/10/13/java-et-le-web-au-paris-jug/</link>
		<comments>http://www.touilleur-express.fr/2010/10/13/java-et-le-web-au-paris-jug/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 14:45:46 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[parisjug]]></category>
		<category><![CDATA[playframework]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=4415</guid>
		<description><![CDATA[
Hier soir la soirée était placée sous le thème &#171;&#160;Java et le Web&#160;&#187;. Malgré les grèves, il y avait les 210 passionnés et une belle ambiance. Le buffet était offert par Zenexity. En quelques mots, Zenexity, c&#8217;est une équipe dynamique de passionnés du Web rassemblée, autour d&#8217;Habib Guergachi et de Guillaume Bort, responsable du projet &#171;&#160;Play! Framework&#160;&#187; . 
Ruby on Rails
En première partie, Christian Blavier d&#8217;Octo nous a présenté le framework Ruby on Rails. Il a publié un billet sur le blog d&#8217;Octo intéressant : &#171;&#160;Confession d&#8217;un Javaiste repenti&#171;&#160;. Il ...]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.parisjug.org/xwiki/bin/download/Meeting/20101012/parisjugweb.png" alt="tes" /><br />
Hier soir la soirée était placée sous le thème &laquo;&nbsp;Java et le Web&nbsp;&raquo;. Malgré les grèves, il y avait les 210 passionnés et une belle ambiance. Le buffet était offert par <a href="http://www.zenexity.fr/">Zenexity</a>. En quelques mots, Zenexity, c&#8217;est une équipe dynamique de passionnés du Web rassemblée, autour d&#8217;Habib Guergachi et de Guillaume Bort, responsable du projet &laquo;&nbsp;Play! Framework&nbsp;&raquo; . </p>
<h2>Ruby on Rails</h2>
<p>En première partie, Christian Blavier d&#8217;Octo nous a présenté le framework Ruby on Rails. Il a publié un billet sur le blog d&#8217;Octo intéressant : &laquo;&nbsp;<a href="http://blog.octo.com/confession-javaiste-repenti-rails/">Confession d&#8217;un Javaiste repenti</a>&laquo;&nbsp;. Il commence très fort avec l&#8217;image d&#8217;un hamburger, où chaque tranche du hamburger est estampillée du nom d&#8217;une technologie Java. Spring, JSF, Richfaces, HTML, et souvent, un petit pattern maison, pour justifier notre boulot d&#8217;architecte. Un ange passe dans la salle, mais personne ne se lève et ne crie au scandale. Le slide suivant représente le même hamburger passablement moisi, avec la réalité de certains projets, qui pour faire du Web, n&#8217;arrivent pas à mettre en oeuvre ce socle correctement.<br />
Lors d&#8217;une mission, il découvre Ruby On Rails. Ce framework Web qui fête ses 6 ans est basé sur le langage Ruby. Dans le statut même de RoR (Ruby on Rails) les fondateurs mettent en avant la joie de programmer comme l&#8217;un des facteurs clés du framework. La productivité et le support du Web aussi. Personnellement je retrouve les mêmes valeurs dans Play! </p>
<p>Christian présente l&#8217;architecture du framework, purement MVC. Du côté du modèle relationnel, le moteur ActiveRecord (j&#8217;aurai plutôt pensé au pattern de M.Fowler Active Record) offre à RoR un socle à la fois simple mais suffisamment puissant pour réaliser des sites Webs et des applications d&#8217;entreprise. N&#8217;en déplaise à certain.</p>
<p>Concernant Ruby, Christian nous montre quelques exemples qui me font penser à Groovy. Langage dynamique et faiblement typé, Ruby offre par exemple ce type de syntaxe pour la manipulation des dates :</p>
<pre class="brush:java">
	now = DateTime.now

	tomorrow = now + 1.day

	one_week_ago = 7.days.ago
</pre>
<p>Le support des closures fait bien entendu partie de Ruby :</p>
<pre class="brush:java">
Closure,
["one","two"].map{ |word| word.upcase }
</pre>
<p>RoR est un framework fait pour le Web. Votre classe de base étend une classe ApplicationController. Pour ceux qui ont suivi ensuite la présentation de Play! nous retrouvons la même approche. C&#8217;est l&#8217;approche &laquo;&nbsp;Skinny controller / fat model&nbsp;&raquo; ou l&#8217;approche Domain Driven Design. </p>
<p>Dans cet exemple, la méthode index charge l&#8217;ensemble des Books puis la place dans une variable @books, qui est retournée à la vue. </p>
<pre class="brush:java">
class BooksController < ApplicationController
 def index
  @books = Book.all
  end
</pre>
<p>Pour exemple, l'approche Play! Framework donnerait quelque chose comme cela:
</pre>
<pre class="brush:java">
public class Application extends Controller {
    public static void index() {
        List<book> books=Book.findAll();
        render(books);
    }
}

</book></pre>
<p>Ruby on Rails utilise un moteur de templating pour ce qui est de la partie vue. Il dispose de plusieurs moteurs, comme par exemple <a href="http://haml-lang.com/">Haml</a></p>
<pre class="brush:html">

#profile
  .left.column
    #date= print_date
    #address= current_user.address
  .right.column
    #email= current_user.email
    #bio= current_user.bio
</pre>
<p>Le moteur Haml vient en remplacement je crois du moteur de base de Rails, appelé ERB:</p>
<pre class="brush:html">
&lt;div id="profile"&gt;
  &lt;div class="left column"&gt;
    &lt;div id="date"&gt;&lt;%= print_date %&gt;&lt;/div&gt;
    &lt;div id="address"&gt;&lt;%= current_user.address %&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="right column"&gt;
    &lt;div id="email"&gt;&lt;%= current_user.email %&gt;&lt;/div&gt;
    &lt;div id="bio"&gt;&lt;%= current_user.bio %&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;>
</pre>
<p>haml utilise l&#8217;indentation comme Python pour séparer les blocs. Christian cite aussi le projet <a href="http://sass-lang.com/">SASS</a> qui a été porté sous la forme d&#8217;un module pour Play! Framework aussi. Si vos CSS sont un vrai millefeuille, regardez SASS. Ce moteur permet de définir des variables que vous utilisez souvent dans vos feuilles CSS.</p>
<p>Concernant l&#8217;architecture, RoR est au plus proche de l&#8217;architecture REST, avec des URLs signifiantes. Un fichier de route permet enfin de construire des URLs bookmarkables et propres&#8230; comme un autre framework dont on parlera plus tard <img src='http://www.touilleur-express.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Concernant la partie ActiveRecord, rails comme grails dispose d&#8217;un ensemble de scripts très puissants pour générer rapidement des entités. Par exemple pour construire une entité Book avec quelques attributs : </p>
<pre>
 rails generate model book title:string description:string 
</pre>
<p>Pour terminer, il est important de noter que Rails est l&#8217;un des frameworks Webs les plus utilisés sur les projets Webs et les projets de startups. Avec des livres de références et les années d&#8217;expériences sur ce framework, c&#8217;est un moteur qui est souvent le point de départ de nombreuses aventures Webs. Lors du dernier <a href="http://paris.startupweekend.org/">Startup Weekend</a> à Paris, les 3 premiers projets étaient basés sur Ruby on Rails. L&#8217;un des projets a utilisé Play! Framework, et il me semble que cela sera amené à se développer dans les mois qui viennent. </p>
<p>Bon, sinon le jour où vous passez au Paris JUG : ne faîtes pas de slides avec un fond noir, prenez le template du Paris JUG. </p>
<h2>HTML 5</h2>
<p>Alain Duval, directeur technique <a href="http://www.objectif-informatique.fr/">d&#8217;Objectif Informatique</a> et Cédric Beurtheret, expert Java EE, présentent HTML 5. J&#8217;ai bien aimé cette présentation car elle nous fait prendre conscience des changements à venir dans la façon d&#8217;appréhender la réalisation d&#8217;une application Web. J&#8217;ai vraiment l&#8217;impression que le métier d&#8217;architecte web est une nouvelle compétence qui va exploser dans les années qui viennent. </p>
<p>HTML4 c&#8217;est 1998. Jusqu&#8217;en 2004 il ne se passait pas grand chose. HTML 5 est un effort tourné vers les nouvelles architectures avec un gros effort de standardisation. A priori la version finale est prévue pour dans 2 ans. Les problèmes de rétro-comptabilité et de support entre les navigateurs sont derrières nous. Les acteurs du marché travaillent ensemble pour proposer des standards. Cela dit, concernant par exemple l&#8217;initiative d&#8217;Apple sur le codec vidéo&#8230; je ne suis pas certain que cette belle lune de miel ne dure longtemps.</p>
<p>Des balises HTML seront progressivement retirées comme applet, frame ou font par exemple. J&#8217;ai retrouvé le lien cité par Alain pendant la présentation : <a href="http://www.google.fr/search?sourceid=chrome&#038;ie=UTF-8&#038;q=HTML5_Visual-cheet-sheet.pdf">HTML5_Visual-cheet-sheet.pdf</a>. Le Doctype d&#8217;une page HTML 5 est ultra simple :</p>
<pre class="brush:html">
&lt;!DOCTYPE html&gt;
</pre>
<p>A titre d&#8217;exemple, le site de <a href="http://www.zengularity.com">Zengularity</a> est écrit en HTML 5 si vous voulez tester. C&#8217;est une plateforme de vidéos courtes sur le Web, le HTML 5, le framework Play!, réalisée par les équipes de Zenexity. </p>
<p>HTML 5 apporte des balises pour structurer la page. Il sera facile de définir par exemple une section header ou footer, sans devoir appliquer systématiquement un habillage avec des DIV comme aujourd&#8217;hui.</p>
<p>Concernant les Formulaires, nous notons l&#8217;apparition de nouveaux tags :</p>
<pre class="brush:html">
 &lt;search&gt;
 &lt;tel&gt;
 &lt;url&gt;
 &lt;email&gt;
</pre>
<p><a href="http://www.w3.org/TR/html5/forms.html">Sur le site du W3C</a>, vous pouvez trouver des articles complets et intéressants si vous souhaitez découvrir comment nous ferons des formulaires webs demain. </p>
<p>Prenez par exemple ce code source :</p>
<pre class="brush:html">
&lt;form method="post"
      enctype="application/x-www-form-urlencoded"
      action="https://pizza.example.com/order.cgi"&gt;
 &lt;p&gt;&lt;label&gt;Customer name: &lt;input name="custname" required&gt;&lt;/label&gt;&lt;/p&gt;
 &lt;p&gt;&lt;label&gt;Telephone: &lt;input type=tel name="custtel"&gt;&lt;/label&gt;&lt;/p&gt;
 &lt;p&gt;&lt;label&gt;E-mail address: &lt;input type=email name="custemail"&gt;&lt;/label&gt;&lt;/p&gt;
 &lt;fieldset&gt;
  &lt;legend&gt; Pizza Size &lt;/legend&gt;
  &lt;p&gt;&lt;label&gt; &lt;input type=radio name=size value="small"&gt; Small &lt;/label&gt;&lt;/p&gt;
  &lt;p&gt;&lt;label&gt; &lt;input type=radio name=size value="medium"&gt; Medium &lt;/label&gt;&lt;/p&gt;
  &lt;p&gt;&lt;label&gt; &lt;input type=radio name=size value="large"&gt; Large &lt;/label&gt;&lt;/p&gt;
 &lt;/fieldset&gt;
 &lt;fieldset&gt;
  &lt;legend&gt; Pizza Toppings &lt;/legend&gt;
  &lt;p&gt;&lt;label&gt; &lt;input type=checkbox name="topping" value="bacon"&gt; Bacon &lt;/label&gt;&lt;/p&gt;
  &lt;p&gt;&lt;label&gt; &lt;input type=checkbox name="topping" value="cheese"&gt; Extra Cheese &lt;/label&gt;&lt;/p&gt;
  &lt;p&gt;&lt;label&gt; &lt;input type=checkbox name="topping" value="onion"&gt; Onion &lt;/label&gt;&lt;/p&gt;
  &lt;p&gt;&lt;label&gt; &lt;input type=checkbox name="topping" value="mushroom"&gt; Mushroom &lt;/label&gt;&lt;/p&gt;
 &lt;/fieldset&gt;
 &lt;p&gt;&lt;label&gt;Preferred delivery time: &lt;input type=time min="11:00" max="21:00" step="900" name="delivery" required&gt;&lt;/label&gt;&lt;/p&gt;
 &lt;p&gt;&lt;label&gt;Delivery instructions: &lt;textarea name="comments"&gt;&lt;/textarea&gt;&lt;/label&gt;&lt;/p&gt;
 &lt;p&gt;&lt;button&gt;Submit order&lt;/button&gt;&lt;p&gt;
&lt;/form&gt;
</pre>
<p>Si vous avez un navigateur assez récent, voici ce que cela donne :</p>
<form method="post"   enctype="application/x-www-form-urlencoded"  action="#">
<p><label>Customer name:<br />
<input name="custname" required/></label></p>
<p><label>Telephone:<br />
<input type=tel name="custtel"/></label></p>
<p><label>E-mail address:<br />
<input type=email name="custemail"/></label></p>
<fieldset>
<legend> Pizza Size </legend>
<p><label><br />
<input type=radio name=size value="small"/> Small </label></p>
<p><label><br />
<input type=radio name=size value="medium"/> Medium </label></p>
<p><label><br />
<input type=radio name=size value="large"/> Large </label></p>
</fieldset>
<fieldset>
<legend> Pizza Toppings </legend>
<p><label><br />
<input type=checkbox name="topping" value="bacon"/> Bacon </label></p>
<p><label><br />
<input type=checkbox name="topping" value="cheese"/> Extra Cheese </label></p>
<p><label><br />
<input type=checkbox name="topping" value="onion"/> Onion </label></p>
<p><label><br />
<input type=checkbox name="topping" value="mushroom"/> Mushroom </label></p>
</fieldset>
<p><label>Preferred delivery time:<br />
<input type=time min="11:00" max="21:00" step="900" name="delivery" required/></label></p>
<p><label>Delivery instructions: <textarea name="comments"></textarea></label></p>
<p><button>Submit order</button></p>
</p>
</form>
<p>De nouveaux attributs comme PlaceHolder, AutoComplete ou Autofocus font aussi partie des balises HTML 5. Nous aurons donc de moins en moins besoin de javascript. Le support natif sera la garantie que le poids des pages va fortement baisser je pense.<br />
Alain pense que la validation des formulaires sera effectuée plus facilement du côté du navigateur. </p>
<p>Le côté multimedia et les différentes démonstrations sur la balise Canvas sont très prometteurs. Le support du multimédia, de la vidéo, de la 2D et de la 3D, le support natif de SVG, tout ceci devrait remplacer le player Flash dans les années qui viennent. Encore faut-il que les industriels s&#8217;accordent sur les Codecs. Et là, c&#8217;est le foutoir. Donc Flash a encore de longues années devant lui je pense.</p>
<p>Pour terminer, Cédric nous montre une application HTML 5 avec géolocalisation, drag and drop, support du mode offline. HTML 5 introduit la notion de Web workers. Cette application de gestion de la relation client à usage des commerciaux tourne sur TabletPC. Lorsque le commercial n&#8217;est pas connecté à Internet, une partie de sa base client est téléchargée sur le navigateur afin qu&#8217;il puisse travailler en mode déconnecté. La synchronisation a été implémentée avec un Web Worker. C&#8217;est une APi qui permet de lancer des scripts Javscripts en tache de fond. Cédrid explique qu&#8217;il était parti sur Google Gears, mais que <a href="http://www.readwriteweb.com/archives/google_dumps_gears_for_html5.php">Google arrête le support de cette technologie</a> pour plutôt privilégier le socle HTML 5.</p>
<p>Concernant la possibilité de stocker des données sur le poste client, HTML 5 propose 3 niveaux différents selon vos besoins :<br />
 -> SessionStorage volatile, durée de la session<br />
 -> LocalStorage persistant mais limité en taille<br />
 -> WebDatabase basé sur SQLLite ou IndexB</p>
<p>Cédric attire notre attention quant à la sécurité des données sur le navigateur client. A priori la base n&#8217;est pas sécurisée, il faut donc prévoir une solution de cryptage. </p>
<p>En conclusion, en 30 minutes ce fut une belle présentation sur HTML 5, avec des pointeurs sur ce qui sera forcément notre futur demain. En tant que développeur, je le dis et je le répète, il n&#8217;est plus possible de ne pas connaître le HTML, CSS et Javascript en 2010. La récréation est terminée, la vision du &laquo;&nbsp;web-designer&nbsp;&raquo; qui fait ma page est très franco-française. Nos amis américains se marrent bien lorsque je raconte cette histoire.</p>
<p><strong>Bref si tu n&#8217;as pas codé une page HTML à 30 ans, tu as raté ta vie de développeur.</strong></p>
<h3>Zenexity et le projet Zengularity</h3>
<p>Le buffet était offert par Zenexity. J&#8217;aimerai parler un peu <a href="http://www.zengularity.com/">du projet Zengularity</a>. Allez voir sur le site les différentes vidéos. Le concept ? Vous présenter en quelques minutes un sujet technique. Les premières vidéos parlent de Scala, de Web Workers, d&#8217;architecture, de programmation fonctionnelle. Sympa comme initiative. A tester.</p>
<h3>Présentation Play! Framework avec Guillaume Bort</h3>
<p>La deuxième partie de la soirée était consacrée à une présentation de Play! Framework puis à une démonstration par Guillaume. Je mettrai les slides en ligne la semaine prochaine, je vais faire cette même présentation lundi 18 octobre à<a href="http://www.soft-shake.ch/"> la conférence Soft-Shake</a> à Genève. Si vous voulez voir ce qu&#8217;il est possible de faire en une heure, rendez-vous lundi matin à 11h30.</p>
<p>Les retours sur Twitter ce matin étaient positifs, j&#8217;espère qu&#8217;avec Guillaume nous vous avons passé notre passion pour ce framework. Je le dis et j&#8217;insiste : si vous voulez vous faire plaisir avec du Java, que vos problèmes soient pour du Web ou une application lourde, testez Play! Framework. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2010/10/13/java-et-le-web-au-paris-jug/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Soirée Paris JUG : Java EE 6 par Adam BIEN</title>
		<link>http://www.touilleur-express.fr/2010/07/07/soiree-paris-jug-java-ee-6-par-adam-bien/</link>
		<comments>http://www.touilleur-express.fr/2010/07/07/soiree-paris-jug-java-ee-6-par-adam-bien/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 08:08:08 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[parisjug]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=3957</guid>
		<description><![CDATA[
Mardi 6 juillet, 19h30, 211 Geeks, 2h de conférence, 30mn de buffet, une présentation sur Java EE 6, un speaker très bon, voilà comment résumer rapidement la soirée d&#8217;hier soir. La vidéo de la session sera sur Parleys.com cet été, je vous tiendrai au courant.
Adam Bien est consultant indépendant, Java Champion, auteur de plusieurs livres en anglais et en allemand sur Java. Il a carte blanche ce soir pour présenter Java EE 6 par la pratique. La présentation s&#8217;est découpée en 2 parties. Pendant la première heure, nous avons plus ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.touilleur-express.fr/wp-content/adam_bien_IMG_4492.jpg"><img src="http://www.touilleur-express.fr/wp-content/adam_bien_IMG_4492-300x200.jpg" alt="" title="adam_bien_IMG_4492" width="300" height="200" class="alignleft size-medium wp-image-3969" /></a><br />
Mardi 6 juillet, 19h30, 211 Geeks, 2h de conférence, 30mn de buffet, une présentation sur Java EE 6, un speaker très bon, voilà comment résumer rapidement la soirée d&#8217;hier soir. La vidéo de la session sera sur Parleys.com cet été, je vous tiendrai au courant.</p>
<p><a href="http://www.adam-bien.com/">Adam Bien</a> est consultant indépendant, Java Champion, auteur de plusieurs livres en anglais et en allemand sur Java. Il a carte blanche ce soir pour présenter Java EE 6 par la pratique. La présentation s&#8217;est découpée en 2 parties. Pendant la première heure, nous avons plus parlé conception et architecture. La deuxième heure fut une démonstration de programmation en direct. Les quelques 200 geeks présents ont bien apprécie et le message est passé.</p>
<p>Java EE 6 est plus simple, plus rapide, plus facile à apprendre et plus productif que Java EE 5. Si votre entreprise utilise encore Java J2EE 1.4, il est temps de regarder la dernière version. Dites bye-bye aux nombreux fichiers de configuration XML, le framework est vraiment bien pensé.</p>
<p>Avant que quelqu&#8217;un ne pose la question, il parle de Spring vs JEE 6. Spring offre plus de configurations, le framework est vraiment très configurable. Java EE 6 utilise plutôt des conventions afin de ne pas avoir à tout déclarer. Le conteneur EJB est vraiment petit. Moins d&#8217;1Mb. Il nous montrera par la suite que Glassfish v3 est vraiment véloce, dès lors qu&#8217;il s&#8217;agit de déployer une application.</p>
<p>Nous attaquons enfin le cœur du sujet, discussion qui va faire mal aux yeux pour certains architectes, pour mon plus grand plaisir. Adam Bien parle tout d&#8217;abord du pattern d&#8217;architecture &laquo;&nbsp;<a href="http://www.cs.sjsu.edu/~pearce/modules/patterns/enterprise/ecb/ecb.htm" target="new2">Boundary/Control/Entity</a>&nbsp;&raquo; et de son application dans l&#8217;architecture des futures applications JEE 6. C&#8217;est un pattern similaire au pattern MVC, avec cependant une approche plus adaptée aux applications webs.</p>
<p>Il encourage une nouvelle approche basée sur la philosophie D.D.D (Domain Driven Design), où l&#8217;Entité n&#8217;est plus agnostique, où les Data Access Objects ne sont pas utiles. En clair : <strong>plus de DAO</strong>. Comme il va l&#8217;expliquer ensuite, vous avez beau mettre des couches et des couches, cela ne bloque pas pour autant l&#8217;évolution.</p>
<p>L&#8217;approche DDD (<a href="http://www.touilleur-express.fr/2010/02/15/formation-domain-driven-design-avec-eric-evans-jour-1/">voir le compte-rendu de la formation de Zenika</a>) met au premier plan le Domaine. Les Entités deviennent plus importantes que les Services. L&#8217;approche de ces dernières années, avec service/domain/dao est ce que l&#8217;on appelle <strong>l&#8217;approche orientée service</strong>. C&#8217;est une approche pratique pour les clients légers, pas forcément pour les applications webs. L&#8217;approche DDD fait que vos Entités portent des méthodes métiers. Le DAO de votre système est l&#8217;Entity Manager, qui se retrouve injecté <strong>dans votre Entity</strong> ou sinon simplement dans votre service.</p>
<p>Ce principe fait que les services, et les contrôleurs dans le Web, perdent la logique de l&#8217;application. L&#8217;architecture avec état permet alors d&#8217;adresser d&#8217;autres problèmes plus simplement qu&#8217;avec l&#8217;approche classique orientée service.</p>
<p>J&#8217;aime beaucoup ce concept. <strong>C&#8217;est l&#8217;approche de Play! Framework</strong> et je constate avec plaisir que c&#8217;est donc un mouvement qui peut aussi s&#8217;appliquer rapidement avec Java EE 6.</p>
<p>Les architectures classiques appelées &laquo;&nbsp;<strong>Service Driven Architecture</strong>&nbsp;&raquo; sont ce que nous faisons tous plus ou moins. Une couche de domaine, une couche DAO, une couche Service. Les Entities du domaine sont anémiques et ne sont que le reflet de la base de données. Les DAO ne servent souvent pas à grand chose. Les NamedQueries qu&#8217;ils portent pourraient être placées sur les Entités comme dans l&#8217;approche DDD. C&#8217;est une manière de programmer assez procédurale. Les Services sont les responsables de la logique de l&#8217;application. Cela marche bien si vous devez faire des Web Services et du SOAP, ou des architectures sans état. Mais cela vous demandera plus de code.</p>
<p>Adam parle ensuite des Interfaces et commence à nous montrer notre premier Bean Java EE 6 :</p>
<pre class="brush:java">

@Stateless
public class SimpleSample {
    public void doSomething() {

    }
}
</pre>
<p>Voilà c&#8217;est tout. Pas de XML de configuration et pas d&#8217;interface. Adam décourage l&#8217;usage des Interfaces si vous n&#8217;avez pas de réelles motivations architecturales. Les gens continuent à penser qu&#8217;il faut des interfaces pour que le code soit testable. <strong>C&#8217;est faux et cela fait 5 ans que l&#8217;on vous le dit</strong>. Allez lire cet article sur <a href="http://www.touilleur-express.fr/2009/07/04/jazoon-2009-mockito/">Mockito</a> pour comprendre. Il est tout à fait possible de <em>mocker</em> des classes, c&#8217;est très simple. Donc définir une interface pour les tests : pas une bonne pratique. Par contre définir une interface pour structurer son application : oui si cela vous permet d&#8217;utiliser des choses comme le Strategic Pattern par exemple. Même pour les interceptors et les dynamiques proxies : Java EE 6 est capable de se baser sur les annotations et de gérer vos Beans très simplement.</p>
<p>Nous passons en revue les différents Beans de Java EE 6, les Entities, les Interceptors et même les Cron. Tout est relativement simple, et permettra d&#8217;écrire des applications rapides et puissantes. Investir en 2010 dans un livre sur Java EE 6 me semble une bonne idée pour les architectes et les développeurs. Vivement que nous puissions en faire dans nos projets. Cela fera des économies et redonnera du plaisir à utiliser Java EE en général.</p>
<p>En résumé pour cette première partie, Adam nous a montré qu&#8217;il est intéressant d&#8217;apprendre une nouvelle manière de construire une application d&#8217;entreprise, en se basant sur l&#8217;approche DDD plutôt que l&#8217;approche SOA. J&#8217;ai vraiment bien aimé cette partie, c&#8217;est une approche qui renforce la simplicité. Je pense qu&#8217;il va y avoir de longs articles pour montrer cette nouvelle approche. C&#8217;est très religieux, et proposer une nouvelle approche ne se fera pas sans grands débats enflammés, jusqu&#8217;à ce que tout le monde se rende compte qu&#8217;il avait raison.</p>
<p>A la pause, nous avons discuté autour du buffet. La remise en question de la tartine &laquo;&nbsp;<em>domain/dao/service</em>&nbsp;&raquo; ne va pas forcément convenir à tout le monde. Comme le dit Adam, ce n&#8217;est pas une mauvaise pratique. C&#8217;est une pratique qui n&#8217;est pas adaptée à tous les problèmes. Lorsque votre domaine est assez riche, il est plus facile de prendre l&#8217;approche DDD. Ce n&#8217;est pas plus compliqué, cela demande une petite remise en question de nos connaissances. Mais après tout, on apprend en permanence non ?</p>
<p>Après le buffet, nous avons eu une bonne heure de démonstration de Java EE 6. Avec des exemples de code, il a démontré qu&#8217;il était pratique et simple de travailler en 2010 avec Java EE 6 et Glassfish. Pour cela, il conseille d&#8217;utiliser NetBeans 6.9.</p>
<p>Pour terminer, je pense qu&#8217;il faut que je bosse sur un article afin de vous montrer les similarités d&#8217;approche entre Java EE 6 et Play! Framework. Si à terme un standard comme Java EE 6 me permet de coder de la même manière qu&#8217;avec Play! alors je serai le plus heureux des développeurs. Et même si j&#8217;adore Play!, je serai encore plus heureux d&#8217;utiliser un standard pour ma partie serveur, avec cette nouvelle approche plus simple.</p>
<p>Adam Bien sera ce vendredi dans le sud à la conférence <a href="http://sophiaconf2010.fr/">SophiaConf 2010</a> organisée par l&#8217;équipe du Riviera JUG de Sophia-Antipolis. Ne manquez pas sa présentation !</p>
<p>Rendez-vous à la rentrée pour le Paris Java User Group, passez de bonnes vacances. Merci à José Paumard pour les excellentes photos.<br />
<a href="http://www.touilleur-express.fr/wp-content/pano.jpg"><img src="http://www.touilleur-express.fr/wp-content/pano-300x55.jpg" alt="" title="pano" width="300" height="55" class="alignnone size-medium wp-image-3971" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2010/07/07/soiree-paris-jug-java-ee-6-par-adam-bien/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Soirée Scala au Paris JUG</title>
		<link>http://www.touilleur-express.fr/2010/04/18/soiree-scala-au-paris-jug/</link>
		<comments>http://www.touilleur-express.fr/2010/04/18/soiree-scala-au-paris-jug/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 12:33:06 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[parisjug]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=3566</guid>
		<description><![CDATA[Le Paris JUG a reçu Romain Maton et Nicolas Jozwiak de Xebia France, ainsi que Sadek Drobi de Valtech, afin de nous parler de Scala. Une soirée divisée en deux. Une partie plus théorique sur Scala et la programmation fonctionnelle par Sadek. Puis une partie pratique, avec une présentation de Scala par Romain et Nicolas. Enfin comme d&#8217;habitude, la 3ème mi-temps est toujours l&#8217;occasion de diner ensemble, partager un moment de convivialité, et poursuivre les discussions.

Sadek Grobi a fait une présentation en codant en direct quelques concepts avec Scala. Son ...]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.touilleur-express.fr/wp-content/tag_scala.jpg" alt="Tag image Scala" title="tag_scala" width="150" height="150" class="alignright size-full wp-image-3449" />Le <a href="http://www.parisjug.org/xwiki/bin/view/Meeting/20100413">Paris JUG</a> a reçu <a href="http://www.parisjug.org/xwiki/bin/view/Speaker/RomainMaton">Romain Maton</a> et <a href="http://www.parisjug.org/xwiki/bin/view/Speaker/NicolasJozwiak">Nicolas Jozwiak</a> de Xebia France, ainsi que <a href="http://www.parisjug.org/xwiki/bin/view/Speaker/SadekDrobi">Sadek Drobi</a> de Valtech, afin de nous parler de Scala. Une soirée divisée en deux. Une partie plus théorique sur Scala et la programmation fonctionnelle par Sadek. Puis une partie pratique, avec une présentation de Scala par Romain et Nicolas. Enfin comme d&#8217;habitude, la 3ème mi-temps est toujours l&#8217;occasion de diner ensemble, partager un moment de convivialité, et poursuivre les discussions.</p>
<p><img src="http://www.touilleur-express.fr/wp-content/IMG_0592_scala-150x150.jpg" alt="" title="IMG_0592_scala" width="150" height="150" class="alignleft size-thumbnail wp-image-3590" /><br />
Sadek Grobi a fait une présentation en codant en direct quelques concepts avec Scala. Son objectif est de nous parler de la programmation orientée fonctionnelle par l&#8217;exemple. Pour cela, il débute sa présentation en nous parlant des types. Un Int, une String, une List, sont des Types. Puis vient les fonctions, qui sont finalement des Types. Tout objet est fonction, toute fonction est un objet comme disait Alexandre Bertails dans <a href="http://www.touilleur-express.fr/2010/03/22/scala-case-option-none-et-some/">un des commentaires du Touilleur Express</a>.</p>
<p><a href="http://www.touilleur-express.fr/wp-content/sadekIMG_05841.jpg"><img src="http://www.touilleur-express.fr/wp-content/sadekIMG_05841-225x300.jpg" alt="" title="sadekIMG_0584" width="225" height="300" class="alignnone size-medium wp-image-3591" /></a>Cette présentation orientée live coding a bien été résumé par Olivier Croisier sur <a href="https://wave.google.com/wave/?nouacheck&#038;pli=1#restored:wave:googlewave.com!w%252BA9AMCKoIA">The Coder&#8217;s Breakfast</a> et par Ellene Dijoux <a href="http://jduchess.org/duchess-france/paris-jug-retour-sur-la-soiree-scala/">sur le blog des JDuchess</a>. Yannick Grenzinger d&#8217;Objet Direct (l&#8217;un des sponsors du Paris JUG) a fait un résumé <a href="http://blog.objetdirect.com/">sur le blog d&#8217;Objet Direct</a>, ainsi que Claude Falguière sur <a href="http://blog.valtech.fr/wordpress/2010/04/14/1150/">le blog de Valtech</a>. Bref vous trouverez certainement une couverture de la présentation plus complète qu&#8217;ici.</p>
<p><a href="http://www.touilleur-express.fr/wp-content/romain_nicolas_IMG_0586.jpg"><img src="http://www.touilleur-express.fr/wp-content/romain_nicolas_IMG_0586-300x225.jpg" alt="" title="romain_nicolas_IMG_0586" width="300" height="225" class="alignnone size-medium wp-image-3592" /></a>Après un buffet, primordial pour bien réussir une soirée du Paris JUG, nous avons repris par une présentation de Nicolas et de Romain de Xebia sur Scala à proprement parlé. C&#8217;était une très bonne présentation. J&#8217;espère qu&#8217;ils auront l&#8217;opportunité de la faire à d&#8217;autres conférences comme l&#8217;USI, comme d&#8217;autres JUG en province, car cette présentation est très sympa. L&#8217;objectif de la présentation est de parler de Scala par la pratique, pour le développeur Java.</p>
<p>Comme vous le savez peut-être, Scala a été lancé en 2003 (<a href="http://www.touilleur-express.fr/2010/03/23/scala-son-histoire/">voir cet article sur l&#8217;histoire de Scala</a>) par Martin Odersky, un enseignant chercheur de l&#8217;EPFL. Romain et Nicolas présentent les Traits, le pattern matching, les Actors et parlent aussi du framework <a href="http://akkasource.org/">Akka</a>.</p>
<p><strong>La 3ème mi-temps et la 4ème</strong><br />
Parlons un peu de ce qui se passe après une soirée du Paris JUG. Après la fermeture de la salle pour 22h30, tout le monde (plus de 200 personnes) se retrouve dehors. Les plus motivés (souvent 20 à 50 personnes) partent ensuite au restaurant pour diner. Les très motivés (votre serviteur) terminent tranquillement en sirotant une infusion en parlant de sujets très sérieux, vers les 2 heures du matin.  Record : 4h du matin. Certains se lèvent quelques heures plus tard pour aller chez des clients, avec un cerveau aussi embrumé qu&#8217;un consultant devant sa console Websphere.</p>
<p>Ces moments de convivialités sont importants. Une soirée JUG c&#8217;est un moment de formation, de veille techno, la possibilité de venir apprendre quelque chose le temps d&#8217;une soirée. C&#8217;est aussi l&#8217;occasion de rencontrer des passionnés, des gens sympas et accessibles, prêt à refaire le monde, ou des gens qui vous parlerons pendant 2 heures d&#8217;IDEA IntelliJ vs Eclipse.</p>
<p><img src="http://www.touilleur-express.fr/wp-content/cyrIMG_0594-150x150.jpg" alt="" title="cyrIMG_0594" width="150" height="150" class="alignleft size-thumbnail wp-image-3593" />Je vois qu&#8217;il y a une multitude de Users Groups en France, sur les thèmes les plus divers et parfois les plus improbables. Si vous vous lancez dans la création d&#8217;un JUG, pensez au moment &laquo;&nbsp;coca/cacahuètes&nbsp;&raquo; qui est aussi important que le moment &laquo;&nbsp;slides/présentation&nbsp;&raquo;. Et ne sous-estimez pas les efforts et le temps que cela prend. Il y a 3 personnes derrière le Paris JUG (David, Antonio et Zouheir) et 5 autres personnes qui donnent un coup de main (Claude, Tanguy, José, Charles et moi-même).</p>
<p>Merci à APress pour les livres sur Scala et sur JEE6. Pour le livre &laquo;&nbsp;<a href="http://apress.com/book/view/9781430219897">Beginning with Scala</a>&nbsp;&raquo; de David Pollack, je vous le conseille les yeux fermés. 2 autres livres achetés auparavant ne m&#8217;ont pas donné de bonnes bases pour apprendre Scala. Pour le livre &laquo;&nbsp;<a href="http://www.touilleur-express.fr/2009/10/02/beginning-java-ee-6-platform-with-glassfish-3/">Beginning Java EE 6 Platform with Glassfish 3</a>&nbsp;&raquo; écrit par Antonio Goncalves, j&#8217;avais écris une revue en octobre dernier.</p>
<p>Rendez-vous <a href="http://www.parisjug.org/xwiki/bin/view/Meeting/20100511">le mardi 11 mai</a> pour une soirée sur Git, sur DVCS, sur Maven et sur DeployIt, ainsi que d&#8217;autres surprises.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2010/04/18/soiree-scala-au-paris-jug/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Soirée &quot;Emmanuel Bernard&quot; au Paris JUG</title>
		<link>http://www.touilleur-express.fr/2010/03/10/soiree-emmanuel-bernard-au-paris-jug/</link>
		<comments>http://www.touilleur-express.fr/2010/03/10/soiree-emmanuel-bernard-au-paris-jug/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 17:07:21 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[parisjug]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=3262</guid>
		<description><![CDATA[Tu n&#8217;écris pas de compte rendu sur la soirée Emmanuel Bernard. C&#8217;est Emmanuel Bernard qui écrit le compte-rendu. Tu ne vas pas à la soirée Emmanuel Bernard, c&#8217;est lui qui t&#8217;invite (ou pas). Tu ne lis pas ce compte-rendu, Emmanuel te lit son compte rendu.
Sur le thème des ChuckNorris facts, Emmanuel a envoyé à l&#8217;équipe du Paris JUG son propre pitch pour la soirée d&#8217;hier soir. S&#8217;en est suivi plusieurs Emmanuel&#8217;s facts sur la liste de diffusion du Paris JUG, ce qui était très sympa pour donner un style fun ...]]></description>
			<content:encoded><![CDATA[<p><strong>Tu n&#8217;écris pas de compte rendu sur la soirée Emmanuel Bernard. C&#8217;est Emmanuel Bernard qui écrit le compte-rendu. Tu ne vas pas à la soirée Emmanuel Bernard, c&#8217;est lui qui t&#8217;invite (ou pas). Tu ne lis pas ce compte-rendu, Emmanuel te lit son compte rendu.</strong></p>
<p>Sur le thème <a href="http://www.chucknorrisfacts.fr/">des ChuckNorris facts</a>, Emmanuel a envoyé à l&#8217;équipe du Paris JUG <a href="http://www.parisjug.org/xwiki/bin/view/Meeting/20100309">son propre pitch</a> pour la soirée d&#8217;hier soir. S&#8217;en est suivi plusieurs Emmanuel&#8217;s facts sur la liste de diffusion du Paris JUG, ce qui était très sympa pour donner un style fun pour une très bonne soirée.</p>
<p>Encore 210 personnes ce soir, sans problèmes. Quelques nouveaux sponsors pour le Paris JUG, comme <a href="http://www.ippon.fr">Ippon Technologies</a> qui devient sponsor Gold par exemple. Le buffet de ce soir est offert <a href="http://www.drims.fr/">par la société DRiMS</a>. Ils ont organisé un tirage au sort entre les 2 présentations afin de faire gagner quelques cadeaux aux juggeurs, ainsi que leur aide pour le buffet. Drims intervient dans différents secteurs sur les pôles MOA, MOE et le décisionnel. Nous sommes toujours content d&#8217;avoir de l&#8217;aide ponctuellement pour les Buffets, ce qui permet de recevoir 200 personnes et d&#8217;animer la soirée.</p>
<p><strong>JDuchess</strong><br />
<a href="http://www.touilleur-express.fr/wp-content/7dd0c98e918451724c38317bf0099881-bpfull.jpg"><img src="http://www.touilleur-express.fr/wp-content/7dd0c98e918451724c38317bf0099881-bpfull.jpg" alt="" title="jduchess" width="150" height="150" class="alignleft size-full wp-image-3263" /></a>La soirée débute avec l&#8217;arrivée sur scène <a href="http://jduchess.org/groups/duchess-france">des JDuchess France</a>. A l&#8217;initiative de Mathilde Lemée (Indépendante/blog <a href="http://java-freelance.fr/">Java-Freelance.fr</a>) et d&#8217;Ellène Dijoux (<a href="http://blog.xebia.fr/">Xebia France</a>) qui avaient rencontré lors de Devoxx 2009 les JDuchess hollandaises, elles se sont regroupées avec Laure Némée  (<a href="http://www.leetchi.com">Leetchi</a>[Updated]) et Claude Falguière (<a href="http://www.valtech.fr">Valtech</a>).</p>
<p>L&#8217;objectif du groupe JDuchess France est de proposer un groupe de rencontre aux femmes dans la communauté Java. Mesdames, que vous soyez développeur, architecte, ou autre, vous pouvez venir aux soirées du Paris JUG et être assurée d&#8217;être accueillie par une communauté sympa. Mathilde explique que le groupe JDuchess compte 158 membres dans le monde. Pour rappel, il y a 15 user groups en France, plus de 440 dans le monde. Et l&#8217;initiative de proposer un site communautaire, et des événements pour les femmes est une très bonne idée.<br />
<a href="http://www.touilleur-express.fr/wp-content/IMG_05701.jpg"><img src="http://www.touilleur-express.fr/wp-content/IMG_05701-300x200.jpg" alt="" title="IMG_0570" width="300" height="200" class="alignnone size-medium wp-image-3269" /></a><br />
L&#8217;équipe de JDuchess a organisé un Avant-JUG au restaurant le Vavin à 18h30 auxquelles 10 femmes ont participé. C&#8217;est aussi la possibilité de parler Java, de parler du métier entre elles, d&#8217;assurer une meilleure représentativité de Java auprès des femmes, qui motive le groupe.</p>
<p>Enfin c&#8217;est encore un succès pour la communauté et pour les Users Groups. Donc si vous êtes une femme intéressée par Java, et que vous êtes sur Paris, n&#8217;hésitez pas à vous inscrire <a href="http://jduchess.org/groups/duchess-france" target="new">sur le site communautaire de JDuchess</a>. Il y a 8 membres pour l&#8217;instant, j&#8217;espère que cet article fera venir du monde dans le groupe.</p>
<p><strong>Hibernate Search</strong><br />
<a href="http://www.touilleur-express.fr/wp-content/IMG_0575.jpg"><img src="http://www.touilleur-express.fr/wp-content/IMG_0575-300x212.jpg" alt="" title="IMG_0575" width="300" height="212" class="alignnone size-medium wp-image-3271" /></a><br />
Emmanuel Bernard prend ensuite la parole pour nous présenter Hibernate Search. Il travaille chez JBoss RedHat à Paris après un parcours aux USA pendant quelques temps. Emmanuel est un membre de l&#8217;équipe de développement d&#8217;Hibernate. Il intervient souvent dans différentes conférences, et nous sommes très content qu&#8217;il participe régulièrement au Paris JUG. Je pense qu&#8217;il a trouvé rapidement sa place depuis septembre dans la communauté parisienne. C&#8217;est aussi l&#8217;un des auteurs du Podcast sur Java &laquo;&nbsp;<a href="http://lescastcodeurs.com/" target="new">Les CastCodeurs</a>&laquo;&nbsp;, donc le prochain sujet sera sur Oracle et SUN avec la participation d&#8217;Alexis Moussine-Pouchkine.</p>
<p>Emmanuel a présenté Hibernate Search ce soir. J&#8217;avais vu cette présentation à Jazoon, je vous invite à relire <a href="http://www.touilleur-express.fr/2009/06/25/jazoon-day-3-hibernate-search/">ce que j&#8217;écrivais à l&#8217;époque</a>. J&#8217;ai revu et réécouté celle-ci avec plaisir, Emmanuel ayant ajouté quelques points intéressants.</p>
<p>Sur la présentation, je pense que la partie code a satisfait ceux qui regrettent parfois le niveau trop général des présentations du JUG. Ce soir nous avons vraiment mis le nez dans le moteur. Pendant une heure, tout le monde a découvert la notion de recherche, l&#8217;indexation, la construction et l&#8217;interrogation des indexes Lucene.</p>
<p>J&#8217;aurai aimé un peu plus tard entendre Emmanuel sur le positionnement d&#8217;Hibernate Search par rapport au Cloud et JPA. Sur Google App Engine pour mon projet-toujours-pas-terminé &laquo;&nbsp;<a href="http://touilleur.appspot.com/">Geek Date</a>&nbsp;&raquo; j&#8217;avais utilisé <a href="http://www.compass-project.org/">Compass</a>. Cela me permet d&#8217;indexer les événements à la création et de proposer une zone de recherche full-text multi-critère sur la page d&#8217;accueil.</p>
<p><strong>Et le Buffet !</strong><br />
Une soirée JUG c&#8217;est 2 conférences et bien entendu, le Buffet. Au sondage pour l&#8217;anniversaire du Paris JUG, vous aviez été 70 personnes à répondre, et la place du buffet est très importante pour vous. Charles pourra vous détailler les chiffres, mais voici 2 indicateurs intéressants :<br />
<a href="http://www.touilleur-express.fr/wp-content/parisjug_buffet.jpg"><img src="http://www.touilleur-express.fr/wp-content/parisjug_buffet.jpg" alt="" title="parisjug_buffet" width="612" height="440" class="alignnone size-full wp-image-3266" /></a><br />
C&#8217;est un moment où chacun se rencontre, les discussions s&#8217;ouvrent, et où nous sommes content de nous voir.</p>
<p>Si je vous parle du buffet c&#8217;est pour vous faire passer une information. Ce soir encore, quelqu&#8217;un m&#8217;a dit qu&#8217;il cherchait un nouveau boulot. Fraichement arrivé à Paris, il lit régulièrement les différents blogs. Il m&#8217;a confié qu&#8217;il a envoyé son CV aux différents sponsors du Paris JUG car pour lui, ces boîtes représentent les entreprises où il souhaite travailler. C&#8217;est-ti pas beau comme histoire ?<br />
Moi je dis +25 points de <em>Bisounours</em> pour le Paris JUG qui contribue à un meilleur monde.</p>
<p><strong>Travailler sur l&#8217;écriture d&#8217;une API</strong><br />
<a href="http://www.flickr.com/photos/fredart/"><img src="http://www.touilleur-express.fr/wp-content/3418199118_583174b8a1_m.jpg" alt="Crédit Photo FredArt Licence Commons Creatives" title="3418199118_583174b8a1_m" width="240" height="159" class="alignright size-full wp-image-3287" /></a><br />
Emmanuel Bernard présente ensuite un sujet intéressant, et pas forcément évident au premier abord : quelles sont les difficultés et les particularités à prendre en compte lorsque l&#8217;on écrit une API ?</p>
<p>Il nous fait partager son expérience tirée du travail en tant que Spec Lead sur la JSR-303 (Bean Validation) et de ses années sur Hibernate Search. L&#8217;objectif est de présenter la notion d&#8217;API, les difficultés rencontrées, et de nous faire partager son boulot. Ce fut très intéressant, pour une présentation qu&#8217;il donnait pour la première fois.</p>
<p>Ecrire une API est un travail de longue haleine. Il y a toujours des personnes mécontentes, et apporter un changement à posteriori est difficile. Lorsqu&#8217;il explique ceci, nous prenons tout de suite conscience qu&#8217;il s&#8217;agit d&#8217;un travail à part entière, bien distinct de l&#8217;écriture de sa bonne grosse appli de gestion (BGAG). La difficulté de figer à un instant T un ensemble de méthodes et d&#8217;objets force celui qui écrit à travailler 5 fois plus qu&#8217;un projet classique. C&#8217;est donc non pas le volume, mais la qualité du code que l&#8217;on recherche ici.</p>
<p>Emmanuel explique que le temps passé est important aussi car une API est destinée&#8230; à des êtres humains. Elle doit donc être orientée utilisabilité. Le développement TDD ne suffit pas à assurer une qualité et une cohérence. Il semble que l&#8217;itératif soit obligatoire pour réussir.</p>
<p>Ecrire une API vous force à monter en compétences. La notion de DSL apparaît rapidement dans la présentation d&#8217;Emmanuel. Il s&#8217;agit bien d&#8217;utiliser l&#8217;expressivité de Java pour décrire comment faire quelque chose. D&#8217;ailleurs, la gymnastique sur les Annotations dans Hibernate Search en a surpris plus d&#8217;un.</p>
<p>J&#8217;ai demandé à Emmanuel s&#8217;il avait regardé Scala plus tard dans la soirée. En effet, il parle à la fin de sa présentation de l&#8217;avantage des classes Abstraites par rapport aux interfaces. C&#8217;est justement la notion de Trait que l&#8217;on trouve dans Scala. Le temps de terminer mon deuxième article, vous verrez cela d&#8217;ici à la fin de cette semaine.</p>
<p>Pour revenir en arrière, écrire une API est un exercice sportif. Il parle de chuter plusieurs fois pour progresser, comme en Snow board. Il faut mettre en place une stratégie pour proposer à l&#8217;utilisateur de nouvelles fonctions, tout en gérant le cas où vous n&#8217;êtes pas certain de vous&#8230; ce qui arrive souvent. Il faut donc prévenir le développeur que vous êtes susceptible de modifier certaines fonctions.</p>
<p>En fait, c&#8217;est l&#8217;inverse du @deprecated utilisé pour indiquer qu&#8217;une méthode ne doit plus être utilisée dans votre code. Emmanuel tu devrais proposer une annotation comme @candidate, @proposed ou @ChuckNorris.<br />
<a href="http://www.flickr.com/photos/9801617@N06" target="new"><img src="http://www.touilleur-express.fr/wp-content/1298334790_05a65235a5-199x300.jpg" alt="" title="1298334790_05a65235a5" width="199" height="300" class="size-medium wp-image-3273" /></a><br />
<em>Crédit photo : <a href="http://www.flickr.com/photos/9801617@N06/">Rolf Hiker</a></em></p>
<p>Emmanuel présente ensuite quelques exemples de patterns utilisés lors de l&#8217;écriture d&#8217;API. La partie sur l&#8217;utilisation des annotations a certainement comblé le geek le plus obscurantiste de la salle. Il a cependant évité l&#8217;effet jantes-alliages tuning avec &laquo;&nbsp;<em>regardez mes belles annotations</em>&laquo;&nbsp;. Les explications sur le changement des APIs de Mapping étaient vraiment intéressantes. On retient que l&#8217;écriture d&#8217;API reste un sport de haut niveau, où la maîtrise de Java est vraiment importante.</p>
<p>Emmanuel termine sa présentation en donnant quelques bonnes pratiques. Tout d&#8217;abord, si vous écrivez une API sur un projet, il est indispensable de la faire vivre sur des exemples d&#8217;intégration. Les tests unitaires ne suffisent pas.</p>
<p>Lors des choix des verbes et des noms de méthodes ou d&#8217;objets, travaillez à plusieurs sur vos choix de mots. Car une fois ceux-ci à l&#8217;intérieur de l&#8217;API, il est difficile de changer. Je pense que sans le savoir, Emmanuel parle de Domain Driven Design. Dans cette pratique, nous travaillons sur la définition de <a href="http://domaindrivendesign.org/node/132">l&#8217;Ubiquitous Language</a>. C&#8217;est un exercice qui permet de créer une langue commune entre les gens du métier et les développeurs. Dans le cadre du travail sur une API, il faudrait lister les verbes, les noms, dessiner une MindMap de ce que fait l&#8217;API. Cela permettrait de s&#8217;assurer que les mots sont correctement choisis.</p>
<p>Emmanuel encourage l&#8217;utilisation de DSL interne afin de rendre plus facile l&#8217;utilisation de l&#8217;API. A propos de DSL externe, le plus connu que vous avez tous utilisé sans le savoir est&#8230; le langage SQL. Il nous montre l&#8217;enchainement de verbes d&#8217;actions et d&#8217;adjectifs pour la définition de la configuration dans Hibernate Search. Je crois qu&#8217;il s&#8217;agit du pattern Builder si je ne dis pas de bêtises. Plus facile à mettre en oeuvre avec Groovy que Java.</p>
<p>Une astuce aussi pour l&#8217;API est de penser &laquo;&nbsp;comportement par défaut&nbsp;&raquo;. Ne demandez pas à vos utilisateurs de déclarer trop de paramètres qui ne changent pas ou peu. Il montre un exemple avec Hibernate Search où l&#8217;API s&#8217;arrange pour se configurer avec un comportement par défaut, afin d&#8217;alléger la quantité de code. Cela rend l&#8217;API plus Agile.</p>
<p><strong>Conclusion et 3ème mi-temps</strong><br />
Emmanuel a bien animé la soirée. Les 2 sujets étaient intéressants. C&#8217;est un bon speaker qui fait passer son message, sans fioritures. Il a même répondu aux questions posés<a href="http://thecodersbreakfast.net/index.php?post/2010/03/06/Paris-JUG-Emmanuel-Bernard"> sur la Wave d&#8217;Olivier Croisier</a> lorsque nous étions au restaurant. C&#8217;était vraiment sympa de sa part.<br />
<a href="http://www.touilleur-express.fr/wp-content/IMG_0576.jpg"><img src="http://www.touilleur-express.fr/wp-content/IMG_0576.jpg" alt="" title="IMG_0576" width="640" height="480" class="alignnone size-full wp-image-3283" /></a></p>
<p>Si j&#8217;avais un truc à demander à Emmanuel, ce serait d&#8217;ajouter quelques images dans ses slides pour appuyer ses idées.</p>
<p><strong>Documentez l&#8217;utilisation de votre API</strong><br />
<a href="http://www.touilleur-express.fr/wp-content/344687059_33b56dfc89.jpg"><img src="http://www.touilleur-express.fr/wp-content/344687059_33b56dfc89-300x225.jpg" alt="" title="344687059_33b56dfc89" width="300" height="225" class="alignnone size-medium wp-image-3281" /></a><br />
<em>Crédit photo : penguin http://www.flickr.com/photos/48600074504@N01/</p>
<p><strong>Pensez au pattern Adaptor</strong><br />
<div id="attachment_3278" class="wp-caption alignnone" style="width: 310px"><a href="http://www.touilleur-express.fr/wp-content/2969264395_0db28f9b94.jpg"><img src="http://www.touilleur-express.fr/wp-content/2969264395_0db28f9b94-300x199.jpg" alt="" title="2969264395_0db28f9b94" width="300" height="199" class="size-medium wp-image-3278" /></a><p class="wp-caption-text">Crédit photo : DeaPeaJay http://www.flickr.com/photos/deapeajay/2969264395/</p></div></p>
<p><strong>Votre API doit être simple à utiliser</strong><br />
<a href="http://www.touilleur-express.fr/wp-content/3858965355_4e4123201d_m.jpg"><img src="http://www.touilleur-express.fr/wp-content/3858965355_4e4123201d_m.jpg" alt="" title="3858965355_4e4123201d_m" width="240" height="240" class="alignnone size-full wp-image-3284" /></a><br />
</em><em>Crédit photo 1D110 http://www.flickr.com/photos/22297595@N02/</em></p>
<p>Note : les photos de cet article sont en licence Commons Creatives, trouvées sur FlickR.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2010/03/10/soiree-emmanuel-bernard-au-paris-jug/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>2ème Anniversaire du Paris JUG le 9 février 2010</title>
		<link>http://www.touilleur-express.fr/2010/01/30/2eme-anniversaire-du-paris-jug-le-9-fevrier-2010/</link>
		<comments>http://www.touilleur-express.fr/2010/01/30/2eme-anniversaire-du-paris-jug-le-9-fevrier-2010/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 14:15:56 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[parisjug]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=3031</guid>
		<description><![CDATA[
Mardi 9 février à 19h00, nous organisons l&#8217;anniversaire du Paris JUG avec toute la &#171;&#160;Crew&#160;&#187; (7 personnes) du Paris JUG. Cette année, toute l&#8217;équipe a travaillé pour vous proposer un événement très sympa. La soirée sera placée sur le thème de l&#8217;Open-Source. Avec en première partie, une Keynote exceptionnelle par Sacha Labourey, puis ensuite des présentations courtes sur différents projets Open-Source, sur différents acteurs de la communauté Java.
La traditionnelle 3ème mi-temps cette année a demandé aussi une organisation particulière. Nous avons réussi à privatiser un restaurant, et nous avons mis ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.touilleur-express.fr/wp-content/juggy_anniversaire.jpg"><img src="http://www.touilleur-express.fr/wp-content/juggy_anniversaire.jpg" alt="" title="juggy_anniversaire" width="400" height="353" class="alignnone size-full wp-image-3032" /></a><br />
Mardi 9 février à 19h00, nous organisons l&#8217;anniversaire du Paris JUG avec toute la &laquo;&nbsp;Crew&nbsp;&raquo; (7 personnes) du Paris JUG. Cette année, toute l&#8217;équipe a travaillé pour vous proposer un événement très sympa. La soirée sera placée sur le thème de l&#8217;Open-Source. Avec en première partie, une Keynote exceptionnelle par Sacha Labourey, puis ensuite des présentations courtes sur différents projets Open-Source, sur différents acteurs de la communauté Java.</p>
<p>La traditionnelle 3ème mi-temps cette année a demandé aussi une organisation particulière. Nous avons réussi à privatiser un restaurant, et nous avons mis en place un système afin de régler au plus tôt le restaurateur, ce qui nous permettra de recevoir tout le monde, et ce qui vous permettra de profiter de la soirée. Attention, le nombre de places est limité, que ce soit à la soirée elle-même, ou ensuite le buffet dinatoire.<br />
Les inscriptions sont ouvertes depuis samedi 16h00, vous pouvez aussi nous suivre via <a href="http://twitter.com/parisjug">le compte Twitter du parisjug</a>.</p>
<p>Pour la première fois, il y aura aussi un espace pour quelques exposants. L&#8217;idée est aussi de vous proposer d&#8217;aller discuter et de rencontrer les geeks qui font les soirées du Paris JUG avec vous, et pourquoi pas, d&#8217;aller travailler avec eux. Il y aura aussi des concours et des lots à gagner, chacun de nos partenaires s&#8217;est investi pour que cela reste &laquo;&nbsp;geek&nbsp;&raquo; dans l&#8217;esprit du Paris JUG. Grâce à leur aide et à leur support financier au Paris JUG, cela permet de louer cette année une grande salle de plus de 500 places.</p>
<p>Rendez-vous mardi 9 février. S&#8217;il n&#8217;y a qu&#8217;une soirée à faire en février, c&#8217;est celle-ci.</p>
<p>Nous comptons sur vous pour en parler autour de vous cette semaine !</p>
<p><strong>Pour en savoir plus :</strong><br />
Le programme détaillé de la soirée : <a href="http://www.parisjug.org/xwiki/bin/view/Meeting/20100209">http://www.parisjug.org/xwiki/bin/view/Meeting/20100209</a><br />
L&#8217;inscription et le paiement pour le repas sont expliqués <a href="http://www.parisjug.org/xwiki/bin/view/Meeting/20100209Cocktail">sur cette page</a>.</p>
<p><strong>Si vous souhaitez réutiliser des logos pour vos blogs, servez-vous : </strong><br />
<a href="http://www.touilleur-express.fr/wp-content/tag_anniversaire1501.jpg"><img src="http://www.touilleur-express.fr/wp-content/tag_anniversaire1501.jpg" alt="" title="tag_anniversaire150" width="150" height="150" class="alignnone size-full wp-image-3037" /></a></p>
<p><a href="http://www.touilleur-express.fr/wp-content/juggy_anniversaire1.jpg"><img src="http://www.touilleur-express.fr/wp-content/juggy_anniversaire1.jpg" alt="" title="juggy_anniversaire" width="400" height="353" class="alignnone size-full wp-image-3038" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2010/01/30/2eme-anniversaire-du-paris-jug-le-9-fevrier-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

