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

<channel>
	<title>OCTO talks ! &#187; HTML5</title>
	<atom:link href="http://blog.octo.com/tag/html5/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.octo.com</link>
	<description>Le blog d&#039;OCTO Technology, cabinet d&#039;architectes en systèmes d&#039;information</description>
	<lastBuildDate>Fri, 03 Feb 2012 13:46:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Tous les navigateurs acceptent HTML5 et CSS3</title>
		<link>http://blog.octo.com/tous-les-navigateurs-acceptent-html5-et-css3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tous-les-navigateurs-acceptent-html5-et-css3</link>
		<comments>http://blog.octo.com/tous-les-navigateurs-acceptent-html5-et-css3/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 15:36:55 +0000</pubDate>
		<dc:creator>Mickaël Morier</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=29488</guid>
		<description><![CDATA[Tous les navigateurs acceptent HTML5 et CSS3 mais tous ne comprennent pas leurs nouvelles fonctionnalités. L&#8217;usage de nouveaux attributs HTML5 ou de nouvelles propriétés CSS3 ne bloquera pas votre navigateur, ce dernier les ignora tout simplement. Un avantage indéniable qui nous permet d&#8217;utiliser dès aujourd&#8217;hui HTML5 et CSS3 même si certains de nos utilisateurs ne [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/osez-renoncer-aux-vieux-navigateurs/' rel='bookmark' title='Osez renoncer aux vieux navigateurs'>Osez renoncer aux vieux navigateurs</a></li>
<li><a href='http://blog.octo.com/octo-a-paris-web-2010-pour-un-atelier-html5/' rel='bookmark' title='OCTO à Paris Web 2010 pour un atelier HTML5'>OCTO à Paris Web 2010 pour un atelier HTML5</a></li>
<li><a href='http://blog.octo.com/html5-offline-et-securite/' rel='bookmark' title='HTML5, offline et sécurité'>HTML5, offline et sécurité</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Ftous-les-navigateurs-acceptent-html5-et-css3%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Tous%20les%20navigateurs%20acceptent%20HTML5%20et%20CSS3%22%20%7D);"></div>
<p>Tous les navigateurs acceptent HTML5 et CSS3 mais tous ne comprennent pas leurs nouvelles fonctionnalités. L&#8217;usage de nouveaux attributs HTML5 ou de nouvelles propriétés CSS3 ne bloquera pas votre navigateur, ce dernier les ignora tout simplement. Un avantage indéniable qui nous permet d&#8217;utiliser dès aujourd&#8217;hui HTML5 et CSS3 même si certains de nos utilisateurs ne disposent pas encore de navigateurs les supportant. Comme je le précisais dans l&#8217;article <a title="Osez renconcer aux vieux navigateurs" href="http://blog.octo.com/osez-renoncer-aux-vieux-navigateurs/">Osez renoncer aux vieux navigateurs</a>, il ne faut pas avoir peur d&#8217;utiliser des fonctionnalités HTML5 et CSS3 car des comportements dégradés natifs existent. Quels sont les comportements dégradés natifs acceptables ? Comment profiter d&#8217;une fonctionnalité HTML5 ou CSS3 si son comportement dégradé n&#8217;est pas acceptable ? Comment pallier l&#8217;absence de support des nouvelles API JavaScript si le navigateur ne les possède pas ?</p>
<p><span id="more-29488"></span></p>
<h2>Les comportements dégradés natifs</h2>
<p>Des comportements dégradés existent nativement pour la majorité des nouveautés HTML5 et CSS3 lorsque celles-ci ne sont pas supportées par le navigateur. Prenons deux exemples pour illustrer comment les vieux navigateurs se comportent.</p>
<h3>HTML5</h3>
<p>Certaines fonctionnalités HTML5 sont des évolutions de fonctionnalités existantes, c&#8217;est notamment le cas pour les formulaires. Prenons l&#8217;exemple des nouveaux types de champs de saisie qui permettent de spécifier un champ de saisie en tant que champ de saisie e-mail, téléphone, date, etc. Cette spécification permet d&#8217;avoir un clavier spécifique sur les mobiles et une validation adéquate coté navigateur. Ci-dessous un exemple d&#8217;un champ de saisie de type email sur Firefox pour Android 4.</p>
<p style="text-align: center; margin-bottom:1em"><img class="wp-image-29545  aligncenter" title="Validation coté client et clavier adapté à un champ de type email sur Firefox Android" src="http://blog.octo.com/wp-content/uploads/2012/01/input-email-firefox-android.png" alt="Validation coté client et clavier adapté sur Firefox Android" width="269" height="251" /></p>
<p>Code original :</p>

<div class="wp_codebox"><table><tr id="p2948810"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p29488code10"><pre class="html" style="font-family:monospace;">&lt;input type=&quot;email&quot;&gt;</pre></td></tr></table></div>

<p>Code compris par un navigateur ne supportant pas les formulaires HTML5 :</p>

<div class="wp_codebox"><table><tr id="p2948811"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p29488code11"><pre class="html" style="font-family:monospace;">&lt;input type=&quot;text&quot;&gt;</pre></td></tr></table></div>

<p>Si le navigateur ne comprends pas le type (email dans notre cas), le type par défaut utilisé sera text. Votre formulaire sera donc totalement fonctionnel sur un ancien navigateur, votre utilisateur ne bénéficiera pas d&#8217;un clavier spécifique ni de la validation coté client mais il pourra soumettre le formulaire. Tout le monde peut utiliser votre formulaire et vos utilisateurs qui utilisent un navigateur récent bénéficieront de fonctionnalités intéressantes sans la moindre charge de développement.</p>
<h3>CSS3</h3>
<p>On bénéficie également de ces comportements natifs sur les CSS3.</p>
<p style="padding: 5px; background: #ddd;margin-bottom:1em; border-radius: 5px; border: 2px solid #777;">Si vous voyez les coins arrondis, vous êtes un utilisateur génial qui utilise un navigateur récent. Sinon mettez à jour votre navigateur.</p>
<p>Style original :</p>

<div class="wp_codebox"><table><tr id="p2948812"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p29488code12"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.boite-arrondie</span> <span style="color: #00AA00;">&#123;</span>
  border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ddd</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#777</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Style utilisé par un navigateur ne supportant pas la propriété CSS3 border-radius :</p>

<div class="wp_codebox"><table><tr id="p2948813"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p29488code13"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.boite-arrondie</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ddd</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">2px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#777</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Si une propriété n&#8217;est pas comprise, elle est tout simplement ignorée par le navigateur et les coins sont rectangulaires. Sans les CSS3, il nous faudrait 1 à 6 images afin de reproduire ce rendu, ce qui en terme de performance n&#8217;est pas anodin ni en terme de complexité de code ajouté. Est-ce inacceptable de se priver des coins arrondis sur les anciens navigateurs ? Est-ce pertinent de passer du temps et augmenter la complexité du code ? Il est important de se poser ces questions pour les nouvelles fonctionnalités CSS3 qui vous intéressent.</p>
<p>Ce comportement est notamment très utilisé par les navigateurs qui préfixent les propriétés lorsque l&#8217;implémentation n&#8217;est pas finale. L&#8217;utilisation des préfixes sur certaines propriétés n&#8217;est pas utile lorsque les navigateurs supportent la propriété sans préfixe depuis plusieurs versions. Des sites comme <a href="http://www.caniuse.com">Can I Use</a> et <a href="http://www.css3generator.com">CSS3 Generator</a> vous permettront de voir si les préfixes sont indispensables. Ils sont inutiles pour <a href="http://www.caniuse.com/#feat=border-radius">border-radius</a> mais impératifs pour les <a href="http://www.caniuse.com/#feat=css-gradients">gradients</a> :</p>

<div class="wp_codebox"><table><tr id="p2948814"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p29488code14"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.fond-degrade</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> -moz-linear-gradient<span style="color: #00AA00;">&#40;</span><span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#1e5799</span> <span style="color: #933;">0%</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#7db9e8</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> -webkit-linear-gradient<span style="color: #00AA00;">&#40;</span><span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#1e5799</span> <span style="color: #933;">0%</span><span style="color: #00AA00;">,</span><span style="color: #cc00cc;">#7db9e8</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> -o-linear-gradient<span style="color: #00AA00;">&#40;</span><span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#1e5799</span> <span style="color: #933;">0%</span><span style="color: #00AA00;">,</span><span style="color: #cc00cc;">#7db9e8</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> -ms-linear-gradient<span style="color: #00AA00;">&#40;</span><span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#1e5799</span> <span style="color: #933;">0%</span><span style="color: #00AA00;">,</span><span style="color: #cc00cc;">#7db9e8</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> linear-gradient<span style="color: #00AA00;">&#40;</span><span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#1e5799</span> <span style="color: #933;">0%</span><span style="color: #00AA00;">,</span><span style="color: #cc00cc;">#7db9e8</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h2>Et si ce comportement dégradé n&#8217;est pas acceptable ?</h2>
<p>Il peut arriver que le comportement dégradé ne soit pas acceptable et qu&#8217;il faille envisager une autre solution. Une approche pourrait être de s&#8217;interdire d&#8217;utiliser une nouvelle fonctionnalité car 30% des navigateurs de vos utilisateurs ne la supportent pas. Une mauvaise approche car on nivelle par le bas et on se prive de fonctionnalités intéressantes pour l&#8217;utilisateur et le développeur. L&#8217;utilisateur profite d&#8217;une meilleure expérience utilisateur. Le développeur simplifie et réduit son code car une partie est implémentée par le navigateur.</p>
<h3>L&#8217;approche <em>Graceful degradation</em></h3>
<p>L&#8217;approche <em>Graceful degradation</em> consiste à profiter des nouvelles fonctionnalités et proposer une solution de contournement lorsqu&#8217;elles ne sont pas disponibles. Pour cela, la librairie JavaScript <a title="Modernizr" href="http://www.modernizr.com" target="_blank">Modernizr</a> expose de nombreuses méthodes permettant de détecter le support d&#8217;une fonctionnalité  HTML5 ou CSS3. On peut ainsi utiliser un <em>Polyfill</em> ou encore, si on décide de ne pas implémenter du tout cette fonctionnalité dans ce cas, alerter l&#8217;utilisateur que la fonctionnalité n’est pas disponible. Un <em>Polyfill</em> est un plugin qui fournit une fonctionnalité que le navigateur devrait posséder nativement. Une longue liste de <em>Polyfill</em> est référencée sur <a title="HTML5 Cross Browser Polyfills" href="https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills" target="_blank">GitHub par Modernizr</a>. Ci-dessous un exemple de champ de saisie textuel avec le nouvel attribut placeholder (texte d&#8217;aide dans le champ de saisie lorsque celui-ci est vide).</p>
<p style="text-align: center;">
<input placeholder="exemple de placeholder" /></p>
<p>Code HTML :</p>

<div class="wp_codebox"><table><tr id="p2948815"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p29488code15"><pre class="html" style="font-family:monospace;">&lt;input type=&quot;text&quot; placeholder=&quot;exemple de placeholder&quot; /&gt;</pre></td></tr></table></div>

<p>Code JavaScript permettant de gérer le non support de l&#8217;attribut placeholder :</p>

<div class="wp_codebox"><table><tr id="p2948816"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p29488code16"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// si le navigateur ne supporte pas placeholder</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>Modernizr.<span style="color: #660066;">input</span>.<span style="color: #660066;">placeholder</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// ajout du comportement avec un plugin jQuery</span>
  $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'input[placeholder]'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">placeholder</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>L&#8217;avantage de cette technique est d&#8217;isoler le code lié à la solution de contournement. Ceci nous permettra de le supprimer sans crainte lorsque vos utilisateurs n&#8217;utiliseront plus de navigateurs ne supportant pas cet attribut.</p>
<h3>L&#8217;utilisation de la cascade pour les CSS</h3>
<p>En CSS3, certaines propriétés ont de nouvelles valeurs possibles. Il est alors possible de définir deux fois une propriété avec deux valeurs différentes. Prenons par exemple une boite avec un fond semi-transparent :</p>
<p style="background-color: #ff0000;background-color: rgba(0,255,0,0.5);margin-bottom: 1em;">Si votre navigateur est récent, le fond de ce paragraphe est vert et transparent. Sinon il est rouge vif.</p>

<div class="wp_codebox"><table><tr id="p2948817"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p29488code17"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.fond-avec-transparence</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ff0000</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> rgba<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">255</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span><span style="color: #cc66cc;">0.5</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Les navigateurs ne supportant pas CSS3 ne comprendront que la première valeur donc le fond sera rouge. Quant aux navigateurs supportant CSS3, ils comprendront les deux valeurs. Ils appliqueront donc la dernière valeur rencontrée pour la propriété ce qui nous donnera un fond vert avec une transparence de 50%.</p>
<h2>Des comportements dégradés pour les nouvelles APIs ?</h2>
<p>HTML5 apporte de nouvelles APIs JavaScript (Web Storage, Geolocation, etc.). Ces APIs sont directement utilisables sans import puisque exposées par le navigateur. Des erreurs JavaScript seront donc levées si vous les utilisez alors que votre navigateur ne les possède pas. Aucun comportement dégradé n&#8217;existe par défaut, c&#8217;est à vous de tester la disponibilité de ces APIs avant de les utiliser. Comme pour les balises HTML5 ou le CSS3, Modernizr permet de tester facilement la disponibilité de ces nouvelles API pour proposer une solution alternative ou non. Un exemple ci-dessous avec l&#8217;API localStorage :</p>

<div class="wp_codebox"><table><tr id="p2948818"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p29488code18"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// si le navigateur supporte le localStorage</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>Modernizr.<span style="color: #660066;">localstorage</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// stockage d'une valeur dans le Web Storage local</span>
  localStorage.<span style="color: #660066;">setItem</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;clé&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;valeur&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h2>Aucune raison de ne plus utiliser HTML5 et CSS3</h2>
<p>Des solutions existent pour pallier l&#8217;absence de support HTML5, parfois simple et fiable, parfois trop complexe ou trop impactant sur les performances du client. C&#8217;est un choix à prendre sur la solution de contournement lorsque vous décidez d&#8217;utiliser HTML5 et CSS3. Le site <a href="http://html5please.us">HTML5 Please</a> pourra vous aider à prendre ces décisions en vous donnant le support des fonctionnalités et en vous conseillant sur leur utilisation. D&#8217;après les statistiques de <a href="http://gs.statcounter.com/#browser_version-FR-monthly-201201-201201-bar" target="_blank">StatCounter du mois de janvier</a>, près de 70% des français utilisent un navigateur récent qui supporte relativement bien HTML5 et CSS3. Profitez des nouvelles fonctionnalités HTML5 et CSS3, des comportements dégradés natifs et ne prévoyez de solution alternative que si c&#8217;est indispensable.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=29488" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/osez-renoncer-aux-vieux-navigateurs/' rel='bookmark' title='Osez renoncer aux vieux navigateurs'>Osez renoncer aux vieux navigateurs</a></li>
<li><a href='http://blog.octo.com/octo-a-paris-web-2010-pour-un-atelier-html5/' rel='bookmark' title='OCTO à Paris Web 2010 pour un atelier HTML5'>OCTO à Paris Web 2010 pour un atelier HTML5</a></li>
<li><a href='http://blog.octo.com/html5-offline-et-securite/' rel='bookmark' title='HTML5, offline et sécurité'>HTML5, offline et sécurité</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/tous-les-navigateurs-acceptent-html5-et-css3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La crise économique, une opportunité à ne pas rater !</title>
		<link>http://blog.octo.com/la-crise-economique-une-opportunite-a-ne-pas-rater/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=la-crise-economique-une-opportunite-a-ne-pas-rater</link>
		<comments>http://blog.octo.com/la-crise-economique-une-opportunite-a-ne-pas-rater/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 09:35:59 +0000</pubDate>
		<dc:creator>Julien Cabot</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[Brèves de consultants]]></category>
		<category><![CDATA[Général -- NE PAS UTILISER CETTE CATEGORIE]]></category>
		<category><![CDATA[bigdata]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[NoSQL]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=28293</guid>
		<description><![CDATA[La crise économique, une opportunité à ne pas rater ! L’actualité financière et les perspectives économiques mettent sous pression les budgets des DSI. Les coups de rabot budgétaires ont le mérite de mettre en évidence les sujets perçus comme les plus importants et urgents. Arbitrer entre maintenir à flot l’activité métier ou la transformer est [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/la-meilleure-facon-de-rater-son-projet-grace-a-maven2/' rel='bookmark' title='La meilleure façon de rater son projet grâce à Maven2'>La meilleure façon de rater son projet grâce à Maven2</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fla-crise-economique-une-opportunite-a-ne-pas-rater%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fuw5a3u%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22La%20crise%20%C3%A9conomique%2C%20une%20opportunit%C3%A9%20%C3%A0%20ne%20pas%20rater%20%21%22%20%7D);"></div>
<p><strong>La crise économique, une opportunité à ne pas rater !</strong><br />
L’actualité financière et les perspectives économiques mettent sous pression les budgets des DSI. Les coups de rabot budgétaires ont le mérite de mettre en évidence les sujets perçus comme les plus importants et urgents.<br />
Arbitrer entre maintenir à flot l’activité métier ou la transformer est un choix difficile pour chaque Direction : « run the business or change the business » ? Les investissements SI sont soumis également à ce dilemme.<br />
Néanmoins, les entreprises qui sauront mettre à profit cette période troublée pour se transformer sauront en bénéficier plus tôt. Alors que celles, qui ne le feront pas, n’auront pas eu le temps de le faire avant la prochaine crise, qui les paralysera à nouveau.<br />
Dans une logique de recentrage des investissements SI, la question est donc de bien identifier les sujets qui permettent d’obtenir une réduction significative des coûts opérationnels et de rentabiliser à court terme la transformation des activités. Il faut bien l’admettre, cet exercice nécessite une bonne dose de créativité et d’innovation.<br />
<span id="more-28293"></span></p>
<p><strong>En période de crise, faut-il ignorer les innovations technologiques ?</strong><br />
La question n’est pas tant la technologie, mais plutôt si les signaux de changement concernent la technologie. L’année 2012 sera-t-elle technologique ? Nous en sommes convaincus en considérant les évolutions suivantes :<br />
• <strong>L’émergence du « big data »</strong>. Le buzzword BigData, qui existe depuis 10 ans, prend une forme réelle aujourd’hui dans les télécommunications, la banque et le commerce en ligne pour exploiter les immenses quantités de données clients (tickets de communication, opérations bancaires, parcours internet, etc.) pour mieux les adresser.<br />
• L’émergence des <strong>nouveaux canaux – Smartphone et Tablette &#8211; de distribution</strong> et de relation client, qui passent du statut d’outils de communication d’entreprise à celui de canal de distribution et de relation client, à l’instar des sites Internet il y a 10 ans. Les investissements sur ces canaux vont devoir se pérenniser et les applications mobiles devront s’inscrire durablement dans les stratégies multicanales des entreprises.<br />
• L’<strong>analyse et la simulation</strong> deviennent une réponse nécessaire pour faire face aux bouleversements des contextes économiques et financiers. Mes marges sont-elles toujours positives en cas d’une augmentation des taux de financement du Besoin en Fonds de Roulement ?<br />
Ces 3 évolutions majeures entrainent avec elles des défis technologiques importants, qui nécessiteront toute l’attention des meilleurs talents de la DSI.<br />
Le management des SI ne pourra plus se résumer à un alignement sur les processus métiers. Il devra reconnecter l’innovation technologique et ses opportunités aux enjeux et aux perspectives business. Et ça, c’est une bonne nouvelle !<br />
La maitrise des usages et des opportunités technologiques appliquées au business deviendra la clef qui permettra de faire la différence en sortie de crise ou avant le commencement d’une nouvelle.</p>
<p><strong>Sur quels sujets technologiques investir ?</strong><br />
Les sujets technologiques sont nombreux. Il convient d’aborder la réflexion sur l’usage métier avant de se lancer dans une veille « à tout-va ». A notre avis, les sujets suivants seront incontournables :<br />
• L’<strong>écosystème NoSQL</strong> qui sert de fondation au Big Data : batch distribué Hadoop, bases de données spécialisées (contenu, graph, clef/valeur, multidimensionnelle, grille), traitement de flux d’évènements (CEP)<br />
• La <strong>convergence entre grille de données et grille de calculs</strong>, qui fournit une nouvelle génération de serveurs d’applications capables de supporter les systèmes mutualisés de très grande taille<br />
• La <strong>programmation parallèle</strong> pour tirer profit des évolutions matérielles des multi-core, GPU et grid computing et rendre abordable les systèmes de calculs et de simulation<br />
• L’<strong>industrialisation des développements Smartphones et Tablettes</strong> pour iOS, Android, Windows Phone et Blackberry tout en alliant l’excellence de l’expérience utilisateur à la pérennisation des investissements sur des plateformes techniques encore en pleine mutation<br />
• La multiplication des <strong>connexions des objets physiques à l’Internet</strong> (smartphone, tablette, table, TV, véhicule, …) va permettre de suivre et de faire interagir le monde de l’information avec celui des actifs physiques, sans intermédiaire humain.<br />
• L’<strong>évolution des infrastructures Cloud</strong>, qui devront renforcer leurs solutions permettant l’intégration entre « SI Cloudifié » et SI existant et le durcissement des systèmes de sécurité applicative au fur et à mesure du déploiement de nouveaux services complexes.<br />
• L’<strong>hégémonie de HTML5</strong> sur les technologies IHM et l’impérative nécessité de <strong>maitriser industriellement les technologies Javascript</strong></p>
<p><strong>La contrainte : aller vite</strong><br />
Indépendamment des sujets choisis, la pression budgétaire augmente celle sur les délais d’obtention de résultats rapides. Il devient donc impératif d’<strong>être efficace dans l’identification des usages sectoriels et la maitrise des nouvelles technologies</strong>.<br />
La R&amp;D OCTO est orientée dans ce sens, en structurant transversalement l’analyse des opportunités technologiques et l’identification des usages dans les secteurs : Banque, Assurance, Télécoms, Media, Internet, Energie, Distribution et Services.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=28293" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/la-meilleure-facon-de-rater-son-projet-grace-a-maven2/' rel='bookmark' title='La meilleure façon de rater son projet grâce à Maven2'>La meilleure façon de rater son projet grâce à Maven2</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/la-crise-economique-une-opportunite-a-ne-pas-rater/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Applications mobiles multi-plateformes: les approches PhoneGap et Titanium Mobile</title>
		<link>http://blog.octo.com/applications-mobiles-multi-plateformes-les-approches-phonegap-et-titanium-mobile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=applications-mobiles-multi-plateformes-les-approches-phonegap-et-titanium-mobile</link>
		<comments>http://blog.octo.com/applications-mobiles-multi-plateformes-les-approches-phonegap-et-titanium-mobile/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 05:10:28 +0000</pubDate>
		<dc:creator>François Petitit</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[développement]]></category>
		<category><![CDATA[développements]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Mobilité]]></category>
		<category><![CDATA[productivité]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=26304</guid>
		<description><![CDATA[Introduction Le développement d&#8217;applications pour terminaux mobiles (iPhone, iPad, Android, Blackberry, Windows Phone, Nokia Symbian, Samsung Bada&#8230;) se heurte à la fragmentation des technologies de développements: environnement iOS/Objective-C pour l&#8217;iPhone et l&#8217;iPad, SDK Java spécifique pour Android, J2ME pour Symbian, etc. Deux approches possibles lorsque l&#8217;on débute un projet d&#8217;application ciblant plusieurs de ces plateformes [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/applications-natives-ou-web-html5-pour-mon-mobile/' rel='bookmark' title='Applications natives ou web HTML5 pour mon mobile ?'>Applications natives ou web HTML5 pour mon mobile ?</a></li>
<li><a href='http://blog.octo.com/ce-que-jquery-mobile-nous-apprend-sur-le-web-mobile/' rel='bookmark' title='Ce que jQuery Mobile nous apprend sur le Web Mobile'>Ce que jQuery Mobile nous apprend sur le Web Mobile</a></li>
<li><a href='http://blog.octo.com/le-terminal-mobile-et-usabilite-ou-comment-reveiller-le-canal-web-et-les-applications-desktop/' rel='bookmark' title='Le terminal mobile et usabilité ou comment réveiller le canal web et les applications desktop'>Le terminal mobile et usabilité ou comment réveiller le canal web et les applications desktop</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fapplications-mobiles-multi-plateformes-les-approches-phonegap-et-titanium-mobile%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fpp1xHQ%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Applications%20mobiles%20multi-plateformes%3A%20les%20approches%20PhoneGap%20et%20Titanium%20Mobile%22%20%7D);"></div>
<h2>Introduction</h2>
<p>Le développement d&#8217;applications pour terminaux mobiles (iPhone, iPad, Android, Blackberry, Windows Phone, Nokia Symbian, Samsung Bada&#8230;) se heurte à la fragmentation des technologies de développements: environnement iOS/Objective-C pour l&#8217;iPhone et l&#8217;iPad, SDK Java spécifique pour Android, J2ME pour Symbian, etc.</p>
<p>Deux approches possibles lorsque l&#8217;on débute un projet d&#8217;application ciblant plusieurs de ces plateformes sont de développer une application pour chacune d&#8217;elle, ou de développer un site Web compatible.</p>
<p>Dans le premier cas, l&#8217;inconvénient concerne bien évidemment le coût des développements. Dans le deuxième, on sera limité en richesse de l&#8217;application par les possibilités du Web.</p>
<p>Ce fut l&#8217;objet d&#8217;un précédent article sur notre blog: <a title="http://blog.octo.com/debat-web-apps-vs-natif/" href="http://blog.octo.com/debat-web-apps-vs-natif/" target="_blank">http://blog.octo.com/debat-web-apps-vs-natif/</a>.</p>
<p>Entre ces deux approches se situe une offre assez fournie de solutions de développement multi-plateforme, proposées par des éditeurs proposant leurs propres plateformes d&#8217;exécution et leurs outils de développement.</p>
<p>Parmi celles-ci, nous nous sommes concentrés dans cet article sur PhoneGap et Titanium Mobile, qui sont aujourd&#8217;hui parmi les plus abouties et sont représentatives des deux principales approches de développement multi-plateforme: l&#8217;utilisation des moteurs de rendus Web pour PhoneGap, et la translation de code source vers la plateforme cible pour Titanium.<br />
<span id="more-26304"></span></p>
<h2>Présentation des solutions</h2>
<h3><a href="http://www.phonegap.com/">PhoneGap</a></h3>
<p><a href="http://blog.octo.com/wp-content/uploads/2011/10/PhoneGap.gif"><img src="http://blog.octo.com/wp-content/uploads/2011/10/PhoneGap.gif" alt="logo PhoneGap" title="PhoneGap" width="192" height="72" class="alignleft size-full wp-image-26313" /></a>Nitobi, l&#8217;éditeur de PhoneGap, a annoncé <a href="http://www.phonegap.com/2011/10/03/nitobi-enters-into-acquisition-agreement-with-adobe-2/">son rachat par Adobe</a> le 3 octobre 2011. Cela confirme l&#8217;intérêt que l&#8217;on peut avoir envers cette solution, même si ce rachat surprise apporte une certaine incertitude sur l&#8217;avenir de PhoneGap.<br />
PhoneGap est un outil open-source, et devrait d&#8217;ailleurs rejoindre la fondation Apache.<br />
Le principe de PhoneGap est de <strong>fournir des API JavaScript aux navigateurs Web standards, permettant d&#8217;appeler des fonctionnalités natives non disponibles autrement</strong>: accéder à l&#8217;appareil photo, à l&#8217;accéléromètre, au système de fichiers&#8230;<br />
Cela <strong>nécessite d&#8217;embarquer le code source HTML/CSS/JS dans une application native</strong>, grâce au composant permettant d&#8217;inclure une vue Web dans une application, disponible dans chaque SDK.</p>
<h3><a href="http://www.appcelerator.com/products/titanium-mobile-application-development/">Titanium</a></h3>
<p><a href="http://blog.octo.com/wp-content/uploads/2011/10/APPC_logo.png"><img class="alignleft size-full wp-image-26315" title="APPC_logo" src="http://blog.octo.com/wp-content/uploads/2011/10/APPC_logo.png" alt="logo Appcelerator" width="177" height="40" /></a>Développé par Appcelerator qui vend du support et des formations sur Titanium, c&#8217;est également une solution libre.</p>
<p>Le principe de Titanium est de <strong>fournir une machine virtuelle JavaScript permettant d&#8217;accéder au système natif</strong>, et ainsi de développer des applications natives mais en JavaScript. C&#8217;est la promesse d&#8217;applications plus réactives et à l&#8217;expérience utilisateur plus proche du natif que celles basées sur des pages Web, comme PhoneGap.</p>
<h2>Points communs</h2>
<p>L&#8217;intérêt principal de l&#8217;utilisation d&#8217;une plateforme de développement multi-plateforme comme PhoneGap et Titanium Mobile réside en 2 points:</p>
<ul>
<li><strong>pouvoir déployer l&#8217;application sur les magasins (AppStore, Android Market&#8230;)</strong> afin de bénéficier de ce canal de distribution et de communication. Cela est réellement assuré par ces deux outils;</li>
<li><strong>réduire les coûts de développements en mutualisant du code</strong>. Cela est assuré par ces deux outils à condition de bien les utiliser et de limiter la part des développements spécifiques à chaque plateforme et donc de se limiter aux fonctionnalités supportées &laquo;&nbsp;out of the box&nbsp;&raquo;. On rogne donc sur l&#8217;expérience utilisateur et la richesse fonctionnelle.</li>
</ul>
<h2>Comparaison</h2>
<h3>Plateformes supportées</h3>
<p><br/></p>
<style type="text/css">
#table_fct_html5 {border-collapse: separate; border-spacing: 2px; width:100%;}
#table_fct_html5 th {padding: 6px 12px; text-align: left}
#table_fct_html5 td {padding: 6px 12px; vertical-align: top;}
#table_fct_html5 td:last-child, th:last-child {text-align: left;}
#table_fct_html5 tr:nth-child(odd){background: #eee;}
#table_fct_html5 tr:nth-child(even){background: #ddd;}
#table_fct_html5 tr:first-child {background: #cba; color:white;}
#table_fct_html5 td:empty {background: white;}
</style>
<table id="table_fct_html5" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th style="width:50%">PhoneGap</th>
<th style="width:50%">Titanium</th>
</tr>
<tr>
<td>iOS, Android, BlackBerry, Bada, WindowsPhone, WebOS, Symbian</td>
<td>iOS, Android et depuis très récemment BlackBerry</td>
</tr>
</tbody>
</table>
<h4>Notre avis: </h4>
<p><strong>En pratique, les développements PhoneGap nécessitent des adaptations pour chaque plateforme</strong>, dont les capacités et l&#8217;expérience utilisateurs diffèrent fortement. Etant donné l&#8217;état du marché (avec l&#8217;écrasante domination de l&#8217;<strong>iPhone</strong>, d&#8217;<strong>Android</strong> et de <strong>Blackberry</strong>), <strong>on ciblera généralement ces 3 plateformes uniquement</strong>. C&#8217;est ce que l&#8217;on a pu constater dans la plupart des cas où une entreprise ciblait initialement toutes les plateformes: l&#8217;augmentation du coût pour les supporter au fur et à mesure rendait cela impossible et finalement, au maximum, seules les 3 ou 4 principales étaient vraiment adressées.<br />
Concernant Titanium, le support de Blackberry est encore récent et disponible uniquement sous Windows, alors que la plupart des développeurs mobiles sont sous Mac (pour l&#8217;iPhone). Cela est dommage mais on espère que ce sera bientôt résolu.<br />
Pour cibler tous les terminaux mobiles à moindre coût, le meilleur moyen reste de réaliser un site Web simple, qui permet de diffuser de l&#8217;information mais ne permet ni de fournir des fonctionnalités avancées (appareil photo, etc.), ni de proposer une expérience utilisateur riche, ni d&#8217;être visible sur l&#8217;AppStore.</p>
<h3>Richesse de la plateforme</h3>
<p><br/></p>
<style type="text/css">
#table_fct_html5 {border-collapse: separate; border-spacing: 2px; width:100%;}
#table_fct_html5 th {padding: 6px 12px; text-align: left}
#table_fct_html5 td {padding: 6px 12px; vertical-align: top;}
#table_fct_html5 td:last-child, th:last-child {text-align: left;}
#table_fct_html5 tr:nth-child(odd){background: #eee;}
#table_fct_html5 tr:nth-child(even){background: #ddd;}
#table_fct_html5 tr:first-child {background: #cba; color:white;}
#table_fct_html5 td:empty {background: white;}
</style>
<table id="table_fct_html5" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th style="width:50%">PhoneGap</th>
<th style="width:50%">Titanium</th>
</tr>
<tr>
<td>Possibilités des navigateurs Web + API PhoneGap (principalement appareil photo, système de fichier, accéléromètre, liste des contacts, géolocalisation)
</td>
<td>Accès aux composants d&#8217;IHM natifs + API Titanium (base de données, géolocalisation, gestion des contacts, intégration Facebook, appareil photo, lecture et enregistrement audio/vidéo&#8230;)
</td>
</tr>
</tbody>
</table>
<h4>Notre avis: </h4>
<p><strong>Titanium est indéniablement plus riche fonctionnellement</strong> et fournira une apparence <strong>plus proche du natif</strong>, ce qui est en général l&#8217;objectif des concepteurs d&#8217;applications.<br />
PhoneGap est dans l&#8217;absolu plus limité en terme de fonctionnalités, et on doit concevoir les écrans comme des pages Web et non des écrans natifs. C&#8217;est d&#8217;ailleurs une erreur que l&#8217;on retrouve souvent sur les projets mobiles utilisant des technologies Web:<strong> il ne faut surtout pas tenter de reproduire des comportements natifs, mais plutôt viser des comportements Web performants</strong>.<br />
<strong>Les deux plateformes sont extensibles</strong>, Titanium plus facilement que PhoneGap, mais <strong>nous déconseillons globalement</strong> d&#8217;aller dans cette direction car cela devient très coûteux à maintenir (on estime en général à 20% la part maximale de code spécifique tolérable), et nécessite en outre encore plus de compétences que de faire des applications natives spécifiques à chaque plateforme.</p>
<h3>Plateforme de développement</h3>
<p><br/></p>
<style type="text/css">
#table_fct_html5 {border-collapse: separate; border-spacing: 2px; width:100%;}
#table_fct_html5 th {padding: 6px 12px; text-align: left}
#table_fct_html5 td {padding: 6px 12px;vertical-align: top;}
#table_fct_html5 td:last-child, th:last-child {text-align: left;}
#table_fct_html5 tr:nth-child(odd){background: #eee;}
#table_fct_html5 tr:nth-child(even){background: #ddd;}
#table_fct_html5 tr:first-child {background: #cba; color:white;}
#table_fct_html5 td:empty {background: white;}
</style>
<table id="table_fct_html5" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th style="width:50%">PhoneGap</th>
<th style="width:50%">Titanium</th>
</tr>
<tr>
<td>HTML/CSS/JavaScript standard. On développe comme si c&#8217;était une application Web normale. Les API PhoneGap sont bien documentées, par-contre on devra chercher sur le Web la documentation pour les technologies HTML/CSS/JS et les éventuelles librairies JavaScript utilisées.</td>
<td>JavaScript en utilisant des API spécifiques à Titanium, que ce soit pour créer les IHM ou pour écrire des appels au système. Le site d&#8217;Appcelerator propose la documentation des API ainsi qu&#8217;une application démo (<a href="http://developer.appcelerator.com/doc/kitchensink">KitchenSink</a>) et des vidéos.</td>
</tr>
</tbody>
</table>
<h4>Notre avis:</h4>
<p>On remarque l&#8217;<strong>utilisation de plus en plus large de JavaScript</strong>, un langage décrié par ses côtés peu structuré et trop tolérant. Il est nécessaire, pour développer ce type d&#8217;applications, de <strong>se former profondément à JavaScript</strong> et de <strong>connaître les design patterns de structuration/modularisation</strong> du code dans ce langage, qui existent mais sont souvent mal connus des développeurs.<br />
C&#8217;est d&#8217;ailleurs le principal objet de la formation à Titanium donnée par leur expert <a href="http://www.appcelerant.com/appcelerator-community-member-spotlight-qa-with-kevin-whinnery.html" class="broken_link">Kevin Whinnery</a>, que nous avons eu la chance de suivre à l&#8217;<a href="http://updateconf.com/">UpdateConf 2011</a>.<br />
De manière globale, <strong>l&#8217;environnement de développement de Titanium est mieux intégré et plus documenté</strong>.</p>
<h3>Productivité des développement</h3>
<p><br/></p>
<style type="text/css">
#table_fct_html5 {border-collapse: separate; border-spacing: 2px; width:100%;}
#table_fct_html5 th {padding: 6px 12px; text-align: left}
#table_fct_html5 td {padding: 6px 12px;vertical-align: top;}
#table_fct_html5 td:last-child, th:last-child {text-align: left;}
#table_fct_html5 tr:nth-child(odd){background: #eee;}
#table_fct_html5 tr:nth-child(even){background: #ddd;}
#table_fct_html5 tr:first-child {background: #cba; color:white;}
#table_fct_html5 td:empty {background: white;}
</style>
<table id="table_fct_html5" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th style="width:50%">PhoneGap</th>
<th style="width:50%">Titanium</th>
</tr>
<tr>
<td>PhoneGap nécessite de développer pour chaque plateforme ciblée dans l&#8217;IDE correspondant, et ne fournit pas d&#8217;outils supplémentaires.</td>
<td>Titanium fourni un IDE dédié, basé sur Aptana, un des meilleurs IDE Web reposant lui-même sur Eclipse (acheté récemment par Appcelerator)
</td>
</tr>
</tbody>
</table>
<h4>Notre avis:</h4>
<p>Titanium fournit un environnement de développement &laquo;&nbsp;clé en main&nbsp;&raquo; et performant, là où PhoneGap nécessite d&#8217;installer et configurer soi-même plusieurs environnements.<br />
<strong>La productivité est clairement côté Titanium</strong> aujourd&#8217;hui.</p>
<h3>Gestion des déploiements</h3>
<p><br/></p>
<style type="text/css">
#table_fct_html5 {border-collapse: separate; border-spacing: 2px; width:100%;}
#table_fct_html5 th {padding: 6px 12px; text-align: left}
#table_fct_html5 td {padding: 6px 12px;vertical-align: top;}
#table_fct_html5 td:last-child, th:last-child {text-align: left;}
#table_fct_html5 tr:nth-child(odd){background: #eee;}
#table_fct_html5 tr:nth-child(even){background: #ddd;}
#table_fct_html5 tr:first-child {background: #cba; color:white;}
#table_fct_html5 td:empty {background: white;}
</style>
<table id="table_fct_html5" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th style="width:50%">PhoneGap</th>
<th style="width:50%">Titanium</th>
</tr>
<tr>
<td>PhoneGap propose depuis peu un outil de build sur le cloud: <a href="https://build.phonegap.com/" title="PhoneGap Build">PhoneGap Build</a>, qui compile un projet PhoneGap vers les différentes plateformes cibles, que vous pourrez ensuite publier sur l&#8217;AppStore, l&#8217;Android Market, etc.</td>
<td>Titanium ne fournit pas d&#8217;outil de packaging multi-plateforme. Vous devrez donc créer manuellement les packages applicatifs.</td>
</tr>
</tbody>
</table>
<h4>Notre avis:</h4>
<p><strong>L&#8217;automatisation du packaging et de la livraison des applications</strong> sur les différentes plateformes (magasins publics type AppStore ou comptes privés &laquo;&nbsp;in house&nbsp;&raquo;) <strong>est un véritable enjeu</strong> concernant la productivité des développements et le coût global d&#8217;un projet. C&#8217;est d&#8217;ailleurs pour cela qu&#8217;<strong>OCTO propose <a href="http://www.appaloosa-store.com/" title="Appaloosa">Appaloosa</a></strong>, qui facilite la distribution en entreprise d&#8217;applications mobiles dans des <em>stores</em> privés.<br />
L&#8217;outil PhoneGap Build (compatible uniquement avec les applications PhoneGap), qui vient d&#8217;être ouvert en version finale, était une véritable nécessité.</p>
<h2>Synthèse</h2>
<p><br/></p>
<style type="text/css">
#table_fct_html5 {border-collapse: separate; border-spacing: 2px; width:100%}
#table_fct_html5 th {padding: 6px 12px; text-align: left}
#table_fct_html5 td {padding: 6px 12px;}
#table_fct_html5 td:last-child, th:last-child {text-align: left;}
#table_fct_html5 tr:nth-child(odd){background: #eee;}
#table_fct_html5 tr:nth-child(even){background: #ddd;}
#table_fct_html5 tr:first-child {background: #cba; color:white;}
#table_fct_html5 td:empty {background: white;}
</style>
<table id="table_fct_html5" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th style="width:50%">Fonctionnalité</th>
<th style="width:50%">Synthèse</th>
</tr>
<tr>
<td>Plateformes supportées</td>
<td>Avantage PhoneGap</td>
</tr>
<tr>
<td>Richesse (fonctionnalités + IHM)</td>
<td>Avantage Titanium</td>
</tr>
<tr>
<td>Langage de développement</td>
<td>Egalité</td>
</tr>
<tr>
<td>Productivité des développements</td>
<td>Avantage Titanium</td>
</tr>
<tr>
<td>Gestion des déploiements</td>
<td>Avantage PhoneGap</td>
</tr>
</tbody>
</table>
<p>Les points forts de PhoneGap sont donc aujourd&#8217;hui son support de plus de 6 plateformes, et le fait qu&#8217;il utilise au maximum les technologies standards du Web.<br />
Ses points faibles concernent ses limitations fonctionnelles et sa moindre richesse d&#8217;IHM du fait qu&#8217;il n&#8217;utilise pas les composants natifs, ainsi que son manque d&#8217;outillage de développement.</p>
<p>Les points forts de Titanium sont sa richesse fonctionnelle et graphique, ainsi que la productivité de son environnement de développement.<br />
Son point faible concerne le peu de plateformes supportées.</p>
<h2>Conclusion</h2>
<p>En conclusion, on a pu voir que <strong>Titanium est globalement plus productif et fournit plus de fonctionnalités que PhoneGap</strong> dans le but de développer des applications mobiles multi-plateformes. On le préfèrera en général, si l&#8217;on ne doit pas supporter plus que iOS + Android + BlackBerry.<br />
Au-delà du choix de l&#8217;outil, notre conseil majeur restera d&#8217;<strong>utiliser les outils pour ce qu&#8217;ils savent faire</strong>, et<strong> éviter de &laquo;&nbsp;tordre&nbsp;&raquo; leur usage</strong> pour leur faire faire autre chose ou de manière différente. Cela s&#8217;approche des problématiques bien connues d&#8217;utilisation trop personnalisée de progiciels, qui rend rapidement très coûteuse la moindre évolution.</p>
<p>Et d&#8217;ors et déjà, le choix de la technologie de développement multi-plateformes doit aussi se faire par-rapport aux applications Web HTML5 qui apportent de plus en plus de fonctionnalités et viennent sérieusement concurrencer les approches natives et hybrides, et les solutions Web existantes comme les moteurs de rendus (<a href="http://www.backelite.com/bkrender.php">BkRender</a>, <a href="http://www.wokup.com/">Wokup</a>) et les nombreux frameworks Web pour mobiles (par exemple <a href="http://www.sencha.com/products/touch/">Sencha Touch</a>.</p>
<p>La problématique du développement mobile multi-plateforme est loin d&#8217;être encore résolue, et nul doute que nous reviendrons encore dessus rapidement car c&#8217;est un enjeu fort pour les entreprises aujourd&#8217;hui.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=26304" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/applications-natives-ou-web-html5-pour-mon-mobile/' rel='bookmark' title='Applications natives ou web HTML5 pour mon mobile ?'>Applications natives ou web HTML5 pour mon mobile ?</a></li>
<li><a href='http://blog.octo.com/ce-que-jquery-mobile-nous-apprend-sur-le-web-mobile/' rel='bookmark' title='Ce que jQuery Mobile nous apprend sur le Web Mobile'>Ce que jQuery Mobile nous apprend sur le Web Mobile</a></li>
<li><a href='http://blog.octo.com/le-terminal-mobile-et-usabilite-ou-comment-reveiller-le-canal-web-et-les-applications-desktop/' rel='bookmark' title='Le terminal mobile et usabilité ou comment réveiller le canal web et les applications desktop'>Le terminal mobile et usabilité ou comment réveiller le canal web et les applications desktop</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/applications-mobiles-multi-plateformes-les-approches-phonegap-et-titanium-mobile/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Osez renoncer aux vieux navigateurs</title>
		<link>http://blog.octo.com/osez-renoncer-aux-vieux-navigateurs/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=osez-renoncer-aux-vieux-navigateurs</link>
		<comments>http://blog.octo.com/osez-renoncer-aux-vieux-navigateurs/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 06:46:46 +0000</pubDate>
		<dc:creator>Mickaël Morier</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=25187</guid>
		<description><![CDATA[HTML5 et CSS3 sont désormais au cœur des discussions sur le développement Web. La question du support des navigateurs est souvent évoquée notamment pour le cas Internet Explorer. Les clients demandent encore souvent de supporter Internet Explorer 6 (IE6) alors que ce navigateur a plus de 10 ans. Si ce navigateur a été apprécié à [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/tous-les-navigateurs-acceptent-html5-et-css3/' rel='bookmark' title='Tous les navigateurs acceptent HTML5 et CSS3'>Tous les navigateurs acceptent HTML5 et CSS3</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fosez-renoncer-aux-vieux-navigateurs%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Osez%20renoncer%20aux%20vieux%20navigateurs%22%20%7D);"></div>
<p>HTML5 et CSS3 sont désormais au cœur des discussions sur le développement Web. La question du support des navigateurs est souvent évoquée notamment pour le cas Internet Explorer. Les clients demandent encore souvent de supporter Internet Explorer 6 (IE6) alors que ce navigateur a plus de 10 ans. Si ce navigateur a été apprécié à sa sortie, il est devenu un cauchemar pour les développeurs Web tant il contient de nombreux bugs et ne respecte pas des standards comme CSS2. Est-il important de supporter les vieux navigateurs ? Y a-t-il des cas où on pourrait s&#8217;en passer ? Doit-on se focaliser exclusivement sur les navigateurs récents ?<span id="more-25187"></span></p>
<h2>Les vieux navigateurs font de la résistance</h2>
<div id="browser-market-highcharts" style="margin-top: 1em;">chart</div>
<p style="text-align: center;"><em>Parts de marché des navigateurs en France en août 2011 (source: <a href="http://gs.statcounter.com/#browser_version-FR-monthly-201108-201108-bar">gs.statcounter.com</a>)</em></p>
<p><script type="text/javascript" src="http://highcharts.com/js/testing.js"></script><script type="text/javascript">// <![CDATA[
var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'browser-market-highcharts',
        height: 200,
        plotBackgroundColor: null,
        backgroundColor: null, 
        plotBorderWidth: null,
        plotShadow: false
    },
    title: {
        text: null
    },
    colors: ['#4572A7', '#AA4643', '#89A54E', '#80699B', '#3D96AE', '#DB843D', '#92A8CD', '#A47D7C', '#B5CA92', '#fdd301','#01942a','#fd97f5','#fb6464'],
    tooltip: {
        formatter: function() {
            return '<b>' + this.point.name + '</b>: ' + this.point.y + ' %';
        }
    },
    plotOptions: {
        pie: {
            allowPointSelect: true,
            cursor: 'pointer',
            dataLabels: {
                enabled: true,
                formatter: function() {
                    return '<b>' + this.point.name + '</b>: ' + this.point.y + ' %';
                }
            }
        }
    },
    series: [{
        type: 'pie',
        name: 'Browser share',
        data: [['Internet Explorer 8', 21.3], ['Chrome 13', 15.2], ['Firefox 5', 14.2], ['IE9', 9.8], ['Firefox 6', 9.0], ['Firefox 3.6', 8.6], ['Internet Explorer 7', 4.6], ['Chrome 12', 3.2], ['Safari 5.0', 3.0], ['Safari 5.1', 2.3], ['Firefox 4', 1.8], ['Internet Explorer 6', 1.4], ['Autres', 5.7]]}]
});
// ]]&gt;</script></p>
<p>Sorti en mars 2009, IE8 reste le leader des navigateurs en France avec 21 % de parts de marché. Cependant les quatre navigateurs suivants sont tous sortis il y a quelques mois et supportent de nombreuses fonctionnalités HTML5 et CSS3. On observe que près de 60 % des internautes français utilisent un navigateur récent qui supporte les dernières normes du W3C. Malheureusement il reste des utilisateurs sur les navigateurs IE6 (1,35 %) et IE7 (4,55 %) dont on connait la médiocrité du support de CSS2 et le nombre relativement important de bug d&#8217;implémentation. Pour information, ces navigateurs sont sortis respectivement le 27 août 2001 et le 18 octobre 2006.</p>
<p>En entreprise, les statistiques sont très différentes puisqu&#8217;en règle générale, un navigateur est imposé et souvent il s&#8217;agit d&#8217;Internet Explorer. IE6 est encore très présent même si des clients ont décidé de migrer leur parc vers IE8 en occultant totalement IE7. Mais rares sont les grandes entreprises qui autorisent l&#8217;utilisation d&#8217;un autre navigateur.</p>
<h2>Internet Explorer, un navigateur trop lié à Windows</h2>
<p>La plupart des navigateurs récents peuvent être installés sur une multitude de versions d&#8217;OS. Ce qui n&#8217;est pas le cas d&#8217;Internet Explorer où il existe une véritable dépendance entre Windows et le navigateur de Microsoft. Ainsi il est impossible d&#8217;installer IE9 sur Windows XP et IE10 ne sera disponible qu&#8217;à partir de Windows 7. Comme la part de marché de Windows XP est proche des 30%, ce n&#8217;est pas étonnant de voir le navigateur IE8 encore autant  utilisé.</p>
<p>Cette dépendance est relativement problématique pour les entreprises car si elles souhaitent migrer vers une version récente d&#8217;Internet Explorer, elles doivent envisager également une migration de la version de Windows. C&#8217;est la raison pour laquelle toutes les entreprises ne migrent que vers IE8 puisqu&#8217;elles n&#8217;ont pas encore migré vers Windows 7 pour d&#8217;autres raisons. La migration d&#8217;un système d&#8217;exploitation implique d&#8217;autres tests de non-régression à faire pourtant totalement décorréler de ceux d&#8217;un navigateur.</p>
<p>Ce lien fort est également pénalisant pour Microsoft car les supports de Windows et du navigateur sont liés. Le navigateur initial de Windows XP étant IE6, la firme de Redmond doit supporter IE6 jusqu’à la fin du support d’XP, c’est à dire jusqu’au 8 avril 2014. Près de 13 ans de support !</p>
<h2>Doit-on encore supporter les vieux navigateurs ?</h2>
<p>Sur Internet, la diversité des navigateurs utilisés par les internautes est importante. Des standards ont été établis par le W3C afin de rendre le Web accessible à tous quelque soit le navigateur utilisé. Les entreprises souhaitent encore qu&#8217;IE6 et IE7 soient supportés par leurs projets Web car ces vieux navigateurs sont encore présents dans leurs visites. Malheureusement supporter ces navigateurs implique de nombreuses contraintes :</p>
<ul>
<li>Beaucoup d&#8217;efforts d&#8217;adaptation car ils n&#8217;implémentent pas correctement les standards. De nombreux développeurs estiment que cela représente <a title="I estimate that supporting IE6 has added more than 30% of the interface development costs" href="http://news.ycombinator.com/item?id=500963" target="_blank">un coût supplémentaire de 30%</a>. Sur mon projet actuel dont l&#8217;IHM est très riche, on a estimé que ce surcoût approchait les 50%. Ce navigateur nous obligeait à créer beaucoup de CSS et JavaScript spécifiques à IE6.</li>
<li>Des performances catastrophiques dès que votre application Web possède un peu de JavaScript ou de modifications importante du DOM. Des scintillements et des ralentissements nuisibles à l&#8217;utilisateur sont observables sur ces vieux navigateurs. Pour information, il faut 20 secondes à IE6 pour réaliser <a title="SunSpider, test de performance JavaScript" href="http://www.webkit.org/perf/sunspider/sunspider.html" target="_blank">SunSpider</a> (test de performance JavaScript) alors que Chrome 14 et Firefox prenaient environ 250 ms. Sur <a title="Peacekeeper, test de performance" href="http://peacekeeper.futuremark.com" target="_blank">Peacekeeper</a> (test de performance rendu, manipulation DOM, etc.), IE6 n&#8217;obtient que 627 points alors que Firefox 7 et Chrome 14 obtiennent respectivement 5573 et  10109 points.</li>
<li>Impossibilité à utiliser HTML5 et CSS3 qui ajoutent de nouvelles possibilités et permettent des gains de productivité. Je vous invite à regarder la session USI <a title="HTML5 : quelles perspectives pour les entreprises ?" href="http://www.usievents.com/fr/conferences/8-paris-usi-2011/sessions/986-html5-quelles-perspectives-pour-les-entreprises" target="_blank">HTML5 : quelles perspectives pour les entreprises ?</a> pour en savoir plus.</li>
</ul>
<p>De nombreuses contraintes avec ces vieux navigateurs pour très peu d’utilisateurs. Face à ce constat, les grands du Web ont fait leurs choix :</p>
<ul>
<li>Google ne supporte Internet Explorer qu&#8217;à partir de sa version 8 sur ses produits Google+, Gmail, Google Docs et qu&#8217;à partir de sa version 7 sur Google Calendar et YouTube</li>
<li>Facebook ne supporte plus IE6 depuis plus d&#8217;un an</li>
<li>l&#8217;administration du CMS WordPress ne supporte plus IE6 depuis mai</li>
<li>Amazon n&#8217;assure plus la compatibilité avec IE6 des espaces d&#8217;administration de ses vendeurs</li>
</ul>
<p>À moins que vous ne souhaitiez dépenser 30% en plus sur votre projet, arrêtez de supporter ces vieux navigateurs. Vous pouvez soit bloquer totalement l&#8217;accès comme le fait Google+ ou simplement prévenir l&#8217;internaute qu&#8217;il utilise un navigateur non supporté. Mais dans tous les cas, invitez vos utilisateurs à mettre à jour leur navigateur.</p>
<p>N&#8217;ayez pas peur d&#8217;utiliser des fonctions HTML5 et CSS3, des comportements dégradés sont prévus nativement. Si un navigateur ne comprends pas une propriété, il ne s&#8217;en préoccupe pas. Par exemple sur un vieux navigateur, un cadre aux coins arrondis aura les coins carrés ou encore <span>un champ de saisie de type email deviendra un simple champ de saisie de texte. Ces comportements dégradés natifs feront l&#8217;objet d&#8217;un futur article.<br />
</span></p>
<h2>Et si le navigateur de mon entreprise est IE6 ?</h2>
<p>Le navigateur de nombreuses grandes entreprises est encore IE6 pour diverses raisons :</p>
<ul>
<li>Certaines applications de leur SI ne fonctionnent que sur ce navigateur car les standards n&#8217;ont pas été respectés lors de sa réalisation.</li>
<li>Mettre à jour le navigateur imposerait de faire de nombreux tests de non-régression sur les applications du SI.</li>
<li>Et bien d&#8217;autres encore.</li>
</ul>
<p>Cependant si certaines anciennes applications d&#8217;un SI retardent la migration d&#8217;Internet Explorer, ce n&#8217;est pas une raison pour pénaliser les nouvelles applications en endettant les développements et en privant les utilisateurs de fonctionnalités intéressantes. Internet Explorer n&#8217;est pas le seul navigateur, il est possible d&#8217;installer un navigateur récent tel que Firefox ou Chrome sur les postes des employés afin qu&#8217;ils bénéficient des avancés d&#8217;HTML5 et CSS3. Cela ne les empêchera pas d&#8217;utiliser IE6 pour les applications ne fonctionnant que sur cet ancien navigateur.</p>
<p>Une autre solution si vous ne souhaitez vraiment pas installer de navigateurs supplémentaires est le plugin Google Chrome Frame. Il permet d&#8217;utiliser le moteur de rendu du navigateur de Google dans IE6 à IE9. Les employés lancent ainsi le même navigateur mais suivant les applications accédées, le rendu sera géré par Internet Explorer ou le plugin Chrome Frame. Contrairement à l&#8217;installation d&#8217;un nouveau navigateur, l&#8217;installation de ce plugin ne nécessite plus les droits administrateurs.</p>
<p>Une autre alternative aux problèmes de droits administrateurs réside dans l&#8217;utilisation des Portable Apps de <a title="Firefox Portable" href="http://portableapps.com/apps/internet/firefox_portable" target="_blank">Firefox</a> ou <a title="Chrome Portable" href="http://portableapps.com/apps/internet/google_chrome_portable" target="_blank">Chrome</a> pour Windows. Ce système permet d&#8217;être autonome et de disposer d&#8217;un navigateur récent même sur une clé USB. Mais attention, les Portable Apps ne se mettent pas à jour automatiquement, il faut alors les télécharger à chaque nouvelle version pour être à jour. Cette solution n&#8217;est à utiliser qu&#8217;en dernier recours.</p>
<h2>Faites le choix</h2>
<p>Vous devez oublier de supporter IE6 et IE7 afin de profiter des avancées des standards du Web. Les grands du Web l&#8217;ont fait, les grandes entreprises françaises doivent aussi faire ce choix. Ne forcez pas vos employés à utiliser des vieux navigateurs qu&#8217;ils n&#8217;utilisent plus chez eux depuis longtemps, permettez leur d&#8217;utiliser un navigateur rapide avec des fonctionnalités avancées. N&#8217;endettez plus vos applications Web avec du code spécifique pour maintenir les vieux navigateurs. Ne vous bridez plus sur les fonctionnalités de vos applications Web sous prétexte d&#8217;être compatible avec les vieux navigateurs.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=25187" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/tous-les-navigateurs-acceptent-html5-et-css3/' rel='bookmark' title='Tous les navigateurs acceptent HTML5 et CSS3'>Tous les navigateurs acceptent HTML5 et CSS3</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/osez-renoncer-aux-vieux-navigateurs/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Débat : Web Apps VS Natif</title>
		<link>http://blog.octo.com/debat-web-apps-vs-natif/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=debat-web-apps-vs-natif</link>
		<comments>http://blog.octo.com/debat-web-apps-vs-natif/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 08:58:58 +0000</pubDate>
		<dc:creator>Vincent Daubry</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[natif]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=25599</guid>
		<description><![CDATA[Débat : Web Apps VS Natif Lundi 5 septembre 2011 se tenait la Update Conf 2011 à Brighton, nous y étions ! Nous avons notamment assisté à une table ronde (&#171;&#160;geek ninja battle&#160;&#187; pour les jeunes) sur le thème &#171;&#160;Web Apps VS natif&#160;&#187; qui réunissait : Matt Gemmel (Développeur iOS, auteur du fameux client Twitter) [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fdebat-web-apps-vs-natif%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fq6prfM%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22D%C3%A9bat%20%3A%20Web%20Apps%20VS%20Natif%22%20%7D);"></div>
<h1>Débat : Web Apps VS Natif</h1>
<p>Lundi 5 septembre 2011 se tenait la <a title="Updateconf" href="http://www.updateconf.com/">Update Conf 2011</a> à Brighton, nous y étions ! Nous avons notamment assisté à une table ronde (&laquo;&nbsp;geek ninja battle&nbsp;&raquo; pour les jeunes) sur le thème &laquo;&nbsp;Web Apps VS natif&nbsp;&raquo; qui réunissait :</p>
<p>Matt Gemmel (Développeur iOS, auteur du fameux client Twitter)<br />
Jeremy Keith (Web developer)<br />
Seb Lee-Delisle (consultant)<br />
Martin Beeby (évangéliste Microsoft)<br />
Kevin Whinnery (évangéliste Titanium)</p>
<p>Débat mené par Aral Balkan organisateur de la Updateconf</p>
<p>Le sujet a déjà fait couler beaucoup d&#8217;encre, cette table ronde a été l&#8217;occasion de résumer les différences entre ces deux approches du développement mobile et de vulgariser des considérations complexes. Cet article propose une synthèse de ces discussions.<br />
On notera que ces discussions ne traitaient pas de l&#8217;aspect stratégie mobile mais d&#8217;une comparaison technique entre ces deux approches du développement mobile.</p>
<p><span id="more-25599"></span></p>
<p>Mais avant tout deux définitions s&#8217;imposent :</p>
<p>Application native : Application conçue spécifiquement pour une plateforme en utilisant le SDK propre à celle ci.<br />
Web app : Application réalisée via un site Web optimisé pour mobile</p>
<h2>Résumé de l&#8217;intervention sur les Web Apps mobile :</h2>
<p>Le principal bénéfice d&#8217;une Web App est de <strong>créer une application &laquo;&nbsp;universelle&nbsp;&raquo;</strong> : l&#8217;application ainsi produite a la possibilité de s&#8217;exécuter sur n&#8217;importe quel device, aussi bien smartphones que feature phone.<br />
Un autre point à considérer est la <strong>durée de vie des applications</strong> : une application Web sera toujours accessible, par exemple les tous premiers sites Web sont toujours utilisables. En revanche une application native est liée à une plateforme et aux devices qui l&#8217;utilisent, sa durée de vie est donc au maximum celle de la plateforme, et souvent des problèmes de rétrocompatibilité limitent sa durée de vie à quelques années.</p>
<p>En se basant sur ce constat d&#8217;universalité et de durée de vie des applications, la discussion prenait parfois une tournure quasi idéologique : en effet réaliser une application native s&#8217;inscrit dans le &laquo;&nbsp;flow&nbsp;&raquo;, et ne fait que passer. Tandis que produire une application Web permet de participer au &laquo;&nbsp;stock&nbsp;&raquo; et enrichit le Web pour les générations futures.</p>
<p>Pour revenir à des considérations plus pratiques il faut tenir compte des limitations actuelles de l&#8217;approche Web App. <strong>Les navigateurs des téléphones sont très hétérogènes et ont chacun une implémentation différente des standards du Web :</strong></p>
<p>- Différences de capacités entre le navigateur d&#8217;un feature phone et celui d&#8217;un smartphone<br />
- Différence de comportement entre les navigateurs de différents smartphones pour la même fonctionnalité</p>
<p>Cette contrainte se heurte au fait que les applications mobiles sont devenues de plus en plus évoluées en terme d&#8217;interface. <strong>Une mauvaise pratique consiste à chercher à faire une Web App avec une interface reproduisant le comportement d&#8217;une application native</strong> : d&#8217;une part c&#8217;est techniquement complexe et on perd rapidement la compatibilité avec de nombreux navigateurs. Mais il faut également tenir compte du fait que chaque plateforme cherche à se différencier en proposant une ergonomie native différente. Dans ce contexte faire un site Web avec une ergonomie native pose deux problèmes :</p>
<p>- Si on essaye de reproduire l&#8217;ergonomie propre à chaque plateforme on recommence à faire des développements spécifiques à chaque plateforme<br />
- Si on reproduit le comportement d&#8217;une application iPhone sur chaque plateforme, le résultat est décevant pour les utilisateurs des autres plateformes.</p>
<p>La bonne pratique en terme d&#8217;interface pour les Web App consiste à <strong>reprendre les standards d&#8217;ergonomie du Web et d&#8217;adapter l&#8217;interface aux différents téléphones</strong> selon deux axes :</p>
<p>- Adapter l&#8217;interface à la taille de l&#8217;écran du téléphone/Smartphone<br />
- Adapter les fonctionnalités de l&#8217;application aux possibilités techniques du navigateur.</p>
<p>Ce dernier point peut s&#8217;avérer complexe, la recommandation pour qu&#8217;un site Web puisse offrir une expérience optimum sur chaque device consiste à faire du &laquo;&nbsp;progressive enhancement&nbsp;&raquo; :</p>
<p>Il s&#8217;agit de partir d&#8217;une approche orientée document (HTML sans JavaScript), bien gérée par tous les navigateurs, et qui assure un ensemble minimum de fonctionnalités quelque soit l&#8217;utilisateur qui consulte l&#8217;application.<br />
Puis aller vers une approche orientée interaction et comportement, en adaptant le site aux possibilités disponibles sur le navigateur qui consulte l&#8217;application.</p>
<p>Les intervenants mettaient également en garde contre le fait de faire du spécifique pour chaque navigateur : on retombe dans le même travers que de faire du spécifique pour des devices. A la place il est conseillé d&#8217;optimiser l&#8217;application pour des fonctionnalités : choisir une implémentation standard, et n&#8217;activer cette fonctionnalité que si le navigateur la supporte.</p>
<p>Il faut noter que si aujourd&#8217;hui il est possible de reproduire en Web la plupart des fonctions d&#8217;une application native (utilisation offline, stockage de donnés, GPS, etc.), certains points restent aujourd&#8217;hui impossibles, typiquement l&#8217;accès aux données du téléphone (annuaire, calendrier, etc.).</p>
<p><em>Notre avis : il faut également tenir compte du manque de maturité de l&#8217;HTML5. Aujourd&#8217;hui démarrer une application Web embarquant une base de donnée locale, GPS et utilisation offline avec synchronisation des données comporte une part importante de R&amp;D. Ces fonctionnalités existent dans les applications natives depuis plusieurs années et sont aujourd&#8217;hui totalement maîtrisées.<br />
</em></p>
<h2>Résumé des interventions sur le développement natif sur mobile:</h2>
<p>Chaque plate-forme possède ses spécificités en terme d&#8217;interface et crée son identité notamment sur ces différences d&#8217;ergonomie.<br />
Les applications natives permettent de proposer <strong>une expérience totalement intégrée à la plate-forme et de tirer parti de ses spécificités</strong> :<br />
On a en effet accès non seulement aux données du téléphone (calendrier, contacts, etc.) mais on peut également proposer au sein de son application une ergonomie intégrée à celle du téléphone.</p>
<p>Un point qui est rapidement soulevé est la question de la &laquo;&nbsp;proximité&nbsp;&raquo; avec l&#8217;OS.</p>
<p>De part leur nature les applications natives n&#8217;ont aucune couche d&#8217;abstraction avec le téléphone, ce qui les rend mieux intégrées :</p>
<p><a href="http://blog.octo.com/wp-content/uploads/2011/09/proximité-os.png"><img class="alignleft size-medium wp-image-25614" title="proximité-os" src="http://blog.octo.com/wp-content/uploads/2011/09/proximité-os-300x203.png" alt="" width="300" height="203" /></a></p>
<p>Cette expérience utilisateur plus proche du device peut s&#8217;avérer déterminante dans un environnement fortement concurrentiel : si sur chaque plateforme une Web App est en concurrence avec plusieurs applications natives qui proposent le même service mais avec une expérience spécifique, comment se démarquer ?</p>
<p><em>Notre avis :<br />
Nous partageons cette analyse concernant l&#8217;importance de l&#8217;expérience utilisateur et nous pensons fortement à la citation de Phil Libin, CEO d&#8217;Evernote : &laquo;&nbsp;We could probably save 70% of our development budget by switching to a single, cross-platform client, but we would probably lose 80% of our users.&nbsp;&raquo;</p>
<p>cf: http://techcrunch.com/2011/01/19/evernote-mac-app-store/</p>
<p>Néanmoins on remarque qu&#8217;il y avait le même débat avec la JVM 10 ans auparavant. La leçon retenue est que la &laquo;&nbsp;distance&nbsp;&raquo; avec l&#8217;OS n&#8217;est pas déterminante en soit, ce qu&#8217;il faut prendre en compte c&#8217;est ce que les technos Web permettent de faire.<br />
</em></p>
<p>Les intervenants reconnaissaient que développer et maintenir une version spécifique de l&#8217;application pour chaque plateforme est complexe lorsque l&#8217;on souhaite multiplier les OS ciblés. C&#8217;est dans ce dilemme entre le coût et la valeur que de nombreuses solutions hybrides ont vu le jour, tels que PhoneGap et Appcelerator. Nous publierons prochainement un article détaillant ces approches hybrides.</p>
<h2>Autres considérations abordées :</h2>
<h3>Monétisation :</h3>
<p>Le mode de distribution des applications natives via des &laquo;&nbsp;stores&nbsp;&raquo; a fait ses preuves en tant que solution rentable permettant de générer du profit. Les perspectives business attirent un nombre important de développeurs et d&#8217;entreprises à réaliser des projets pour ces plate-formes et pousse l&#8217;innovation.</p>
<p>N&#8217;est ce pas une faiblesse des Web Apps que d&#8217;être privées de store ? Comment faciliter la conversion sur une Web App et réaliser l&#8217;équivalent du &laquo;&nbsp;one click purchase&nbsp;&raquo; ?</p>
<p>Deux arguments ont été évoqués pour défendre le modèle de distribution des Web Apps :</p>
<p>- Effectivement sur le Web le taux de conversion est plus faible, mais cela peut être compensé par une base d&#8217;utilisateur plus grande et l&#8217;absence de frais d&#8217;intermédiaires (les stores prennent un pourcentage sur les achats allant jusqu&#8217;à 30%)</p>
<p>- On voit arriver des stores pour les Web Apps, via les navigateurs (Chrome se dirige déjà dans cette direction avec son Web Store)</p>
<p><em>Notre avis : les intervenants n&#8217;ont pas évoqué le fait que les stores servent aussi de vitrines pour les applications et facilitent la découverte du service.<br />
</em></p>
<h3>Innovation :</h3>
<p>Il est possible de faire de plus en plus de choses via les Web Apps, mais les possibilités offertes en natif progressent également, le gap technologique entre le natif et les Web Apps ne va-t&#8217;il pas perdurer ?</p>
<p>On a déjà rencontré cette même situation avec Flash et HTML : l&#8217;histoire montre qu&#8217;il y a un seuil minimum à atteindre pour que les technologies Web répondent à l&#8217;essentiel des besoins. Passé ce stade la valeur apportée par les améliorations de la plate-forme ne justifie plus les contraintes qu&#8217;elle implique. Aujourd&#8217;hui un grand nombre d&#8217;applications sur les stores pourraient déjà être faites en Web.</p>
<h2>Conclusion :</h2>
<p>Au travers des interventions on a eu un bon résumé de la situation actuelle du développement mobile et cela en 45min, on regrette néanmoins que le débat soit resté assez dogmatique et trop général. Le sujet n&#8217;y est probablement pas pour rien, &laquo;&nbsp;Natif VS Web Apps&nbsp;&raquo; : chercher à élire la meilleur approche dans l&#8217;absolue n&#8217;a pas beaucoup de sens. On aurait préféré partir de certains cas d&#8217;usage relativement cadrés pour illustrer les différentes approches et ce qu&#8217;elles impliquent.</p>
<p>Par exemple :</p>
<p>- Délivrer du contenu (blog, prise de note)<br />
- Apporter un service (service public de consultation, bourse en ligne)</p>
<p>D&#8217;autre part le débat technique entre l&#8217;approche native et web ne suffit pas pour faire un choix. Avant tout il faut définir une stratégie mobile plus globale et poser des questions telles que :</p>
<p>Pourquoi je veux faire du mobile ? (se démarquer de la concurrence par l&#8217;innovation ? Trouver de nouveaux business models ? )<br />
A quelle population je m&#8217;adresse ?<br />
Quel est le positionnement de mon canal mobile par rapport à mon canal web ?<br />
Etc</p>
<p>Ce sont les réponses à ces questions ET une bonne connaissance des différences techniques entre web app et natif qui permettront de faire le bon choix.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=25599" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/debat-web-apps-vs-natif/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>De la résilience des standards du Web</title>
		<link>http://blog.octo.com/de-la-resilience-des-standards-du-web/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=de-la-resilience-des-standards-du-web</link>
		<comments>http://blog.octo.com/de-la-resilience-des-standards-du-web/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 08:19:54 +0000</pubDate>
		<dc:creator>Guillaume Plouin</dc:creator>
				<category><![CDATA[Brèves de consultants]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[ihm]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=16595</guid>
		<description><![CDATA[Le propos de ce billet est de faire un petit point sur les assauts passés et présents contre les standards du Web. Il est inspiré par l’article de Chris Anderson dans Wired : “The Web Is Dead. Long Live the Internet”. Anderson y développe l’idée suivante : on utilise de plus en plus des applications [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/complementarite/' rel='bookmark' title='La complémentarité entre les standards de gestion des processus IT'>La complémentarité entre les standards de gestion des processus IT</a></li>
<li><a href='http://blog.octo.com/lemergence-de-standards-faciliterait-le-recours-aux-paas/' rel='bookmark' title='L’émergence de standards faciliterait le recours aux PaaS'>L’émergence de standards faciliterait le recours aux PaaS</a></li>
<li><a href='http://blog.octo.com/autres-standards/' rel='bookmark' title='Autres standards de gestion des processus IT'>Autres standards de gestion des processus IT</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fde-la-resilience-des-standards-du-web%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22De%20la%20r%C3%A9silience%20des%20standards%20du%20Web%22%20%7D);"></div>
<p>Le propos de ce billet est de faire un petit point sur les assauts passés et présents contre les standards du Web. Il est inspiré par l’article de Chris Anderson dans Wired : <a href="http://www.wired.com/magazine/2010/08/ff_webrip/">“The Web Is Dead. Long Live the Internet”</a>. Anderson y développe l’idée suivante : on utilise de plus en plus des applications embarquées, plutôt qu’un navigateur, pour accéder aux contenus sur Internet (son article présente d’ailleurs une courbe très évocatrice. Suivez le lien&#8230;). Rappelons que Chris Anderson a fait la <a href="http://universite-du-si.com/fr/conferences/6/sessions/880">keynote d’ouverture de l’USI 2010 </a>en juillet dernier.<span id="more-16595"></span></p>
<h2>L’ère AOL / World Online</h2>
<p>Comme chacun sait, les standards du Web (HTTP/HTML) ont été créés par Tim Berners Lee au début des années 90. On doit la montée en puissance des navigateurs et sites Web respectant ces standards d’abord aux scientifiques et universitaires, puis aux geeks.<br />
Au milieu des années 90, le Web a atteint le grand public. Une première fronde a alors été menée par des ISP comme AOL et World Online. Ces ISP proposaient un ensemble de  logiciels propriétaires masquant les standards : kit de connexion, logiciel de chat, forums fermés, etc.  Cette sortie des standard se justifiait alors par le faible niveau de maturité des utilisateurs issus du grand public : une simplification était donc la bienvenue.<br />
Ces fournisseurs d’accès ont eu la tentation d’enfermer leurs utilisateurs dans un écosystème propriétaire et contrôlé. Les opérateurs mobiles ont eu plus tard la même démarche avec les portails Wap. Heureusement, tout cela a rapidement volé en éclat dès lors que les internautes ont compris l&#8217;intérêt d’un Web ouvert.</p>
<h2>L’ère IE / Flash</h2>
<p>En 2003, le Web était dominé par Internet Explorer qui disposait de plus de 98% de parts de marché toutes versions confondues. De fait, beaucoup d’agences Web créaient des applications pour Internet Explorer, plutôt que des sites Web.</p>
<p>Par ailleurs, le format Flash était largement utilisé, parfois au delà de ses aptitudes au multimédia et au vectoriel. Ainsi, des pages qui auraient pu être développées à l’identique en HTML se trouvaient codées dans un format propriétaire dont la source était inaccessible à la communauté des développeurs. HTML était alors doublement en danger comme l’explique très bien Mark Surman dans sa session USI 2010 : <a href="http://universite-du-si.com/fr/conferences/6-paris-usi-2010/sessions/872-comment-le-web-a-t-il-ete-conquis-et-dautres-histoires-utiles">“How the Web was Won, and other usefull stories”</a>.<br />
La relance de la concurrence dans les navigateurs, en particulier grâce à Firefox, a remis le standard HTML en selle. De plus, avec les évolutions de HTML5, Flash est maintenant remis en cause (cf. les <a href="http://www.apple.com/hotnews/thoughts-on-flash/">attaques virulentes de Steve Jobs </a>contre ce format).</p>
<h2>L’ère des AppStores</h2>
<p>Le Web est aujourd’hui menacé dans sa version mobile : en effet, de nombreux fournisseurs de contenus préfèrent proposer des applications embarquées plutôt que des WebApps sur les téléphones et tablettes.<br />
L’argument pour le développement d’une application embarquée est souvent le besoin de gestion du mode déconnecté et de géolocalisation. Pourtant HTML5 les gère. Ainsi beaucoup d’applications de l’AppStore d’Apple pourraient, à mon sens, être développées à l’identique en HTML5 et bénéficier d’une portabilité entre plateformes mobiles. Les éditeurs de contenus éviteraient ainsi N développements pour iPhone, Android, Windows Phone, Blackberry, etc.</p>
<p>Les raisons du recours aux plateformes de développement embarqué sont généralement les suivantes :</p>
<ul>
<li>HTML5 est un standard immature, encore en cours d’écriture. Cependant, les chose avancent à grand pas : voir <a href="http://blog.octo.com/ce-que-jquery-mobile-nous-apprend-sur-le-web-mobile/">ce billet sur jQuery Mobile</a>.</li>
<li>Les éditeurs de contenu voient dans les AppStores un nouveau territoire où il faut être présent : un catalogue organisé par rubriques qui permet une promotion ciblée. Il faut cependant noter que la visibilité des applications diminue rapidement avec la taille des AppStores. Avec 200 000 applications chez Apple, il est de plus en plus difficile d’arriver en première page de l’AppStore. De fait, on parcourt de moins en moins le catalogue, et on revient à la recherche, comme sur le Web&#8230;</li>
<li>Du point de vue de l’utilisateur débutant, Il est simple de rechercher et installer des applications à partir d’un catalogue. Cette pratique me rappelle les débuts du Web en 1996. J’essayais alors de tester tous les sites Web qui sortaient, et des annuaires comme Yahoo ou Lycos avaient l’ambition de tous les classer dans un catalogue. Le principe du catalogue a vite atteint ses limites pour le Web, il est probable qu’il les atteindra pour pour le mobile. Et les utilisateurs mobiles utiliseront un jour un moteur de recherche et des signets comme sur leurs PC.</li>
<li>Pour les développeurs, il est rapide de développer des applications embarquées, grâce à des outils très productifs, en particulier dans le cadre d’interfaces tactiles. De plus, les AppStores ont permis à quelques privilégiés de se constituer un salaire : cette opportunité fait rêver de nombreux développeurs.</li>
</ul>
<p>Le contexte devrait évoluer avec la maturité de HTML5 et l’expérience des utilisateurs.<br />
Par ailleurs, l’effet “applications payantes versus sites Web gratuits pour les mêmes contenus” est très séduisant pour les fournisseurs de contenus. Néanmoins, son succès réside plus dans l’efficacité des plateformes de micropaiements que dans le caractère embarqué des applications. On pourrait imaginer que l’on parvienne à proposer les mêmes micropaiements dans le cadre d’applications Web : c’est le projet du <a href="https://apps.mozillalabs.com/">Mozilla Appstore</a>. Les utilisateurs pourraient alors sortir du côté fermé des AppStores (cf. la politique d’Apple) de même qu’ils sont sortis des environnements fermés des AOL &amp; portails Wap.</p>
<p>J’ai personnellement la conviction que l’on verra un retour au standard HTML pour le mobile d’ici 5 ans.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=16595" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/complementarite/' rel='bookmark' title='La complémentarité entre les standards de gestion des processus IT'>La complémentarité entre les standards de gestion des processus IT</a></li>
<li><a href='http://blog.octo.com/lemergence-de-standards-faciliterait-le-recours-aux-paas/' rel='bookmark' title='L’émergence de standards faciliterait le recours aux PaaS'>L’émergence de standards faciliterait le recours aux PaaS</a></li>
<li><a href='http://blog.octo.com/autres-standards/' rel='bookmark' title='Autres standards de gestion des processus IT'>Autres standards de gestion des processus IT</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/de-la-resilience-des-standards-du-web/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ce que jQuery Mobile nous apprend sur le Web Mobile</title>
		<link>http://blog.octo.com/ce-que-jquery-mobile-nous-apprend-sur-le-web-mobile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ce-que-jquery-mobile-nous-apprend-sur-le-web-mobile</link>
		<comments>http://blog.octo.com/ce-que-jquery-mobile-nous-apprend-sur-le-web-mobile/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 09:45:46 +0000</pubDate>
		<dc:creator>François Petitit</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[développement]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML 5]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Mobilité]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=16411</guid>
		<description><![CDATA[Cet article s&#8217;intéresse aux principes de développement qu&#8217;implémente la librairie jQuery Mobile pour offrir des sites Web adaptés aux terminaux mobiles, afin d&#8217;en tirer des enseignements pour nos propres développements mobiles, utilisant cette librairie ou non. Nous entendrons ici par Web Mobile les sites et applications Web pour les tablettes et tous les téléphones portables [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/optimiser-les-performances-de-vos-applications-web-sur-mobile/' rel='bookmark' title='Optimiser les performances de vos applications web sur mobile'>Optimiser les performances de vos applications web sur mobile</a></li>
<li><a href='http://blog.octo.com/applications-mobiles-multi-plateformes-les-approches-phonegap-et-titanium-mobile/' rel='bookmark' title='Applications mobiles multi-plateformes: les approches PhoneGap et Titanium Mobile'>Applications mobiles multi-plateformes: les approches PhoneGap et Titanium Mobile</a></li>
<li><a href='http://blog.octo.com/applications-natives-ou-web-html5-pour-mon-mobile/' rel='bookmark' title='Applications natives ou web HTML5 pour mon mobile ?'>Applications natives ou web HTML5 pour mon mobile ?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fce-que-jquery-mobile-nous-apprend-sur-le-web-mobile%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Ce%20que%20jQuery%20Mobile%20nous%20apprend%20sur%20le%20Web%20Mobile%22%20%7D);"></div>
<p>Cet article s&#8217;intéresse aux principes de développement qu&#8217;implémente la librairie jQuery Mobile pour offrir des sites Web adaptés aux terminaux mobiles, afin d&#8217;en tirer des enseignements pour nos propres développements mobiles, utilisant cette librairie ou non.<br />
Nous entendrons ici par Web Mobile les sites et applications Web pour les tablettes et tous les téléphones portables supportant le Web, depuis les premières version de Symbian S60 jusqu&#8217;aux derniers iPhone et Android.<br />
<span id="more-16411"></span></p>
<h2>Qu&#8217;est-ce que jQuery Mobile?</h2>
<p>jQuery Mobile constitue la version optimisée pour les mobiles de la librairie jQuery, une des librairies JavaScript les plus populaires, permettant d&#8217;enrichir des sites Web classiques. La version 1.0 est disponible depuis peu en version alpha.<br />
Sa documentation, elle-même adaptée aux mobiles, est disponible ici: <a href="http://jquerymobile.com/demos/1.0a1/">http://jquerymobile.com/demos/1.0a1/</a><br />
Les concepteurs de jQuery ont eu besoin de créer une version spéciale pour les terminaux mobiles, car ce marché a des caractéristiques particulières. Ce sont elles que nous allons explorer ici.</p>
<h2>Un marché fragmenté</h2>
<p><a title="smartphones screen sizes &amp; resolutions de jorge.correa, sur Flickr" href="http://www.flickr.com/photos/jorgecorrea/4359779134/"><img src="http://farm5.static.flickr.com/4010/4359779134_cda8e3223c.jpg" alt="smartphones screen sizes &amp; resolutions" width="500" height="383" /></a><br />
L&#8217;image ci-dessus représente un échantillon des résolutions de mobiles disponibles sur le marché aujourd&#8217;hui. Il manque de nombreux (iPhone 4, les nouveaux Windows Phone&#8230;), sans parler des tablettes tactiles, et le marché évolue si vite qu&#8217;il y en aura sans doute déjà de nouveaux encore quand vous lirez cet article.<br />
Cela afin d&#8217;illustrer le fait que le support des terminaux, à la fois par-rapport aux résolutions d&#8217;écrans, mais aussi par-rapport aux différents navigateurs, aux différents OS, sans parler des versions ce chaque, constitue un défi inédit pour les développeurs Web.<br />
Les développeurs de jQuery Mobile partent du principe qu&#8217;il ne faut négliger aucun terminal. Pour commencer, ils se sont focalisés sur <strong>une dizaine de navigateurs, en plus des navigateurs standards, et autant d&#8217;OS</strong>, avec pour chacun plusieurs versions.<br />
Ils les ont alors comparés suivant 2 critères:<br />
- est-ce que le navigateur supporte les <a href="http://www.w3.org/TR/css3-mediaqueries/"><strong>media queries</strong></a>, qui permettent d&#8217;adapter la feuille de style suivant l&#8217;écran de l&#8217;utilisateur?<br />
- et si oui, a-t-il une <strong>part de marché suffisante</strong> pour que les développeurs de la librairie garantissent une qualité optimale?</p>
<p>Cela leur a permis de classer ces navigateurs et OS dans 3 catégories, A, B et C:<br />
<a href="http://jquerymobile.com/gbs/">http://jquerymobile.com/gbs/</a></p>
<ul>
<li> <strong>catégorie A:</strong> jQuery Mobile apportera la <strong>meilleure utilisabilité possible</strong> grâce à des manipulations de style et de JavaScript</li>
<li><strong>catégorie B:</strong> jQuery Mobile tentera d&#8217;apporter la meilleure utilisabilité, mais les développeurs devront être plus vigilants au risque de bugs</li>
<li><strong>catégorie C:</strong> jQuery Mobile n&#8217;apportera aucune transformation de style ou JavaScript mais <strong>le site restera entièrement fonctionnel en étant rendu en pur HTML</strong>.</li>
</ul>
<p>Cela permet à un développeur utilisant jQuery Mobile de s&#8217;abstraire de cettre problématique, tout en étant sûr de toucher un maximum d&#8217;utilisateurs possibles. Et peut nous donner un point de départ pour aborder ce problème pour nos propres développements sans jQuery Mobile.</p>
<h2><strong>Progressive enhancement</strong> et <strong>graceful degradation</strong>: des réponses à l&#8217;hétérogénéité?</h2>
<p>jQuery Mobile utilise ces deux principes de développement. Que signifient-ils et comment jQuery Mobile les utilise-t-il?</p>
<h4>Progressive enhancement</h4>
<p>Le principe de &laquo;&nbsp;progressive enhancement&nbsp;&raquo; consiste pour le Web à tout d&#8217;abord s&#8217;attacher à respecter la sémantique du HTML pour assurer un contenu accessible et fonctionnel aux navigateurs les moins puissants et aux utilisations limitées (utilisation des balises de headers, navigation possible sans souris ou sans clavier, etc.). Puis à enrichir l&#8217;application avec une couche de mise en forme utilisant des CSS, et enfin une couche évènementielle en utilisant JavaScript voire AJAX, mais tout en restant <em><strong>retro-compatible</strong></em>.</p>
<p>Pour une application développée avec jQuery Mobile, cela consiste à développer son site Web uniquement en HTML et CSS, puis à ajouter l&#8217;attribut &laquo;&nbsp;<a href="http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data-with-the-data-attributes">data-</a>&nbsp;&raquo; (apporté par HTML5) dans un composant, pour lequel on veut appliquer des améliorations via jQuery Mobile.</p>
<p>Le respect de ce principe par l&#8217;architecture globale de jQuery Mobile permet à un site développé avec de fonctionner sur des navigateurs ne supportant pas JavaScript ou CSS, ou quand leur support a été désactivé. A ce propos, Yahoo compte 2% de ses visiteurs aux Etats-Unis qui n&#8217;ont pas JavaScript, soit 6 millions par mois (cf. <a href="http://developer.yahoo.com/blogs/ydn/posts/2010/10/how-many-users-have-javascript-disabled/">http://developer.yahoo.com/blogs/ydn/posts/2010/10/how-many-users-have-javascript-disabled/</a>). A vos statisques!</p>
<h4>Graceful degradation</h4>
<p>Différant sur la mise en oeuvre du principe de &laquo;&nbsp;progressive enhancement&nbsp;&raquo;, celui de &laquo;&nbsp;graceful degradation&nbsp;&raquo; consiste à <strong>tenter par défaut, de fournir le meilleur élément possible, puis si cela ne fonctionne pas, à fournir une version &laquo;&nbsp;dégradée&nbsp;&raquo;</strong>.<br />
Cela est typiquement le cas avec l&#8217;affichage de vidéo en HTML5, ou pour les navigateurs récents on cherchera à diffuser une vidéo avec la nouvelle balise &laquo;&nbsp;video&nbsp;&raquo;, et si le navigateur ne la supporte pas alors on la diffusera avec un plug-in Flash.<br />
Par exemple si le navigateur supporte le type d&#8217;input HTML5 <a href="http://diveintohtml5.org/forms.html" class="broken_link">date</a> permettant d&#8217;afficher un calendrier pour sélectionner une date dans un formulaire, alors on l&#8217;utilisera, sinon on affichera soi-même un calendrier en JavaScript, sinon on laissera un champ de type texte&#8230; C&#8217;est la notion de &laquo;&nbsp;fallback&nbsp;&raquo;: avoir toujours une solution de secours. </p>
<p>En ce qui concerne jQuery Mobile, la documentation fait référence à ce mécanisme, notamment pour le cas des nouveaux éléments de CSS3 qui ne sont pas tous supportés par tous les navigateurs et qui sont ignorés par les autres. Cela est illustré dans un exemple donné à la page <a href="http://jquerymobile.com/2010/10/jquery-mobile-alpha-1-released/">http://jquerymobile.com/2010/10/jquery-mobile-alpha-1-released/</a>.</p>
<h2>Les performances ne sont pas une option</h2>
<p style="text-align: center;"><a title="Speed-o-meter de Toms Bauģis, sur Flickr" href="http://www.flickr.com/photos/toms/180783021/"><img class="aligncenter" src="http://farm1.static.flickr.com/57/180783021_2b8eebbd0c.jpg" alt="Speed-o-meter" height="200" /></a></p>
<p>Dans le monde mobile, de bonnes performances sont encore plus nécessaires que dans le Web de bureau. En effet, si dans le Web classique l&#8217;enjeu est principalement de ne pas perdre des utilisateurs (cf. <a href="http://www.slideshare.net/stubbornella/pourquoi-la-performance-presentation">http://www.slideshare.net/stubbornella/pourquoi-la-performance-presentation</a>: Yahoo perd de 5 à 9% de visiteurs pour 400ms de temps de chargement supplémentaire), sur le Web mobile les latences réseaux, la perte de connexions, les faibles performances des terminaux et les limitations des navigateurs peuvent empêcher votre site de fonctionner.</p>
<p>Pour améliorer les performances, les concepteurs de jQuery Mobile ont <strong>réduit au maximum la taille de la librairie (seulement 9k)</strong> et <strong>limité la dépendance aux ressources externes</strong>, notamment en utilisant des Gradient CSS3 pour les dégradés de fonds de pages plutôt que des images, et en utilisant des <a href="http://www.alsacreations.com/tuto/lire/1068-sprites-css-background-position.html">sprites CSS</a> pour les icônes de la page.</p>
<h2>Tactile ou souris?</h2>
<p>Ou stylet? Ou encore autre chose? La <strong>multiplication des moyens d&#8217;interaction</strong> entre l&#8217;utilisateur et la machine nous contraint à les supporter tous. Or ceux-ci ne sont pas supportés de la même manière suivant les navigateurs.<br />
Par exemple lorsque l&#8217;utilisateur pose le doigt sur l&#8217;écran: Fennec, la version mobile de Mozilla Firefox, envoie l&#8217;évènement <a href="https://developer.mozilla.org/en/DOM/Touch_events">&laquo;&nbsp;moztouchdown&nbsp;&raquo;</a> alors que Safari Mobile, sur iPhone, enverra un <a href="http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/">&laquo;&nbsp;touchstart&nbsp;&raquo;</a>&#8230;</p>
<p>Pour simplifier le travail des développeurs en masquant les différences entre les navigateurs, jQuery Mobile fournit une <a href="http://jquerymobile.com/demos/1.0a1/#experiments/api-viewer/index.html&#038;ui-page=Events-9">API normalisée</a>. Celle-ci est encore un peu pauvre certes, mais <a href="http://forum.jquery.com/topic/touch-actions">ils prévoient de l&#8217;enrichir</a> rapidement.</p>
<h2>Accessibilité, encore et toujours</h2>
<p>L&#8217;<a href="http://www.w3.org/WAI/intro/aria.php">initiative du W3C sur l&#8217;accessibilité</a> concerne aussi le développement mobile. JQueryMobile tente de suivre au mieux ces directives, notamment pour les lecteurs d&#8217;écrans pour malvoyants.<br />
Par exemple, <strong>l&#8217;iPhone fournit un outil appelé <a href="http://www.apple.com/iphone/features/accessibility.html">VoiceOver</a> </strong>lisant le contenu des pages Web, de mêmes qu&#8217;une loupe ou un système d&#8217;amélioration des contrastes.<br />
La prise en compte de l&#8217;accessibilité lors des tests et du développement de l&#8217;application est donc toujours nécessaire pour le Web Mobile.</p>
<h2>HTML5 est déjà là! (du moins en partie)</h2>
<p>On l&#8217;a vu, jQuery Mobile utilise les &laquo;&nbsp;media queries&nbsp;&raquo; et l&#8217;attribut &laquo;&nbsp;data&nbsp;&raquo; (et peut-être d&#8217;autres) qui font parti des nouveautés de HTML5.<br />
S&#8217;ils n&#8217;hésitent pas à les utiliser, c&#8217;est que les navigateurs de classe A (selon leur classement) les implémentent.<br />
HTML5, un des <em>buzz-words</em> du moment est donc déjà bien en partie présent sur nos mobiles, ce qui est rassurant pour l&#8217;avenir du développement Web, dans le but d&#8217;offrir de nouvelles fonctionnalités et une standardisation de celles-ci.</p>
<h2>Conclusion</h2>
<p>Etudier ce que font des acteurs majeurs doit nous sensibiliser aux problématiques du développement Web pour terminaux mobiles aujourd&#8217;hui, et nous donner des idées pour les résoudre.<br />
Quant à l&#8217;évaluation de la librairie jQuery Mobile elle-même, et de ses concurrents (SensaTouch, Iui&#8230;), cela pourra faire l&#8217;objet d&#8217;un prochain article.</p>
<h4>Crédits</h4>
<p>Photos sous licence Creative Commons de <a href="http://www.flickr.com/photos/jorgecorrea/4359779134/">Jorge Correa</a> et <a href="http://www.flickr.com/photos/toms/180783021/">Toms Baugis</a>.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=16411" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/optimiser-les-performances-de-vos-applications-web-sur-mobile/' rel='bookmark' title='Optimiser les performances de vos applications web sur mobile'>Optimiser les performances de vos applications web sur mobile</a></li>
<li><a href='http://blog.octo.com/applications-mobiles-multi-plateformes-les-approches-phonegap-et-titanium-mobile/' rel='bookmark' title='Applications mobiles multi-plateformes: les approches PhoneGap et Titanium Mobile'>Applications mobiles multi-plateformes: les approches PhoneGap et Titanium Mobile</a></li>
<li><a href='http://blog.octo.com/applications-natives-ou-web-html5-pour-mon-mobile/' rel='bookmark' title='Applications natives ou web HTML5 pour mon mobile ?'>Applications natives ou web HTML5 pour mon mobile ?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/ce-que-jquery-mobile-nous-apprend-sur-le-web-mobile/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Paris Web 2010: les grandes tendances</title>
		<link>http://blog.octo.com/paris-web-2010-les-grandes-tendances/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=paris-web-2010-les-grandes-tendances</link>
		<comments>http://blog.octo.com/paris-web-2010-les-grandes-tendances/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 10:08:04 +0000</pubDate>
		<dc:creator>François Petitit</dc:creator>
				<category><![CDATA[Actualité]]></category>
		<category><![CDATA[accessibilité]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobilité]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=16272</guid>
		<description><![CDATA[L&#8217;édition 2010 de Paris Web, l&#8217;évènement français des acteurs du Web, a eu lieu du jeudi 14 octobre au 16 octobre. Trois jours de sessions passionnantes dont voici les principaux thèmes abordés. Du Web partout Notre consommation du Web a énormément évolué : on y accède depuis nos ordinateurs de bureau, nos téléphones mobiles, nos [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/les-grandes-tendances-de-devoxx-2011/' rel='bookmark' title='Les grandes tendances de Devoxx 2011'>Les grandes tendances de Devoxx 2011</a></li>
<li><a href='http://blog.octo.com/trois-jours-a-qcon-london-2010-tendances-et-confirmations/' rel='bookmark' title='Trois jours à QCon London 2010 : Tendances et Confirmations'>Trois jours à QCon London 2010 : Tendances et Confirmations</a></li>
<li><a href='http://blog.octo.com/octo-a-paris-web-2010-pour-un-atelier-html5/' rel='bookmark' title='OCTO à Paris Web 2010 pour un atelier HTML5'>OCTO à Paris Web 2010 pour un atelier HTML5</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fparis-web-2010-les-grandes-tendances%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Paris%20Web%202010%3A%20les%20grandes%20tendances%22%20%7D);"></div>
<p>L&#8217;édition 2010 de Paris Web, l&#8217;évènement français des acteurs du Web, a eu lieu du jeudi 14 octobre au 16 octobre. Trois jours de sessions passionnantes dont voici les principaux thèmes abordés.<br />
<span id="more-16272"></span></p>
<h2>Du Web partout</h2>
<p>Notre consommation du Web a énormément évolué : on y accède depuis nos ordinateurs de bureau, nos téléphones mobiles, nos tablettes, nos téléviseurs, etc. Et cette multiplication des canaux ne va pas s&#8217;arrêter !</p>
<p><a href="http://www.paris-web.fr/2010/programme/la-conception-universelle-est-ce-toujours-possible.php">Matt May</a>, responsable de l&#8217;accessibilité chez Adobe, a insisté dans sa présentation sur le fait  que nous devons intégrer l&#8217;accélération des changements et des  nouveautés. Il précise qu&#8217;il <em>&laquo;&nbsp;faut accepter l&#8217;entropie et concevoir de manière universelle&nbsp;&raquo;.</em> Cela passe par le  support des divers terminaux, mais aussi par la offrir la capacité aux utilisateurs d&#8217;utiliser nos applications dans toutes les situations : connexions à faible débit ou intermittentes (téléphones mobiles), utilisateurs handicapés, terminaux sans souris, etc.</p>
<p><a href="http://www.paris-web.fr/2010/orateurs/christophe-porteneuve.php">Christophe Porteneuve</a> nous a présenté l&#8217;état de l&#8217;art du développement Web sur smartphone aujourd&#8217;hui. Une grande richesse de frameworks, de pratiques et de possibilités, que le plus difficile aujourd&#8217;hui est de faire un choix entre tous les outils et toutes les possibilités qu&#8217;ils offrent. Tandis qu&#8217;en parallèle, les <a href="http://www.paris-web.fr/2010/orateurs/dominique-hazael-massieux.php">membres du groupe de travail sur le Web mobile du W3C</a> standardisent les bonnes pratiques du Web mobile, afin d&#8217;uniformiser et donc faciliter les développements sur ces plateformes. La grande force du Web reste son ouverture et nous nous devons de bien le connaître pour en prendre le meilleur à chaque instant.</p>
<h2>Le Web accessible pour tous</h2>
<p>L&#8217;accessibilité est régulièrement mise de côté dans les projets Web. <a href="http://www.paris-web.fr/2010/programme/estimer-laccessibilite-de-son-site-15-minutes-top-chrono.php">Denis et Aurélien Levy</a> nous ont pourtant démontré qu&#8217;il est possible en 15 minutes d&#8217;établir un bilan des principales failles d&#8217;accessibilité de nos sites Web pour pouvoir l&#8217;améliorer, en se basant sur les recommendations du <a href="http://fr.wikipedia.org/wiki/Accessibilit%C3%A9_du_Web#WCAG_2.0">Web Content Accessibility Guidelines</a> produit par le W3C. On vérifiera notamment que tout est utilisable en mode texte (même les images), que les balises de structure de page sont bien utilisées (les headers, les tables et les listes), que la navigation au clavier correspond à la logique du site, etc. Améliorer l&#8217;accessibilité ne coûte parfois que peu de temps et permet au moins de faire bénéficier nos sites Web à plus de personnes.</p>
<p>L&#8217;accessibilité doit également être une préoccupation de tous au quotidien, comme nous l&#8217;a montré <a href="http://www.paris-web.fr/2010/orateurs/tanguy-loheac.php">Tanguy Loheac</a>, expert accessibilité chez Sanofi-Aventis. Sur un projet de refonte de l&#8217;application des Ressources Humaines utilisée par tous les salariés, l&#8217;accessibilité n&#8217;était pas une option. Pour mener à bien ce projet, il lui a fallu impliquer tous les acteurs du projet, et sensibiliser les concepteurs et les développeurs.</p>
<p>Un travail de longue haleine, qui ne sera sans doute jamais totalement achevé, mais qui doit nous concerner tous. Et comme le disait Matt May, concernant les handicaps, il ne faut pas oublier que l&#8217;âge moyen des internautes va sans cesse augmenter, et que nous pouvons tous être victime d&#8217;un handicap, même pendant une courte période.<br />
Est-il encore normal en 2010 qu&#8217;un employé ne puisse plus travailler parce qu&#8217;il s&#8217;est cassé le poignet et que l&#8217;application Web qu&#8217;il utilise au quotidien n&#8217;est pas utilisable au clavier?</p>
<h2>La révolution HTML5 et CSS3</h2>
<p>HTML5 n&#8217;est pas que la cinquième version de la norme HTML. C&#8217;est une véritable révolution, qui permet de passer d&#8217;un monde de <em>sites Web</em> à un monde d&#8217;<em>applications Web</em>. Le navigateur devient une véritable <a href="http://blog.octo.com/html5-la-promesse-dun-browser-qui-devient-vm/">machine virtuelle</a> multi-plateforme, fonctionnant hors-ligne, accédant aux périphériques (GPS, appareil photo,accéléromètre, système de fichiers&#8230;), manipulant de la 3D&#8230; <a href="http://www.paris-web.fr/2010/programme/html5-et-ses-amis-nouvelles-apis.php">Paul Rouget</a>, de Mozilla, a fait vibrer l&#8217;amphithéâtre grâce à une démo impressionnante, comprenant de la modélisation 3D calculée en temps réel avec <a href="http://fr.wikipedia.org/wiki/WebGL">WebGL</a>, de l&#8217;audio, le tout accompagné de Web sockets, et cela d&#8217;une fluidité inattendue. Une émotion d&#8217;une rare intensité, et uniquement avec des technologies Web.</p>
<p>Des fonctionnalités de HTML5 sont déjà utilisées par de nombreux développeurs. Et rester compatible avec les clients qui ne le supportent pas n&#8217;est pas un problème car les outils existent, comme nous l&#8217;a montré <a href="http://www.paris-web.fr/2010/programme/html5-cest-maintenant-ie6-inclus.php">Jean-Pierre Vincent</a>.</p>
<p>CSS3 est la deuxième grande évolution de langages Web, et <a href="http://www.paris-web.fr/2010/orateurs/dave-shea.php">Dave Shea</a>, un des designers Web de référence dans le monde, auteur de CSS Zen Garden, nous en a montré les impacts. CSS3 apporte de nouvelles fonctionnalités facilitant le travail d&#8217;intégration, et qui permettent par exemple de limiter l&#8217;utilisation d&#8217;images ou de JavaScript pour les animations. Cela a donné lieu à un débat passionné lancé par <a href="http://www.paris-web.fr/2010/programme/css3-photoshop-avenir-web-designer.php">Francis Chouquet</a>, demandant si cela ne pousserait pas les web designers à concevoir les sites directement avec CSS3, sans passer par la case Photoshop&#8230;</p>
<h2>Du JavaScript côte serveur ?</h2>
<p>Cela vous surprend ? C&#8217;est normal. Bien que <a href="http://www.paris-web.fr/2010/programme/le-javascript-server-side-faire-un-point.php">Quentin Adam</a>, lors de sa session, nous a rappelé que LiveScript, le moteur à l&#8217;origine du premier moteur JavaScript, avait au départ été développé par Netscape pour leur serveur HTTP.</p>
<p>Cette nouvelle tendance s&#8217;accompagne du développement de serveurs JavaScript, les plus populaires étant Ajax Push Engine et surtout Node.js. Ils sont particulièrement intéressants pour le web &laquo;&nbsp;temps réel&nbsp;&raquo;, car ils permettent de développer très rapidement des Web sockets, comme nous l&#8217;a démontré <a href="http://www.paris-web.fr/2010/orateurs/jonathan-blanchet.php">Jonathan Blanchet</a>.</p>
<p>En revanche, passer d&#8217;un environnement serveur Rails, PHP, Java ou autre, à un serveur JavaScript nous paraît encore peu justifié, d&#8217;autant plus que l&#8217;écosystème est encore assez pauvre et artisanal.</p>
<h2>Conclusion</h2>
<p>Les orateurs nous l&#8217;ont montré : tout va très vite, le Web est plus que jamais actif et ses acteurs bouillonnent d&#8217;idées. La grande nouveauté est la promesse de pouvoir bientôt l&#8217;utiliser pour tout et sur tous les types de supports.<br />
Il sera alors de notre devoir de faire les bons choix sans perdre de vue certains objectifs qui doivent rester des valeurs du Web : l&#8217;accessibilité et la capacité d&#8217;être utilisé partout et par tous.</p>
<p>Enfin, nous tenons à remercier les organisateurs de Paris Web pour leur superbe travail et leurs efforts pour que leur conférence soit en temps réel accessible à tous : casque audio avec traduction en français des présentations en anglais, transcription en sous titrage et traduction en langue des signes française.</p>
<p>A l&#8217;année prochaine, et restez à l&#8217;écoute de <a href="http://twitter.com/parisweb/">@ParisWeb</a> pour les futurs évènements.</p>
<h4>Quelques liens</h4>
<p>Les vidéos des anciennes éditions, et bientôt de celle de 2010, sont disponibles gratuitement ici: <a href="http://videos.paris-web.fr/">http://videos.paris-web.fr/</a><br />
La plupart des slides sont également disponibles sur Slideshare: <a href="http://www.slideshare.net/tag/parisweb">http://www.slideshare.net/tag/parisweb</a></p>
<h4>et quelques photos de l&#8217;évènement et du staff, merci à vous!</h4>
<p style="text-align: center;"><a rel="lightbox-pw2010" href="http://blog.octo.com/wp-content/uploads/2010/10/david-shea.jpg"><img src="http://blog.octo.com/wp-content/uploads/2010/10/david-shea-150x150.jpg" alt="Transcription et Traduction en LSF en temps réel de la présentation de David Shea" title="Transcription et Traduction en LSF en temps réel de la présentation de David Shea" width="90" height="90" class="aligncenter size-thumbnail wp-image-16350" /></a> <a rel="lightbox-pw2010" href="http://blog.octo.com/wp-content/uploads/2010/10/paul-rouget.jpg"><img src="http://blog.octo.com/wp-content/uploads/2010/10/paul-rouget-150x150.jpg" alt="Démonstration Web GL, vidéo, audio, etc. de Paul Rouget" title="Démonstration Web GL, vidéo, audio, etc. de Paul Rouget" width="90" height="90" class="aligncenter size-thumbnail wp-image-16355" /></a> <a rel="lightbox-pw2010" href="http://blog.octo.com/wp-content/uploads/2010/10/parisweb-staff.jpg"><img src="http://blog.octo.com/wp-content/uploads/2010/10/parisweb-staff-150x150.jpg" alt="Standing ovation pour le staff de Paris Web" title="Standing ovation pour le staff de Paris Web" width="90" height="90" class="aligncenter size-thumbnail wp-image-16352" /></a></p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=16272" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/les-grandes-tendances-de-devoxx-2011/' rel='bookmark' title='Les grandes tendances de Devoxx 2011'>Les grandes tendances de Devoxx 2011</a></li>
<li><a href='http://blog.octo.com/trois-jours-a-qcon-london-2010-tendances-et-confirmations/' rel='bookmark' title='Trois jours à QCon London 2010 : Tendances et Confirmations'>Trois jours à QCon London 2010 : Tendances et Confirmations</a></li>
<li><a href='http://blog.octo.com/octo-a-paris-web-2010-pour-un-atelier-html5/' rel='bookmark' title='OCTO à Paris Web 2010 pour un atelier HTML5'>OCTO à Paris Web 2010 pour un atelier HTML5</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/paris-web-2010-les-grandes-tendances/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>OCTO à Paris Web 2010 pour un atelier HTML5</title>
		<link>http://blog.octo.com/octo-a-paris-web-2010-pour-un-atelier-html5/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=octo-a-paris-web-2010-pour-un-atelier-html5</link>
		<comments>http://blog.octo.com/octo-a-paris-web-2010-pour-un-atelier-html5/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 10:13:00 +0000</pubDate>
		<dc:creator>Mickaël Morier</dc:creator>
				<category><![CDATA[Actualité]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[paris web]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=15925</guid>
		<description><![CDATA[La cinquième édition de la conférence Paris Web aura lieu du 14 au 16 octobre, abordant les thèmes de l’accessibilité Web, du design numérique et des standards ouverts. OCTO y sera activement représenté par Mickaël Morier et François Petitit qui animeront le samedi l&#8217;atelier HTML5 pour mon ordinateur et mon mobile, dont voici le détail [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/paris-web-2010-les-grandes-tendances/' rel='bookmark' title='Paris Web 2010: les grandes tendances'>Paris Web 2010: les grandes tendances</a></li>
<li><a href='http://blog.octo.com/octo-au-paris-web-2009/' rel='bookmark' title='OCTO au Paris-Web 2009'>OCTO au Paris-Web 2009</a></li>
<li><a href='http://blog.octo.com/applications-natives-ou-web-html5-pour-mon-mobile/' rel='bookmark' title='Applications natives ou web HTML5 pour mon mobile ?'>Applications natives ou web HTML5 pour mon mobile ?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Focto-a-paris-web-2010-pour-un-atelier-html5%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22OCTO%20%C3%A0%20Paris%20Web%202010%20pour%20un%20atelier%20HTML5%22%20%7D);"></div>
<p><img class="alignnone" src="http://www.paris-web.fr/telechargements/banniere-paris-web-468x60-on.jpg" alt="ParisWeb2010-OnYSera" width="421" height="54" /><br />
La cinquième édition de la conférence <a href="http://www.paris-web.fr/2010/">Paris Web</a> aura lieu du 14 au 16 octobre, abordant les thèmes de l’accessibilité Web, du design numérique et des standards ouverts. OCTO y sera activement représenté par Mickaël Morier et François Petitit qui animeront le samedi l&#8217;atelier <a title="HTML5 pour mon ordinateur et mon mobile" href="http://www.paris-web.fr/2010/programme/html5-pour-mon-ordinateur-et-mon-mobile.php">HTML5 pour mon ordinateur et mon mobile</a>, dont voici le détail :</p>
<blockquote><p>la révolution HTML5 est en marche à la fois pour les navigateurs de bureau et pour les navigateurs mobiles. Pourtant, peut-on développer les mêmes  applications web HTML5 sur toutes les plateformes, et de la même manière? Nous verrons à-travers des exemples concrets, les possibilités offertes par les deux types de plateformes, et ce qui peut les différencier. Nous développerons une petite application dans l&#8217;esprit des Coding Dojo, ce qui permettra à tous de prendre le clavier et coder une partie de cette application. Vous serez les bienvenu(e)s!</p></blockquote>
<p>Victime de son succès, Paris Web affiche déjà complet&#8230; Nous espérons donc que vous avez déjà réservé vos places pour vous y rencontrer!</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=15925" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/paris-web-2010-les-grandes-tendances/' rel='bookmark' title='Paris Web 2010: les grandes tendances'>Paris Web 2010: les grandes tendances</a></li>
<li><a href='http://blog.octo.com/octo-au-paris-web-2009/' rel='bookmark' title='OCTO au Paris-Web 2009'>OCTO au Paris-Web 2009</a></li>
<li><a href='http://blog.octo.com/applications-natives-ou-web-html5-pour-mon-mobile/' rel='bookmark' title='Applications natives ou web HTML5 pour mon mobile ?'>Applications natives ou web HTML5 pour mon mobile ?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/octo-a-paris-web-2010-pour-un-atelier-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5, offline et sécurité</title>
		<link>http://blog.octo.com/html5-offline-et-securite/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=html5-offline-et-securite</link>
		<comments>http://blog.octo.com/html5-offline-et-securite/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 14:40:44 +0000</pubDate>
		<dc:creator>François Petitit</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[développements]]></category>
		<category><![CDATA[Gears]]></category>
		<category><![CDATA[HTML 5]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=13220</guid>
		<description><![CDATA[Un article récent publié sur InfoQ abordait la sécurité de HTML5 dans sa globalité, et notamment sur des attaques concernant les nouvelles fonctionnalités de navigation hors-ligne de HTML5. Quelles sont donc ces fonctionnalités et qu&#8217;en est-il vraiment des risques associés? Rappel historique La seule possibilité pour une application web HTML/JavaScript de stocker des données dans [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/html5-la-promesse-dun-browser-qui-devient-vm/' rel='bookmark' title='HTML5 : la promesse d&#8217;un browser qui devient VM'>HTML5 : la promesse d&#8217;un browser qui devient VM</a></li>
<li><a href='http://blog.octo.com/tous-les-navigateurs-acceptent-html5-et-css3/' rel='bookmark' title='Tous les navigateurs acceptent HTML5 et CSS3'>Tous les navigateurs acceptent HTML5 et CSS3</a></li>
<li><a href='http://blog.octo.com/applications-natives-ou-web-html5-pour-mon-mobile/' rel='bookmark' title='Applications natives ou web HTML5 pour mon mobile ?'>Applications natives ou web HTML5 pour mon mobile ?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fhtml5-offline-et-securite%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22HTML5%2C%20offline%20et%20s%C3%A9curit%C3%A9%22%20%7D);"></div>
<p>Un <a href="http://www.infoq.com/news/2010/08/html5-secure-enough">article récent publié sur InfoQ</a> abordait la sécurité de <a href="http://blog.octo.com/applications-natives-ou-web-html5-pour-mon-mobile/">HTML5</a> dans sa globalité, et notamment sur des attaques concernant les nouvelles <a href="http://dev.w3.org/html5/spec/offline.html#appcache">fonctionnalités de navigation hors-ligne de HTML5</a>.
<p />
Quelles sont donc ces fonctionnalités et qu&#8217;en est-il vraiment des risques associés?
<p />
<span id="more-13220"></span></p>
<h3><strong>Rappel historique</strong></h3>
<p>La seule possibilité pour une application web HTML/JavaScript de stocker des données dans un navigateur était jusqu&#8217;à récemment de les stocker dans un <a href="http://fr.wikipedia.org/wiki/Cookie_%28informatique%29">cookie</a>. Limités en taille (la <a href="http://tools.ietf.org/html/rfc2965">spécification</a> exige seulement des navigateurs qu&#8217;ils puissent gérer 4096 octets par cookie!), parfois refusés par les navigateurs et nettoyés régulièrement, et assimilés à des logiciels espions par les antivirus, leur fiabilité restait très limitée.<br />
D&#8217;autres technologies à base de plugins, comme Adobe Flash, utilisaient des procédés propriétaires ne répondant pas aux normes du W3C (les &laquo;&nbsp;<a href="http://en.wikipedia.org/wiki/HTTP_cookie#Adobe_Flash_Local_Shared_Objects">super cookies</a>&laquo;&nbsp;) et très critiquées pour leur opacité (manque de contrôle pour l&#8217;utilisateur pour savoir quelles informations sont stockées ou les supprimer). En 2007, Google a sorti <strong><a href="http://gears.google.com/">Google Gears</a></strong> qui a permis de stocker des données dans le navigateur sous la forme d&#8217;une base de  données relationnelle et de disposer en local d&#8217;un cache de ressources (cf. les <a href="http://blog.octo.com/et-si-vous-rendiez-vos-applications-web-offline-part-1/">articles publiés par Olivier Mallassi</a> sur le blog OCTO).</p>
<p>Cette nouveauté a permis le développement de véritables <strong>applications web</strong> stockant un nombre conséquent de données en local, permettant un <strong>fonctionnement déconnecté</strong> de l&#8217;application et une <strong>meilleure réactivité</strong> en évitant d&#8217;inutiles aller-retours avec le serveur. L&#8217;exemple le plus marquant étant naturellement le client mail de Google, Gmail, qui innovait en plus avec le &laquo;&nbsp;flaky mode&nbsp;&raquo; où l&#8217;utilisateur naviguait en permance en local, utilisant les ressources stockées dans son navigateur, et où l&#8217;application mettait à jour ces données quand une connexion à Internet était disponible. Cependant, Google Gears restait un produit de Google, et son implémentation sur les navigateurs n&#8217;était pas garantie.</p>
<p>Le groupe de travail sur HTML5, auquel contribue fortement Google, a alors déclaré vouloir<strong> inclure dans la spécification HTML5 des normes de stockage local</strong> s&#8217;inspirant de Google Gears. En parallèle, début 2009, Google a d&#8217;ailleurs arrêté le développement de Google Gears, au profit de l&#8217;implémentation de la norme HTML5.</p>
<p>Cette normalisation contraint déjà les navigateurs web à implémenter ces mécanismes, entraînant à coup sûr une <strong>démocratisation</strong> de leur utilisation par les applications web.
<p />
<h3>Quels sont les risques liés au stockage local?</h3>
<p>Parmi les sites précurseurs dans l&#8217;utilisation de stockage local se trouvent les <strong>webmails</strong>. Les données stockées  dans  le navigateur sont donc les courriers électroniques de l&#8217;utilisateur, qui sont des données très critiques par-rapport au respect de la vie privée, sans parler des cas où certains mails contiendraient des données plus sensibles, comme un numéro de compte bancaire&#8230;<br />
Il convient donc impérativement de <strong>s&#8217;assurer qu&#8217;aucun tiers ne puisse accéder à ces données</strong>.
<p />
<h3><strong>Quels sont les mécanismes de stockage local?</strong></h3>
<p>HTML5 prévoit deux systèmes de <strong>stockage de données</strong> en local : </p>
<ul>
<li>le <strong>Web Storage</strong>, comprenant <em>local storage</em>, toujours accessible à l&#8217;application et permettant par exemple à des onglets différents de partager des données, et le <em>session storage</em>, accessible uniquement à une fenêtre donnée. Les données sont stockées sous la forme de clés/valeurs,</li>
<li>la <strong>Web SQL Database</strong> fournissant cette fois une base de données relationnelle, implémentée par les navigateurs avec SQLite. Signalons au passage que le choix de SQLite a été fait par les éditeurs de navigateurs au détriment de la proposition initiale de &laquo;&nbsp;Indexed DB&nbsp;&raquo; proposée par le W3C. </li>
</ul>
<p>Un autre système de stockage local est fourni sous la forme de <strong><a href="http://dev.w3.org/html5/spec/offline.html#appcache">caches</a></strong> permettant cette fois-ci de <strong>stocker des ressources</strong> (images, fichiers JavaScript, etc.) et non plus des données.</p>
<p>Dans leurs spécifications respectives, le W3C aborde la sécurité, et décrit les mêmes problématiques pour les deux.
<p />
<h3>Quels risques et quelles protections?</h3>
<p />
<strong>La seule protection spécifiée par le W3C concerne l&#8217;origine des sites</strong> : des données stockées par un site A ne doivent pas être visibles pour un site B, en se basant sur  l&#8217;hôte du site et le port. Cela empêche par exemple une iframe inclus dans un site, typiquement un encart publicitaire, d&#8217;avoir accès aux données stockées localement par ce site.</p>
<p>Ce systèmes ne protège pas de certaines attaques, d&#8217;ailleurs décrites dans la spécification :</p>
<p>- les <strong>attaques par  <a href="http://fr.wikipedia.org/wiki/Usurpation_d%27adresse_IP">usurpation de DNS</a></strong>, qui consistent à usurper une adresse IP d&#8217;un serveur pour envoyer des paquets à sa place. Ce risque sera toutefois mitigé en utilisant SSL, et concerne le web dans sa globalité.</p>
<p>- le <strong>partage de nom d&#8217;hôte</strong> entre plusieurs sites : si le site d&#8217;adresse <em>http://www.mon-site.com/site1</em> stocke des données, un autre site d&#8217;adresse <em>http://www.mon-site.com/site2</em> y aura accès sans resctriction. Le risque étant faible de se faire attaquer par ce biais, car on a déjà fait confiance au premier site.</p>
<p>On remarquera que les <strong>attaques par <em>XSS</em> (<a href="http://fr.wikipedia.org/wiki/Cross-site_scripting">cross site scripting</a>)</strong> ne sont pas mentionnées et constituent pourtant un risque important, bien mis en valeur par l&#8217;<a href="http://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29">OWASP</a>. On pourra le mitiger avec notamment un <a href="http://www.owasp.org/index.php/Reviewing_Code_for_Cross-site_scripting">contrôle du code</a> côté serveur et une validation des données passées dans les formulaires.</p>
<p>La spécification ne prévoit pas d&#8217;autre mécanisme de sécurité.</p>
<p>Un point très important n&#8217;est pas abordé dans la spécification et pourrait pourtant s&#8217;avérer crucial : <strong>la spécification ne prévoit que les données stockées en base locale soient cryptées, elles sont toujours stockées en clair</strong>.<br />
Ce point a été soulevé par <a href="http://www.nczonline.net/about/">Nicholas C. Zakas</a> (un des référents mondiaux sur le langage JavaScript notamment, qui contribue à HTML5). Il a même proposé une proposition très détaillée d&#8217;évolution de la spécification vers un <strong>cryptage des données</strong>, décrite dans ce <a href="http://www.nczonline.net/blog/2010/04/13/towards-more-secure-client-side-data-storage/">billet.</a><br />
Dans ce système, un serveur d&#8217;application web aurait la responsabilité de chiffrer les données sur le client, avec une clé de cryptage gérée par l&#8217;application. Concrètement, une application web devrait exécuter la méthode Javascript suivante pour ouvrir la connexion en base de données :<br />
<code lang="javascript"><br />
window.openSecureStorage("mystorage", window.AES_128, key, function(storage){<br />
   //use storage object<br />
});<br />
</code><br />
L&#8217;application web choisirait donc l&#8217;algorithme de cryptage et la clef. Ainsi, <strong>même si un attaquant parvenait à récupérer des données, il ne pourrait les exploiter</strong>. On remarquera d&#8217;ailleurs que sans cryptage, toute personne ayant acccès physiquement au poste client pourra lire toutes ces données&#8230;
<p />
Bien que sa proposition soit assez complète et détaillée, il n&#8217;y a pas encore eu de suite à ma connaissance de la part d&#8217;autres acteurs du web.
<p />
<p>On peut tout de même se rassurer concernant les postes publiques (cyber cafés, etc.). En effet, les données sont stockées dans le navigateur dans un profil créé pour l&#8217;utilisateur, qui est normalement effacé lorsqu&#8217;il quitte le poste et que le compte est ré-initialisé, ce qui doit être l&#8217;usage pour ce type de poste. L&#8217;utilisateur devant tout de même s&#8217;en assurer, ce qui est loin d&#8217;être évident pour un utilisateur non initié. Il est ici plus question d&#8217;<strong>éducation des utilisateurs</strong> que de technologie.</p>
<p>Enfin, les caches peuvent quant à eux être attaqués par <strong><a href="http://www.owasp.org/index.php/Cache_Poisoning">&laquo;&nbsp;Cache poisoning&nbsp;&raquo;</a></strong>. L&#8217;objectif de l&#8217;attaquant est alors d&#8217;injecter dans le cache du navigateur un fichier JavaScript en remplacement d&#8217;un fichier fourni par le serveur &laquo;&nbsp;sain&nbsp;&raquo;, et dont le script malicieux serait exécuté par le client. Ce risque est à prendre en compte particulièrement dans les réseaux wifi ouverts comme on en trouve par exemple dans des restaurants, mais si ces attaques sont difficiles à détecter et à contrer, le risque s&#8217;avère relativement faible d&#8217;après les conditions requises pour permettre l&#8217;attaque, <a href="http://www.owasp.org/index.php/Cache_Poisoning">citées par l&#8217;OWASP</a>.</p>
<h2>Conclusion</h2>
<p />
<p>Malgré cette énumération de risques, qui plus est incomplète, il convient d&#8217;insister sur le fait qu&#8217;ils ne sont pas spécifiques à HTML5 mais au contraire inhérents au web depuis ses débuts.<br />
La nouveauté avec HTML5 est qu&#8217;il offre la possibilité de faire des application plus riches, stockant plus de données localement.<br />
Cela doit simplement inciter les concepteurs et développeurs d&#8217;applications web à une certaine vigilance concernant la sécurité des données locales, mais ne vous y méprenez pas, HTML5 constitue bien dès aujourd&#8217;hui une formidable opportunité pour vos applications web!</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=13220" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/html5-la-promesse-dun-browser-qui-devient-vm/' rel='bookmark' title='HTML5 : la promesse d&#8217;un browser qui devient VM'>HTML5 : la promesse d&#8217;un browser qui devient VM</a></li>
<li><a href='http://blog.octo.com/tous-les-navigateurs-acceptent-html5-et-css3/' rel='bookmark' title='Tous les navigateurs acceptent HTML5 et CSS3'>Tous les navigateurs acceptent HTML5 et CSS3</a></li>
<li><a href='http://blog.octo.com/applications-natives-ou-web-html5-pour-mon-mobile/' rel='bookmark' title='Applications natives ou web HTML5 pour mon mobile ?'>Applications natives ou web HTML5 pour mon mobile ?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/html5-offline-et-securite/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

