<?xml version="1.0" encoding="iso-8859-1"?><!-- generator="b2evolution/2.4.6" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Le blog de DNG Consulting</title>
		<link>http://www.dng-consulting.com/blogs/index.php?blog=1</link>
		<description>blog de l'ami Sami</description>
		<language>fr-FR</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=2.4.6"/>
		<ttl>60</ttl>
				<item>
			<title>Merci pour votre pr&#233;sence &#224; Devoxx France</title>
			<link>http://www.dng-consulting.com/blogs/index.php/2012/04/23/merci-pour-votre-praeacute-sence-aagrave?blog=1</link>
			<pubDate>Mon, 23 Apr 2012 07:58:56 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">GWT</category>			<guid isPermaLink="false">223@http://www.dng-consulting.com/blogs/</guid>
						<description>&lt;p&gt;Je tenais &amp;#224; remercier chaleureusement tous ceux qui ont inscrit la session &amp;quot;GWT &amp;#224; l'&amp;#233;preuve du feu&amp;quot; dans leur agenda de la journ&amp;#233;e &amp;#224; Devoxx France. Pourtant, les choses &amp;#233;taient plut&amp;#244;t mal engag&amp;#233;es avec une session pr&amp;#233;c&amp;#233;dente presqu'enti&amp;#232;rement vide. GWT est un des sujets chauds (au sens propre et figur&amp;#233;) du moment, c'est s&amp;#251;r. &lt;/p&gt;  &lt;p&gt;Concernant le contenu, il est toujours tr&amp;#232;s compliqu&amp;#233; de creuser avec 45 min. Il y a souvent deux options dans ce cas de figure, traiter un aspect tr&amp;#232;s sp&amp;#233;cifique d'une technologie en ouvrant Eclipse et en parcourant du code (c'est ce que j'ai fait avec le compilateur en 2007) ou montrer un cas concret d'application strat&amp;#233;gique tout en &amp;#233;num&amp;#233;rant les d&amp;#233;fis techniques. Vu le type d'audience de Devoxx et le nombre de clients nous demandant au quotidien &amp;quot; qui utilise GWT et comment ?&amp;quot;, l'option REX (Retour d'exp&amp;#233;rience) nous semblait un bon moyen de faire connaitre la technologie. &lt;/p&gt;  &lt;p&gt;J'animerai s&amp;#251;rement dans l'ann&amp;#233;e des conf&amp;#233;rences ou s&amp;#233;minaires plus pointues lors de la sortie de la seconde &amp;#233;dition du livre, mais sachez que tout ce qui a &amp;#233;t&amp;#233; dit lors de cette session est un ressenti tr&amp;#232;s personnel de l'&amp;#233;quipe de d&amp;#233;veloppement. Que ce soit notre regard vis &amp;#224; vis de JavaScript, la productivit&amp;#233; de notre environnement ou les choix technologiques du projet, nous ne voulons en aucun cas en faire un projet &amp;quot;r&amp;#233;f&amp;#233;rence&amp;quot;, chaque client a ses contraintes et ses particularit&amp;#233;s. En revanche, nous voulions insister sur le fait qu'aujourd'hui, en 2012, de nombreux clients utilisent GWT dans leurs applications strat&amp;#233;giques. Ils en sont tout simplement satisfaits et viennent le dire &amp;#224; la tribune avec nous.&lt;/p&gt;  &lt;p&gt;Un dernier mot sur l'organisation, j'avoue que je ne connaissais pas (assez) la marque Devoxx pour n'&amp;#234;tre jamais all&amp;#233; &amp;#224; la version Belge de l'&amp;#233;v&amp;#232;nement. Mais la version Fran&amp;#231;aise m'a d&amp;#233;finitivement convaincu que c'&amp;#233;tait un &amp;#233;v&amp;#232;nement majeur et surtout incontournable de la communaut&amp;#233; Java. L'organisation a &amp;#233;t&amp;#233; (de mon point de vue) parfaite. Je remercie donc l'&amp;#233;quipe Devoxx pour m'y avoir invit&amp;#233; et je leur souhaite une longue vie. Pour avoir organis&amp;#233; 5 Symposium DNG (dont un au Mariott), le plus dur est de durer... &lt;/p&gt;
&lt;br /&gt; 
L'album Devoxx :&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.dng-consulting.com/images/devoxx/albumdevoxx.png&quot;&gt;&lt;img src=&quot;http://www.dng-consulting.com/images/devoxx/albumdevoxx_small.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;

&lt;div style=&quot;width:595px&quot; id=&quot;__ss_12633887&quot;&gt; &lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/samijaber/session-gwt-devoxx-france-2012-cobra&quot; title=&quot;Session GWT Devoxx France 2012 Cobra&quot; target=&quot;_blank&quot;&gt;Session GWT Devoxx France 2012 Cobra&lt;/a&gt;&lt;/strong&gt; &lt;object id=&quot;__sse12633887&quot; width=&quot;595&quot; height=&quot;497&quot;&gt; &lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cobradevoxxfr1280720-120421142502-phpapp01&amp;amp;stripped_title=session-gwt-devoxx-france-2012-cobra&amp;amp;userName=samijaber&quot; /&gt; &lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt; &lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt; &lt;param name=&quot;wmode&quot; value=&quot;transparent&quot; /&gt; &lt;embed name=&quot;__sse12633887&quot; src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cobradevoxxfr1280720-120421142502-phpapp01&amp;amp;stripped_title=session-gwt-devoxx-france-2012-cobra&amp;amp;userName=samijaber&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; wmode=&quot;transparent&quot; width=&quot;595&quot; height=&quot;497&quot;&gt;&lt;/embed&gt; &lt;/object&gt; &lt;div style=&quot;padding:5px 0 12px&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot; target=&quot;_blank&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/samijaber&quot; target=&quot;_blank&quot;&gt;samijaber&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;Powered by &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Je tenais &#224; remercier chaleureusement tous ceux qui ont inscrit la session &quot;GWT &#224; l'&#233;preuve du feu&quot; dans leur agenda de la journ&#233;e &#224; Devoxx France. Pourtant, les choses &#233;taient plut&#244;t mal engag&#233;es avec une session pr&#233;c&#233;dente presqu'enti&#232;rement vide. GWT est un des sujets chauds (au sens propre et figur&#233;) du moment, c'est s&#251;r. </p>  <p>Concernant le contenu, il est toujours tr&#232;s compliqu&#233; de creuser avec 45 min. Il y a souvent deux options dans ce cas de figure, traiter un aspect tr&#232;s sp&#233;cifique d'une technologie en ouvrant Eclipse et en parcourant du code (c'est ce que j'ai fait avec le compilateur en 2007) ou montrer un cas concret d'application strat&#233;gique tout en &#233;num&#233;rant les d&#233;fis techniques. Vu le type d'audience de Devoxx et le nombre de clients nous demandant au quotidien &quot; qui utilise GWT et comment ?&quot;, l'option REX (Retour d'exp&#233;rience) nous semblait un bon moyen de faire connaitre la technologie. </p>  <p>J'animerai s&#251;rement dans l'ann&#233;e des conf&#233;rences ou s&#233;minaires plus pointues lors de la sortie de la seconde &#233;dition du livre, mais sachez que tout ce qui a &#233;t&#233; dit lors de cette session est un ressenti tr&#232;s personnel de l'&#233;quipe de d&#233;veloppement. Que ce soit notre regard vis &#224; vis de JavaScript, la productivit&#233; de notre environnement ou les choix technologiques du projet, nous ne voulons en aucun cas en faire un projet &quot;r&#233;f&#233;rence&quot;, chaque client a ses contraintes et ses particularit&#233;s. En revanche, nous voulions insister sur le fait qu'aujourd'hui, en 2012, de nombreux clients utilisent GWT dans leurs applications strat&#233;giques. Ils en sont tout simplement satisfaits et viennent le dire &#224; la tribune avec nous.</p>  <p>Un dernier mot sur l'organisation, j'avoue que je ne connaissais pas (assez) la marque Devoxx pour n'&#234;tre jamais all&#233; &#224; la version Belge de l'&#233;v&#232;nement. Mais la version Fran&#231;aise m'a d&#233;finitivement convaincu que c'&#233;tait un &#233;v&#232;nement majeur et surtout incontournable de la communaut&#233; Java. L'organisation a &#233;t&#233; (de mon point de vue) parfaite. Je remercie donc l'&#233;quipe Devoxx pour m'y avoir invit&#233; et je leur souhaite une longue vie. Pour avoir organis&#233; 5 Symposium DNG (dont un au Mariott), le plus dur est de durer... </p>
<br /> 
L'album Devoxx :<br />
<br />
<a href="http://www.dng-consulting.com/images/devoxx/albumdevoxx.png"><img src="http://www.dng-consulting.com/images/devoxx/albumdevoxx_small.png" /></a><br />

<div style="width:595px" id="__ss_12633887"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/samijaber/session-gwt-devoxx-france-2012-cobra" title="Session GWT Devoxx France 2012 Cobra" target="_blank">Session GWT Devoxx France 2012 Cobra</a></strong> <object id="__sse12633887" width="595" height="497"> <param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cobradevoxxfr1280720-120421142502-phpapp01&amp;stripped_title=session-gwt-devoxx-france-2012-cobra&amp;userName=samijaber" /> <param name="allowFullScreen" value="true" /> <param name="allowScriptAccess" value="always" /> <param name="wmode" value="transparent" /> <embed name="__sse12633887" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cobradevoxxfr1280720-120421142502-phpapp01&amp;stripped_title=session-gwt-devoxx-france-2012-cobra&amp;userName=samijaber" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="595" height="497"></embed> </object> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/samijaber" target="_blank">samijaber</a> </div> </div>><div class="item_footer"><p><small>Powered by <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dng-consulting.com/blogs/index.php/2012/04/23/merci-pour-votre-praeacute-sence-aagrave?blog=1#comments</comments>
		</item>
				<item>
			<title>Rencontre Mardi prochain chez Eyrolles</title>
			<link>http://www.dng-consulting.com/blogs/index.php/2012/03/21/rencontre-mardi-prochain-chez-eyrolles?blog=1</link>
			<pubDate>Wed, 21 Mar 2012 16:33:33 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">News</category>			<guid isPermaLink="false">222@http://www.dng-consulting.com/blogs/</guid>
						<description>La maison d&amp;#8217;&amp;#233;dition Eyrolles organise Mardi 27 Mars une soir&amp;#233;e exceptionnelle destin&amp;#233;e &amp;#224; faire rencontrer auteurs (sp&amp;#233;cialistes du Web) et lecteurs. C&amp;#8217;est un &amp;#233;v&amp;#233;nement gratuit et le nombre d&amp;#8217;inscrits est d&amp;#233;j&amp;#224; important. J&amp;#8217;avoue que je n&amp;#8217;avais pas pr&amp;#233;vu de faire le d&amp;#233;placement ce jour l&amp;#224; mais pour une fois, je vais privil&amp;#233;gier le livre &amp;#224; mes activit&amp;#233;s professionnelles.   
