<?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>devoxx - In Fine - Le Blog</title>
	<atom:link href="https://blog.infine.com/tag/devoxx/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.infine.com</link>
	<description>Le blog des technos de demain !</description>
	<lastBuildDate>Tue, 15 Jan 2013 11:09:43 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.7</generator>

<image>
	<url>https://blog.infine.com/wp-content/uploads/2021/03/cropped-vignette-32x32.png</url>
	<title>devoxx - In Fine - Le Blog</title>
	<link>https://blog.infine.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Bilan de Devoxx France</title>
		<link>https://blog.infine.com/bilan-de-devoxx-france-1987?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bilan-de-devoxx-france</link>
					<comments>https://blog.infine.com/bilan-de-devoxx-france-1987#comments</comments>
		
		<dc:creator><![CDATA[Florian Boulay]]></dc:creator>
		<pubDate>Fri, 11 May 2012 13:00:20 +0000</pubDate>
				<category><![CDATA[Conférence]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[devoxx]]></category>
		<guid isPermaLink="false">https://blog.infine.com/?p=1987</guid>

					<description><![CDATA[<p><span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">5</span> <span class="rt-label rt-postfix">min.</span></span> La première édition de Devoxx France s&#8217;est terminée depuis quelques jours, voici donc un bref retour d&#8217;expérience ainsi que les réponses au concours que nous avions organisé. L&#8217;organisation était au top. Les gilets rouges ont bien pris en main l’organisation globale, et malgré la jeunesse de l&#8217;évènement, aucun aléa n&#8217;est venu perturbé ces 3 journées. &#8230;</p>
<p>The post <a href="https://blog.infine.com/bilan-de-devoxx-france-1987">Bilan de Devoxx France</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">5</span> <span class="rt-label rt-postfix">min.</span></span><p><a href="https://blog.infine.com/wp-content/uploads/2012/03/logo_devoxx_fr_negate.jpg" class="fancyboxgroup" rel="gallery-1987" title="Logo Devoxx France"><img decoding="async" src="https://blog.infine.com/wp-content/uploads/2012/03/logo_devoxx_fr_negate-300x154.jpg" alt="Logo Devoxx France" title="Logo Devoxx France" width="300" height="154" class="alignleft size-medium wp-image-1984" srcset="https://blog.infine.com/wp-content/uploads/2012/03/logo_devoxx_fr_negate-300x154.jpg 300w, https://blog.infine.com/wp-content/uploads/2012/03/logo_devoxx_fr_negate.jpg 400w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>La première édition de Devoxx France s&#8217;est terminée depuis quelques jours, voici donc un bref retour d&#8217;expérience ainsi que les réponses au concours que nous avions organisé.</p>
<p>L&#8217;organisation était au top. Les gilets rouges ont bien pris en main l’organisation globale, et malgré la jeunesse de l&#8217;évènement, aucun aléa n&#8217;est venu perturbé ces 3 journées. Les sessions étaient très variées, et certaines demandaient un niveau technique assez élevé. D&#8217;autres au contraire permettaient de découvrir des sujets qui ne sont pas forcément connus des développeurs Java comme par exemple la session d&#8217;Alexandre Bertails sur la théorie des langages.</p>
<p><span id="more-1987"></span></p>
<p>D&#8217;un point de vue personnel, j&#8217;ai adoré cette première édition. On sentait que l&#8217;expérience de Stephan Janssen a permis à Devoxx France de paraître déjà rodé. J&#8217;ai pu assisté à de nombreuses sessions très intéressantes et enrichissantes comme celle de Pablo Lopez présentant Hadoop pour gérer les 7Go de logs produites chez son client. J&#8217;en ai malheureusement loupé d&#8217;autres. Vivement que les sessions soient sur Parleys. Devoxx a vraiment été une cure technique revigorante de part la diversité des sujets et la maîtrise technique des speakers.<br />
D&#8217;autre part, en jouant chez divers sponsors j&#8217;ai pu gagner un Samsung Galaxy Tab et un Kindle ! Un petit bonus qui a contribué à passer un excellent moment.</p>
<h2>Application In Fine Devoxx France</h2>
<p>Nous avions mis à disposition des utilisateurs Android <a href="https://play.google.com/store/apps/details?id=com.infine.android.devoxx">une application</a> permettant de gérer son planning pendant les 3 jours de Devoxx France. Les retours des utilisateurs ont été très bons et peu de bugs ont été recensés.<br />
Lors du deuxième jour, le planning a pu indiquer des salles qui ne correspondaient pas à la réalité. Ceci est en fait dû une désynchronisation entre l&#8217;application et l&#8217;API du site Devoxx. L&#8217;API REST ne renvoyait pas les bonnes salles ce qui a pu en gêner certains. Le troisième jour, tout est rentré dans l&#8217;ordre et l&#8217;API renvoyait les données exactes.</p>
<p>Comme nous l&#8217;avons annoncé avant Devoxx France, nous mettons en open source le code de cette application. Le code source est en licence Apache 2 et est disponible sur <a href="https://github.com/fboulay/devoxx-france-android-in-fine">mon GitHub</a>.</p>
<p>Cette application est censée se connecter à un serveur qui renvoie des données JSON qui ont un format spécifiques. Cette partie peut être adaptée facilement pour récupérer les données renvoyées par le serveur devoxx.</p>
<h2>Concours In Fine avec un Mac Book Air à la clé</h2>
<p>En tant que sponsor, nous organisions un concours de code. Le gagnant pouvait emporter un Mac Book Air. Le principe était simple : modifier 6 morceaux de code en sept minutes trente.<br />
La difficulté venait du fait que le code était édité dans un navigateur web et pas dans un IDE ! A chaque modification de code, une compilation automatique était envoyée à un serveur permettant de valider la réponse du candidat.</p>
<p>Les réponses aux questions ne nécessitaient pas de connaître les API du JDK par coeur, seules le nom des classes et leur constructeur étaient utiles. Les questions et réponses sont données un peu plus loin dans ce post.</p>
<p>Nicolas De Loof <a href="http://blog.loof.fr/2012/04/yeahhhhh.html">a emporté haut la main</a> le concours en étant le seul à donner les 6 bonnes réponses dans le temps imparti. Les autres participants n&#8217;ont pas démérité, mais le fait de coder dans un navigateur a dû en déconcerter plus d&#8217;un.</p>
<figure id="attachment_1989" aria-describedby="caption-attachment-1989" style="width: 223px" class="wp-caption aligncenter"><a href="https://blog.infine.com/wp-content/uploads/2012/04/boss_loof_mac_book_air.jpg" class="fancyboxgroup" rel="gallery-1987" title="Antoine Ramponi et Nicolas de Loof sur le stand In Fine"><img fetchpriority="high" decoding="async" src="https://blog.infine.com/wp-content/uploads/2012/04/boss_loof_mac_book_air-223x300.jpg" alt="Antoine Ramponi et Nicolas de Loof sur le stand In Fine" title="Antoine Ramponi et Nicolas de Loof sur le stand In Fine" width="223" height="300" class="size-medium wp-image-1989" srcset="https://blog.infine.com/wp-content/uploads/2012/04/boss_loof_mac_book_air-223x300.jpg 223w, https://blog.infine.com/wp-content/uploads/2012/04/boss_loof_mac_book_air.jpg 537w" sizes="(max-width: 223px) 100vw, 223px" /></a><figcaption id="caption-attachment-1989" class="wp-caption-text"><em>Nicolas de Loof vient de gagner le Mac Book Air. Il fete ça en présence du boss Antoine Ramponi</em></figcaption></figure>
<h3>Questions du concours</h3>
<p>Chaque question comprend un énoncé, une partie de code éditable par l&#8217;utilisateur ainsi que du code non éditable. Les imports se font automatiquement.</p>
<h4>Question 1</h4>
<p>Comment faire en sorte que myMap puisse garder l&#8217;ordre d&#8217;insertion</p>
<pre class="brush: java; title: ; notranslate">
// Début de la partie éditable

Map&lt;String, Integer&gt; myMap = new HashMap&lt;String, Integer&gt;();

// Fin de la partie éditable
myMap.put(&quot;val2&quot;, 2);
myMap.put(&quot;val1&quot;, 1);
myMap.put(&quot;val3&quot;, 4);

Iterator&lt;Integer&gt; i = myMap.values().iterator();
assert(result = i.next() == 2 &amp;&amp; i.next() == 1 &amp;&amp; i.next() == 4);
</pre>
<h4>Réponse 1</h4>
<p>Il faut une certaine connaissance des collections Java. TreeMap n&#8217;est pas utilisable ici car il réordonne les entréés à chaque insertion.</p>
<pre class="brush: java; title: ; notranslate">
Map&lt;String, Integer&gt; myMap = new LinkedHashMap&lt;String, Integer&gt;();
</pre>
<h4>Question 2</h4>
<p>Le test est valide lorsque myVar vaut 66666</p>
<pre class="brush: java; title: ; notranslate">
// Début de la partie éditable

long myVar = 5432l;

// Fin de la partie éditable
myVar += 12345;
assert(myVar == 66666);
</pre>
<h4>Réponse 2</h4>
<p>Il fallait mettre un 1 au lieu du l minuscule. Cette question est une référence à Josh Bloch.</p>
<pre class="brush: java; title: ; notranslate">
long myVar = 54321;
</pre>
<h4>Question 3</h4>
<p>Ecrivez une méthode qui calcule la factorielle d&#8217;un nombre n . Si n est négatif alors on retourne Double.NaN</p>
<pre class="brush: java; title: ; notranslate">
// Début de la partie éditable
double fact(int n) {
    return 0;
}
// Fin de la partie éditable
</pre>
<h4>Réponse 3</h4>
<p>Faire une fonction récursive était la manière la plus évidente et la plus naturelle.</p>
<pre class="brush: java; title: ; notranslate">
double fact(int n) {
    if (n == 0)
        return 1;
    else if (n == 1)
        return 1;
    else if (n &lt; 0)
        return Double.NaN;
    return n * fact(n-1);
}
</pre>
<h4>Question 4</h4>
<p>Ecrivez la méthode getDayOfWeek qui prend en entrée le nombre de jour depuis le 1 Janvier 1970 ( ce jour était un jeudi ) et qui retourne le jour correspondant.</p>
<pre class="brush: java; title: ; notranslate">
public final static int SUNDAY = 1;
public final static int MONDAY = 2;
public final static int TUESDAY = 3;
public final static int WEDNESDAY = 4;
public final static int THURSDAY = 5;
public final static int FRIDAY = 6;
public final static int SATURDAY = 7;

// Début de la partie éditable
int getDayOfWeek(int day) {
    return 0;
}
// Fin de la partie éditable
</pre>
<h4>Réponse 4</h4>
<p>Cette question probablement était probablement la plus difficile. Ceux qui ont essayé de trouver une formule qui marche sur une ligne avec un modulo ont tous échoué. D&#8217;autres ont essayé d&#8217;utiliser la classe Calendar, mais sans auto-complétion et sans connaissance de l&#8217;API ils ont échoué également. La solution la plus simple est celle ci-dessous.</p>
<pre class="brush: java; title: ; notranslate">
int getDayOfWeek(int day) {
    int moduloDay = day % 7;
    switch(moduloDay){
        case 0 : return THURSDAY;
        case 1 : return FRIDAY;
        case 2 : return SATURDAY;
        case 3 : return SUNDAY;
        case 4 : return MONDAY;
        case 5 : return TUESDAY;
        default : return WEDNESDAY;
    }
}
</pre>
<h4>Question 5</h4>
<p> Modifiez le code pour que le resultat de la soustraction soit égal à 0.9</p>
<pre class="brush: java; title: ; notranslate">
void substract() {
// Début du code éditable

    BigDecimal a = new BigDecimal(2.00);
    BigDecimal b = new BigDecimal(1.10);
	
// Fin du code éditable
    assert(a.subtract(b).doubleValue() == 0.9);
}
</pre>
<h4>Réponse 5</h4>
<p>Un énoncé et une réponse simple encore une fois. Il fallait connaître les spécifités de ce constructeur. En initialisant un BigDecimal avec un double, la valeur initialisée est une valeur approchante au paramètre. En utilisant un paramètre de type String, alors c&#8217;est la valeur exacte qui est utilisée.</p>
<pre class="brush: java; title: ; notranslate">
    BigDecimal a = new BigDecimal(&quot;2.00&quot;);
    BigDecimal b = new BigDecimal(&quot;1.10&quot;);
</pre>
<h4>Question 6</h4>
<p>Comment accède-t&#8217;on dans la méthode getSuperVal à l&#8217;attribut val de la classe B ?</p>
<pre class="brush: java; title: ; notranslate">
class B {

    int val = 2;
    A a = new A();

    class A {
        final public int val = 3;

        int getSuperVal() {
            // Début du code éditable
            return ;
            // Fin du code éditable

        }
    }
}
</pre>
<h4>Réponse 6</h4>
<p>Syntaxe peu utilisée, mais encore une fois cette réponse était simple à donner dans un navigateur sans auto-complétion.</p>
<pre class="brush: java; title: ; notranslate">
return B.this.val;
</pre>
<h4>Question 7</h4>
<p>NB : Cette question a remplacé 6 la question le dernier jour de Devoxx France.<br />
Comment faire en sorte que myMap ait une taille de 3 ? La Map ne doit contenir que des clés &#8220;test&#8221;.</p>
<pre class="brush: java; title: ; notranslate">
// Début du code éditable
Map&lt;String, Integer&gt; myMap = new HashMap&lt;String, Integer&gt;();
// Fin du code éditable

myMap.put(new String(&quot;test&quot;), 1);
myMap.put(new String(&quot;test&quot;), 2);
myMap.put(&quot;test&quot;, 3);

int size = myMap.size();
assert(size == 3);
</pre>
<h4>Réponse 7</h4>
<p>Encore une fois il fallait un peu connaître les classes qui composent l&#8217;API Collection.</p>
<pre class="brush: java; title: ; notranslate">
Map&lt;String, Integer&gt; myMap = new IdentityHashMap&lt;String, Integer&gt;();
</pre>
<p>Merci à tous ceux qui sont venus nous voir sur le stand, on a passé de bon moments. A l&#8217;année prochaine !</p><p>The post <a href="https://blog.infine.com/bilan-de-devoxx-france-1987">Bilan de Devoxx France</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.infine.com/bilan-de-devoxx-france-1987/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>L&#8217;application Devoxx France d&#8217;In Fine est disponible sur le Google Play Store</title>
		<link>https://blog.infine.com/lapplication-devoxx-france-din-fine-est-disponible-sur-le-google-play-store-1954?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lapplication-devoxx-france-din-fine-est-disponible-sur-le-google-play-store</link>
					<comments>https://blog.infine.com/lapplication-devoxx-france-din-fine-est-disponible-sur-le-google-play-store-1954#comments</comments>
		
		<dc:creator><![CDATA[Florian Boulay]]></dc:creator>
		<pubDate>Fri, 30 Mar 2012 11:21:45 +0000</pubDate>
				<category><![CDATA[Conférence]]></category>
		<category><![CDATA[Mobile (Android/iOS)]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[devoxx]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[play framework]]></category>
		<guid isPermaLink="false">https://blog.infine.com/?p=1954</guid>

					<description><![CDATA[<p><span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">2</span> <span class="rt-label rt-postfix">min.</span></span> In Fine, en tant que partenaire de l&#8217;évènement majeur qu&#8217;est Devoxx France, a le plaisir de mettre à disposition une application pour Devoxx France sur Android. Cette première version permet : De mettre en favoris vos sessions préférées De consulter le planning des sessions, et le détail des speakers De voir ce qui se passe &#8230;</p>
<p>The post <a href="https://blog.infine.com/lapplication-devoxx-france-din-fine-est-disponible-sur-le-google-play-store-1954">L’application Devoxx France d’In Fine est disponible sur le Google Play Store</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">2</span> <span class="rt-label rt-postfix">min.</span></span><p><a href="https://blog.infine.com/wp-content/uploads/2012/03/logo_devoxx_fr_negate.jpg" class="fancyboxgroup" rel="gallery-1954" title="Logo Devoxx France"><img decoding="async" src="https://blog.infine.com/wp-content/uploads/2012/03/logo_devoxx_fr_negate-300x154.jpg" alt="Logo Devoxx France" title="Logo Devoxx France" width="300" height="154" class="alignright size-medium wp-image-1984" srcset="https://blog.infine.com/wp-content/uploads/2012/03/logo_devoxx_fr_negate-300x154.jpg 300w, https://blog.infine.com/wp-content/uploads/2012/03/logo_devoxx_fr_negate.jpg 400w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>In Fine, en tant que partenaire de l&#8217;évènement majeur qu&#8217;est Devoxx France, a le plaisir de mettre à disposition une application pour Devoxx France sur Android. Cette première version permet :</p>
<ul>
<li>De mettre en favoris vos sessions préférées</li>
<li>De consulter le planning des sessions, et le détail des speakers</li>
<li>De voir ce qui se passe sur Twitter avec le tag <em>devoxxfr</em></li>
<li>D&#8217;avoir accès au plan des 2 étages de l&#8217;hôtel où se déroulera la conférence</li>
<li>Et d&#8217;autres fonctionnalités&#8230;</li>
</ul>
<p><span id="more-1954"></span></p>
<p>Cette application fonctionne parfaitement sur téléphone , mais n&#8217;est pas encore totalement adaptée pour les tablettes. Dans les semaines qui viennent, nous allons continuer à mettre à jour l&#8217;application pour qu&#8217;elle soit la plus simple à utiliser possible. Voici une prévision des futures évolutions  :</p>
<ul>
<li>Complète adaptation de l&#8217;ergonomie de l&#8217;application aux tablettes</li>
<li>Ajout de la recherche sur les speakers. Actuellement elle ne fonctionne que sur les sessions</li>
<li>Quand on clique sur une salle, afficher la carte de l&#8217;étage correspondant</li>
<li>Pouvoir mettre en favori des speakers</li>
<li>Et bien d&#8217;autres choses qui dépendront des retours que nous aurons</li>
</ul>
<p>Nous sommes très fiers de mettre à disposition cette application. Elle sera mise en open source au moment de la conférence Devoxx France, certainement en licence Apache 2.<br />
Si vous rencontrez des problèmes ou avez des suggestions, écrivez un commentaire ici, ou envoyer un mail au compte indiqué sur la fiche du Google Play Store.</p>
<p>Dans la suite de l&#8217;article, nous allons approfondir l&#8217;aspect technique de l&#8217;application. Si au contraire vous souhaitez directement aller télécharger l&#8217;application, alors il faut aller ici : <a href="https://play.google.com/store/apps/details?id=com.infine.android.devoxx">Play Store</a></p>
<h2>Architecture technique</h2>
<figure id="attachment_1964" aria-describedby="caption-attachment-1964" style="width: 300px" class="wp-caption aligncenter"><a href="https://blog.infine.com/wp-content/uploads/2012/03/archi_appli_android_devoxx1.png" class="fancyboxgroup" rel="gallery-1954"><img loading="lazy" decoding="async" class="size-medium wp-image-1964" src="https://blog.infine.com/wp-content/uploads/2012/03/archi_appli_android_devoxx1-300x164.png" alt="Architecture applicative de l'application Devoxx France In Fine" width="300" height="164" srcset="https://blog.infine.com/wp-content/uploads/2012/03/archi_appli_android_devoxx1-300x164.png 300w, https://blog.infine.com/wp-content/uploads/2012/03/archi_appli_android_devoxx1.png 660w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-1964" class="wp-caption-text"><em>Architecture applicative de l&#039;application Devoxx France In Fine</em></figcaption></figure>
<p>Comme le montre le schéma ci-dessus, nous n&#8217;avons pas directement connecté l&#8217;application Android avec les API RESTful fournies par le site Devoxx. En effet les temps de réponse sont très variables, certains service ont déjà mis plus de 5 minutes à répondre. D&#8217;autre part, certains service renvoient des données en double ou incomplètes.<br />
Le serveur intérmédiaire permet donc de mieux maîtriser les données. Grâce à Play et à Mongo DB, les temps de réponse sont excellents et la charge que peut encaisser le serveur est bien au dessus de ce que nous atteindrons. Un test JMeter a mesuré que le serveur pouvait encaisser 300 requêtes par secondes. La plupart des requêtes répondent en moins de 0.1 seconde. Nous estimons que le serveur aurait à supporter, au maximum de son activité, 25 requêtes par minute</p><p>The post <a href="https://blog.infine.com/lapplication-devoxx-france-din-fine-est-disponible-sur-le-google-play-store-1954">L’application Devoxx France d’In Fine est disponible sur le Google Play Store</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.infine.com/lapplication-devoxx-france-din-fine-est-disponible-sur-le-google-play-store-1954/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Devoxx 2011 &#8211; Comparatif de performances des frameworks web Java et plus encore &#8230;</title>
		<link>https://blog.infine.com/devoxx-2011-comparatif-de-performances-des-frameworks-web-java-et-plus-encore-1411?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=devoxx-2011-comparatif-de-performances-des-frameworks-web-java-et-plus-encore</link>
					<comments>https://blog.infine.com/devoxx-2011-comparatif-de-performances-des-frameworks-web-java-et-plus-encore-1411#respond</comments>
		
		<dc:creator><![CDATA[Christian Nguyen Van Than]]></dc:creator>
		<pubDate>Thu, 26 Jan 2012 11:00:56 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[devoxx]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Spring MVC]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://blog.infine.com/?p=1411</guid>

					<description><![CDATA[<p><span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">3</span> <span class="rt-label rt-postfix">min.</span></span> Comparatifs de frameworks web à Devoxx 2011 Cet article a pour but de présenter brièvement la présentation de Stijn Van den Enden, lors du Devoxx 2011, sur les performances brutes de plusieurs frameworks connus et de partager quelques impressions sur ce sujet. Dans la première partie, il présente la méthodologie de tests ainsi que les &#8230;</p>
<p>The post <a href="https://blog.infine.com/devoxx-2011-comparatif-de-performances-des-frameworks-web-java-et-plus-encore-1411">Devoxx 2011 – Comparatif de performances des frameworks web Java et plus encore …</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">3</span> <span class="rt-label rt-postfix">min.</span></span><h1>Comparatifs de frameworks web à Devoxx 2011</h1>
<p>Cet article a pour but de présenter brièvement la présentation de  Stijn Van den Enden, lors du Devoxx 2011, sur les performances brutes de  plusieurs frameworks connus et de partager quelques impressions sur ce  sujet.</p>
<p>Dans la première partie, il présente la méthodologie de tests ainsi que les outils : le coté test.<br />
Dans la seconde partie, il nous montre les résultats qu&#8217;il a obtenu : le coté performance.<br />
Les slides de la présentation sont disponibles <a href="http://prezi.com/dr3on1qcajzw/www-world-wide-wait-devoxx-edition/">ici<br />
</a><br />
En résumé, on y voit la mise en place de la plateforme de tests ainsi que les outils utilisés.</p>
<p><span id="more-1411"></span></p>
<p><span style="text-decoration: underline">Plateforme de tests :</span></p>
<p><a href="https://blog.infine.com/wp-content/uploads/2011/11/plateforme-de-test1.png" class="fancyboxgroup" rel="gallery-1411"><img loading="lazy" decoding="async" class="alignnone size-large wp-image-1450" src="https://blog.infine.com/wp-content/uploads/2011/11/plateforme-de-test1-1024x646.png" alt="plateforme de test" width="807" height="509" srcset="https://blog.infine.com/wp-content/uploads/2011/11/plateforme-de-test1-1024x646.png 1024w, https://blog.infine.com/wp-content/uploads/2011/11/plateforme-de-test1-300x189.png 300w, https://blog.infine.com/wp-content/uploads/2011/11/plateforme-de-test1.png 1439w" sizes="(max-width: 807px) 100vw, 807px" /></a></p>
<p><span style="text-decoration: underline">Conclusion :</span></p>
<p><a href="https://blog.infine.com/wp-content/uploads/2011/11/conclusion.png" class="fancyboxgroup" rel="gallery-1411"><img loading="lazy" decoding="async" class="alignnone size-large wp-image-1449" src="https://blog.infine.com/wp-content/uploads/2011/11/conclusion-1024x283.png" alt="conclusion des tests" width="778" height="215" srcset="https://blog.infine.com/wp-content/uploads/2011/11/conclusion-1024x283.png 1024w, https://blog.infine.com/wp-content/uploads/2011/11/conclusion-300x82.png 300w, https://blog.infine.com/wp-content/uploads/2011/11/conclusion.png 1172w" sizes="(max-width: 778px) 100vw, 778px" /></a></p>
<p>Sa conclusion étant qu&#8217;en terme de performance brute, on a :</p>
<ol>
<li>GWT</li>
<li>Spring MVC</li>
<li>JSF 2.1.2 (Implementation Mojarra) ou Wicket</li>
<li>MyFaces (n&#8217;apparait pas dans le slide)</li>
</ol>
<p>Dans sa conclusion, qui n&#8217;apparait pas dans les slides, il dit aussi que  souvent, ce n&#8217;est pas le framework web qui est la principale cause de  la mauvaise performance d&#8217;une application.<br />
Pendant sa présentation,  il a souligné que le seul framework qui a posé problème est JSF 2  (problème de mémoire, ce qui ne m&#8217;étonne pas).<br />
Enfin, il nous rappelle qu&#8217;il faut aussi penser à la facilité de développement pour garder une bonne productivité.</p>
<h1>Avis personnel</h1>
<p>Pour ma part, la conclusion de Stijn Van den Enden ne doit pas tenir  compte du temps de rendu de la page, sinon Spring MVC serait 1er avec  GWT voire même devant.</p>
<p>Sur le point où il faut privilégier la  facilité de développement, on regrettera l&#8217;absence du comparatif des  frameworks Grails et Play qui sont tous deux excellents sur ce point.</p>
<p>Si  vous avez envie de changer de framework, d&#8217;après plusieurs  présentations vu sur le même sujet (par exemple l&#8217;article de Peter  Thomas), il faut se fixer un prototype de page à faire et si cela vous  parait trop difficile, c&#8217;est que celui-ci n&#8217;est surement pas adapté à  vos besoins.</p>
<p>Personnellement, je me demande pourquoi il y a tant  de personnes qui démarrent un projet encore avec JSF pour le web alors  qu&#8217;il a autant de problèmes de performance et qu&#8217;il est parfois si  compliqué de faire des choses simples avec (exemple pagination coté  serveur&#8230;).</p>
<p>Pour finir, son approche de Spring MVC est  intéressante car elle tend vers une pratique que j&#8217;ai adopté. Pour ma  part, j&#8217;ai abandonné l&#8217;idée que le Java était fait pour le web, car  c&#8217;est loin d&#8217;être le cas. Je préfère juste garder Java pour la partie  serveur et utiliser essentiellement des langages du web pour la vue :  très peu de JSP et EL(Expression Language) avec beaucoup de HTML, CSS et  JQuery (avec des données fournies au format JSON, d&#8217;ailleurs Spring MVC  fait très bien cela).</p>
<p>S&#8217;il fallait choisir un framework pour le  web en ce moment, je prendrai Grails pour un projet &#8216;from scratch&#8217; ou  Spring MVC pour un projet existant. Je n&#8217;ai pas assez d&#8217;expérience sur  GWT mais sa génération du javascript me fait hésiter&#8230; Je garderai dans  les deux cas, JQuery pour les composants riches car il existe  énormément de plugins pour ce framework javascript ou ExtJS ou voir même  du flash (flex).</p>
<p>En ce qui concerne Wicket, sa programmation  ressemble un peu à du Swing (client lourd) qui pourrait dérouter un  développeur web. Tapestry est intéressant mais le temps d&#8217;apprentissage  est assez important.</p>
<h1>Comparatif plus étendu</h1>
<p>Pour ceux qui comme moi ont regretté l&#8217;absence de Grails et Play, voici  un article intéressant avec un comparatif des deux et surtout une légère  &#8216;customisation&#8217; pour gagner en performance.<br />
Notez que l&#8217;utilisation de Japid pour Play booste grandement ses performances et que Netty semble plus rapide que Tomcat.</p>
<p><em>Extrait du site JT Dev (vous pouvez cliquer sur les images pour les agrandir)</em></p>
<p><em><br />
</em></p>
<p><a href="https://blog.infine.com/wp-content/uploads/2011/12/results_numbers.jpg" class="fancyboxgroup" rel="gallery-1411"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1838" src="https://blog.infine.com/wp-content/uploads/2011/12/results_numbers.jpg" alt="" width="511" height="445" srcset="https://blog.infine.com/wp-content/uploads/2011/12/results_numbers.jpg 511w, https://blog.infine.com/wp-content/uploads/2011/12/results_numbers-300x261.jpg 300w" sizes="(max-width: 511px) 100vw, 511px" /></a></p>
<p><a href="https://blog.infine.com/wp-content/uploads/2011/12/conc_users_graph.jpg" class="fancyboxgroup" rel="gallery-1411"><img loading="lazy" decoding="async" class="alignnone size-large wp-image-1839" src="https://blog.infine.com/wp-content/uploads/2011/12/conc_users_graph-1024x615.jpg" alt="" width="1024" height="615" srcset="https://blog.infine.com/wp-content/uploads/2011/12/conc_users_graph-1024x615.jpg 1024w, https://blog.infine.com/wp-content/uploads/2011/12/conc_users_graph-300x180.jpg 300w, https://blog.infine.com/wp-content/uploads/2011/12/conc_users_graph.jpg 1596w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p><a href="http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/">Plus de détails ici</a></p><p>The post <a href="https://blog.infine.com/devoxx-2011-comparatif-de-performances-des-frameworks-web-java-et-plus-encore-1411">Devoxx 2011 – Comparatif de performances des frameworks web Java et plus encore …</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.infine.com/devoxx-2011-comparatif-de-performances-des-frameworks-web-java-et-plus-encore-1411/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Devoxx 2011 &#8211; Ceylon</title>
		<link>https://blog.infine.com/devoxx-2011-ceylon-1414?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=devoxx-2011-ceylon</link>
					<comments>https://blog.infine.com/devoxx-2011-ceylon-1414#respond</comments>
		
		<dc:creator><![CDATA[Florian Boulay]]></dc:creator>
		<pubDate>Wed, 30 Nov 2011 15:00:49 +0000</pubDate>
				<category><![CDATA[Conférence]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[devoxx]]></category>
		<category><![CDATA[jvm]]></category>
		<category><![CDATA[language]]></category>
		<guid isPermaLink="false">https://blog.infine.com/?p=1414</guid>

					<description><![CDATA[<p><span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">5</span> <span class="rt-label rt-postfix">min.</span></span> Ceylon est un nouveau langage s&#8217;exécutant sur la JVM. Il rejoint une liste désormais assez longue qui comprend notamment : Groovy Jython Jruby Scala Kotlin Fantom Gosu &#8230; Gavin King a créé Ceylon parce qu&#8217;il était frustré par les limitations de Java. Cette session a été animée par deux français, Emmanuel Bernard et Stéphane Epardaud &#8230;</p>
<p>The post <a href="https://blog.infine.com/devoxx-2011-ceylon-1414">Devoxx 2011 – Ceylon</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">5</span> <span class="rt-label rt-postfix">min.</span></span><p><a href="https://blog.infine.com/wp-content/uploads/2011/11/ceylon-logo.png" class="fancyboxgroup" rel="gallery-1414" title="ceylon logo"><img loading="lazy" decoding="async" src="https://blog.infine.com/wp-content/uploads/2011/11/ceylon-logo.png" alt="ceylon logo" title="ceylon logo" width="325" height="100" class="alignright size-full wp-image-1417" srcset="https://blog.infine.com/wp-content/uploads/2011/11/ceylon-logo.png 325w, https://blog.infine.com/wp-content/uploads/2011/11/ceylon-logo-300x92.png 300w" sizes="(max-width: 325px) 100vw, 325px" /></a></p>
<p>Ceylon est un nouveau langage s&#8217;exécutant sur la JVM. Il rejoint une liste désormais assez longue qui comprend notamment :</p>
<ul>
<li>Groovy</li>
<li>Jython</li>
<li>Jruby</li>
<li>Scala</li>
<li>Kotlin</li>
<li>Fantom</li>
<li>Gosu</li>
<li>&#8230;</li>
</ul>
<p>Gavin King a créé Ceylon parce qu&#8217;il était frustré par les limitations de Java. Cette session a été animée par deux français, Emmanuel Bernard et Stéphane Epardaud qui sont commiters sur le projet. Ils ont débuté la session en définissant les objectifs de Ceylon, avant de continuer sur ses fonctionnalités à l&#8217;aide de code. Je ne vais pas reproduire le code qu&#8217;ils ont utilisé pendant la présentation dans cet article, je vais essayer d&#8217;être plus concis.</p>
<p><span id="more-1414"></span></p>
<p>Emmanuel commence par nous indiquer les objectifs de Ceylon :</p>
<ul>
<li>Permettre d&#8217;écrire du code plus simple que l&#8217;équivalent en java</li>
<li>Éviter au développeur de tomber dans les principaux pièges de java</li>
</ul>
<p>Ceylon est pensé pour être lu facilement par des développeurs venant du monde Java. Emmanuel insiste bien sur ce point : Ceylon doit être simple à utiliser mais également simple à lire. Le code ne doit pas soulever d’ambiguïté. </p>
<h1>Principes de base</h1>
<h2>Classe simple</h2>
<pre class="brush: java; title: ; notranslate">
shared class User(String username, Natural age) {
    shared String username = username;
    shared Natural age = age;

    shared void printUser() {
        print(&quot;User name : &quot; username &quot; with age &quot; age &quot; is printed&quot;);
    }
}
</pre>
<p>Cette classe est courte, mais il y a déjà plusieurs choses à dire dessus :</p>
<ul>
<li>Le mot-clé <code>class</code> indique évidemment qu&#8217;il s&#8217;agit d&#8217;une déclaration de classe</li>
<li>Le mot-clé <code>shared</code> est l&#8217;équivalent du <code>public</code> de Java. Si le mot-clé <code>shared</code> est omis, alors la visibilité est privée (visibilité par défaut en Ceylon)</li>
<li>A la suite de la déclaration de la classe <code>User</code> se trouvent des paramètres <code>(String username, Natural age)</code>, il s&#8217;agit de la déclaration du constructeur. Je dis bien <strong>du</strong> car une Ceylon interdit la surcharge de méthode et donc un seul constructeur est autorisé</li>
<li><code>Natural</code> est l&#8217;objet représentant un nombre entier naturel. En Ceylon, il n&#8217;y a pas de type primitif</li>
<li>Les attributs de la classe sont obligatoirement initialisés, il n&#8217;y a pas de valeur par défaut, même <code>null</code> n&#8217;est pas implicite. Ici, les valeurs sont celles fournies au constructeur</li>
<li>La déclaration de la méthode <code>printUser</code> se fait comme en Java, le mot-clé <code>shared</code> en plus si on souhaite l&#8217;exposer</li>
<li>La concaténation de chaîne de caractère peut se faire sans le caractère <strong>+</strong>. La concaténation avec le caractère <strong>+</strong> fonctionne également</li>
</ul>
<h2>Méthodes</h2>
<pre class="brush: java; highlight: [2,6,12,22]; title: ; notranslate">
shared class Parent() {
    shared default void printMe() {
         print(&quot;I'm in parent class&quot;);
    }

    shared void printMessage(String messageToPrint = &quot;default argument value&quot;) {
         print(&quot;I'm in parent class and I print &quot; + messageToPrint);
    }
}

shared class Child() extends Parent() {
    shared actual void printMe() {
         print(&quot;I'm in child class&quot;);
    }
}

void testCeylon() {
    // appel de méthodes
    Parent p = Parent();
    p.printMe();
    p.printMessage(); // default value of parameter used - will work on milestone 2
    p.printMessage(&quot;message given as argument&quot;);  // classic call
    p.printMessage {  // name argument used
        messageToPrint = &quot;message with named arguments&quot;;
    };
}
</pre>
<p>Encore une fois, malgré la petite taille de code et sa lisibilité, plusieurs fonctionnalités sont à décrire :</p>
<ul>
<li>Comme dit plus haut, les méthodes ne sont pas surchargeables. Pour palier à cette obligation les paramètres peuvent avoir des valeurs par défaut (ligne 6), des <em>varargs</em> peuvent être utilisés (comme en java), ou des <em>union types</em> peuvent être utilisés (voir la doc pour plus de détails)</li>
<li>Les paramètres des méthodes sont nommés &#8211; ligne 22</li>
<li>Les méthodes peuvent être redéfinies dans les classes filles mais il faut l&#8217;autoriser explicitement grâce au mot clé <code>default</code> dans la classe parent (équivalent du <code>virtual</code> du C++ utilisé dans la classe parent) &#8211; ligne 2</li>
<li>Lors de la rédéfinition de la méthode dans une classe fille, il faut obligatoirement utiliser le mot-clé <code>actual</code> (équivalent à l&#8217;annotation <code>@Override</code> de Java) &#8211; ligne 12</li>
</ul>
<h2>null et immuabilité</h2>
<p>Par défaut toutes les variables sont immuables en Ceylon. Afin de les rendre modifiables il faut explicitement adapter la syntaxe de déclaration d&#8217;une variable en ajoutant le mot-clé <code>variable</code> et effectuer l&#8217;affectation avec l&#8217;opérateur <strong>:=</strong> : </p>
<pre class="brush: java; title: ; notranslate">
shared class ImmutableExample(Natural year) {
    // immutable
    Natural year = year;
    // Mutable
    variable Natural writableYear := year;
}
</pre>
<p>Afin d&#8217;éviter les trop nombreux <code>NullPointerException</code> de Java, une variable qui pourrait contenir la valeur  <code>null</code> doit être déclaré à l&#8217;aide d&#8217;un <code>?</code>. Ceci a des conséquences sur la manière d&#8217;utiliser ces variables comme le montre le code ci-dessous :</p>
<pre class="brush: java; title: ; notranslate">
// myBestVariable can be null
String? myBestVariable = functionThatCanReturnNull();
// to work on myBestVariable, a null check must be done
if (exists myBestVariable) {
    functionThatNeedAString(myBestVariable);
}
else {
    functionThatNeedAString(&quot;default value&quot;);
}
</pre>
<h2>Autres fonctionnalités</h2>
<p>Emmanuel et Stéphane ont présenté d&#8217;autres fonctionnalités importantes de Ceylon telles que les <em>union type</em> et les <em>intersection type</em>. Pour plus de détails, reportez vous à la <a href="http://ceylon-lang.org/documentation/tour/types/">documentation officielle.</a><br />
Malgré les arguments nommés, il est possible d&#8217;utiliser les generics. Les annotations sont également disponibles.<br />
La compatibilité entre Java et Ceylon est également disponible. Ceylon peut utiliser du code écrit en Java, et Java peut appeler du code Ceylon.</p>
<h1>En pratique</h1>
<p>Emmanuel et Stéphane, après avoir transmis les bases à l&#8217;auditoire, effectuent une démo en live de Ceylon dans Eclipse. Un plugin Eclipse a été développé et est déjà fontionnel. L&#8217;autocomplétion fonctionne bien, la coloration syntaxique et le refactoring également. Plus d&#8217;infos sur le <a href="https://github.com/ceylon/ceylon-ide-eclipse">repo git</a> associé.</p>
<p>Aucune version de Ceylon n&#8217;a encore été releasée. La prochaine version à sortir sera la milestone 1 qui ne comprendra pas encore toutes les fonctionnalités de la spécification. Trois milestones sont prévues avant que la version 1.0 ne sorte.</p>
<h2>Test de Ceylon</h2>
<p>Il est évidemment possible aujourd&#8217;hui de tester dès aujourd&#8217;hui Ceylon et pour cela, j&#8217;ai réalisé un petit screencast afin de vous montrer qu&#8217;avoir le compilateur Ceylon utilisable sur son poste est vraiment simple et rapide.</p>
<p>Les prérequis sont d&#8217;avoir sur sa machine Java 6, Ant et Git. Dans le screencast, je clone les trois repositories Git nécessaires à la création du compilateur. Chacun nécessite Ant afin d&#8217;être compilé. Une fois le compilateur généré, je le teste en compilant l&#8217;exemple de code que j&#8217;ai donné ci-dessus dans le paragraphe <em>Méthodes</em>, et je l&#8217;exécute.</p>
<p><iframe loading="lazy" src="http://player.vimeo.com/video/32661574?title=0&amp;portrait=0&amp;color=ff9933" width="660" height="371" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
<p>Pour ceux qui veulent tester, je vous retranscrits les commandes utilisées dans le screencast afin de faciliter le copier coller</p>

<table id="wp-table-reloaded-id-1-no-1" class="wp-table-reloaded wp-table-reloaded-id-1">
<thead>
	<tr class="row-1 odd">
		<th class="column-1">Repository Git</th><th class="column-2">Commande pour compiler le repository</th>
	</tr>
</thead>
<tbody class="row-hover">
	<tr class="row-2 even">
		<td class="column-1">git://github.com/ceylon/ceylon.language.git</td><td class="column-2">ant clean publish</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">git://github.com/ceylon/ceylon-spec.git</td><td class="column-2">ant clean tree publish</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">git://github.com/ceylon/ceylon-compiler.git</td><td class="column-2">ant clean build</td>
	</tr>
</tbody>
</table>

<p>Une fois le compilateur généré, je l&#8217;ai testé. Mon fichier source se nomme <em>florian_boulay.ceylon</em> et se trouve dans le répertoire <em>samples</em>. Le répertoire <em>build</em> contient les fichiers Ceylon compilés. <em>testCeylon</em> correspond au nom de la fonction appelée pour lancer le programme.</p>

<table id="wp-table-reloaded-id-2-no-1" class="wp-table-reloaded wp-table-reloaded-id-2">
<tbody class="row-hover">
	<tr class="row-1 odd">
		<td class="column-1">Compilation du fichier Ceylon</td><td class="column-2">~/ceylon/ceylon-compiler/bin/ceylonc -src samples -out build samples/florian_boulay.ceylon</td>
	</tr>
	<tr class="row-2 even">
		<td class="column-1">Exécution du fichier Ceylon</td><td class="column-2">~/ceylon/ceylon-compiler/bin/ceylon -cp build/unversioned/default_module-unversioned.car testCeylon</td>
	</tr>
</tbody>
</table>

<p>Ceylon est un langage simple à comprendre pour qui vient de Java. En écrire est également à la portée de tous. Jusque là les objectifs de Gavin King sont atteints.</p>
<h2> Fin de la session</h2>
<p>Pour finir, Emmanuel nous indique que Ceylon a enfin sont site web : <a href="http://ceylon-lang.org">http://ceylon-lang.org</a></p>
<p>Il contient une documentation très complète, la spécification du langage écrite par Gavin King, un blog et tout ce qu&#8217;il faut pour contribuer au développement du langage. C&#8217;est là bas qu&#8217;il faut aller si vous souhaitez tester le langage qui n&#8217;a pas encore été releasé, mais peut être testé via la récupération du code source sur Github.</p>
<p>Comme vous le voyez, le logo de Ceylon est un éléphant, est-ce un hommage à PHP ? On peut lui souhaiter qu&#8217;il ait le même succès que PHP</p>
<p>De nombreux nouveaux langages ont émergé ces derniers mois fonctionnant sur la JVM (Eclipse Xtend, JetBrains Kotlin). Comme dit plus haut, Ceylon veut rester accessible à tout le monde en restant simple et facilement compréhensible. Est-ce que ces atouts seront suffisants pour faire de Ceylon une alternative à Java réellement utilisée, comme l&#8217;est Scala aujourd&#8217;hui ? Faites vous votre propre opinion et essayez le.</p><p>The post <a href="https://blog.infine.com/devoxx-2011-ceylon-1414">Devoxx 2011 – Ceylon</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.infine.com/devoxx-2011-ceylon-1414/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Devoxx 2011 &#8211; Utilisation du GPU pour les applis Android</title>
		<link>https://blog.infine.com/devoxx-2011-utilisation-du-gpu-pour-les-applis-android-1452?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=devoxx-2011-utilisation-du-gpu-pour-les-applis-android</link>
					<comments>https://blog.infine.com/devoxx-2011-utilisation-du-gpu-pour-les-applis-android-1452#respond</comments>
		
		<dc:creator><![CDATA[Victor Bonnet]]></dc:creator>
		<pubDate>Fri, 25 Nov 2011 09:00:06 +0000</pubDate>
				<category><![CDATA[Conférence]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[devoxx]]></category>
		<guid isPermaLink="false">https://blog.infine.com/?p=1452</guid>

					<description><![CDATA[<p><span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">4</span> <span class="rt-label rt-postfix">min.</span></span> Chet Haase et Romain Guy nous ont présenté pendant Devoxx lors de la conférence Graphics goodies in Android, les nouveautés d’Android pour développer des applications qui tuent. Nous allons voir dans cet article l’utilisation de l&#8217;accélération graphique pour les rendus 2D des applications Android 3.0 et supérieures. L’openGL existe depuis les premières versions d’Android pour &#8230;</p>
<p>The post <a href="https://blog.infine.com/devoxx-2011-utilisation-du-gpu-pour-les-applis-android-1452">Devoxx 2011 – Utilisation du GPU pour les applis Android</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">4</span> <span class="rt-label rt-postfix">min.</span></span><p><a href="http://graphics-geek.blogspot.com/">Chet Haase</a> et <a href="http://www.curious-creature.org/">Romain Guy</a> nous ont présenté pendant Devoxx lors de la conférence <a href="http://www.devoxx.com/display/DV11/Graphics+Goodies+in+Android">Graphics goodies in Android</a>, les nouveautés d’Android pour développer des applications qui tuent. Nous allons voir dans cet article l’utilisation de l&#8217;accélération graphique pour les rendus 2D des applications Android 3.0 et supérieures.</p>
<p>L’openGL existe depuis les premières versions d’Android pour les jeux et certains autres composants mais l&#8217;interface graphique des applications a toujours été “SOFTWARE”.<br />
Depuis Android 3.0 il est possible d’activer l&#8217;accélération graphique pour chaque application ce qui nous permet d’avoir une meilleur expérience utilisateur, avoir des animations plus fluides et de libérer un peu le CPU.</p>
<p><span id="more-1452"></span></p>
<h1 style="margin-top: 30px">Software rendering vs Hardware rendering</h1>
<p><a href="https://blog.infine.com/wp-content/uploads/2011/11/img3.jpg" class="fancyboxgroup" rel="gallery-1452"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1453" src="https://blog.infine.com/wp-content/uploads/2011/11/img3.jpg" alt="Software vs Hardware" width="642" height="498" srcset="https://blog.infine.com/wp-content/uploads/2011/11/img3.jpg 642w, https://blog.infine.com/wp-content/uploads/2011/11/img3-300x232.jpg 300w" sizes="(max-width: 642px) 100vw, 642px" /></a></p>
<p>Lorsqu’une application utilise l&#8217;accélération matérielle, l’OpenGL est utilisé lors de l’appel de la fonction Canvas.draw().</p>
<h1 style="margin-top: 40px">Activation de l&#8217;accélération matérielle</h1>
<p>Pour activer l’utilisation du GPU sur Android 3.0+, il suffit d’ajouter <span style="color: blue">android:hardwareAccelerated=</span><span style="color: green">&#8220;true&#8221;</span> dans le tag application du fichier AndroidManifest.xml. Ce simple ajout devrait activer l&#8217;accélération matérielle pour toute votre application, cependant certains composant ne peuvent pas (encore) bénéficier de cette fonctionnalité c’est pourquoi nous allons voir par la suite comment la contrôler.<br />
<a href="https://blog.infine.com/wp-content/uploads/2011/11/andro.jpg" class="fancyboxgroup" rel="gallery-1452"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1464" style="margin-top: 15px" src="https://blog.infine.com/wp-content/uploads/2011/11/andro.jpg" alt="" width="331" height="232" srcset="https://blog.infine.com/wp-content/uploads/2011/11/andro.jpg 331w, https://blog.infine.com/wp-content/uploads/2011/11/andro-300x210.jpg 300w" sizes="(max-width: 331px) 100vw, 331px" /></a></p>
<h1 style="margin-top: 40px">Contrôle de l&#8217;accélération matérielle</h1>
<p>Si votre application a des problèmes sur certains éléments  avec l&#8217;accélération matérielle, il est tout à fait possible de définir quels éléments doivent ou non utiliser le GPU.</p>
<p>On peut donc l’activer ou la désactiver sur ces différents éléments :</p>
<ul>
<li>Application</li>
<li>Activity</li>
<li>Window</li>
<li>View</li>
</ul>
<p style="margin-top: 30px">Pour utiliser l&#8217;accélération matérielle au niveau Application ou Activity il faut utiliser le fichier AndroidManifest.xml</p>
<pre class="brush: xml; title: ; notranslate">
&lt;application android:hardwareAccelerated=&quot;true&quot;&gt;
    &lt;activity ... /&gt;
    &lt;activity android:hardwareAccelerated=&quot;false&quot; /&gt;
&lt;/application&gt;
</pre>
<p style="margin-top: 30px">Voici ci-dessous un exemple de code à utiliser pour l’utiliser au niveau “Window” :</p>
<pre class="brush: java; title: ; notranslate">
getWindow().setFlags(
        WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
        WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
</pre>
<p style="margin-top: 30px">Pour finir, on peut désactiver l’utilisation du GPU seulement pour un partie de l&#8217;écran (View) :</p>
<pre class="brush: java; title: ; notranslate">
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
</pre>
<h3 style="margin-top: 30px">Vérifier si un élément utilise le GPU</h3>
<p>Il peut être important de savoir si un élément utilise l&#8217;accélération matérielle à un moment donné.<br />
Il existe 2 façons de le vérifier :</p>
<ul>
<li><a href="http://developer.android.com/reference/android/view/View.html#isHardwareAccelerated()"><span style="color: blue">View.isHardwareAccelerated()</span></a>, retourne “true” si la View est attachée à une Windows qui utilise le GPU</li>
<li><a href="http://developer.android.com/reference/android/graphics/Canvas.html#isHardwareAccelerated()"><span style="color: blue">Canvas.isHardwareAccelerated()</span></a>, retourne “true” si le Canvas est acceleré</li>
</ul>
<h1 style="margin-top: 40px">Fonctions supportant l&#8217;accélération matérielle</h1>
<p>La plupart des fonctions habituelles de la classe Canvas sont supportées, cependant certaines ne le sont pas mais le seront peut-être dans les futures versions d’Android.</p>
<p>Voici la liste des fonctions <strong>non supportées</strong> :</p>
<div style="margin-left: 15px;margin-right: 15px;padding: 5px">
<div><a href="http://developer.android.com/reference/android/graphics/Canvas.html"><span style="color: blue;font-size: 16px;font-weight: bold">Canvas</span></a></div>
<ul class="tinylist">
<li><a href="http://developer.android.com/reference/android/graphics/Canvas.html#clipPath(android.graphics.Path)"><span style="color: green">clipPath()</span></a></li>
<li><a href="http://developer.android.com/reference/android/graphics/Canvas.html#clipRegion(android.graphics.Region)"><span style="color: green">clipRegion()</span></a></li>
<li><a href="http://developer.android.com/reference/android/graphics/Canvas.html#drawPicture(android.graphics.Picture)"><span style="color: green">drawPicture()</span></a></li>
<li><a href="http://developer.android.com/reference/android/graphics/Canvas.html#drawPosText(char[], int, int, float[], android.graphics.Paint)"><span style="color: green">drawPosText()</span></a></li>
<li><a href="http://developer.android.com/reference/android/graphics/Canvas.html#drawTextOnPath(char[], int, int, android.graphics.Path, float, float, android.graphics.Paint)"><span style="color: green">drawTextOnPath()</span></a></li>
<li><a href="http://developer.android.com/reference/android/graphics/Canvas.html#drawVertices(android.graphics.Canvas.VertexMode, int, float[], int, float[], int, int[], int, short[], int, int, android.graphics.Paint)"><span style="color: green">drawVertices()</span></a></li>
</ul>
<div><a href="http://developer.android.com/reference/android/graphics/Paint.html"><span style="color: blue;font-size: 16px;font-weight: bold">Paint</span></a></div>
<ul class="tinylist">
<li><a href="http://developer.android.com/reference/android/graphics/Paint.html#setLinearText(boolean)"><span style="color: green">setLinearText()</span></a></li>
<li><a href="http://developer.android.com/reference/android/graphics/Paint.html#setMaskFilter(android.graphics.MaskFilter)"><span style="color: green">setMaskFilter()</span></a></li>
<li><a href="http://developer.android.com/reference/android/graphics/Paint.html#setRasterizer(android.graphics.Rasterizer)"><span style="color: green">setRasterizer()</span></a></li>
</ul>
</div>
<p>Certaines autres fonctions fonctionnent <strong>différemment</strong> lorsque l’accélératrion matérielle est activée :</p>
<div style="margin-left: 15px;margin-right: 15px;padding: 5px">
<div><a href="http://developer.android.com/reference/android/graphics/Canvas.html"><span style="color: blue;font-size: 16px;font-weight: bold">Canvas</span></a></div>
<ul class="tinylist">
<li><a href="http://developer.android.com/reference/android/graphics/Canvas.html#clipRect(android.graphics.Rect)"><span style="color: green">clipRect()</span></a> : XOR, Difference and ReverseDifference clip modes are ignored; 3D transforms do not apply to the clip rectangle</li>
<li><a href="http://developer.android.com/reference/android/graphics/Canvas.html#drawBitmapMesh(android.graphics.Bitmap, int, int, float[], int, int[], int, android.graphics.Paint)"><span style="color: green">drawBitmapMesh()</span></a> : colors array is ignored</li>
<li><a href="http://developer.android.com/reference/android/graphics/Canvas.html#drawLines(float[], android.graphics.Paint)"><span style="color: green">drawLines()</span></a> : anti-aliasing is not supported</li>
<li><a href="http://developer.android.com/reference/android/graphics/Canvas.html#setDrawFilter(android.graphics.DrawFilter)"><span style="color: green">setDrawFilter()</span></a> : can be set, but ignored</li>
</ul>
<div><a href="http://developer.android.com/reference/android/graphics/Paint.html"><span style="color: blue;font-size: 16px;font-weight: bold">Paint</span></a></p>
<div>
<ul class="tinylist">
<li><a href="http://developer.android.com/reference/android/graphics/Paint.html#setDither(boolean)"><span style="color: green">setDither()</span></a> : ignored</li>
<li><a href="http://developer.android.com/reference/android/graphics/Paint.html#setFilterBitmap(boolean)"><span style="color: green">setFilterBitmap()</span></a> : filtering is always on</li>
<li><a href="http://developer.android.com/reference/android/graphics/Paint.html#setShadowLayer(float, float, float, int)"><span style="color: green">setShadowLayer()</span></a> : works with text only</li>
</ul>
<div><a href="http://developer.android.com/reference/android/graphics/ComposeShader.html"><span style="color: blue;font-size: 16px;font-weight: bold">ComposeShader</span></a></div>
<p><a href="http://developer.android.com/reference/android/graphics/ComposeShader.html"> </a></p>
<ul class="tinylist"><a href="http://developer.android.com/reference/android/graphics/ComposeShader.html"> </a></p>
<li><a href="http://developer.android.com/reference/android/graphics/ComposeShader.html"></a><a href="http://developer.android.com/reference/android/graphics/ComposeShader.html"><span style="color: green">ComposeShader</span></a> can only contain shaders of different types (a BitmapShader and a LinearGradientShader for instance, but not two instances of BitmapShader)</li>
<li><a href="http://developer.android.com/reference/android/graphics/ComposeShader.html"><span style="color: green">ComposeShader</span></a> cannot contain a ComposeShader</li>
</ul>
</div>
<h1 style="margin-top: 40px">Les View Layers</h1>
<p>Les layers sont présents depuis la première version d’Android. Ils permettent d’avoir plusieurs couches (différentes vues) en cache et d’avoir de meilleures performances pour des animations ou des effets.</p>
<p>Android 3.0 introduit une nouvelle API appelée <a href="http://developer.android.com/reference/android/view/View.html#setLayerType(int, android.graphics.Paint)">View.setLayerType(int type, Paint p)</a>. Cette fonction prend 2 paramètres, le premier définit le type de layer que l’on souhaite utiliser et le second (facultatif) définit grâce à un <a href="http://developer.android.com/reference/android/graphics/Paint.html">Paint</a> comment la couche doit être composée (<a href="http://developer.android.com/reference/android/graphics/Paint.html#getAlpha()">Translucency (alpha)</a>, <a href="http://developer.android.com/reference/android/graphics/Paint.html#getXfermode()">Blending mode</a>, <a href="http://developer.android.com/reference/android/graphics/Paint.html#getColorFilter()">Color filter</a>).</p>
<p>Il existe 3 différents types de layer :</p>
<ul>
<li><a href="http://developer.android.com/reference/android/view/View.html#LAYER_TYPE_NONE"><span style="color: blue">LAYER_TYPE_NONE</span></a> : Rendu normal sans mémoire tampon.</li>
<li><a href="http://developer.android.com/reference/android/view/View.html#LAYER_TYPE_HARDWARE"><span style="color: blue">LAYER_TYPE_HARDWARE</span></a> : Rendu utilisant les textures matérielles seulement si l’application utilise l&#8217;accélération matérielle, sinon le layer sera de type LAYER_TYPE_SOFTWARE.</li>
<li><a href="http://developer.android.com/reference/android/view/View.html#LAYER_TYPE_SOFTWARE"><span style="color: blue">LAYER_TYPE_SOFTWARE</span></a> : Rendu transformé par le software en bitmap.</li>
</ul>
<p>Vous pouvez choisir le type de Layer en fonction des objectifs de ceux-ci :</p>
<ul>
<li><strong>Performance :</strong> Utilisation du type hardware. Une fois que le rendu est calculé, le code générant le rendu de la View ne sera plus éxecuté tant que la fonction invalidate() de la View ne sera pas appelé. Quelques animations comme celles utilisant la transparence peuvent utiliser directement le layer généré ce qui est très efficace à faire par le GPU.</li>
<li><strong>Effets Visuel :</strong> Utilisation du hardware ou software layer en appliquant un “Paint”, le second paramètre de la fonction View.setLayerType(int type, Paint p). Par exemple, c’est assez simple d’avoir un rendu noir et blanc sur une image en utilisant “ColorMatrixColorFilter”.</li>
<li><strong>Compatibilité :</strong> Utilisation du software layer pour forcer le calcul du rendu de la View par le software. Ça permet contourner toutes les restrictions hardware vues précédemment.</li>
</ul>
<h1 style="margin-top: 40px">Conclusion</h1>
<p>Lors de <a href="http://www.devoxx.com/display/DV11/Android+Keynote">l&#8217;Android keynote</a> Devoxx 2011, <a href="http://en.wikipedia.org/wiki/Tim_Bray">Tim Bray</a> a annoncé que l’Android market avait plus de 300 000 applications et que maintenant l’objectif est d’avoir un maximum d’applications “géniales” (make it great&#8230;). Le but de cette conférence était donc non seulement de présenter les nouveautés d’Android mais aussi de motiver les développeurs à créer de super applications (belle, rapide, fluide, &#8230;).<br />
Cet article reprend les explications, présentées lors de la conférence <a href="http://www.devoxx.com/display/DV11/Graphics+Goodies+in+Android">Graphics goodies in Android</a>, pour activer et jouer avec l&#8217;accélération matérielle dans nos applications. Vous pouvez retrouver une documentation plus précise sur le <a href="http://www.google.com/url?q=http%3A%2F%2Fdeveloper.android.com%2Fguide%2Ftopics%2Fgraphics%2Fhardware-accel.html">site Android developers</a>.<br />
J’espère que cet article est assez clair et que les développeurs francophones pourront s&#8217;en inspirer pour améliorer l’expérience utilisateur de leurs applis.</p>
</div>
</div><p>The post <a href="https://blog.infine.com/devoxx-2011-utilisation-du-gpu-pour-les-applis-android-1452">Devoxx 2011 – Utilisation du GPU pour les applis Android</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.infine.com/devoxx-2011-utilisation-du-gpu-pour-les-applis-android-1452/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Devoxx 2011 &#8211; annonces</title>
		<link>https://blog.infine.com/devoxx-2011-annonces-1397?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=devoxx-2011-annonces</link>
					<comments>https://blog.infine.com/devoxx-2011-annonces-1397#respond</comments>
		
		<dc:creator><![CDATA[Florian Boulay]]></dc:creator>
		<pubDate>Wed, 16 Nov 2011 15:29:36 +0000</pubDate>
				<category><![CDATA[Conférence]]></category>
		<category><![CDATA[devoxx]]></category>
		<category><![CDATA[play framework]]></category>
		<guid isPermaLink="false">https://blog.infine.com/?p=1397</guid>

					<description><![CDATA[<p><span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">2</span> <span class="rt-label rt-postfix">min.</span></span> Cette première grosse journée pour Devoxx a été l&#8217;occasion de faire différentes annonces. La première concerne le framework Play et la deuxième concerne le monde Java français. Play La version 2.0 de Play a déjà été annoncée il y a plusieurs semaines. Une pré-version de test avait été mise à disposition. Aujourd&#8217;hui la sortie de &#8230;</p>
<p>The post <a href="https://blog.infine.com/devoxx-2011-annonces-1397">Devoxx 2011 – annonces</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">2</span> <span class="rt-label rt-postfix">min.</span></span><p><a href="https://blog.infine.com/wp-content/uploads/2011/11/devoxx11.png" class="fancyboxgroup" rel="gallery-1397" title="Devoxx 2011"><img loading="lazy" decoding="async" src="https://blog.infine.com/wp-content/uploads/2011/11/devoxx11.png" alt="Logo Devoxx 2011" title="Devoxx 2011" width="218" height="80" class="alignright size-full wp-image-1407" /></a><br />
Cette première grosse journée pour Devoxx a été l&#8217;occasion de faire différentes annonces. La première concerne le framework Play et la deuxième concerne le monde Java français.</p>
<h1>Play</h1>
<p>La version 2.0 de Play a déjà été annoncée il y a plusieurs semaines. Une pré-version de test avait été mise à disposition. Aujourd&#8217;hui la sortie de la beta a été annoncée.</p>
<p><span id="more-1397"></span></p>
<p>Lors de la présentation faite par Sadek Drobi (<a href="http://twitter.com/Sadache">@Sadache</a>) et Guillaume Bort, les nouveautés ont été détaillées :</p>
<ul>
<li>Intégration de Scala directement dans Play : les templates ne se feront plus en Groovy mais en Scala. Les classes pourront être faites en Java ou en Scala. Cela a pour conséquence la mise à disposition de la console Scala qui permettra, par exemple, d&#8217;appeler directement du code applicatif à parti de la ligne de commande.</li>
<li>Un système de build est désormais intégré, il s&#8217;agit de SBT (Simple Build Tool). Ce choix est certainement la conséquence de l&#8217;intégration de Scala. Cela remplacera l&#8217;ancien système basé sur Ivy.</li>
<li>Intégration d&#8217;Akka</li>
<li>Les scripts javascript et les feuilles de styles sont compilés</li>
</ul>
<p>Plus d&#8217;infos disponibles sur le site officiel : <a href="http://scala.playframework.org/2.0">http://scala.playframework.org/2.0</a></p>
<p>L&#8217;autre annonce est que Play intègre désormais la stack Typesafe. Cela signifie que Typesafe fournira du support sur Play. De plus Guillaume Bort va désormais siégé au board of advisor de Typesafe (Je ne sais pas comment le traduire, conseil d&#8217;administration ?) en tant que conseiller sur les choix techniques web d&#8217;après ce que Guillaume a dit durant sa présentation.</p>
<h1>Devoxx France</h1>
<p><a href="https://blog.infine.com/wp-content/uploads/2011/11/devoxx_france_300_250.gif" class="fancyboxgroup" rel="gallery-1397" title="devoxx_france"><img loading="lazy" decoding="async" src="https://blog.infine.com/wp-content/uploads/2011/11/devoxx_france_300_250.gif" alt="Bannière Devoxx France" title="devoxx_france" width="250" height="200" class="alignleft size-full wp-image-1405" /></a></p>
<p>Une version française de Devoxx se tiendra du 18 au 20 avril 2012 à Paris ! Elle est inspirée du modèle belge et elle durera 3 jours et sera à 75% en français et 25% en anglais. Elle est organisée par les membres du Paris Jug (Antonio Goncalves, Zouheir Cadi, José Paumard et Nicolas Martignolle). Ce sera la plus grosse conférence Java francophone, venez nombreux !<br />
In Fine sera bien entendu partenaire de cet évènement.<br />
Plus de détails sur le <a href="http://www.touilleur-express.fr/2011/11/16/devoxx-france-2012/">blog de Nicolas Martignolle.</a></p><p>The post <a href="https://blog.infine.com/devoxx-2011-annonces-1397">Devoxx 2011 – annonces</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.infine.com/devoxx-2011-annonces-1397/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Devoxx 2010, vu de l&#8217;intérieur</title>
		<link>https://blog.infine.com/devoxx-2010-vu-de-linterieur-366?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=devoxx-2010-vu-de-linterieur</link>
					<comments>https://blog.infine.com/devoxx-2010-vu-de-linterieur-366#comments</comments>
		
		<dc:creator><![CDATA[Florian Boulay]]></dc:creator>
		<pubDate>Mon, 06 Dec 2010 18:00:30 +0000</pubDate>
				<category><![CDATA[Conférence]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[cloudbees]]></category>
		<category><![CDATA[devoxx]]></category>
		<category><![CDATA[play framework]]></category>
		<guid isPermaLink="false">https://blog.infine.com/?p=366</guid>

					<description><![CDATA[<p><span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">4</span> <span class="rt-label rt-postfix">min.</span></span> Mise à jour du 6 décembre 2010 :CloudBees a levé 4 millions de dollars. Plus de détails sur le blog de CloudBees. Devoxx 2010 s&#8217;est tenue toute cette semaine à Anvers. Entre 2 présentations de Brian Goetz, Joshua Bloch ou Mark Reinhold, je suis allé voir quelques personnalités du monde java afin d&#8217;en savoir plus &#8230;</p>
<p>The post <a href="https://blog.infine.com/devoxx-2010-vu-de-linterieur-366">Devoxx 2010, vu de l’intérieur</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></description>
										<content:encoded><![CDATA[<span class="rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Temps de lecture : </span> <span class="rt-time">4</span> <span class="rt-label rt-postfix">min.</span></span><p><strong>Mise à jour du 6 décembre 2010 :</strong>CloudBees a levé 4 millions de dollars. Plus de détails sur le <a href="http://blog.cloudbees.com/2010/11/cloudbees-raises-4m-usd-from-matrix.html">blog de CloudBees</a>.</p>
<p>Devoxx 2010 s&#8217;est tenue toute cette semaine à Anvers. Entre 2 présentations de Brian Goetz, Joshua Bloch ou Mark Reinhold, je suis allé voir quelques personnalités du monde java afin d&#8217;en savoir plus sur leur actualité et leurs impressions.</p>
<h1>Stephan Janssen</h1>
<p><a href="https://blog.infine.com/wp-content/uploads/2010/11/stephanJanssen.jpg" class="fancyboxgroup" rel="gallery-366" title="Stephan Janssen"><img loading="lazy" decoding="async" class="alignleft size-full wp-image-382" title="Stephan Janssen" src="https://blog.infine.com/wp-content/uploads/2010/11/stephanJanssen.jpg" alt="Stephan Janssen picture" width="92" height="114" /></a>Créateur du BeJUG et de <a href="http://www.devoxx.com">Devoxx</a>. Je suis allé le voir pour avoir quelques détails sur l&#8217;organisation d&#8217;un tel évènement.</p>
<p><strong>Bonjour Stephan, peux-tu  présenter Devoxx à ceux qui ne connaissent pas ?</strong><br />
Devoxx est une conférence annuelle qui est organisée par le Java User Group belge. C&#8217;est déjà la neuvième édition. Quelques statistiques : 3000 personnes qui viennent de 40 pays, et cela dure 5 jours à Anvers dans le deuxième plus grand complexe de cinéma d&#8217;Europe.<br />
<span id="more-366"></span><br />
<strong>Comment expliques-tu le succès de Devoxx ?</strong><br />
D&#8217;abord le prix qui est vraiment pas cher, moins de 500€ pour 5 jours. On a aussi des rock stars qui viennent ! On a des personnes comme Joshua Bloch, Romain Guy etc. Le lieu aussi avec des écrans géants est vraiment chouette.</p>
<p><strong>Penses-tu que Devoxx se déroulera ailleurs dans un futur proche ?</strong><br />
L&#8217;autre endroit possible est le Heysel à Bruxelles, mais le problème est que nous devons créer des salles nous-mêmes, ce qui aurait pour conséquence que le prix de l&#8217;entrée doublerait. Je préfère &#8220;less is more&#8221;.</p>
<p><strong>As-tu eu le temps d&#8217;assister à quelques sessions ?</strong><br />
Oui, j&#8217;en ai vu quelques sessions. Ca roule bien, mais heureusement on également <a href="http://parleys.com">parleys</a> où toutes les sessions seront diffusées.</p>
<p><strong>Merci</strong><br />
Merci</p>
<h1>Sacha Labourey</h1>
<p><a href="https://blog.infine.com/wp-content/uploads/2010/11/sachaLabourey.jpg" class="fancyboxgroup" rel="gallery-366" title="Sacha Labourey"><img loading="lazy" decoding="async" class="alignleft size-full wp-image-384" title="Sacha Labourey" src="https://blog.infine.com/wp-content/uploads/2010/11/sachaLabourey.jpg" alt="Sacha Labourey picture" width="87" height="114" /></a>Après une carrière chez JBoss, Sacha a créé une société <a href="http://cloudbees.com/">CloudBees.</a></p>
<p><strong>Bonjour Sacha, quelle est la raison de ta venue à Devoxx cette année ?</strong><br />
Manger des sandwichs, et boire des coca zero principalement ! Mais surtout présenter CloudBees, ma société.</p>
<p><strong>Présente nous CloudBees.</strong><br />
CloudBees est une société qui vit dans les nuages, et qui vise à rendre les développeurs à nouveau en contrôle de l&#8217;informatique, qui a été trop longtemps volé par ces messieurs de l&#8217;IT.<br />
Le désir est de pouvoir faire totalement faire ses développements dans le cloud, ensuite les tests unitaires et le Q&amp;A de manière générale, et ensuite la mise en production. Donc l&#8217;unité sur laquelle on se focalise en tant que développeur sera vraiment l&#8217;application, on ne se soucie plus du tout de l&#8217;IT, on ne soucie plus du tout de virtual machine, de java virutal machine, d&#8217;operation system, de storage, de backup, tout ça doit disparaître. On se focalise sur l&#8217;application, et nous on fera le reste.</p>
<p><strong>CloudBees est uniquement destiné aux applications java ?</strong><br />
Aujourd&#8217;hui on est orienté sur la machine virtuelle java, ça peut être scala, jRuby ou autre chose. Aujourd&#8217;hui la majorité utilise java malgré sa mort annoncé jour après jour, c&#8217;est quand même un écosystème extrêmement saint et fort, mais rien dans l&#8217;infrastructure qu&#8217;on est en train de mettre en place en terme de process, en terme de provisionning et autre ne dépend réellement de java. C&#8217;est suffisamment générique, mais il faut choisir ses guerres, la notre c&#8217;est celle de java pour l&#8217;instant.</p>
<p><strong>Pour terminer, quelles sont tes impressions sur Devoxx 2010 ?</strong><br />
J&#8217;ai pas encore eu le temps d&#8217;aller voir des sessions, mais je retrouve tout à fait l&#8217;esprit JavaPolis de l&#8217;époque, donc ça se passe très bien, et on est à peine mieux respecté qu&#8217;à JavaOne donc ça fait toujours plaisir.</p>
<p><strong>Merci beaucoup Sacha.</strong><br />
Merci !</p>
<h1>Nicolas Leroux</h1>
<p><a href="https://blog.infine.com/wp-content/uploads/2010/11/nicolasleroux.jpg" class="fancyboxgroup" rel="gallery-366" title="Nicolas Leroux"><img loading="lazy" decoding="async" class="alignleft size-full wp-image-383" title="Nicolas Leroux" src="https://blog.infine.com/wp-content/uploads/2010/11/nicolasleroux.jpg" alt="Nicolas Leroux picture" width="114" height="114" /></a>Nicolas est expatrié aux Pays-Bas où il travaille en tant que développeur pour la société Lunatech. Il est également un des contributeurs les plus actifs du framework  <a href="http://www.playframework.org/">Play!</a>. C&#8217;est à ce titre que je suis allé le voir.</p>
<p><strong>Bonjour Nicolas, quelle est la raison de ta venue à Devoxx cette année ?</strong><br />
Pour voir les conférences, faire du networking et aussi pour promouvoir Play! bien sûr.</p>
<p><strong>Il n&#8217;y a pas de session sur Play! cette année, en avez-vous proposé une ?</strong><br />
Nous avions proposé une vraie session Play!, pas dans le BoF. Vue la concurrence acharnée qu&#8217;il y a à Devoxx, on a été refusé, c&#8217;est pas grave, l&#8217;année prochaine on réessaiera.</p>
<p><strong>Play! 1.1 est sorti il y a un peu moins d&#8217;un mois, quelles sont les prochaines étapes ?</strong><br />
Il y en a beaucoup ! Il y a plusieurs axes de travail. Guillaume Bort est en train de travailler sur une partie qui s&#8217;appelle Evolution, qui permet de migrer ses bases de données très facilement.<br />
Personnellement, quand j&#8217;ai cinq minutes, je travaille sur un meilleur binding entre JSON et java. Après il a plein d&#8217;autres choses à faire. Ce que j&#8217;aimerais faire, c&#8217;est un conteneur pour JBoss.<br />
<strong>Comme c&#8217;est actuellement le cas pour Glassfish.</strong><br />
Erwan Loisant est train d&#8217;améliorer les librairies clientes pour faire des requêtes à des web services et Peter Hilton travaille sur la documentation</p>
<p><strong>Y a-t-il une roadmap pour la version 1.2 ?</strong><br />
Elle est pas encore définitive, mais la roadmap peut être consultée sur le site <a href="http://playframework.org">playframework.org</a> qui a un lien sur le bug tracker qui est Lighthouse, et là on peut voir la roadmap.</p>
<p><strong>Merci Nicolas, à l&#8217;année prochaine pour une session officielle de Play!</strong><br />
Ou alors si vous avez l&#8217;occasion d&#8217;aller à Paris pour voir Zenexity, c&#8217;est des petits gars sympas et ils vous expliqueront tout !</p><p>The post <a href="https://blog.infine.com/devoxx-2010-vu-de-linterieur-366">Devoxx 2010, vu de l’intérieur</a> first appeared on <a href="https://blog.infine.com">In Fine - Le Blog</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.infine.com/devoxx-2010-vu-de-linterieur-366/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