&lt;br /&gt;&lt;br /&gt;
C'est l'occasion pour ceux qui ne pourront pas se d&amp;#233;placer &amp;#224; &lt;a href=&quot;http://www.devoxx.com/pages/viewpage.action?pageId=6128307&quot;&gt;Devoxx&lt;/a&gt; de faire d&amp;#233;dicacer son exemplaire de &amp;#8220;Programmation GWT 2&amp;#8221;, discuter technique ou simplement &amp;#233;changer de mani&amp;#232;re informelle. Je serai ravi de partager un verre (ou deux) avec vous ce soir l&amp;#224;. Rendez-vous dans les locaux d'Eyrolles de 18h30 &amp;#224; 20h 1 rue Th&amp;#233;nard dans le 5 &amp;#232;me.
&lt;br /&gt;&lt;br /&gt;
Attention, l'inscription est obligatoire =&gt; &lt;a href=&quot;http://www.editions-eyrolles.com/Evenement/Rencontres_experts/&quot;&gt;http://www.editions-eyrolles.com/Evenement/Rencontres_experts/&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;
Sami&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;Powered by &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[La maison d&#8217;&#233;dition Eyrolles organise Mardi 27 Mars une soir&#233;e exceptionnelle destin&#233;e &#224; faire rencontrer auteurs (sp&#233;cialistes du Web) et lecteurs. C&#8217;est un &#233;v&#233;nement gratuit et le nombre d&#8217;inscrits est d&#233;j&#224; important. J&#8217;avoue que je n&#8217;avais pas pr&#233;vu de faire le d&#233;placement ce jour l&#224; mais pour une fois, je vais privil&#233;gier le livre &#224; mes activit&#233;s professionnelles.   
<br /><br />
C'est l'occasion pour ceux qui ne pourront pas se d&#233;placer &#224; <a href="http://www.devoxx.com/pages/viewpage.action?pageId=6128307">Devoxx</a> de faire d&#233;dicacer son exemplaire de &#8220;Programmation GWT 2&#8221;, discuter technique ou simplement &#233;changer de mani&#232;re informelle. Je serai ravi de partager un verre (ou deux) avec vous ce soir l&#224;. Rendez-vous dans les locaux d'Eyrolles de 18h30 &#224; 20h 1 rue Th&#233;nard dans le 5 &#232;me.
<br /><br />
Attention, l'inscription est obligatoire => <a href="http://www.editions-eyrolles.com/Evenement/Rencontres_experts/">http://www.editions-eyrolles.com/Evenement/Rencontres_experts/</a>
<br /><br />
Sami<br /><br /><div class="item_footer"><p><small>Powered by <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dng-consulting.com/blogs/index.php/2012/03/21/rencontre-mardi-prochain-chez-eyrolles?blog=1#comments</comments>
		</item>
				<item>
			<title>Oui, GWT est plus que jamais pertinent</title>
			<link>http://www.dng-consulting.com/blogs/index.php/2012/02/24/oui-gwt-est-plus-de-jamais-pertinent?blog=1</link>
			<pubDate>Fri, 24 Feb 2012 16:56:32 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">GWT</category>			<guid isPermaLink="false">220@http://www.dng-consulting.com/blogs/</guid>
						<description>&lt;p&gt;Difficile de rester insensible au billet de &lt;a href=&quot;http://www.docdoku.com/blog/2012/02/23/gwt-est-il-toujours-pertinent/&quot;&gt;mon ami Florent&lt;/a&gt; dont je ne partage pas la vision m&amp;#234;me si je comprends tout &amp;#224; fait la probl&amp;#233;matique dans laquelle il se trouve. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Tout d'abord, le support de navigateurs obsol&amp;#232;tes, comme Internet Explorer 6 par exemple, n'est plus l'obsession des DSI qui par contre tiennent de plus en plus &amp;#224; ce que leurs applications offrent &amp;#233;galement un bon rendu sur les dispositifs mobiles et tactiles. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Effectivement, je rejoins Florent sur ce point. IE 6 commence &amp;#224; devenir obsol&amp;#232;te. En revanche, pour les p&amp;#233;riph&amp;#233;riques mobiles, la situation est diff&amp;#233;rente. Dans un &lt;a href=&quot;http://notes.sencha.com/post/18092502671/our-stance-in-the-css-vendor-prefix-debate&quot;&gt;billet tr&amp;#232;s r&amp;#233;cent&lt;/a&gt;, le responsable de Sencha, une des soci&amp;#233;t&amp;#233;s leader sur le march&amp;#233; du JavaScript sur mobile s'exprimait au sujet du support de CSS sur les navigateurs. En r&amp;#233;sum&amp;#233;, leurs applications aujourd'hui ne ciblent que le moteur de rendu WebKit car c'est le plus performant et surtout le plus riche fonctionnellement gr&amp;#226;ce &amp;#224; ses ... extensions sp&amp;#233;cifique CSS ! Les fameux -webkit. En d'autres termes, m&amp;#234;me s'ils cherchent au maximum &amp;#224; cr&amp;#233;er une abstration au dessus des sp&amp;#233;cificit&amp;#233;s des navigateurs, ils maintiennent d'interminables &quot;if (useragent=webkit) use -webkit&quot; un peu partout. Lorsqu'il s'agit d'&amp;#233;voquer IE et les Windows Phone qui vont bient&amp;#244;t submerger le march&amp;#233;, le discours est tout autre. En effet, il faudrait que Sencha convertisse enti&amp;#232;rement les styles WekKit de mani&amp;#232;re sp&amp;#233;cifique &amp;#224; IE. Economiquement difficile. &lt;/p&gt;  &lt;p&gt;Qu'on se le dise une fois pour toute, l'application Web &amp;#233;crite en JavaScript qui tire partie des derni&amp;#232;res &amp;#233;volutions d'HTML 5 et de CSS 3 ciblant la plupart des navigateurs du march&amp;#233; de mani&amp;#232;re unifi&amp;#233;e &lt;u&gt;est un leurre&lt;/u&gt;. GWT ne cherche pas &amp;#224; remplacer JavaScript, son coeur est assis sur JavaScript, il permet simplement de d&amp;#233;velopper (et surtout) de d&amp;#233;bogguer une application Java pour g&amp;#233;n&amp;#233;rer du code JavaScript optimis&amp;#233; qu'aucun humain ne serait en mesure de coder. C'est aussi pour cela qu'il existe des compilateurs JavaScript vers JavaScript tels que &lt;a href=&quot;https://developers.google.com/closure/compiler/&quot;&gt;Closure&lt;/a&gt; (utilis&amp;#233; intensivement au sein de Google et bient&amp;#244;t int&amp;#233;gr&amp;#233; &amp;#224; GWT).&amp;#160; &lt;/p&gt;  &lt;p&gt;Lorsqu'il s'agit d'utiliser des fonctionnalit&amp;#233;s &quot;hype&quot; de type CSS Transform, &amp;#233;v&amp;#232;nements touch, je peux tout &amp;#224; fait comprendre que GWT ne soit pas id&amp;#233;al. Il reste &amp;#233;norm&amp;#233;ment de progr&amp;#232;s &amp;#224; accomplir dans ce domaine m&amp;#234;me si GWT fournit des &amp;#233;v&amp;#232;nements Touch. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;GWT &amp;#233;tant avant tout un socle technique, Google laisse &amp;#224; la communaut&amp;#233; ou aux &amp;#233;diteurs tiers le soin de b&amp;#226;tir sur son framework. Ainsi Ex GWT, SmartGWT, Vaadin pour ne citer qu'eux disposent de composants de plus haut niveau, pr&amp;#234;t &amp;#224; l'emploi. Malheureusement ces biblioth&amp;#232;ques n'ont jamais donn&amp;#233; pleinement satisfaction : licence peu &amp;#171; business friendly &amp;#187;, adh&amp;#233;rence importante, probl&amp;#232;me de qualit&amp;#233;. Au final, la sagesse recommande de se contenter de GWT et de tout d&amp;#233;velopper soi-m&amp;#234;me.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;L&amp;#224; encore, sur ce point, je ne partage pas cette analyse. C&amp;#244;t&amp;#233; JavaScript, le choix est encore plus abracadambresque. Qu'allez-vous utiliser, Ext-JS ? Il est payant. JQuery ? C'est plus un socle technique que graphique, il ne fournit pas le niveau de richesse d'Ext-JS. DOJO ? Trop limit&amp;#233; visuellement pour des applications graphiques complexes. Quant &amp;#224; mustache, Backbone, Node.js ou JavaScriptMVC, o&amp;#249; est la p&amp;#233;rennit&amp;#233;, la maturit&amp;#233; ? Et que dire de Bindows, BackBase, Scriptaculous, Prototype, ... il en existe plus d'une centaine !&lt;/p&gt;  &lt;p&gt;Est-ce ce monde technique que nous voulons offrir &amp;#224; nos applications Web de demain ? Si on consid&amp;#232;re qu'une application est jetable au gr&amp;#233; du meilleur framework JavaScript du moment, peut-&amp;#234;tre. Si on consid&amp;#232;re qu'une application strat&amp;#233;gique m&amp;#233;tier doit &amp;#234;tre maintenue plusieurs ann&amp;#233;es et subir les &amp;#233;volutions futures d'HTML 5 sans avoir &amp;#224; tout chambouler en permanence, je vote sans h&amp;#233;siter GWT. &lt;/p&gt;  &lt;p&gt;Lorsque nos client ont des besoins graphiques complexes, nous leur proposons GXT (Ext GWT). La licence d&amp;#233;veloppeur est payante mais largement amortie vu son degr&amp;#233; de richesse. Lorsque nos clients souhaitent quelque chose de tr&amp;#232;s &quot;Web&quot; (par opposition &amp;#224; un look applicatif), nous enrichissons les composants de base, c'est co&amp;#251;teux, mais tout d&amp;#233;veloppeur JavaScript en aurait fait de m&amp;#234;me.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Par ailleurs, GWT, au fil des versions, a gagn&amp;#233; en complexit&amp;#233;, le pattern &amp;#171; activities/places &amp;#187; pour &amp;#234;tre correctement employ&amp;#233; exige que les d&amp;#233;veloppeurs soient bien form&amp;#233;s ; RequestFactory, CellWidget sont des nouveaut&amp;#233;s qu'il conviendra &amp;#224; nouveau d'assimiler et qui contraindront la migration d'un bon nombre d'applications.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Concernant Activity&amp;amp;Places et RF (RequestFactory), nous avons plusieurs fois eu l'occasion de nous exprimer sur le sujet (notamment dans les &lt;a href=&quot;https://plus.google.com/108123997020226186154/posts/W4LDA3SnwiR&quot;&gt;commentaires de ce billet&lt;/a&gt;). Chez DNG, nous utilisons A&amp;amp;P avec parcimonie sans l'imposer &amp;#224; nos clients car ce pattern est loin d'&amp;#234;tre simple (il fait des d&amp;#233;g&amp;#226;ts irr&amp;#233;parables aupr&amp;#232;s de d&amp;#233;veloppeurs non form&amp;#233;s) . Il est aussi loin d'&amp;#234;tre adapt&amp;#233; &amp;#224; tous les cas d'&amp;#233;cole. Quant &amp;#224; RequestFactory, il n'est pas encore mature mais ce framework offre de nombreux avantages. Nous sommes typiquement ici dans un probl&amp;#232;me de m&amp;#233;connaissance et s&amp;#251;rement aussi de pauvret&amp;#233; de documentation c&amp;#244;t&amp;#233; Google. Plus que jamais il faut &amp;#234;tre form&amp;#233; et plut&amp;#244;t que de dire &amp;#224; nos clients &quot;Lisez la doc, c'est facile&quot;, nous insistons sur le caract&amp;#232;re complexe des API avanc&amp;#233;es. &lt;/p&gt;  &lt;p&gt;Les nouveaux chapitres de la seconde &amp;#233;dition de &quot;Programmation GWT 2&quot; &amp;#233;voqueront aussi ces nouvelles fonctionnalit&amp;#233;s pour d&amp;#233;mystifier tout cela. Avec GWT vous &amp;#234;tes libres de choisir les API &amp;#224; utiliser en fonction de vos comp&amp;#233;tences et de votre culture, rien n'est impos&amp;#233;, sachez-le.&amp;#160; &lt;/p&gt;  &lt;p&gt;Dans notre soci&amp;#233;t&amp;#233; nous n'avons vraiment pas de vision ang&amp;#233;lique sur cette technologie. Pour l'utiliser au quotidien depuis ses d&amp;#233;buts, plus que quiconque nous sommes confront&amp;#233;s &amp;#224; ses d&amp;#233;sagr&amp;#233;ments. Mais lorsqu'&amp;#224; la fin du projet nous faisons la somme de tout ce que ce Framework nous a apport&amp;#233;, la question qui revient inlassablement est &quot;Comment aurions-nous fait sans GWT ? &quot;. Une vision pragmatique mais surtout &amp;#233;conomique. &lt;/p&gt;  &lt;p&gt;Pour finir, la richesse de GWT est dans des API telles que ClientBundle qui permet de cr&amp;#233;er des scripts JS t&amp;#233;l&amp;#233;charg&amp;#233;s avec les sp&amp;#233;cificit&amp;#233;s CSS propres &amp;#224; chaque navigateur ou moteur de rendu en fonction des r&amp;#232;gles du DeferredBinding. La richesse de GWT est dans sa capacit&amp;#233; &amp;#224; diviser le code (&amp;#233;norme) JavaScript en plusieurs fragments &amp;#224; la mani&amp;#232;re d'un ClassLoader Java. La richesse de GWT est dans sa capacit&amp;#233; &amp;#224; fournir un environnement de d&amp;#233;veloppement hors pair permettant de d&amp;#233;bogguer comme en Swing, de tester avec JUnit et de refactorer sous son IDE f&amp;#233;tiche. Imaginer un instant d&amp;#233;velopper une application JavaScript de 200.000 lignes de code comme on le fait aujourd'hui en Java est tout simplement incens&amp;#233;. &lt;/p&gt;  &lt;p&gt;Dans les ann&amp;#233;es &amp;#224; venir, cette question sera au coeur de tous les d&amp;#233;bats, l'avenir du Web n'est pas JavaScript. Peut-&amp;#234;tre un nouveau language, peut-&amp;#234;tre un nouveau runtime mais pas JavaScript. Le march&amp;#233; l'utilise &quot;par d&amp;#233;faut&quot; car les navigateurs l'impl&amp;#233;mentent sans contrainte de runtime ou de plugin. En revanche, je connais peu de d&amp;#233;veloppeurs (non chevronn&amp;#233;s) qui aiment JavaScript pour ses qualit&amp;#233;s intrins&amp;#232;ques.&amp;#160; &lt;/p&gt; Sami &lt;br /&gt;&lt;br /&gt;PS : J'insiste sur le fait dans cet article que je n'ai jamais dis qu'il ne fallait pas ma&amp;#238;triser un minimum JavaScript pour faire du GWT.&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;Powered by &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Difficile de rester insensible au billet de <a href="http://www.docdoku.com/blog/2012/02/23/gwt-est-il-toujours-pertinent/">mon ami Florent</a> dont je ne partage pas la vision m&#234;me si je comprends tout &#224; fait la probl&#233;matique dans laquelle il se trouve. </p>  <blockquote>   <p>Tout d'abord, le support de navigateurs obsol&#232;tes, comme Internet Explorer 6 par exemple, n'est plus l'obsession des DSI qui par contre tiennent de plus en plus &#224; ce que leurs applications offrent &#233;galement un bon rendu sur les dispositifs mobiles et tactiles. </p> </blockquote>  <p>Effectivement, je rejoins Florent sur ce point. IE 6 commence &#224; devenir obsol&#232;te. En revanche, pour les p&#233;riph&#233;riques mobiles, la situation est diff&#233;rente. Dans un <a href="http://notes.sencha.com/post/18092502671/our-stance-in-the-css-vendor-prefix-debate">billet tr&#232;s r&#233;cent</a>, le responsable de Sencha, une des soci&#233;t&#233;s leader sur le march&#233; du JavaScript sur mobile s'exprimait au sujet du support de CSS sur les navigateurs. En r&#233;sum&#233;, leurs applications aujourd'hui ne ciblent que le moteur de rendu WebKit car c'est le plus performant et surtout le plus riche fonctionnellement gr&#226;ce &#224; ses ... extensions sp&#233;cifique CSS ! Les fameux -webkit. En d'autres termes, m&#234;me s'ils cherchent au maximum &#224; cr&#233;er une abstration au dessus des sp&#233;cificit&#233;s des navigateurs, ils maintiennent d'interminables "if (useragent=webkit) use -webkit" un peu partout. Lorsqu'il s'agit d'&#233;voquer IE et les Windows Phone qui vont bient&#244;t submerger le march&#233;, le discours est tout autre. En effet, il faudrait que Sencha convertisse enti&#232;rement les styles WekKit de mani&#232;re sp&#233;cifique &#224; IE. Economiquement difficile. </p>  <p>Qu'on se le dise une fois pour toute, l'application Web &#233;crite en JavaScript qui tire partie des derni&#232;res &#233;volutions d'HTML 5 et de CSS 3 ciblant la plupart des navigateurs du march&#233; de mani&#232;re unifi&#233;e <u>est un leurre</u>. GWT ne cherche pas &#224; remplacer JavaScript, son coeur est assis sur JavaScript, il permet simplement de d&#233;velopper (et surtout) de d&#233;bogguer une application Java pour g&#233;n&#233;rer du code JavaScript optimis&#233; qu'aucun humain ne serait en mesure de coder. C'est aussi pour cela qu'il existe des compilateurs JavaScript vers JavaScript tels que <a href="https://developers.google.com/closure/compiler/">Closure</a> (utilis&#233; intensivement au sein de Google et bient&#244;t int&#233;gr&#233; &#224; GWT).&#160; </p>  <p>Lorsqu'il s'agit d'utiliser des fonctionnalit&#233;s "hype" de type CSS Transform, &#233;v&#232;nements touch, je peux tout &#224; fait comprendre que GWT ne soit pas id&#233;al. Il reste &#233;norm&#233;ment de progr&#232;s &#224; accomplir dans ce domaine m&#234;me si GWT fournit des &#233;v&#232;nements Touch. </p>  <blockquote>   <p>GWT &#233;tant avant tout un socle technique, Google laisse &#224; la communaut&#233; ou aux &#233;diteurs tiers le soin de b&#226;tir sur son framework. Ainsi Ex GWT, SmartGWT, Vaadin pour ne citer qu'eux disposent de composants de plus haut niveau, pr&#234;t &#224; l'emploi. Malheureusement ces biblioth&#232;ques n'ont jamais donn&#233; pleinement satisfaction : licence peu &#171; business friendly &#187;, adh&#233;rence importante, probl&#232;me de qualit&#233;. Au final, la sagesse recommande de se contenter de GWT et de tout d&#233;velopper soi-m&#234;me.</p> </blockquote>  <p>L&#224; encore, sur ce point, je ne partage pas cette analyse. C&#244;t&#233; JavaScript, le choix est encore plus abracadambresque. Qu'allez-vous utiliser, Ext-JS ? Il est payant. JQuery ? C'est plus un socle technique que graphique, il ne fournit pas le niveau de richesse d'Ext-JS. DOJO ? Trop limit&#233; visuellement pour des applications graphiques complexes. Quant &#224; mustache, Backbone, Node.js ou JavaScriptMVC, o&#249; est la p&#233;rennit&#233;, la maturit&#233; ? Et que dire de Bindows, BackBase, Scriptaculous, Prototype, ... il en existe plus d'une centaine !</p>  <p>Est-ce ce monde technique que nous voulons offrir &#224; nos applications Web de demain ? Si on consid&#232;re qu'une application est jetable au gr&#233; du meilleur framework JavaScript du moment, peut-&#234;tre. Si on consid&#232;re qu'une application strat&#233;gique m&#233;tier doit &#234;tre maintenue plusieurs ann&#233;es et subir les &#233;volutions futures d'HTML 5 sans avoir &#224; tout chambouler en permanence, je vote sans h&#233;siter GWT. </p>  <p>Lorsque nos client ont des besoins graphiques complexes, nous leur proposons GXT (Ext GWT). La licence d&#233;veloppeur est payante mais largement amortie vu son degr&#233; de richesse. Lorsque nos clients souhaitent quelque chose de tr&#232;s "Web" (par opposition &#224; un look applicatif), nous enrichissons les composants de base, c'est co&#251;teux, mais tout d&#233;veloppeur JavaScript en aurait fait de m&#234;me.</p>  <blockquote>   <p>Par ailleurs, GWT, au fil des versions, a gagn&#233; en complexit&#233;, le pattern &#171; activities/places &#187; pour &#234;tre correctement employ&#233; exige que les d&#233;veloppeurs soient bien form&#233;s ; RequestFactory, CellWidget sont des nouveaut&#233;s qu'il conviendra &#224; nouveau d'assimiler et qui contraindront la migration d'un bon nombre d'applications.</p> </blockquote>  <p>Concernant Activity&amp;Places et RF (RequestFactory), nous avons plusieurs fois eu l'occasion de nous exprimer sur le sujet (notamment dans les <a href="https://plus.google.com/108123997020226186154/posts/W4LDA3SnwiR">commentaires de ce billet</a>). Chez DNG, nous utilisons A&amp;P avec parcimonie sans l'imposer &#224; nos clients car ce pattern est loin d'&#234;tre simple (il fait des d&#233;g&#226;ts irr&#233;parables aupr&#232;s de d&#233;veloppeurs non form&#233;s) . Il est aussi loin d'&#234;tre adapt&#233; &#224; tous les cas d'&#233;cole. Quant &#224; RequestFactory, il n'est pas encore mature mais ce framework offre de nombreux avantages. Nous sommes typiquement ici dans un probl&#232;me de m&#233;connaissance et s&#251;rement aussi de pauvret&#233; de documentation c&#244;t&#233; Google. Plus que jamais il faut &#234;tre form&#233; et plut&#244;t que de dire &#224; nos clients "Lisez la doc, c'est facile", nous insistons sur le caract&#232;re complexe des API avanc&#233;es. </p>  <p>Les nouveaux chapitres de la seconde &#233;dition de "Programmation GWT 2" &#233;voqueront aussi ces nouvelles fonctionnalit&#233;s pour d&#233;mystifier tout cela. Avec GWT vous &#234;tes libres de choisir les API &#224; utiliser en fonction de vos comp&#233;tences et de votre culture, rien n'est impos&#233;, sachez-le.&#160; </p>  <p>Dans notre soci&#233;t&#233; nous n'avons vraiment pas de vision ang&#233;lique sur cette technologie. Pour l'utiliser au quotidien depuis ses d&#233;buts, plus que quiconque nous sommes confront&#233;s &#224; ses d&#233;sagr&#233;ments. Mais lorsqu'&#224; la fin du projet nous faisons la somme de tout ce que ce Framework nous a apport&#233;, la question qui revient inlassablement est "Comment aurions-nous fait sans GWT ? ". Une vision pragmatique mais surtout &#233;conomique. </p>  <p>Pour finir, la richesse de GWT est dans des API telles que ClientBundle qui permet de cr&#233;er des scripts JS t&#233;l&#233;charg&#233;s avec les sp&#233;cificit&#233;s CSS propres &#224; chaque navigateur ou moteur de rendu en fonction des r&#232;gles du DeferredBinding. La richesse de GWT est dans sa capacit&#233; &#224; diviser le code (&#233;norme) JavaScript en plusieurs fragments &#224; la mani&#232;re d'un ClassLoader Java. La richesse de GWT est dans sa capacit&#233; &#224; fournir un environnement de d&#233;veloppement hors pair permettant de d&#233;bogguer comme en Swing, de tester avec JUnit et de refactorer sous son IDE f&#233;tiche. Imaginer un instant d&#233;velopper une application JavaScript de 200.000 lignes de code comme on le fait aujourd'hui en Java est tout simplement incens&#233;. </p>  <p>Dans les ann&#233;es &#224; venir, cette question sera au coeur de tous les d&#233;bats, l'avenir du Web n'est pas JavaScript. Peut-&#234;tre un nouveau language, peut-&#234;tre un nouveau runtime mais pas JavaScript. Le march&#233; l'utilise "par d&#233;faut" car les navigateurs l'impl&#233;mentent sans contrainte de runtime ou de plugin. En revanche, je connais peu de d&#233;veloppeurs (non chevronn&#233;s) qui aiment JavaScript pour ses qualit&#233;s intrins&#232;ques.&#160; </p> Sami <br /><br />PS : J'insiste sur le fait dans cet article que je n'ai jamais dis qu'il ne fallait pas ma&#238;triser un minimum JavaScript pour faire du GWT.<div class="item_footer"><p><small>Powered by <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dng-consulting.com/blogs/index.php/2012/02/24/oui-gwt-est-plus-de-jamais-pertinent?blog=1#comments</comments>
		</item>
				<item>
			<title>Le Cloud de Google &#224; l&#8217;heure de MySQL, Spring, JPA 2 et Hibernate</title>
			<link>http://www.dng-consulting.com/blogs/index.php/2012/02/08/le-cloud-de-google-aagrave-larsquo-heure-1?blog=1</link>
			<pubDate>Tue, 07 Feb 2012 23:12:52 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">Cloud</category>			<guid isPermaLink="false">219@http://www.dng-consulting.com/blogs/</guid>
						<description>&lt;p&gt;Il y a de cela bient&amp;#244;t trois ans jour pour jour, Google annon&amp;#231;ait pour la premi&amp;#232;re fois sa plateforme de Cloud PaaS (Platform As A Service). S'appuyant sur Java, Python ou Go comme langages de d&amp;#233;veloppement adoss&amp;#233;s &amp;#224; AppEngine comme i&lt;sub&gt;&lt;/sub&gt;nfrastructure de services, force est de constater que 3 ans plus tard, l'engouement du d&amp;#233;part a laiss&amp;#233; place &amp;#224; plus de scepticisme au fil des mois. Les raisons sont multiples. D&amp;#233;velopper pour le Cloud n&amp;#233;cessite de s'approprier de nouveaux outils, de nouveaux frameworks, tous aussi propri&amp;#233;taires les uns que les autres.&lt;/p&gt;  &lt;p&gt; Lors de la pr&amp;#233;sentation officielle de GAE en 2009, aucun des standards Java (except&amp;#233; l'API Servlet) n'&amp;#233;tait support&amp;#233;. Il faut le savoir, l'immense majorit&amp;#233; des applications Java d&amp;#233;velopp&amp;#233;es aujourd'hui s'appuient sur des standards, que ce soit Java EE, Spring (qu'on appellera un standard de fait) ou Java Persistence API. Mais le plus bloquant durant toutes ces ann&amp;#233;es a clairement &amp;#233;t&amp;#233; l'acc&amp;#232;s aux donn&amp;#233;es.&lt;/p&gt;  &lt;p&gt; La plupart des applications en entreprise n'ont pas besoin de g&amp;#233;rer des centaines de milliers d'utilisateurs simultan&amp;#233;s, ni de monter en charge lin&amp;#233;airement &amp;#224; l'infini. Le commun des mortels ne s'appelle pas FaceBook, Google ou Microsoft. En voulant imposer &amp;#224; tout prix des bases de donn&amp;#233;es de type BigTable avec un vocabulaire aux antipodes de ce que nos d&amp;#233;veloppeurs maitrisent au quotidien, les fournisseurs de Cloud se sont enferm&amp;#233;s dans des technologies puissantes mais peu productives. Dans ce monde, si vous ne parlez pas couramment MapReduce, DataStorage, Entity ou Kind, point de salut. Le langage d'interrogation des donn&amp;#233;es est quasi inexistant car complexe. La gestion des indexs se fait bien souvent &amp;#224; la main, l'import et l'export des donn&amp;#233;es est propri&amp;#233;taires, donc inutile. Et que dire de la partie D&amp;#233;cisionnel ou du Data mining. &lt;/p&gt;  &lt;p&gt; Quoi qu'en en dise, les bases relationnelles sont l&amp;#224; pour durer. Le standard SQL est loin d'&amp;#234;tre obsol&amp;#232;te et les serveurs d'application ne disparaitront pas avec l'av&amp;#232;nement du Cloud. Microsoft l'avait d'ailleurs bien compris en fournissant bien avant Google le produit SQL Azure aid&amp;#233; par le fait qu'il &amp;#233;ditait d&amp;#233;j&amp;#224; la base SQL Server. Amazon de son c&amp;#244;t&amp;#233;, avec ARDS (Amazon Relationnal Database Service) en avait fait de m&amp;#234;me. Google ne pouvait rester les bras crois&amp;#233;s. &lt;/p&gt;  &lt;p&gt; Je le dis haut et fort chers amis, l'an 1 du Cloud &amp;#224; la mode GAE (Google App Engine) d&amp;#233;marre officiellement aujourd'hui. Cette fois, nous ne parlons plus d'une pseudo API JDO ou d'un support limit&amp;#233; de JPA sur une base BigTable mais d'une vraie, d'une pure et d'une belle base de donn&amp;#233;es relationnelle, j'ai nomm&amp;#233; MySQL. En r&amp;#233;alit&amp;#233;, deux &amp;#233;v&amp;#232;nements majeurs ont modifi&amp;#233; cet &amp;#233;cosyst&amp;#232;me de niche. Le premier a &amp;#233;t&amp;#233; l'annonce de Google en Novembre d'un support b&amp;#233;ta (voire alpha) de MySQL (dont le nom officiel est Google Cloud SQL). Un choix strat&amp;#233;gique qui adosse GAE &amp;#224; une marque qu'on ne pr&amp;#233;sente plus. Le second a &amp;#233;t&amp;#233; le support des standards JEE pour l'acc&amp;#232;s aux bases relationnelles, &amp;#224; savoir JPA 2 (Java Persistence API) depuis une tr&amp;#232;s r&amp;#233;cente mise &amp;#224; jour du &lt;a href=&quot;http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes&quot;&gt;SDK AppEngine&lt;/a&gt; (1.6.1). Ajoutez &amp;#224; cela le support d'un framework ORM comme Hibernate et de Spring comme alternative aux API Entreprise Java Beans (non support&amp;#233;, mais pr&amp;#233;vu) et vous obtenez la plateforme id&amp;#233;ale de d&amp;#233;veloppement Java pour le Cloud (des contraintes de s&amp;#233;curit&amp;#233; pr&amp;#233;venait initialement tous outils instrumentant du byte-code de fonctionner correctement sur GAE).&lt;/p&gt;  &lt;p&gt; Non seulement Il est d&amp;#233;sormais possible de d&amp;#233;velopper avec une base de donn&amp;#233;es relationnelle mais l'architecture applicative du Cloud reprend point pour point toutes les briques logicielles propos&amp;#233;es par un serveur d'application lambda du march&amp;#233;. Concr&amp;#232;tement, cela signifie qu'une application JEE ne n&amp;#233;cessitera aucun changement pour s'ex&amp;#233;cuter sur le cloud de Google. &lt;/p&gt;  &lt;p&gt;Cloud SQL, d&amp;#233;j&amp;#224; largement utilis&amp;#233; au sein de Google ach&amp;#232;vera d'ici peu sa phase b&amp;#233;ta et proposera un vrai mod&amp;#232;le &amp;#233;conomique. La base est aujourd'hui gratuite avec un quota de 10 Go (au passage largement suffisant pour un grand nombre d'applications).&lt;/p&gt;  &lt;p&gt;Enfin, cette nouvelle donne c&amp;#244;t&amp;#233; Java ouvre la porte &amp;#224; de nombreux cas d'utilisation. Il est d&amp;#233;sormais possible de maitriser ses donn&amp;#233;es et de porter d'un simple click son application du Cloud Amazon &amp;#224; celui de Google (via des Dump MySQL). Compte-tenu de cette nouvelle portabilit&amp;#233; inter-Cloud, les clients vont enfin pouvoir choisir le mod&amp;#232;le &amp;#233;conomique le plus adapt&amp;#233; sans avoir &amp;#224; remettre en cause leur architecture applicative. &lt;/p&gt;  &lt;p&gt;Pour vous prouver que tout cela est possible d&amp;#232;s &amp;#224; pr&amp;#233;sent, nous vous offrons le code source complet de l'application DNGCloudSQL. Cette application est h&amp;#233;berg&amp;#233;e gratuitement sur AppEngine et fonctionne avec GWT 2.4, GXT 3.0 beta2, Spring 3.1, JPA 2, Hibernate 3.6 et MySQL 5.5. La d&amp;#233;mo est disponible ici =&amp;gt; &lt;a title=&quot;http://dngcloudsql.appspot.com/&quot; href=&quot;http://dngcloudsql.appspot.com/&quot;&gt;http://dngcloudsql.appspot.com/&lt;/a&gt; et le code source ici =&amp;gt; &lt;a title=&quot;http://bit.ly/z7JX2W&quot; href=&quot;http://bit.ly/z7JX2W&quot;&gt;http://bit.ly/z7JX2W&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Amusez-vous bien !&lt;/p&gt; Sami  &lt;p&gt;ps1 : il vous faudra au pr&amp;#233;alable cr&amp;#233;er un compte Google Cloud SQL =&amp;gt; &lt;a title=&quot;https://developers.google.com/cloud-sql/docs/before_you_begin#enroll&quot; href=&quot;https://developers.google.com/cloud-sql/docs/before_you_begin#enroll&quot;&gt;https://developers.google.com/cloud-sql/docs/before_you_begin#enroll&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;ps2: il vous faudra &amp;#233;galement utiliser le plugin GPE pour Eclipse avec le dernier SDK 1.6.X et param&amp;#233;trer le tout avec votre compte AppEngine&lt;/p&gt;  &lt;p&gt;ps3 : ne vous fiez pas aux performances de l'application en ligne lors du premi&amp;#232;re acc&amp;#232;s, les VM GAE sont parfois en hibernation ce qui engendre un temps de cold start. Le second appel en revanche doit &amp;#234;tre rapide. &lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;Powered by &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Il y a de cela bient&#244;t trois ans jour pour jour, Google annon&#231;ait pour la premi&#232;re fois sa plateforme de Cloud PaaS (Platform As A Service). S'appuyant sur Java, Python ou Go comme langages de d&#233;veloppement adoss&#233;s &#224; AppEngine comme i<sub></sub>nfrastructure de services, force est de constater que 3 ans plus tard, l'engouement du d&#233;part a laiss&#233; place &#224; plus de scepticisme au fil des mois. Les raisons sont multiples. D&#233;velopper pour le Cloud n&#233;cessite de s'approprier de nouveaux outils, de nouveaux frameworks, tous aussi propri&#233;taires les uns que les autres.</p>  <p> Lors de la pr&#233;sentation officielle de GAE en 2009, aucun des standards Java (except&#233; l'API Servlet) n'&#233;tait support&#233;. Il faut le savoir, l'immense majorit&#233; des applications Java d&#233;velopp&#233;es aujourd'hui s'appuient sur des standards, que ce soit Java EE, Spring (qu'on appellera un standard de fait) ou Java Persistence API. Mais le plus bloquant durant toutes ces ann&#233;es a clairement &#233;t&#233; l'acc&#232;s aux donn&#233;es.</p>  <p> La plupart des applications en entreprise n'ont pas besoin de g&#233;rer des centaines de milliers d'utilisateurs simultan&#233;s, ni de monter en charge lin&#233;airement &#224; l'infini. Le commun des mortels ne s'appelle pas FaceBook, Google ou Microsoft. En voulant imposer &#224; tout prix des bases de donn&#233;es de type BigTable avec un vocabulaire aux antipodes de ce que nos d&#233;veloppeurs maitrisent au quotidien, les fournisseurs de Cloud se sont enferm&#233;s dans des technologies puissantes mais peu productives. Dans ce monde, si vous ne parlez pas couramment MapReduce, DataStorage, Entity ou Kind, point de salut. Le langage d'interrogation des donn&#233;es est quasi inexistant car complexe. La gestion des indexs se fait bien souvent &#224; la main, l'import et l'export des donn&#233;es est propri&#233;taires, donc inutile. Et que dire de la partie D&#233;cisionnel ou du Data mining. </p>  <p> Quoi qu'en en dise, les bases relationnelles sont l&#224; pour durer. Le standard SQL est loin d'&#234;tre obsol&#232;te et les serveurs d'application ne disparaitront pas avec l'av&#232;nement du Cloud. Microsoft l'avait d'ailleurs bien compris en fournissant bien avant Google le produit SQL Azure aid&#233; par le fait qu'il &#233;ditait d&#233;j&#224; la base SQL Server. Amazon de son c&#244;t&#233;, avec ARDS (Amazon Relationnal Database Service) en avait fait de m&#234;me. Google ne pouvait rester les bras crois&#233;s. </p>  <p> Je le dis haut et fort chers amis, l'an 1 du Cloud &#224; la mode GAE (Google App Engine) d&#233;marre officiellement aujourd'hui. Cette fois, nous ne parlons plus d'une pseudo API JDO ou d'un support limit&#233; de JPA sur une base BigTable mais d'une vraie, d'une pure et d'une belle base de donn&#233;es relationnelle, j'ai nomm&#233; MySQL. En r&#233;alit&#233;, deux &#233;v&#232;nements majeurs ont modifi&#233; cet &#233;cosyst&#232;me de niche. Le premier a &#233;t&#233; l'annonce de Google en Novembre d'un support b&#233;ta (voire alpha) de MySQL (dont le nom officiel est Google Cloud SQL). Un choix strat&#233;gique qui adosse GAE &#224; une marque qu'on ne pr&#233;sente plus. Le second a &#233;t&#233; le support des standards JEE pour l'acc&#232;s aux bases relationnelles, &#224; savoir JPA 2 (Java Persistence API) depuis une tr&#232;s r&#233;cente mise &#224; jour du <a href="http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes">SDK AppEngine</a> (1.6.1). Ajoutez &#224; cela le support d'un framework ORM comme Hibernate et de Spring comme alternative aux API Entreprise Java Beans (non support&#233;, mais pr&#233;vu) et vous obtenez la plateforme id&#233;ale de d&#233;veloppement Java pour le Cloud (des contraintes de s&#233;curit&#233; pr&#233;venait initialement tous outils instrumentant du byte-code de fonctionner correctement sur GAE).</p>  <p> Non seulement Il est d&#233;sormais possible de d&#233;velopper avec une base de donn&#233;es relationnelle mais l'architecture applicative du Cloud reprend point pour point toutes les briques logicielles propos&#233;es par un serveur d'application lambda du march&#233;. Concr&#232;tement, cela signifie qu'une application JEE ne n&#233;cessitera aucun changement pour s'ex&#233;cuter sur le cloud de Google. </p>  <p>Cloud SQL, d&#233;j&#224; largement utilis&#233; au sein de Google ach&#232;vera d'ici peu sa phase b&#233;ta et proposera un vrai mod&#232;le &#233;conomique. La base est aujourd'hui gratuite avec un quota de 10 Go (au passage largement suffisant pour un grand nombre d'applications).</p>  <p>Enfin, cette nouvelle donne c&#244;t&#233; Java ouvre la porte &#224; de nombreux cas d'utilisation. Il est d&#233;sormais possible de maitriser ses donn&#233;es et de porter d'un simple click son application du Cloud Amazon &#224; celui de Google (via des Dump MySQL). Compte-tenu de cette nouvelle portabilit&#233; inter-Cloud, les clients vont enfin pouvoir choisir le mod&#232;le &#233;conomique le plus adapt&#233; sans avoir &#224; remettre en cause leur architecture applicative. </p>  <p>Pour vous prouver que tout cela est possible d&#232;s &#224; pr&#233;sent, nous vous offrons le code source complet de l'application DNGCloudSQL. Cette application est h&#233;berg&#233;e gratuitement sur AppEngine et fonctionne avec GWT 2.4, GXT 3.0 beta2, Spring 3.1, JPA 2, Hibernate 3.6 et MySQL 5.5. La d&#233;mo est disponible ici =&gt; <a title="http://dngcloudsql.appspot.com/" href="http://dngcloudsql.appspot.com/">http://dngcloudsql.appspot.com/</a> et le code source ici =&gt; <a title="http://bit.ly/z7JX2W" href="http://bit.ly/z7JX2W">http://bit.ly/z7JX2W</a>.</p>  <p>Amusez-vous bien !</p> Sami  <p>ps1 : il vous faudra au pr&#233;alable cr&#233;er un compte Google Cloud SQL =&gt; <a title="https://developers.google.com/cloud-sql/docs/before_you_begin#enroll" href="https://developers.google.com/cloud-sql/docs/before_you_begin#enroll">https://developers.google.com/cloud-sql/docs/before_you_begin#enroll</a></p>  <p>ps2: il vous faudra &#233;galement utiliser le plugin GPE pour Eclipse avec le dernier SDK 1.6.X et param&#233;trer le tout avec votre compte AppEngine</p>  <p>ps3 : ne vous fiez pas aux performances de l'application en ligne lors du premi&#232;re acc&#232;s, les VM GAE sont parfois en hibernation ce qui engendre un temps de cold start. Le second appel en revanche doit &#234;tre rapide. </p><div class="item_footer"><p><small>Powered by <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dng-consulting.com/blogs/index.php/2012/02/08/le-cloud-de-google-aagrave-larsquo-heure-1?blog=1#comments</comments>
		</item>
				<item>
			<title>Pr&#233;sence &#224; Devoxx France en Avril prochain</title>
			<link>http://www.dng-consulting.com/blogs/index.php/2012/01/16/presence-a-devoxx-france-en-avril-procha?blog=1</link>
			<pubDate>Mon, 16 Jan 2012 10:07:00 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">News</category>			<guid isPermaLink="false">217@http://www.dng-consulting.com/blogs/</guid>
						<description>Certains le savent bien, pendant les cinq derni&amp;#232;res ann&amp;#233;es, j'ai pr&amp;#233;f&amp;#233;r&amp;#233; d&amp;#233;cliner la plupart des invitations &amp;#224; des conf&amp;#233;rences publiques en tant que speaker pour me concentrer sur les activit&amp;#233;s de DNG Consulting. Depuis 2007 et les &lt;a href=&quot;http://www.lemondeinformatique.fr/actualites/lire-les-rencontres-gwt-font-salle-comble-23355.html&quot;&gt;rencontres GWT&lt;/a&gt; anim&amp;#233;es avec &lt;a href=&quot;https://plus.google.com/115263933340916245640/about&quot;&gt;Didier&lt;/a&gt;, je n'ai quasiment pas approch&amp;#233; une sc&amp;#232;ne (sauf en petit comit&amp;#233;). Un expert, quel qu'il soit, ne vit et s&amp;#233;vit qu'au travers de la r&amp;#233;alit&amp;#233; du terrain, il se nourrit des projets, des clients et construit son savoir faire sur les exp&amp;#233;riences concr&amp;#232;tes du quotidien. Autrement, son discours s&amp;#8217;effrite et il finit par boucler. Apr&amp;#232;s plus de 5 ans de projets, il est temps de montrer au plus grand nombre cette partie de mon activit&amp;#233;. Pour mettre en lumi&amp;#232;re la formidable &amp;#233;quipe qui m'accompagne mais aussi et surtout les formidables technologies qui bercent notre quotidien depuis 2007. &lt;a href=&quot;http://www.devoxx.fr/display/FR12/Speakers&quot;&gt;Devoxx France&lt;/a&gt; sera un bel &amp;#233;v&amp;#233;nement, incontournable en ce d&amp;#233;but d'ann&amp;#233;e. Sans trahir de secret (je pr&amp;#233;f&amp;#232;re laisser la primeur &amp;#224; l'&amp;#233;quipe Devoxx d'annoncer le contenu pr&amp;#233;cis de la session), vous devriez &amp;#234;tre ravi si vous aimez Java (EJB 3 et JPA), .NET, GWT, REst, le Push Web et l'optimisation des performances d'une application Web. Je pr&amp;#233;senterai &amp;#224; Devoxx France le projet Cobra. Un cas concret d'innovation technologique. 

En esp&amp;#233;rant vous y voir nombreux.

&lt;i&gt;Sami&lt;/i&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;Powered by &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[Certains le savent bien, pendant les cinq derni&#232;res ann&#233;es, j'ai pr&#233;f&#233;r&#233; d&#233;cliner la plupart des invitations &#224; des conf&#233;rences publiques en tant que speaker pour me concentrer sur les activit&#233;s de DNG Consulting. Depuis 2007 et les <a href="http://www.lemondeinformatique.fr/actualites/lire-les-rencontres-gwt-font-salle-comble-23355.html">rencontres GWT</a> anim&#233;es avec <a href="https://plus.google.com/115263933340916245640/about">Didier</a>, je n'ai quasiment pas approch&#233; une sc&#232;ne (sauf en petit comit&#233;). Un expert, quel qu'il soit, ne vit et s&#233;vit qu'au travers de la r&#233;alit&#233; du terrain, il se nourrit des projets, des clients et construit son savoir faire sur les exp&#233;riences concr&#232;tes du quotidien. Autrement, son discours s&#8217;effrite et il finit par boucler. Apr&#232;s plus de 5 ans de projets, il est temps de montrer au plus grand nombre cette partie de mon activit&#233;. Pour mettre en lumi&#232;re la formidable &#233;quipe qui m'accompagne mais aussi et surtout les formidables technologies qui bercent notre quotidien depuis 2007. <a href="http://www.devoxx.fr/display/FR12/Speakers">Devoxx France</a> sera un bel &#233;v&#233;nement, incontournable en ce d&#233;but d'ann&#233;e. Sans trahir de secret (je pr&#233;f&#232;re laisser la primeur &#224; l'&#233;quipe Devoxx d'annoncer le contenu pr&#233;cis de la session), vous devriez &#234;tre ravi si vous aimez Java (EJB 3 et JPA), .NET, GWT, REst, le Push Web et l'optimisation des performances d'une application Web. Je pr&#233;senterai &#224; Devoxx France le projet Cobra. Un cas concret d'innovation technologique. 

En esp&#233;rant vous y voir nombreux.

<i>Sami</i><div class="item_footer"><p><small>Powered by <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dng-consulting.com/blogs/index.php/2012/01/16/presence-a-devoxx-france-en-avril-procha?blog=1#comments</comments>
		</item>
				<item>
			<title>LLVM est en train de r&#233;volutionner la portabilit&#233; sur le Web</title>
			<link>http://www.dng-consulting.com/blogs/index.php/2011/12/12/llvm-est-en-train-de-raeacute-volutionne-1?blog=1</link>
			<pubDate>Mon, 12 Dec 2011 18:14:35 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">Philosophie de comptoir</category>			<guid isPermaLink="false">216@http://www.dng-consulting.com/blogs/</guid>
						<description>&lt;p&gt;Il faut une sacr&amp;#233;e dose de vulgarisation pour arriver &amp;#224; faire comprendre le sens de cet article technique &amp;#224; des non initi&amp;#233;s. Mais je me lance en esp&amp;#233;rant que tout le monde, techniciens comme &amp;#233;rudit, sera en mesure de saisir les enjeux autour de LLVM qui d&amp;#233;passent le simple cadre du projet OpenSource. &lt;/p&gt;  &lt;p&gt;Depuis quelques ann&amp;#233;es, toutes les technologies qui ont &amp;#233;merg&amp;#233;es n'ont cess&amp;#233; d'abonder dans le sens d'un navigateur universel ou en tout cas d'une machine virtuelle universelle. Pendant longtemps, les VM Java ou .NET ont laiss&amp;#233; entrevoir un espoir tr&amp;#232;s vite balay&amp;#233; par le fait que l'int&amp;#233;gration de code natif (&amp;#233;crit en C/C++ ou Assembleur) &amp;#233;tait un obstacle insurmontable. &lt;/p&gt;  &lt;p&gt;On le sait aujourd'hui, proposer un programme portable est clairement un voeu pieu. M&amp;#234;me si les architectures mat&amp;#233;rielles restent globalement stables et se concentrent sur les habituels x86, ARM, PowerPC, etc. la dimension 32 bits ou 64 bits vient s'ajouter &amp;#224; l'ensemble. Et ne parlons pas des p&amp;#233;riph&amp;#233;riques qui impl&amp;#233;mentent des sous-ensembles de sp&amp;#233;cifications mat&amp;#233;rielles (tablettes, t&amp;#233;l&amp;#233;phones mobiles, etc .). Bref, le r&amp;#234;ve ultime serait d'avoir en quelque sorte une machine magique capable de lire du code source et de le traduire dans du code machine sp&amp;#233;cifique au p&amp;#233;riph&amp;#233;rique sur lequel on s'ex&amp;#233;cute. A part quelques ajustements d'ordre graphique (la taille d'un t&amp;#233;l&amp;#233;phone mobile n'&amp;#233;tant pas celle d'une tablette ou d'un &amp;#233;cran de PC), le d&amp;#233;veloppeur n'aurait pas &amp;#224; r&amp;#233;&amp;#233;crire son programme pour iPhone, Android, Tablette et navigateurs Web. &lt;/p&gt;  &lt;p&gt;Pendant longtemps, Google a entretenu ce doux r&amp;#234;ve avec &lt;a href=&quot;http://code.google.com/p/nativeclient/&quot;&gt;NaCl&lt;/a&gt; pour Native Client. Une technologie cens&amp;#233;e ex&amp;#233;cuter du byte-code universel &amp;#224; partir d'un plugin qui ressemble pour sch&amp;#233;matiser vulgairement (que les initi&amp;#233;s me pardonnent) &amp;#224; une sorte de VMWare embarqu&amp;#233; dans le navigateur. Or aujourd'hui, NaCl ne perce pas car le march&amp;#233; ne jure que par HTML 5 et JavaScript. Un langage dont NaCl fait totalement l'impasse. Il en fait m&amp;#234;me un contre-exemple car on fait du NaCl pour palier aux performances de JavaScript avant tout. Et c'est le noeud du probl&amp;#232;me car lorsque JavaScript entre en confrontation avec NaCl, il gagne souvent par la simplicit&amp;#233; de son environnement d'ex&amp;#233;cution (un simple navigateur suffit) l&amp;#224; o&amp;#249; NaCl requiert l'installation d'une couche logicielle sp&amp;#233;cifique.&lt;/p&gt;  &lt;p&gt;Aujourd'hui, tout cela est en train de bouger avec les r&amp;#233;cents travaux de recherche autour du projet &lt;a href=&quot;http://llvm.org&quot;&gt;LLVM&lt;/a&gt;. LLVM signifie (Low Level Virtual Machine). Pour bien comprendre LLVM, il faut un minimum de pr&amp;#233;-requis en th&amp;#233;orie de compilation. Lorsqu'on compile un programme source en ex&amp;#233;cutable machine, il est d'abord traduit dans une structure interm&amp;#233;diaire (appel&amp;#233; encore IR pour &lt;a href=&quot;http://en.wikipedia.org/wiki/Intermediate_language&quot;&gt;Intermediate Representation&lt;/a&gt; ou BitCode pour LLVM). Cette structure va ensuite servir &amp;#224; cr&amp;#233;er un &lt;a href=&quot;http://en.wikipedia.org/wiki/Control_flow_graph&quot;&gt;CFG&lt;/a&gt; (Control Flow Graph) qui est une sorte de graphe permettant de mettre le g&amp;#233;n&amp;#233;rateur de code machine dans les meilleurs pr&amp;#233;dispositions pour qu'il puisse optimiser le code initial (sp&amp;#233;cialiser par rapport &amp;#224; l'architecture mat&amp;#233;rielle, enlever le code mort, inf&amp;#233;rer les types, inliner, etc .. ). On parle souvent de front-end pour la partie du compilateur qui g&amp;#233;n&amp;#232;re l'IR et de back-end pour la partie qui g&amp;#233;n&amp;#232;re le code machine. &lt;/p&gt;  &lt;p&gt;Quel lien entre tout cela et LLVM ? LLVM est issu des travaux de recherche de &lt;a href=&quot;http://www.nondot.org/sabre/&quot;&gt;Chris Lattner&lt;/a&gt;, &amp;#224; l'&amp;#233;poque assistant chercheur &amp;#224; l'universit&amp;#233; de l'Illinois et accessoirement g&amp;#233;nie de l'informatique. LLVM a ensuite &amp;#233;t&amp;#233; industrialis&amp;#233; &amp;#224; plus large &amp;#233;chelle lorsque Chris a int&amp;#233;gr&amp;#233; Apple. LLVM est devenu au fil des mois une infrastructure compl&amp;#232;tement innovante proposant un IR tr&amp;#232;s complet et int&amp;#233;grant dans sa structure un CFG bas&amp;#233; sur le puissant algorithme &lt;a href=&quot;http://en.wikipedia.org/wiki/Static_single_assignment_form&quot;&gt;SSA pour Static Single Assignment&lt;/a&gt; (cr&amp;#233;&amp;#233; par IBM dans les ann&amp;#233;es 80 !). Sans aller dans les d&amp;#233;tails techniques, il faut simplement savoir que LLVM adresse non seulement les langages &amp;#224; typage statique mais aussi ceux &amp;#224; typage dynamique (C, Java, Php, Python/Ruby,Fortran .). L'IR de LLVM est en quelque sorte le parfait mod&amp;#232;le interm&amp;#233;diaire pour repr&amp;#233;senter un programme qui va ensuite g&amp;#233;n&amp;#233;rer du code machine natif optimis&amp;#233; via le jeu du g&amp;#233;n&amp;#233;rateur de code (Just In Time si cela est fait &amp;#224; la vol&amp;#233;e lors de l'ex&amp;#233;cution). &lt;/p&gt;  &lt;p&gt;Depuis l'ann&amp;#233;e derni&amp;#232;re, Google a compris la puissance de l'IR dans LLVM et l'a int&amp;#233;gr&amp;#233; &amp;#224; NaCl au travers de &lt;a href=&quot;http://blog.chromium.org/2010/03/native-client-and-web-portability.html&quot;&gt;pinnacle&lt;/a&gt; (&lt;a href=&quot;http://blog.chromium.org/2010/03/native-client-and-web-portability.html&quot;&gt;Portable NaCl&lt;/a&gt;). Cela signifie donc qu'un programme NaCl qui utilisera un compilateur LLVM pourra g&amp;#233;n&amp;#233;rer n'importe quel type de code machine. Une aubaine pour LLVM et l'ouverture d'un &amp;#233;norme march&amp;#233; pour Google.&lt;/p&gt;  &lt;p&gt;Mais quel lien avec JavaScript et le Web de demain ? Souvenez-vous, JavaScript aujourd'hui est l'infrastructure d'ex&amp;#233;cution pl&amp;#233;biscit&amp;#233;e pour les ann&amp;#233;es &amp;#224; venir. Si JavaScript a quelques d&amp;#233;fauts (pas de multi-threading, repr&amp;#233;sentation 64 bits non support&amp;#233; pour les nombres), il ne se d&amp;#233;marque pas plus que cela des autres langages. De l&amp;#224; &amp;#224; faire le lien entre LLVM et JavaScript, il n'y a qu'un pas que le g&amp;#233;nial &lt;a href=&quot;http://mozakai.blogspot.com/&quot;&gt;Alon Zakai&lt;/a&gt; a franchi. En cr&amp;#233;ant &lt;a href=&quot;https://github.com/kripken/emscripten&quot;&gt;emscripten&lt;/a&gt;, ce d&amp;#233;veloppeur Mozilla a prouv&amp;#233; qu'il &amp;#233;tait possible de coder une application en C++ r&amp;#233;alisant des t&amp;#226;ches graphiques puis de g&amp;#233;n&amp;#233;rer son code machine en JavaScript via LLVM, &lt;a href=&quot;http://www.syntensity.com/static/ammo.html&quot;&gt;d&amp;#233;mo &amp;#224; l'appui&lt;/a&gt;. &lt;a href=&quot;http://www.syntensity.com/static/ammo.html&quot;&gt;Ammo.js&lt;/a&gt; n'est rien de moins que le portage de la biblioth&amp;#232;que &amp;#171; Bullet Physics Engine &amp;#187; originalement &amp;#233;crite en C++. &lt;/p&gt;  &lt;p&gt;Evidemment, il y a encore de nombreuses zones d'ombres, notamment sur les performances de JavaScript. Sur son blog, Chad Austin fait un &lt;a href=&quot;http://chadaustin.me/2011/11/digging-into-javascript-performance-part-2/&quot;&gt;mini benchmark&lt;/a&gt; des performances de C/C++ compar&amp;#233;s &amp;#224; leur &amp;#233;quivalent JavaScript. Si le facteur laisse pantois (multipli&amp;#233; par 140), concr&amp;#232;tement, la faisabilit&amp;#233; technique a &amp;#233;t&amp;#233; d&amp;#233;montr&amp;#233;e. Imaginez un instant la valeur de cette architecture pour les d&amp;#233;veloppeurs de jeux vid&amp;#233;o qui s'arrachent aujourd'hui les cheveux avec la portabilit&amp;#233;. Nous aurions un seul code source (et peu importe s'il est en C, C++, C#, Java ou Fortran) capable de s'ex&amp;#233;cuter via un compilateur compatible LLVM. Puis un d&amp;#233;ploiement compl&amp;#232;tement li&amp;#233; &amp;#224; l'environnement d'ex&amp;#233;cution cible. Ce serait NaCl sur les navigateurs avec plugin et JavaScript pour ceux sans plugin. &lt;/p&gt;  &lt;p&gt;Il reste encore deux probl&amp;#232;mes majeurs &amp;#224; cette infrastructure multi-plateformes. Cr&amp;#233;er des environnements de d&amp;#233;veloppement adapt&amp;#233;s (faire en sorte de g&amp;#233;n&amp;#233;rer directement de l'IR LLVM et non un pseudo bytecode propri&amp;#233;taire) et d&amp;#233;mocratiser NaCl sur le march&amp;#233;. Malgr&amp;#233; son statut Open Source (&lt;a href=&quot;http://code.google.com/p/nativeclient/&quot;&gt;http://code.google.com/p/nativeclient/&lt;/a&gt;), NaCl est encore vu comme un projet propri&amp;#233;taire cr&amp;#233;&amp;#233; par Google. Et c'est bien dommage. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Sami Jaber&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;ps : L'id&amp;#233;e de cet article m'est venu en lisant &lt;a href=&quot;https://plus.google.com/u/0/111111598146968769323/posts/g4VREpEMbrS&quot;&gt;ce billet de Joel&lt;/a&gt; s'arrachant les cheveux avec emscripten pour valider les performances des diff&amp;#233;rents sc&amp;#233;narios&lt;/em&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;Powered by &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Il faut une sacr&#233;e dose de vulgarisation pour arriver &#224; faire comprendre le sens de cet article technique &#224; des non initi&#233;s. Mais je me lance en esp&#233;rant que tout le monde, techniciens comme &#233;rudit, sera en mesure de saisir les enjeux autour de LLVM qui d&#233;passent le simple cadre du projet OpenSource. </p>  <p>Depuis quelques ann&#233;es, toutes les technologies qui ont &#233;merg&#233;es n'ont cess&#233; d'abonder dans le sens d'un navigateur universel ou en tout cas d'une machine virtuelle universelle. Pendant longtemps, les VM Java ou .NET ont laiss&#233; entrevoir un espoir tr&#232;s vite balay&#233; par le fait que l'int&#233;gration de code natif (&#233;crit en C/C++ ou Assembleur) &#233;tait un obstacle insurmontable. </p>  <p>On le sait aujourd'hui, proposer un programme portable est clairement un voeu pieu. M&#234;me si les architectures mat&#233;rielles restent globalement stables et se concentrent sur les habituels x86, ARM, PowerPC, etc. la dimension 32 bits ou 64 bits vient s'ajouter &#224; l'ensemble. Et ne parlons pas des p&#233;riph&#233;riques qui impl&#233;mentent des sous-ensembles de sp&#233;cifications mat&#233;rielles (tablettes, t&#233;l&#233;phones mobiles, etc .). Bref, le r&#234;ve ultime serait d'avoir en quelque sorte une machine magique capable de lire du code source et de le traduire dans du code machine sp&#233;cifique au p&#233;riph&#233;rique sur lequel on s'ex&#233;cute. A part quelques ajustements d'ordre graphique (la taille d'un t&#233;l&#233;phone mobile n'&#233;tant pas celle d'une tablette ou d'un &#233;cran de PC), le d&#233;veloppeur n'aurait pas &#224; r&#233;&#233;crire son programme pour iPhone, Android, Tablette et navigateurs Web. </p>  <p>Pendant longtemps, Google a entretenu ce doux r&#234;ve avec <a href="http://code.google.com/p/nativeclient/">NaCl</a> pour Native Client. Une technologie cens&#233;e ex&#233;cuter du byte-code universel &#224; partir d'un plugin qui ressemble pour sch&#233;matiser vulgairement (que les initi&#233;s me pardonnent) &#224; une sorte de VMWare embarqu&#233; dans le navigateur. Or aujourd'hui, NaCl ne perce pas car le march&#233; ne jure que par HTML 5 et JavaScript. Un langage dont NaCl fait totalement l'impasse. Il en fait m&#234;me un contre-exemple car on fait du NaCl pour palier aux performances de JavaScript avant tout. Et c'est le noeud du probl&#232;me car lorsque JavaScript entre en confrontation avec NaCl, il gagne souvent par la simplicit&#233; de son environnement d'ex&#233;cution (un simple navigateur suffit) l&#224; o&#249; NaCl requiert l'installation d'une couche logicielle sp&#233;cifique.</p>  <p>Aujourd'hui, tout cela est en train de bouger avec les r&#233;cents travaux de recherche autour du projet <a href="http://llvm.org">LLVM</a>. LLVM signifie (Low Level Virtual Machine). Pour bien comprendre LLVM, il faut un minimum de pr&#233;-requis en th&#233;orie de compilation. Lorsqu'on compile un programme source en ex&#233;cutable machine, il est d'abord traduit dans une structure interm&#233;diaire (appel&#233; encore IR pour <a href="http://en.wikipedia.org/wiki/Intermediate_language">Intermediate Representation</a> ou BitCode pour LLVM). Cette structure va ensuite servir &#224; cr&#233;er un <a href="http://en.wikipedia.org/wiki/Control_flow_graph">CFG</a> (Control Flow Graph) qui est une sorte de graphe permettant de mettre le g&#233;n&#233;rateur de code machine dans les meilleurs pr&#233;dispositions pour qu'il puisse optimiser le code initial (sp&#233;cialiser par rapport &#224; l'architecture mat&#233;rielle, enlever le code mort, inf&#233;rer les types, inliner, etc .. ). On parle souvent de front-end pour la partie du compilateur qui g&#233;n&#232;re l'IR et de back-end pour la partie qui g&#233;n&#232;re le code machine. </p>  <p>Quel lien entre tout cela et LLVM ? LLVM est issu des travaux de recherche de <a href="http://www.nondot.org/sabre/">Chris Lattner</a>, &#224; l'&#233;poque assistant chercheur &#224; l'universit&#233; de l'Illinois et accessoirement g&#233;nie de l'informatique. LLVM a ensuite &#233;t&#233; industrialis&#233; &#224; plus large &#233;chelle lorsque Chris a int&#233;gr&#233; Apple. LLVM est devenu au fil des mois une infrastructure compl&#232;tement innovante proposant un IR tr&#232;s complet et int&#233;grant dans sa structure un CFG bas&#233; sur le puissant algorithme <a href="http://en.wikipedia.org/wiki/Static_single_assignment_form">SSA pour Static Single Assignment</a> (cr&#233;&#233; par IBM dans les ann&#233;es 80 !). Sans aller dans les d&#233;tails techniques, il faut simplement savoir que LLVM adresse non seulement les langages &#224; typage statique mais aussi ceux &#224; typage dynamique (C, Java, Php, Python/Ruby,Fortran .). L'IR de LLVM est en quelque sorte le parfait mod&#232;le interm&#233;diaire pour repr&#233;senter un programme qui va ensuite g&#233;n&#233;rer du code machine natif optimis&#233; via le jeu du g&#233;n&#233;rateur de code (Just In Time si cela est fait &#224; la vol&#233;e lors de l'ex&#233;cution). </p>  <p>Depuis l'ann&#233;e derni&#232;re, Google a compris la puissance de l'IR dans LLVM et l'a int&#233;gr&#233; &#224; NaCl au travers de <a href="http://blog.chromium.org/2010/03/native-client-and-web-portability.html">pinnacle</a> (<a href="http://blog.chromium.org/2010/03/native-client-and-web-portability.html">Portable NaCl</a>). Cela signifie donc qu'un programme NaCl qui utilisera un compilateur LLVM pourra g&#233;n&#233;rer n'importe quel type de code machine. Une aubaine pour LLVM et l'ouverture d'un &#233;norme march&#233; pour Google.</p>  <p>Mais quel lien avec JavaScript et le Web de demain ? Souvenez-vous, JavaScript aujourd'hui est l'infrastructure d'ex&#233;cution pl&#233;biscit&#233;e pour les ann&#233;es &#224; venir. Si JavaScript a quelques d&#233;fauts (pas de multi-threading, repr&#233;sentation 64 bits non support&#233; pour les nombres), il ne se d&#233;marque pas plus que cela des autres langages. De l&#224; &#224; faire le lien entre LLVM et JavaScript, il n'y a qu'un pas que le g&#233;nial <a href="http://mozakai.blogspot.com/">Alon Zakai</a> a franchi. En cr&#233;ant <a href="https://github.com/kripken/emscripten">emscripten</a>, ce d&#233;veloppeur Mozilla a prouv&#233; qu'il &#233;tait possible de coder une application en C++ r&#233;alisant des t&#226;ches graphiques puis de g&#233;n&#233;rer son code machine en JavaScript via LLVM, <a href="http://www.syntensity.com/static/ammo.html">d&#233;mo &#224; l'appui</a>. <a href="http://www.syntensity.com/static/ammo.html">Ammo.js</a> n'est rien de moins que le portage de la biblioth&#232;que &#171; Bullet Physics Engine &#187; originalement &#233;crite en C++. </p>  <p>Evidemment, il y a encore de nombreuses zones d'ombres, notamment sur les performances de JavaScript. Sur son blog, Chad Austin fait un <a href="http://chadaustin.me/2011/11/digging-into-javascript-performance-part-2/">mini benchmark</a> des performances de C/C++ compar&#233;s &#224; leur &#233;quivalent JavaScript. Si le facteur laisse pantois (multipli&#233; par 140), concr&#232;tement, la faisabilit&#233; technique a &#233;t&#233; d&#233;montr&#233;e. Imaginez un instant la valeur de cette architecture pour les d&#233;veloppeurs de jeux vid&#233;o qui s'arrachent aujourd'hui les cheveux avec la portabilit&#233;. Nous aurions un seul code source (et peu importe s'il est en C, C++, C#, Java ou Fortran) capable de s'ex&#233;cuter via un compilateur compatible LLVM. Puis un d&#233;ploiement compl&#232;tement li&#233; &#224; l'environnement d'ex&#233;cution cible. Ce serait NaCl sur les navigateurs avec plugin et JavaScript pour ceux sans plugin. </p>  <p>Il reste encore deux probl&#232;mes majeurs &#224; cette infrastructure multi-plateformes. Cr&#233;er des environnements de d&#233;veloppement adapt&#233;s (faire en sorte de g&#233;n&#233;rer directement de l'IR LLVM et non un pseudo bytecode propri&#233;taire) et d&#233;mocratiser NaCl sur le march&#233;. Malgr&#233; son statut Open Source (<a href="http://code.google.com/p/nativeclient/">http://code.google.com/p/nativeclient/</a>), NaCl est encore vu comme un projet propri&#233;taire cr&#233;&#233; par Google. Et c'est bien dommage. </p>  <p><em>Sami Jaber</em></p>  <p><em>ps : L'id&#233;e de cet article m'est venu en lisant <a href="https://plus.google.com/u/0/111111598146968769323/posts/g4VREpEMbrS">ce billet de Joel</a> s'arrachant les cheveux avec emscripten pour valider les performances des diff&#233;rents sc&#233;narios</em></p><div class="item_footer"><p><small>Powered by <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dng-consulting.com/blogs/index.php/2011/12/12/llvm-est-en-train-de-raeacute-volutionne-1?blog=1#comments</comments>
		</item>
				<item>
			<title>GWT : une technologie construite pour durer</title>
			<link>http://www.dng-consulting.com/blogs/index.php/2011/12/09/gwt-une-technologie-construite-pour-dure?blog=1</link>
			<pubDate>Fri, 09 Dec 2011 17:06:14 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">GWT</category>			<guid isPermaLink="false">214@http://www.dng-consulting.com/blogs/</guid>
						<description>Depuis quelques jours, la blogosph&amp;#232;re GWT est secou&amp;#233;e par des voix qui s&amp;#8217;&amp;#233;l&amp;#232;vent pour annoncer sa mort prochaine et son remplacement par une autre technologie Google nomm&amp;#233;e &lt;a href=&quot;http://www.dartlang.org/&quot;&gt;Dart&lt;/a&gt;. L&amp;#8217;id&amp;#233;e de ce billet est de vous apporter un &amp;#233;clairage sur ces d&amp;#233;bats, souvent techniques et pas toujours tr&amp;#232;s factuels. 

GWT est une technologie innovante cr&amp;#233;&amp;#233;e il y a de cela 6 ans par Google et permettant de cr&amp;#233;er une application Web enti&amp;#232;rement en Java tout en faisant abstraction de la complexit&amp;#233; inh&amp;#233;rente &amp;#224; JavaScript et HTML. C&amp;#244;t&amp;#233; client, on code en Java avec des composants graphiques de haut niveau (Bouton, Menus, Grilles,  etc&amp;#8230;) et c&amp;#244;t&amp;#233; serveur on s&amp;#8217;int&amp;#232;gre avec n&amp;#8217;importe quel serveur d&amp;#8217;application (Java ou non d&amp;#8217;ailleurs). Principal avantage de GWT : il est possible de partager et donc r&amp;#233;utiliser les m&amp;#234;mes types (Java) entre client et serveur.  Autre b&amp;#233;n&amp;#233;fice de taille, GWT tire partie de tous les avantages des IDE Java modernes (compl&amp;#233;tion des m&amp;#233;thodes, Debug via des points d&amp;#8217;arr&amp;#234;t, Refactoring, Testabilit&amp;#233;). 

Apr&amp;#232;s plusieurs ann&amp;#233;es de d&amp;#233;veloppement autour de GWT, Google  a d&amp;#233;cid&amp;#233; il y a quelques mois de cr&amp;#233;er un nouveau langage de d&amp;#233;veloppement Web nomm&amp;#233; Dart. Ce langage &amp;#224; la syntaxe tr&amp;#232;s s&amp;#233;duisante a &amp;#233;t&amp;#233; con&amp;#231;u pour &amp;#234;tre performant (proc&amp;#233;d&amp;#233; de snapshotting) tout en apportant des r&amp;#233;ponses aux quelques lacunes de Java (closure, &amp;#8230;.). D&amp;#8217;un point de vue structurel, Dart s&amp;#8217;appuie sur un paradigme orient&amp;#233; objet et propose un mode &amp;#171; compilable &amp;#187; (g&amp;#233;n&amp;#232;re du JavaScript) et interpr&amp;#233;table (ex&amp;#233;cut&amp;#233; directement dans le navigateur via une machine virtuelle). 

Le contexte &amp;#233;tant pos&amp;#233;, o&amp;#249; se situe le n&amp;#339;ud du probl&amp;#232;me ? Pour cr&amp;#233;er Dart, Google a eu la bonne (ou mauvaise pour certains) id&amp;#233;e de r&amp;#233;utiliser certains talents de l&amp;#8217;&amp;#233;quipe GWT. Un turn-over s&amp;#8217;est op&amp;#233;r&amp;#233; qui s&amp;#8217;est traduit par l&amp;#8217;arriv&amp;#233;e de nouveaux d&amp;#233;veloppeurs GWT, le changement du leader et le d&amp;#233;part de contributeurs historiques, mais non moins charismatiques. Il n&amp;#8217;en fallait pas plus &amp;#224; certains pour &amp;#233;tablir un lien de cause &amp;#224; effet entre Dart et GWT. Dart a &amp;#233;t&amp;#233; cr&amp;#233;&amp;#233; pour remplacer GWT.

Soyons clairs, Dart est un nouveau langage, cela signifie en pratique qu&amp;#8217;il faudra r&amp;#233;&amp;#233;crire un IDE adapt&amp;#233; (c&amp;#8217;est en cours), mettre en place de nouveaux outils de d&amp;#233;veloppement et surtout convertir ou int&amp;#233;grer les innombrables framework qui constituent aujourd&amp;#8217;hui la norme JEE (entre autre). Un travail non seulement titanesque mais assez rocambolesque quand on connait la taille et la diversit&amp;#233; de l&amp;#8217;&amp;#233;cosyst&amp;#232;me Java. 

Google, &amp;#224; de nombreuses reprises, par la voix de Ray Cromwell (autre contributeur historique) a r&amp;#233;affirm&amp;#233; sa volont&amp;#233; de poursuivre son investissement dans GWT. L&amp;#8217;&amp;#233;quipe n&amp;#8217;a pas &amp;#233;t&amp;#233; r&amp;#233;duite, l&amp;#8217;activit&amp;#233; non plus. En interne, les produits les plus strat&amp;#233;giques de Google sont &amp;#233;crits en GWT et la Roadmap de la 2.5 est des plus all&amp;#233;chantes avec de nombreux travaux autour du compilateur (et l&amp;#8217;int&amp;#233;gration de Closure).  GWT a prouv&amp;#233; sa maturit&amp;#233;, ses performances (nous l&amp;#8217;utilisons au quotidien chez DNG et nos clients en sont pleinement satisfaits) et surtout sa productivit&amp;#233; hors pair. 

Dart est un projet encore embryonnaire venant s&amp;#8217;ajouter aux innombrables projets R &amp;amp; D de la firme. On peut l&amp;#8217;affirmer aujourd&amp;#8217;hui sans trop de risques, Dart, pas plus qu&amp;#8217;ActionScript d&amp;#8217;Adobe, Silverlight de Microsoft ou JavaFX d&amp;#8217;Oracle, ne pourra s&amp;#8217;imposer sur tous les navigateurs. Pour faire tourner Dart, il faudra, soit une VM, donc  un plug-in, chose difficilement concevable aujourd&amp;#8217;hui, soit une cross-compilation vers JavaScript (c&amp;#8217;est le cas aujourd&amp;#8217;hui) et le choix du langage devient alors le seul crit&amp;#232;re d&amp;#233;terminant (difficile pour faire changer la face du monde). Choisir entre Java et Dart, c&amp;#8217;est un peu comme choisir entre Java et Ruby ou Java et Scala. On ne cesse de pr&amp;#233;dire la mort de Java depuis 10 ans, ce langage n&amp;#8217;a jamais &amp;#233;t&amp;#233; aussi fort et populaire qu&amp;#8217;aujourd&amp;#8217;hui, m&amp;#234;me sans les closures et les qualit&amp;#233;s de scripting. 

Google nous a d&amp;#233;j&amp;#224; habitu&amp;#233;s par le pass&amp;#233; &amp;#224; faire marche arri&amp;#232;re sur un grand nombre de projets (Google Go, Google Buzz, Google Wave,  &amp;#8230;). Google Web Toolkit a &amp;#233;t&amp;#233; adopt&amp;#233; &amp;#224; partir du premier jour o&amp;#249; la communaut&amp;#233; l&amp;#8217;a d&amp;#233;couvert, que soit au sein de Google ou &amp;#224; l&amp;#8217;ext&amp;#233;rieur. 

Malgr&amp;#233; tous ces gages, nous ne devons occulter la possibilit&amp;#233; qu&amp;#8217;un jour Google fasse machine arri&amp;#232;re. Dans ce cas, &amp;#233;tudions les sc&amp;#233;narios qui pourraient d&amp;#233;couler d&amp;#8217;un changement de strat&amp;#233;gie :

-	Sc&amp;#233;nario du pire : Google arr&amp;#234;te les d&amp;#233;veloppements GWT : Dans ce cas, la firme se met une balle dans le pied car la communaut&amp;#233; GWT se d&amp;#233;sint&amp;#233;ressera instantan&amp;#233;ment de son &amp;#233;cosyst&amp;#232;me (Google Apps, GAE, Google Maps, &amp;#8230;). Il devra non seulement r&amp;#233;&amp;#233;crire des pans entiers de son syst&amp;#232;me d&amp;#8217;information (AdWords, Google Reader, &amp;#8230;) mais surtout prendre le risque de d&amp;#233;cevoir une large communaut&amp;#233; Java qui lui est tr&amp;#232;s favorable. Malgr&amp;#233; ce sc&amp;#233;nario du pire, nous pourrions assez facilement imaginer un convertisseur Java vers Dart car les deux langages sont finalement tr&amp;#232;s proches (en effet, le p&amp;#233;rim&amp;#232;tre des API Java utilis&amp;#233;es c&amp;#244;t&amp;#233; client par GWT est assez r&amp;#233;duit). 

-	Sc&amp;#233;nario du meilleur : GWT &amp;#233;volue au m&amp;#234;me rythme qu&amp;#8217;aujourd&amp;#8217;hui, Dart s&amp;#8217;arr&amp;#234;te dans quelques mois faute d&amp;#8217;un support plus large des d&amp;#233;veloppeurs et v&amp;#233;g&amp;#232;te avant d&amp;#8217;&amp;#234;tre offert &amp;#224; Apache (qui devient de plus en plus le sombre placard de tous les projets Open Source &amp;#233;gar&amp;#233;s).

-	Sc&amp;#233;nario le plus r&amp;#233;aliste : GWT devient le standard de facto dans la communaut&amp;#233; Java pour les d&amp;#233;veloppements Web applicatifs et Dart, tout comme Google Closure (et d&amp;#8217;autres !), devient un projet essentiellement utilis&amp;#233; en interne. 

N&amp;#8217;oublions pas une chose fondamentale, le c&amp;#339;ur de GWT est son compilateur. Le langage n&amp;#8217;est finalement pas si structurant que cela, il est d&amp;#233;j&amp;#224; possible de coder du GWT en Scala. On peut tr&amp;#232;s bien imaginer faire communiquer du Dart et GWT fa&amp;#231;on Java c&amp;#244;t&amp;#233; client. 

La marge de progression de GWT est encore &amp;#233;norme. L&amp;#8217;av&amp;#232;nement des sp&amp;#233;cifications HTML 5 va dynamiser son adoption. Dans le m&amp;#234;me temps, les navigateurs seront de plus en plus performants vis-&amp;#224;-vis de JavaScript. 
GWT est donc loin, tr&amp;#232;s loin d&amp;#8217;&amp;#234;tre mort. Son principal contributeur et utilisateur, Google, n&amp;#8217;a aucun int&amp;#233;r&amp;#234;t &amp;#224; le faire. Officiellement, le discours de Google est sans &amp;#233;quivoque, GWT et Dart sont des technologies compl&amp;#233;mentaires et GWT reste un &amp;#233;l&amp;#233;ment cl&amp;#233; dans la strat&amp;#233;gie Cloud de Google.

Tout le reste n&amp;#8217;est finalement que litt&amp;#233;rature&amp;#8230;

&lt;i&gt;Sami Jaber (DNG Consulting)&lt;/i&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;Powered by &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[Depuis quelques jours, la blogosph&#232;re GWT est secou&#233;e par des voix qui s&#8217;&#233;l&#232;vent pour annoncer sa mort prochaine et son remplacement par une autre technologie Google nomm&#233;e <a href="http://www.dartlang.org/">Dart</a>. L&#8217;id&#233;e de ce billet est de vous apporter un &#233;clairage sur ces d&#233;bats, souvent techniques et pas toujours tr&#232;s factuels. 

GWT est une technologie innovante cr&#233;&#233;e il y a de cela 6 ans par Google et permettant de cr&#233;er une application Web enti&#232;rement en Java tout en faisant abstraction de la complexit&#233; inh&#233;rente &#224; JavaScript et HTML. C&#244;t&#233; client, on code en Java avec des composants graphiques de haut niveau (Bouton, Menus, Grilles,  etc&#8230;) et c&#244;t&#233; serveur on s&#8217;int&#232;gre avec n&#8217;importe quel serveur d&#8217;application (Java ou non d&#8217;ailleurs). Principal avantage de GWT : il est possible de partager et donc r&#233;utiliser les m&#234;mes types (Java) entre client et serveur.  Autre b&#233;n&#233;fice de taille, GWT tire partie de tous les avantages des IDE Java modernes (compl&#233;tion des m&#233;thodes, Debug via des points d&#8217;arr&#234;t, Refactoring, Testabilit&#233;). 

Apr&#232;s plusieurs ann&#233;es de d&#233;veloppement autour de GWT, Google  a d&#233;cid&#233; il y a quelques mois de cr&#233;er un nouveau langage de d&#233;veloppement Web nomm&#233; Dart. Ce langage &#224; la syntaxe tr&#232;s s&#233;duisante a &#233;t&#233; con&#231;u pour &#234;tre performant (proc&#233;d&#233; de snapshotting) tout en apportant des r&#233;ponses aux quelques lacunes de Java (closure, &#8230;.). D&#8217;un point de vue structurel, Dart s&#8217;appuie sur un paradigme orient&#233; objet et propose un mode &#171; compilable &#187; (g&#233;n&#232;re du JavaScript) et interpr&#233;table (ex&#233;cut&#233; directement dans le navigateur via une machine virtuelle). 

Le contexte &#233;tant pos&#233;, o&#249; se situe le n&#339;ud du probl&#232;me ? Pour cr&#233;er Dart, Google a eu la bonne (ou mauvaise pour certains) id&#233;e de r&#233;utiliser certains talents de l&#8217;&#233;quipe GWT. Un turn-over s&#8217;est op&#233;r&#233; qui s&#8217;est traduit par l&#8217;arriv&#233;e de nouveaux d&#233;veloppeurs GWT, le changement du leader et le d&#233;part de contributeurs historiques, mais non moins charismatiques. Il n&#8217;en fallait pas plus &#224; certains pour &#233;tablir un lien de cause &#224; effet entre Dart et GWT. Dart a &#233;t&#233; cr&#233;&#233; pour remplacer GWT.

Soyons clairs, Dart est un nouveau langage, cela signifie en pratique qu&#8217;il faudra r&#233;&#233;crire un IDE adapt&#233; (c&#8217;est en cours), mettre en place de nouveaux outils de d&#233;veloppement et surtout convertir ou int&#233;grer les innombrables framework qui constituent aujourd&#8217;hui la norme JEE (entre autre). Un travail non seulement titanesque mais assez rocambolesque quand on connait la taille et la diversit&#233; de l&#8217;&#233;cosyst&#232;me Java. 

Google, &#224; de nombreuses reprises, par la voix de Ray Cromwell (autre contributeur historique) a r&#233;affirm&#233; sa volont&#233; de poursuivre son investissement dans GWT. L&#8217;&#233;quipe n&#8217;a pas &#233;t&#233; r&#233;duite, l&#8217;activit&#233; non plus. En interne, les produits les plus strat&#233;giques de Google sont &#233;crits en GWT et la Roadmap de la 2.5 est des plus all&#233;chantes avec de nombreux travaux autour du compilateur (et l&#8217;int&#233;gration de Closure).  GWT a prouv&#233; sa maturit&#233;, ses performances (nous l&#8217;utilisons au quotidien chez DNG et nos clients en sont pleinement satisfaits) et surtout sa productivit&#233; hors pair. 

Dart est un projet encore embryonnaire venant s&#8217;ajouter aux innombrables projets R &amp; D de la firme. On peut l&#8217;affirmer aujourd&#8217;hui sans trop de risques, Dart, pas plus qu&#8217;ActionScript d&#8217;Adobe, Silverlight de Microsoft ou JavaFX d&#8217;Oracle, ne pourra s&#8217;imposer sur tous les navigateurs. Pour faire tourner Dart, il faudra, soit une VM, donc  un plug-in, chose difficilement concevable aujourd&#8217;hui, soit une cross-compilation vers JavaScript (c&#8217;est le cas aujourd&#8217;hui) et le choix du langage devient alors le seul crit&#232;re d&#233;terminant (difficile pour faire changer la face du monde). Choisir entre Java et Dart, c&#8217;est un peu comme choisir entre Java et Ruby ou Java et Scala. On ne cesse de pr&#233;dire la mort de Java depuis 10 ans, ce langage n&#8217;a jamais &#233;t&#233; aussi fort et populaire qu&#8217;aujourd&#8217;hui, m&#234;me sans les closures et les qualit&#233;s de scripting. 

Google nous a d&#233;j&#224; habitu&#233;s par le pass&#233; &#224; faire marche arri&#232;re sur un grand nombre de projets (Google Go, Google Buzz, Google Wave,  &#8230;). Google Web Toolkit a &#233;t&#233; adopt&#233; &#224; partir du premier jour o&#249; la communaut&#233; l&#8217;a d&#233;couvert, que soit au sein de Google ou &#224; l&#8217;ext&#233;rieur. 

Malgr&#233; tous ces gages, nous ne devons occulter la possibilit&#233; qu&#8217;un jour Google fasse machine arri&#232;re. Dans ce cas, &#233;tudions les sc&#233;narios qui pourraient d&#233;couler d&#8217;un changement de strat&#233;gie :

-	Sc&#233;nario du pire : Google arr&#234;te les d&#233;veloppements GWT : Dans ce cas, la firme se met une balle dans le pied car la communaut&#233; GWT se d&#233;sint&#233;ressera instantan&#233;ment de son &#233;cosyst&#232;me (Google Apps, GAE, Google Maps, &#8230;). Il devra non seulement r&#233;&#233;crire des pans entiers de son syst&#232;me d&#8217;information (AdWords, Google Reader, &#8230;) mais surtout prendre le risque de d&#233;cevoir une large communaut&#233; Java qui lui est tr&#232;s favorable. Malgr&#233; ce sc&#233;nario du pire, nous pourrions assez facilement imaginer un convertisseur Java vers Dart car les deux langages sont finalement tr&#232;s proches (en effet, le p&#233;rim&#232;tre des API Java utilis&#233;es c&#244;t&#233; client par GWT est assez r&#233;duit). 

-	Sc&#233;nario du meilleur : GWT &#233;volue au m&#234;me rythme qu&#8217;aujourd&#8217;hui, Dart s&#8217;arr&#234;te dans quelques mois faute d&#8217;un support plus large des d&#233;veloppeurs et v&#233;g&#232;te avant d&#8217;&#234;tre offert &#224; Apache (qui devient de plus en plus le sombre placard de tous les projets Open Source &#233;gar&#233;s).

-	Sc&#233;nario le plus r&#233;aliste : GWT devient le standard de facto dans la communaut&#233; Java pour les d&#233;veloppements Web applicatifs et Dart, tout comme Google Closure (et d&#8217;autres !), devient un projet essentiellement utilis&#233; en interne. 

N&#8217;oublions pas une chose fondamentale, le c&#339;ur de GWT est son compilateur. Le langage n&#8217;est finalement pas si structurant que cela, il est d&#233;j&#224; possible de coder du GWT en Scala. On peut tr&#232;s bien imaginer faire communiquer du Dart et GWT fa&#231;on Java c&#244;t&#233; client. 

La marge de progression de GWT est encore &#233;norme. L&#8217;av&#232;nement des sp&#233;cifications HTML 5 va dynamiser son adoption. Dans le m&#234;me temps, les navigateurs seront de plus en plus performants vis-&#224;-vis de JavaScript. 
GWT est donc loin, tr&#232;s loin d&#8217;&#234;tre mort. Son principal contributeur et utilisateur, Google, n&#8217;a aucun int&#233;r&#234;t &#224; le faire. Officiellement, le discours de Google est sans &#233;quivoque, GWT et Dart sont des technologies compl&#233;mentaires et GWT reste un &#233;l&#233;ment cl&#233; dans la strat&#233;gie Cloud de Google.

Tout le reste n&#8217;est finalement que litt&#233;rature&#8230;

<i>Sami Jaber (DNG Consulting)</i><div class="item_footer"><p><small>Powered by <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dng-consulting.com/blogs/index.php/2011/12/09/gwt-une-technologie-construite-pour-dure?blog=1#comments</comments>
		</item>
				<item>
			<title>La r&#233;volution HTML 5 chez Microsoft va laisser des traces</title>
			<link>http://www.dng-consulting.com/blogs/index.php/2011/06/16/la-raeacute-volution-html-5-chez-microso?blog=1</link>
			<pubDate>Wed, 15 Jun 2011 22:33:43 +0000</pubDate>			<dc:creator>sami</dc:creator>
			<category domain="main">DotNet</category>
<category domain="alt">WPF</category>
<category domain="alt">Silverlight</category>
<category domain="alt">GWT</category>			<guid isPermaLink="false">213@http://www.dng-consulting.com/blogs/</guid>
						<description>&lt;p&gt;Il ne se passe pas un jour sans qu'on ne parle d'un fait li&amp;#233; &amp;#224; HTML 5, que ce soit pour encenser ces vertus multiplateformes, enterrer ses principaux concurrents ou annoncer une n-ni&amp;#232;me sp&amp;#233;cification. Le dernier en date et non des moindres est la pr&amp;#233;sentation officielle de Windows 8 par Microsoft. Difficile de rester insensible &amp;#224; ce mouvement de fond, que dis-je ce tsunami technologique qui secoue en ce moment la firme de Redmond. Quelle histoire rocambolesque que celle de la strat&amp;#233;gie RIA d'un &amp;#233;diteur qui ne sait clairement plus vers quel saint se vouer. Pour bien comprendre l'ampleur du d&amp;#233;sastre, faisons un petit retour en arri&amp;#232;re. &lt;/p&gt;  &lt;p&gt;Nous sommes en 2004, le monde du RIA est domin&amp;#233; par les technologies dites &amp;#171; Smart Client &amp;#187;. C'est la mode du vectoriel, de Flash entre autre, insaisissable. Dans le m&amp;#234;me temps &amp;#233;merge une approche concurrente plus tourn&amp;#233;e vers JavaScript et HTML, c'est le r&amp;#232;gne d'AJAX. Microsoft cette ann&amp;#233;e l&amp;#224;, doit faire un choix, soit redonner de l'air frais &amp;#224; sa technologie client lourd maison (Windows Forms) soit jouer sur le m&amp;#234;me registre que son ennemi jur&amp;#233; Google en pariant sur HTML. &lt;/p&gt;  &lt;p&gt;2005, le choix est ent&amp;#233;rin&amp;#233;, ce sera du Smart Client Vectoriel fa&amp;#231;on plugin. Et pour cause, &amp;#224; la m&amp;#234;me &amp;#233;poque, IE est l&amp;#233;gion et ses performances sont d&amp;#233;sastreuses, notamment JavaScript. Les fondations de WPF sont pos&amp;#233;es fin 2005 puis compl&amp;#233;t&amp;#233;es quelques mois plus tard par la petite soeur &amp;#171; Web compatible &amp;#187; : Silverlight. La premi&amp;#232;re version de Silverlight 1.0 est un loup&amp;#233; d'un point de vue technologique, les suivantes seront bien plus coh&amp;#233;rentes dans leur int&amp;#233;gration du Framework .NET. A cette &amp;#233;poque, bien peu d'entre nous auraient pari&amp;#233; sur l'&amp;#233;closion du standard HTML. Pour l'immense majorit&amp;#233; des d&amp;#233;veloppeurs, le futur se jouait entre Microsoft et Adobe, Sun ayant largement perdu sa place avec JavaFx. &lt;/p&gt;  &lt;p&gt;Tout naturellement donc, Microsoft a investi massivement pendant plus de cinq ans dans WPF et Siverlight, au point de refondre l'interface graphique de Visual Studio ou de r&amp;#233;&amp;#233;crire de nombreux produits de son portefeuille (l'&amp;#233;tau s'&amp;#233;tant m&amp;#234;me resserr&amp;#233; &amp;#224; un moment sur la gamme Office)&lt;/p&gt;  &lt;p&gt;C'&amp;#233;tait sans compter le mouvement de fond qui se tramait en coulisse. Dans les ann&amp;#233;es qui suivirent Apple sortait iOS sur iPhone puis l'iPad. Google planchait sur ChromeOS et Android. Difficile d'imaginer &amp;#224; cet instant que Apple et Google encenseraient HTML 5 jusqu'&amp;#224; menacer les smart clients. Quatre ann&amp;#233;es plus tard, Microsoft a renforc&amp;#233; ses &amp;#233;quipes WPF et Silverlight au point de d&amp;#233;laisser totalement sa strat&amp;#233;gie mobile et d'en oublier son navigateur f&amp;#233;tiche. &lt;/p&gt;  &lt;p&gt;Nous sommes en Juin 2011, l'annonce de Windows 8 et de sa nouvelle interface graphique &amp;#224; base de HTML 5 est un coup de tonnerre. Invraisemblable, ubuesque. Microsoft se voit brusquement remobiliser des &amp;#233;quipes ayant pris fait et cause pour une technologie clairement affich&amp;#233;e comme l'anti-HTML. Lorsqu'il sont en concurrence, HTML 5 et JavaScript doivent &amp;#234;tre pr&amp;#233;f&amp;#233;r&amp;#233;s &amp;#224; WPF et Silverlight dans Windows 8. &lt;/p&gt;  &lt;p&gt;Une pilule d'autant plus difficile &amp;#224; passer lorsqu'on sait qu'aujourd'hui HTML 5 n'est pas outill&amp;#233; ! On l'oublie trop souvent, HTML 5 est encore un brouillon, HTML 5 ne sortira (peut-&amp;#234;tre) r&amp;#233;ellement qu'&amp;#224; la fin 2014 pour esp&amp;#233;rer un support uniforme aux alentours de 2015. Il existe encore une myriade de sp&amp;#233;cifications en cours d'&amp;#233;laboration et de zones non couvertes par l'actuel standard. Que ce soit CSS 3, le support des outils m&amp;#233;dia (WebCam, Micro, Scanner, etc .) ou la gestion du placement (&lt;a href=&quot;http://www.w3.org/TR/2009/WD-css3-flexbox-20090723/&quot;&gt;CSS Flexbox&lt;/a&gt;, etc.). &lt;/p&gt;  &lt;p&gt;Imaginez un instant les &amp;#233;quipes WPF habitu&amp;#233;es pendant de longues ann&amp;#233;es aux vertus de l'int&amp;#233;gration Visual Studio, aux d&amp;#233;lices du databinding via Drag &amp;amp; Drop, aux miracles de la programmation parall&amp;#232;le via les threads, ouvrir un pauvre &amp;#233;diteur texte et commencer &amp;#224; coder en JavaScript la couche IHM de Windows 8. Les d&amp;#233;g&amp;#226;ts seront consid&amp;#233;rables. &lt;/p&gt;  &lt;p&gt;Attention, bien loin de moi l'id&amp;#233;e de dire ici que HTML 5 n'est pas une technologie utilisable aujourd'hui. Bien au contraire. Mais gardez &amp;#224; l'esprit que coder en HTML 5 se r&amp;#233;sume essentiellement &amp;#224; coder en JavaScript. Je ne peux imaginer un instant &amp;#233;crire un logiciel contenant des centaines de milliers de lignes de code dans ce langage &amp;#244; combien puissant et dynamique, mais &amp;#244; combien inmaintenable et ind&amp;#233;boggable. Depuis 2006, nous utilisons GWT justement pour pallier aux innombrables lacunes inh&amp;#233;rentes &amp;#224; JavaScript et HTML. Les diff&amp;#233;rences de support entre navigateurs, la taille croissante des scripts et des ressources, les fuites m&amp;#233;moire, les performances, . Au fur et &amp;#224; mesure que les sp&amp;#233;cifications HTML 5 arrivent &amp;#224; maturit&amp;#233;, Google les int&amp;#232;gre dans GWT et les d&amp;#233;veloppeurs en b&amp;#233;n&amp;#233;ficient en toute simplicit&amp;#233;. JavaScript est devenu au fil du temps d'une certaine mani&amp;#232;re notre assembleur. Imaginer que Microsoft va d&amp;#233;couvrir les joies du d&amp;#233;veloppement . en Assembleur apr&amp;#232;s avoir connu la Rolls Royce VS/WPF est tout bonnement &amp;#233;difiant. &lt;/p&gt;  &lt;p&gt;Dans ce contexte abracadanbresque, Il ne reste plus &amp;#224; esp&amp;#233;rer une chose, que Script#, Volta et toutes ces technologies qui se sont &amp;#224; un moment donn&amp;#233; frott&amp;#233;es &amp;#224; GWT soient remises au go&amp;#251;t du jour, et ce, m&amp;#234;me si c'est avec 5 ans de retard sur Google. Il n'est jamais trop tard pour bien faire.&lt;/p&gt;  &lt;p&gt;Articles &amp;#224; lire absolument (via &lt;a href=&quot;http://twitter.com/#!/pierretran&quot;&gt;twitter de Pierre&lt;/a&gt;) :&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://arstechnica.com/microsoft/news/2011/06/html5-centric-windows-8-leaves-microsoft-developers-horrified.ars/&quot;&gt;La pari fou de Microsoft (Peter Bright)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/b/eternalcoding/archive/2011/06/06/fr-html-5-vs-silverlight-5.aspx&quot;&gt;HTML 5 vs Silverlight (David Catuhe)&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;Powered by &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Il ne se passe pas un jour sans qu'on ne parle d'un fait li&#233; &#224; HTML 5, que ce soit pour encenser ces vertus multiplateformes, enterrer ses principaux concurrents ou annoncer une n-ni&#232;me sp&#233;cification. Le dernier en date et non des moindres est la pr&#233;sentation officielle de Windows 8 par Microsoft. Difficile de rester insensible &#224; ce mouvement de fond, que dis-je ce tsunami technologique qui secoue en ce moment la firme de Redmond. Quelle histoire rocambolesque que celle de la strat&#233;gie RIA d'un &#233;diteur qui ne sait clairement plus vers quel saint se vouer. Pour bien comprendre l'ampleur du d&#233;sastre, faisons un petit retour en arri&#232;re. </p>  <p>Nous sommes en 2004, le monde du RIA est domin&#233; par les technologies dites &#171; Smart Client &#187;. C'est la mode du vectoriel, de Flash entre autre, insaisissable. Dans le m&#234;me temps &#233;merge une approche concurrente plus tourn&#233;e vers JavaScript et HTML, c'est le r&#232;gne d'AJAX. Microsoft cette ann&#233;e l&#224;, doit faire un choix, soit redonner de l'air frais &#224; sa technologie client lourd maison (Windows Forms) soit jouer sur le m&#234;me registre que son ennemi jur&#233; Google en pariant sur HTML. </p>  <p>2005, le choix est ent&#233;rin&#233;, ce sera du Smart Client Vectoriel fa&#231;on plugin. Et pour cause, &#224; la m&#234;me &#233;poque, IE est l&#233;gion et ses performances sont d&#233;sastreuses, notamment JavaScript. Les fondations de WPF sont pos&#233;es fin 2005 puis compl&#233;t&#233;es quelques mois plus tard par la petite soeur &#171; Web compatible &#187; : Silverlight. La premi&#232;re version de Silverlight 1.0 est un loup&#233; d'un point de vue technologique, les suivantes seront bien plus coh&#233;rentes dans leur int&#233;gration du Framework .NET. A cette &#233;poque, bien peu d'entre nous auraient pari&#233; sur l'&#233;closion du standard HTML. Pour l'immense majorit&#233; des d&#233;veloppeurs, le futur se jouait entre Microsoft et Adobe, Sun ayant largement perdu sa place avec JavaFx. </p>  <p>Tout naturellement donc, Microsoft a investi massivement pendant plus de cinq ans dans WPF et Siverlight, au point de refondre l'interface graphique de Visual Studio ou de r&#233;&#233;crire de nombreux produits de son portefeuille (l'&#233;tau s'&#233;tant m&#234;me resserr&#233; &#224; un moment sur la gamme Office)</p>  <p>C'&#233;tait sans compter le mouvement de fond qui se tramait en coulisse. Dans les ann&#233;es qui suivirent Apple sortait iOS sur iPhone puis l'iPad. Google planchait sur ChromeOS et Android. Difficile d'imaginer &#224; cet instant que Apple et Google encenseraient HTML 5 jusqu'&#224; menacer les smart clients. Quatre ann&#233;es plus tard, Microsoft a renforc&#233; ses &#233;quipes WPF et Silverlight au point de d&#233;laisser totalement sa strat&#233;gie mobile et d'en oublier son navigateur f&#233;tiche. </p>  <p>Nous sommes en Juin 2011, l'annonce de Windows 8 et de sa nouvelle interface graphique &#224; base de HTML 5 est un coup de tonnerre. Invraisemblable, ubuesque. Microsoft se voit brusquement remobiliser des &#233;quipes ayant pris fait et cause pour une technologie clairement affich&#233;e comme l'anti-HTML. Lorsqu'il sont en concurrence, HTML 5 et JavaScript doivent &#234;tre pr&#233;f&#233;r&#233;s &#224; WPF et Silverlight dans Windows 8. </p>  <p>Une pilule d'autant plus difficile &#224; passer lorsqu'on sait qu'aujourd'hui HTML 5 n'est pas outill&#233; ! On l'oublie trop souvent, HTML 5 est encore un brouillon, HTML 5 ne sortira (peut-&#234;tre) r&#233;ellement qu'&#224; la fin 2014 pour esp&#233;rer un support uniforme aux alentours de 2015. Il existe encore une myriade de sp&#233;cifications en cours d'&#233;laboration et de zones non couvertes par l'actuel standard. Que ce soit CSS 3, le support des outils m&#233;dia (WebCam, Micro, Scanner, etc .) ou la gestion du placement (<a href="http://www.w3.org/TR/2009/WD-css3-flexbox-20090723/">CSS Flexbox</a>, etc.). </p>  <p>Imaginez un instant les &#233;quipes WPF habitu&#233;es pendant de longues ann&#233;es aux vertus de l'int&#233;gration Visual Studio, aux d&#233;lices du databinding via Drag &amp; Drop, aux miracles de la programmation parall&#232;le via les threads, ouvrir un pauvre &#233;diteur texte et commencer &#224; coder en JavaScript la couche IHM de Windows 8. Les d&#233;g&#226;ts seront consid&#233;rables. </p>  <p>Attention, bien loin de moi l'id&#233;e de dire ici que HTML 5 n'est pas une technologie utilisable aujourd'hui. Bien au contraire. Mais gardez &#224; l'esprit que coder en HTML 5 se r&#233;sume essentiellement &#224; coder en JavaScript. Je ne peux imaginer un instant &#233;crire un logiciel contenant des centaines de milliers de lignes de code dans ce langage &#244; combien puissant et dynamique, mais &#244; combien inmaintenable et ind&#233;boggable. Depuis 2006, nous utilisons GWT justement pour pallier aux innombrables lacunes inh&#233;rentes &#224; JavaScript et HTML. Les diff&#233;rences de support entre navigateurs, la taille croissante des scripts et des ressources, les fuites m&#233;moire, les performances, . Au fur et &#224; mesure que les sp&#233;cifications HTML 5 arrivent &#224; maturit&#233;, Google les int&#232;gre dans GWT et les d&#233;veloppeurs en b&#233;n&#233;ficient en toute simplicit&#233;. JavaScript est devenu au fil du temps d'une certaine mani&#232;re notre assembleur. Imaginer que Microsoft va d&#233;couvrir les joies du d&#233;veloppement . en Assembleur apr&#232;s avoir connu la Rolls Royce VS/WPF est tout bonnement &#233;difiant. </p>  <p>Dans ce contexte abracadanbresque, Il ne reste plus &#224; esp&#233;rer une chose, que Script#, Volta et toutes ces technologies qui se sont &#224; un moment donn&#233; frott&#233;es &#224; GWT soient remises au go&#251;t du jour, et ce, m&#234;me si c'est avec 5 ans de retard sur Google. Il n'est jamais trop tard pour bien faire.</p>  <p>Articles &#224; lire absolument (via <a href="http://twitter.com/#!/pierretran">twitter de Pierre</a>) :</p>  <p><a href="http://arstechnica.com/microsoft/news/2011/06/html5-centric-windows-8-leaves-microsoft-developers-horrified.ars/">La pari fou de Microsoft (Peter Bright)</a></p>  <p><a href="http://blogs.msdn.com/b/eternalcoding/archive/2011/06/06/fr-html-5-vs-silverlight-5.aspx">HTML 5 vs Silverlight (David Catuhe)</a></p><div class="item_footer"><p><small>Powered by <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.dng-consulting.com/blogs/index.php/2011/06/16/la-raeacute-volution-html-5-chez-microso?blog=1#comments</comments>
		</item>
			</channel>
</rss>

