<?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/"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:media="http://search.yahoo.com/mrss/"
> <channel><title>Blog Xebia France &#187; Mobilité</title> <atom:link href="http://blog.xebia.fr/category/mobilite/feed/" rel="self" type="application/rss+xml" /><link>http://blog.xebia.fr</link> <description>J2EE, Agilité et SOA</description> <lastBuildDate>Wed, 08 Feb 2012 09:23:16 +0000</lastBuildDate> <language>fr</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <copyright>CC BY-NC-ND 2.0 http://creativecommons.org/licenses/by-nc-nd/2.0/fr/</copyright> <managingEditor>blog-france@xebia.com (Xebia France)</managingEditor> <webMaster>blog-france@xebia.com (Xebia France)</webMaster> <ttl>1440</ttl> <image> <url>http://blog.xebia.fr/videos/xebia-podcast.png</url><title>Blog Xebia France</title><link>http://blog.xebia.fr</link> <width>144</width> <height>144</height> </image> <itunes:new-feed-url>http://blog.xebia.fr/feed/podcast/</itunes:new-feed-url> <itunes:subtitle>Les podcasts de Xebia France vous permettent de suivre l&#039;actualité autour de Java, de l&#039;agilité, des technologies Web et bien d&#039;autres. Xebia France est une entreprise spécialisée dans les technologies Java et JEE en environnement agi[...]</itunes:subtitle> <itunes:summary>Les podcasts de Xebia France vous permettent de suivre l&#039;actualité autour de Java, de l&#039;agilité, des technologies Web et bien d&#039;autres. Xebia France est une entreprise spécialisée dans les technologies Java et JEE en environnement agile.</itunes:summary> <itunes:keywords>Xebia, Java, JEE, SOA, Agile, Méthodes, Agiles</itunes:keywords> <itunes:category text="Technology" /> <itunes:category text="Technology"> <itunes:category text="Software How-To" /> </itunes:category> <itunes:category text="Technology"> <itunes:category text="Tech News" /> </itunes:category> <itunes:author>Xebia France</itunes:author> <itunes:owner> <itunes:name>Xebia France</itunes:name> <itunes:email>blog-france@xebia.com</itunes:email> </itunes:owner> <itunes:block>no</itunes:block> <itunes:explicit>no</itunes:explicit> <itunes:image href="http://blog.xebia.fr/videos/xebia-podcast.png" /> <item><title>Adobe Air, le futur du développement Mobile ?</title><link>http://blog.xebia.fr/2010/12/06/adobe-air-le-futur-du-developpement-mobile/</link> <comments>http://blog.xebia.fr/2010/12/06/adobe-air-le-futur-du-developpement-mobile/#comments</comments> <pubDate>Mon, 06 Dec 2010 21:13:50 +0000</pubDate> <dc:creator>Erwan Alliaume</dc:creator> <category><![CDATA[Mobilité]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[AIR]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[blackberry]]></category> <category><![CDATA[iPhone]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=6082</guid> <description><![CDATA[On dit souvent que le développement mobile ressemble au développement web d&#8217;il y a 10 ans. Jusqu&#8217;à présent, il fallait choisir entre développer une application native ou une application Web Mobile. Les applications natives sont souvent préférées pour le moment, car elles offrent souvent une meilleure expérience utilisateur. Quant aux applications Web Mobile, elles ont [...]]]></description> <content:encoded><![CDATA[<p>On dit souvent que le développement mobile ressemble au développement web d&#8217;il y a 10 ans. Jusqu&#8217;à présent, il fallait choisir entre développer une application native ou une application Web Mobile. Les applications natives sont souvent préférées pour le moment, car elles offrent souvent une <a
href="http://blog.xebia.fr/2010/10/15/le-contexte-la-pepite-dinformation-pour-une-application-mobile-reussie/" title="meilleure exprience utilisateur" >meilleure expérience utilisateur</a>.<br
/> Quant aux applications Web Mobile, elles ont l&#8217;avantage de faciliter la mise à jour et le déploiement d’application, et ont le mérite d’être accessibles quelle que soit votre plateforme, pour peu que vous disposiez d’une connexion internet. Et bien, il se pourrait bien qu&#8217;Adobe soit en train de changer la <em>donne</em> en introduisant sa solution <a
href="http://www.adobe.com/products/air/" title="Air" >Air</a> qui vous promet le meilleur des 2 mondes !</p><p>Lors du dernier <a
href="http://blog.xebia.fr/2010/12/03/tous-reunis-chez-xebia-pour-le-xke/" title="XKE" >XKE</a>, nous avons eu la visite de <a
href="http://www.riagora.com/" title="Michal Chaize" >Michaël Chaize</a> qui est venu nous présenter les nouvelles solutions Adobe. Fort d&#8217;une matinée plutôt réussie, j&#8217;arrive à ce slot un peu blasé et fatigué en me demandant un peu l’intérêt d’une telle présentation. <em>Allez c&#8217;est reparti, je vais encore avoir le droit au discours technico-commercial que j&#8217;ai eu chez mon cher client quelques semaines auparavant.</em><br
/> Et bien que nenni ! Bien au contraire ! Je suis sorti de celui-ci avec une <strong>folle envie</strong> d&#8217;essayer de suite les technologies qu&#8217;il nous a présenté, en particulier celles qui touchaient à la <strong>mobilité</strong>.<br
/> Avant ce slot, j&#8217;avais bien entendu parler <a
href="http://blogs.adobe.com/air/2010/05/air_android_prerelease.html" title="ici" >ici</a> et <a
href="http://blog.xebia.fr/2010/11/22/devoxx-deployer-vos-applications-air-sur-android/" title="l" >là</a> de l&#8217;émergence d&#8217;une telle solution, mais rien ne m&#8217;avait donné l&#8217;envie de m&#8217;y essayer. C&#8217;est maintenant chose faite !</p><p>La plateforme Air propose donc :</p><ul><li><a
href="http://blog.xebia.fr/2010/12/06/adobe-air-le-futur-du-developpement-mobile/#Writeonceruneverywhere">une machine virtuelle multi-plateforme</a></li><li><a
href="http://blog.xebia.fr/2010/12/06/adobe-air-le-futur-du-developpement-mobile/#Flexunframeworkadaptlamobilit">un langage adapté à la mobilité</a></li><li><a
href="http://blog.xebia.fr/2010/12/06/adobe-air-le-futur-du-developpement-mobile/#Pasencoreproductionready">une solution pas tout à fait sèche</a></li><li><a
href="http://blog.xebia.fr/2010/12/06/adobe-air-le-futur-du-developpement-mobile/#Nesoyezpastimidelancezvous">un ticket d&#8217;entrée relativement faible</a></li></ul><h4><a
name="Writeonceruneverywhere"></a>Write once, run everywhere ?</h4><p>Les applications Air s&#8217;exécutant sur une machine virtuelle, toute plateforme disposant de celle-ci est à même d&#8217;exécuter vos applications. Adobe vous propose ici, d&#8217;adopter un framework &#8211; Flex &#8211; et une base de code unique pour toutes les plateformes que vous ciblez. L&#8217;API Air vous permet d&#8217;interagir avec le hardware de votre téléphone. Vous pouvez contrôler programmatiquement la présence de tel ou tel composant.</p><p>Sur Android, seuls quelques téléphones disposent de la machine virtuelle pré-installée. Pour les autres elle est disponible sur l&#8217;Android Market pour peu que vous disposiez d&#8217;un firmware récent (>= 2.2). Lorsque vous installez une application Air, si vous ne disposez pas du moteur d&#8217;exécution, un message vous propose son téléchargement et vous renvoie sur le market, contrairement à la version iPhone où le moteur est embarqué dans les applications (il est donc forcément téléchargé).</p><p>Si Air peut s&#8217;exécuter sur toutes ces plateformes, l&#8217;outil <a
href="http://blog.xebia.fr/2010/11/22/devoxx-deployer-vos-applications-air-sur-android/" title="Flash Builder 4.5 preview" >Flash Builder 4.5 preview</a>, connu aussi sous le nom de Burrito, ne permet pour le moment que le développement Android. Bien que <a
href="http://coenraets.org/blog/2010/12/deploying-a-flex-application-to-the-blackberry-playbook-and-android-devices/" title="certaines vidos" >certaines vidéos</a> montrent une compatibilité Blackberry, l&#8217;option n&#8217;est pas encore disponible dans la version de Flash Builder que j&#8217;ai téléchargé.</p><p>La taille du runtime n&#8217;est pas négligeable, sur mon Nexus One il prend 16 Mo après installation. L&#8217;option d&#8217;installation sur la carte SD n&#8217;est pas activée, inutile de bidouiller votre téléphone pour déplacer le runtime, les performances de celui-ci n&#8217;en seraient que dégradées.</p><p>Sur le papier, cette technologie permet de ne plus avoir à faire le choix d&#8217;un développement iPhone, Android ou Blackberry. En pratique, du nous sommes en pleine guerre de chapelle pour savoir où et comment seront installés les runtimes. Par exemple, à ce jour, il manque un d&#8217;incontournable dans la liste des partenaires de l&#8217;<a
href="https://projects.xebia.com/confluence/pages/editpage.action?pageId=6979602" title="Open Screen Alliance" >Open Screen Alliance</a>. Air sans Apple, c&#8217;est un peu comme une forêt sans écureuil comme disait Asterix dans l&#8217;un de ses albums.</p><p>Quoi qu&#8217;il en soit, la perspective du <em>write once, run everywhere</em> est alléchante <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> Wait &#038; See&#8230;</p><h4><a
name="Flexunframeworkadaptlamobilit"></a>Flex, un framework adapté à la mobilité !</h4><p>Flex a été conçu dans l&#8217;optique de créer des composants riches. Il mêle description XML des composants graphiques (boutons, checkbox, listes &#8230;) &#8211; le MXML &#8211; à un langage de scripting &#8211; l&#8217;Actionscript 3 &#8211; permettant de donner vie à vos composants. Faisant moi même du Flex depuis 6 mois, je suis persuadé que ce langage est parfaitement adapté au développement d&#8217;applications mobiles.</p><p>À titre de comparaison, dans une application Android développée en Java l&#8217;écriture des écrans est relativement pénible :</p><ul><li>en full java, la syntaxe est lourde à manier (setters complexes, listener volumineux &#8230;),</li><li>en XML, vous devez récupérer vos éléments graphiques par leur <em>ID</em> à partir du Java pour leur rajouter du comportement.</li></ul><p>En résumé, le développent Android c&#8217;est faire du client lourd avec un langage peu flexible.</p><p>Flex est un langage pensé et conçu pour effectuer des actions asynchrones. Le langage permet l&#8217;ajout de comportements à des composants très simplement grâce à différents mécanismes dont :</p><ul><li>le passage de fonctions en paramètre, pratique pour passer des handlers sur des événements.</li><li>le databinding, qui permet de notifier la mise à jour d&#8217;un <em>model</em> aux composants qui le désirent.</li></ul><p>De plus, dernière bonne surprise, les composants graphiques utilisables dans une application mobile sont exactement les mêmes que ceux que vous utilisez dans une application Flex classique. L&#8217;apparence et le comportement ont simplement été adaptés pour les applications mobiles grâce à un nouveau Skin pour mobile dans la librairie Spark.</p><h4><a
name="Pasencoreproductionready"></a>Pas encore production ready&#8230;</h4><p>C&#8217;est bien joli tout cela, mais la peinture n&#8217;est pas complètement sèche.</p><p>Les outils ne sont disponibles qu&#8217;en version preview. Pourtant, l&#8217;intégration du développement mobile à Flash Builder est vraiment bien avancée :</p><ul><li>une vue design permet l&#8217;élaboration rapide d&#8217;écrans,</li><li>un éditeur de composants bien pratique,</li><li>un gestionnaire d&#8217;appareils vous permet de lancer des simulateurs, il contient d&#8217;ailleurs bon nombre de périphériques pré-configurés,</li><li>l&#8217;installation sur un téléphone physique fonctionne tout aussi bien.</li></ul><p>Mais il reste des progrès à faire au niveau des performances. Si l&#8217;exécution d&#8217;applications mobiles Air est bluffante sur l&#8217;émulateur, j&#8217;avoue rester un peu sur ma faim lors de l&#8217;exécution d&#8217;une même application sur mon Nexus One. (il en était de même lors de la démonstration sur tablette Android lors du XKE). Le scrolling des listes, par exemple, n&#8217;est pas aussi performant que sur une application native, la solution Flex rame encore un peu. Et plus généralement, une application Air Mobile consomme plus de CPU et de mémoire qu&#8217;une application native classique.</p><p>Mais surtout, les accords de distribution des moteurs d&#8217;exécution Air n&#8217;étant pas encore terminés, rien ne vous garantit que vous puissiez réellement profiter de votre application mobile Air sur toutes les grandes plateformes mobiles du moment.</p><h4><a
name="Nesoyezpastimidelancezvous"></a>Ne soyez pas timide, lancez-vous !</h4><p>Que vous soyez développeur mobile ou non, que vous soyez flexeur ou non, n&#8217;hésitez pas à vous lancer pour vous faire un avis. Pour cela rien de plus simple, tout est disponible gratuitement sur les <a
href="http://labs.adobe.com/" title="Labs Adobe" >Labs Adobe</a> : Adobe Flash Builder en version 4.5 preview (Burrito) (pendant 60 jours) et Adobe AIR Launchpad.</p><p>Si vous désirez essayer votre projet sur votre mobile Android (disposant d&#8217;Android 2.2 a minima), installez sur celui-ci le Runtime Air. Une fois cela fait, vous devriez mettre moins de 15 minutes pour exécuter votre première application Air sur votre mobile.</p><p>En guise de conclusion, je vous ai préparé une petite vidéo qui présente :</p><ul><li>la génération d&#8217;un projet Air mobile avec AIR Launchpad.</li><li>l&#8217;utilisation de Flash Builder pour lancer votre application Air sur une plateforme Android.</li></ul><p><a
href="http://blog.xebia.fr/2010/12/06/adobe-air-le-futur-du-developpement-mobile/"><em>Cliquer ici pour voir la vidéo.</em></a></p><div
align="center"> <a
href="http://twitter.com/ealliaume" ><br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/04/twitter4.png"  alt="twitter erwan alliaume" title="twitter erwan alliaume" border="0" /><br
/> </a></div><div
class="shr-publisher-6082"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F12%2F06%2Fadobe-air-le-futur-du-developpement-mobile%2F' data-shr_title='Adobe+Air%2C+le+futur+du+d%C3%A9veloppement+Mobile+%3F'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F12%2F06%2Fadobe-air-le-futur-du-developpement-mobile%2F' data-shr_title='Adobe+Air%2C+le+futur+du+d%C3%A9veloppement+Mobile+%3F'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/12/06/adobe-air-le-futur-du-developpement-mobile/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Devoxx &#8211; Déployer vos applications Air sur Android</title><link>http://blog.xebia.fr/2010/11/22/devoxx-deployer-vos-applications-air-sur-android/</link> <comments>http://blog.xebia.fr/2010/11/22/devoxx-deployer-vos-applications-air-sur-android/#comments</comments> <pubDate>Mon, 22 Nov 2010 16:33:35 +0000</pubDate> <dc:creator>Ellène Dijoux</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Mobilité]]></category> <category><![CDATA[Adobe]]></category> <category><![CDATA[AIR]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Devoxx]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5958</guid> <description><![CDATA[Pour ceux qui n&#8217;ont pas entendu parler d&#8217;Adobe Air, il s&#8217;agit d&#8217;une machine virtuelle permettant d&#8217;exécuter des applications Flash en dehors du navigateur. Multi-plateformes et surtout multi-écrans, le but d&#8217;Adobe est de rendre Air exécutable sur tout type de support, des terminaux mobiles aux téléviseurs. Actuellement, il est utilisable sur les mobiles équipés d&#8217;un Android [...]]]></description> <content:encoded><![CDATA[<p>Pour ceux qui n&#8217;ont pas entendu parler d&#8217;Adobe Air, il s&#8217;agit d&#8217;une machine virtuelle permettant d&#8217;exécuter des applications Flash en dehors du navigateur. Multi-plateformes et surtout multi-écrans, le but d&#8217;Adobe est de rendre Air exécutable sur tout type de support, des terminaux mobiles aux téléviseurs. Actuellement, il est utilisable sur les mobiles équipés d&#8217;un Android 2.2 ainsi que sur les BlackBerry Tablet OS et iOS. Michael Chaize et James Ward nous ont présenté dans une session d&#8217;1h les nouveautés d&#8217;Adobe Air 2.5.</p><h3><a
name="AdobeAirpouriOS"></a>Adobe Air pour iOS</h3><p>Pour le développement d&#8217;applications iPhone, Apple avait émis une restriction pour interdire l&#8217;utilisation d&#8217;outil de développement en dehors de ceux autorisés par Apple. Suite à <a
href="http://www.wired.com/gadgetlab/2010/09/apple-lifts-app-store-flash-ban-publishes-app-review-rules/" title="la levée de cette restriction" >la levée de cette restriction</a>, Adobe peut donc enfin réaliser des applications pour iPhone à partir de ses outils. Parmi les fonctionnalités d&#8217;Adobe Air, vous trouverez un <a
href="http://labs.adobe.com/technologies/packagerforiphone/" title="packager pour iOS" >packager pour iOS</a> qui permet de transformer une application Air en IPK (format des package pour l&#8217;iPhone). Ce packager est aussi disponible dans la Creative Suite 5. Le packager permet de générer une application native pouvant être exécutée pour iOS. Attention, certaines APIs n&#8217;ont pas été implémentées dans le packager.</p><h3><a
name="LesnouveautsdansAir"></a>Les nouveautés dans Air 2.5</h3><p>La grande nouveauté de Air 2.5 est la possibilité de développer des applications mobiles. Pour ce faire, deux nouvelles classes héritant d&#8217;<code>Application</code> sont disponibles : <code><a
href="http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/spark/components/MobileApplication.html" title="MobileApplication" >MobileApplication</a></code> et <code><a
href="http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/spark/components/TabbedMobileApplication.html" title="TabbedMobileApplication" >TabbedMobileApplication</a></code>. Un nouveau skin a été créé pour les applications mobiles et certains composants en bénéficient comme <code>Button</code>, <code>CheckBox</code>, <code>DataGroup</code>, <code>Label</code>, <code>List</code>, <code>Scroller</code> &#8230; Parmi les nouveaux composants dédiés, vous trouverez le <code>MobileItemRenderer</code> et le <code>MobileIconItemRenderer</code> pour les rendus de listes .</p><h3><a
name="FlashBuilderBurrito"></a>Flash Builder &laquo;&nbsp;Burrito&nbsp;&raquo;</h3><p>Burrito est le petit nom du dernier Flash Builder. Il prend en charge toutes les nouveautés disponibles dans Flex 4. La fonctionnalité mise en avant est la possibilité de développer des applications mobiles à partir de votre Flash Builder !</p><p>Flash Builder &laquo;&nbsp;Burrito&nbsp;&raquo; est disponible en version d&#8217;évaluation (pour une durée de 60 jours) ; vous pouvez le récupérer <a
href="http://labs.adobe.com/technologies/flashbuilder_burrito/" title="ici" >ici</a>. Pour ma part, très curieuse de voir ces nouvelles fonctionnalités je l&#8217;ai téléchargé et effectivement, on peut créer des applications flex mobiles.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/11/new-flex-mobile-project.png" border="0" alt="" /></div><p>Une fois votre projet créé, vous pouvez visualiser dans la partie Design de nouvelles options associées à votre vue.</p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/11/vue-global-mobile-application-flex.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/11/vue-global-mobile-application-flex-300x202.png" alt="vue-global-mobile-application-flex" title="vue-global-mobile-application-flex" width="300" height="202" class="alignnone size-medium wp-image-5965" /></a></div><p>Vous pourrez sélectionner une configuration de téléphone, vous aurez le choix entre plusieurs téléphones android. <img
src="http://blog.xebia.fr/wp-content/uploads/2010/11/choix-device.png" border="0" alt="" /></p><p>Vous pourrez également modifier l&#8217;orientation du téléphone pour vérifier le bon positionnement de vos composants. <img
src="http://blog.xebia.fr/wp-content/uploads/2010/11/orientation-mobile.png" border="0" alt="" /></p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/11/application-mobile-flex.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/11/application-mobile-flex-184x300.png" alt="application-mobile-flex" title="application-mobile-flex" width="184" height="300" class="alignnone size-medium wp-image-5968" /></a>&nbsp;&nbsp;&nbsp;<a
href="http://blog.xebia.fr/wp-content/uploads/2010/11/configuration-execution-mobile.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/11/configuration-execution-mobile-300x239.png" alt="configuration-execution-mobile" title="configuration-execution-mobile" width="300" height="239" class="alignnone size-medium wp-image-5961" /></a></div><p></p><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2010/11/release-build.png"><img
src="http://blog.xebia.fr/wp-content/uploads/2010/11/release-build-300x193.png" alt="release-build" title="release-build" width="300" height="193" class="alignnone size-medium wp-image-5964" /></a></div><p>Une fois votre application réalisée, vous pouvez l&#8217;exécuter. Celle-ci sera affichée dans une fenêtre au format du téléphone que vous avez sélectionné. Elle propose aussi un menu contenant les actions disponibles pour le téléphone que vous avez sélectionné (changement de l&#8217;orientation, menu, retour arrière &#8230;).<br
/> Il est également possible d&#8217;exécuter votre application directement sur votre Android si bien évidemment vous en avez un <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Une simple connexion USB suffit pour cela. Malheureusement, je n&#8217;ai pas pu tester cette partie mais espérons que le père Noël m&#8217;apporte un Android 2.2 le mois prochain.</p><p>Ce n&#8217;est pas tout. Vous avez développé votre application et l&#8217;avez testée. Vous voulez maintenant la partager ? Il suffit simplement de préparer le package pour le déposer sur Android Market. Et avec Flash Builder &laquo;&nbsp;Burrito&nbsp;&raquo; rien de plus simple, exportez votre projet et sélectionnez <strong>Release Build</strong>. La seule plateforme disponible pour le moment est Google Android. Après avoir donné votre certificat et mot de passe, Flash Builder vous génère un APK contenant une application native Android que vous pouvez déposer sur Android Market.</p><p>Le déploiement semble simple et pourrait motiver de nouveaux développeurs à réaliser des applications pour mobile.</p><div
class="shr-publisher-5958"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F11%2F22%2Fdevoxx-deployer-vos-applications-air-sur-android%2F' data-shr_title='Devoxx+-+D%C3%A9ployer+vos+applications+Air+sur+Android'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F11%2F22%2Fdevoxx-deployer-vos-applications-air-sur-android%2F' data-shr_title='Devoxx+-+D%C3%A9ployer+vos+applications+Air+sur+Android'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/11/22/devoxx-deployer-vos-applications-air-sur-android/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Comment intégrer des graphiques dans une application Android ?</title><link>http://blog.xebia.fr/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/</link> <comments>http://blog.xebia.fr/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/#comments</comments> <pubDate>Thu, 21 Oct 2010 13:44:18 +0000</pubDate> <dc:creator>Erwan Alliaume</dc:creator> <category><![CDATA[Mobilité]]></category> <category><![CDATA[Achartengine]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[chart]]></category> <category><![CDATA[ChartDroid]]></category> <category><![CDATA[Google]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5672</guid> <description><![CDATA[Android ne propose nativement aucune solution pour générer des courbes, camemberts et autres graphiques. Lors du développement d&#8217;applications, il est pourtant fréquent que l&#8217;on veuille afficher ce genre d&#8217;informations. Les terminaux Android disposant pour la plupart d&#8217;une résolution plutôt petite (< 800*600), il est souvent plus simple et plus efficace d'afficher les valeurs d'un tableau [...]]]></description> <content:encoded><![CDATA[<p>Android ne propose nativement aucune solution pour générer des courbes, camemberts et autres graphiques. Lors du développement d&#8217;applications, il est pourtant fréquent que l&#8217;on veuille afficher ce genre d&#8217;informations. Les terminaux Android disposant pour la plupart d&#8217;une résolution plutôt petite (< 800*600), il est souvent plus simple et plus efficace d'afficher les valeurs d'un tableau sous forme de graphique.</p><p>Cet article a pour but de vous présenter quelques-unes des solutions les plus répandues pour répondre à ce besoin. Pour cela, nous allons créer un camembert de 3 manières différentes :</p><ul><li><a
href="http://blog.xebia.fr/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/#GoogleChartingAPI">Google Chart API</a></li><li><a
href="http://blog.xebia.fr/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/#achartengine">Achartengine</a></li><li><a
href="http://blog.xebia.fr/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/#Chartdroid">ChartDroid</a></li></ul><p>Cet article est une adaptation libre du billet de l&#8217;un des mes collègues indiens Yogesh Kapoor, l&#8217;original est disponible en anglais sur le <a
href="http://xebee.xebia.in/2010/08/31/exploring-android-charting-and-graphs-solutions/" title="blog de Xebee" >blog de Xebee</a>.</p><h4><a
name="GoogleChartingAPI"></a>Google Charting API</h4><p>L&#8217;utilisation de Google Charting est très simple. Cette API permet de créer des graphiques par l&#8217;intermédiaire d&#8217;une URL. Vous n&#8217;avez qu&#8217;à passer les bon arguments à celle-ci pour récupérer votre graphique. Comme ce service est basé sur une URL, vous devez disposer d&#8217;une connexion internet pour que celle-ci fonctionne. Si votre application s&#8217;exécute hors ligne, passez votre chemin.</p><p>L&#8217;appel à l&#8217;<a
href="http://code.google.com/apis/chart/" title="API Google Charting" >API Google Charting</a> s&#8217;effectue par l&#8217;intermédiaire d&#8217;URL ressemblant à celle-ci :</p><pre class="brush: java; title: ; notranslate">
http://chart.apis.google.com/chart?cht=p3&#038;chs=250x100&#038;chd=t:30,60,10&#038;chl=cars|bikes|trucks
</pre><p>Dans cet exemple, voici comment lire les paramètres :</p><ul><li>cht=t3, type du graphique, t3 = camembert 3D,</li><li>chs=250&#215;100, la résolution,</li><li>chd=t:30,60,10, les données,</li><li>chl=cars|bikes|trucks, les libellés.</li></ul><p>Le google code du projet est plutôt bien fait, il vous permet de créer différents types de graphiques en vous inspirant d&#8217;une <a
href="http://code.google.com/apis/chart/docs/gallery/chart_gall.html" title="multitude dexemples" >multitude d&#8217;exemples</a>.</p><p>Vous pouvez intégrer un graphique de ce type dans une application Android par l&#8217;intermédiaire d&#8217;une simple <a
href="http://developer.android.com/intl/de/reference/android/webkit/WebView.html" title="WebView" >WebView</a>. Difficile de faire plus simple.</p><pre class="brush: java; title: ; notranslate">
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  WebView webView = new WebView(this);
  webView.loadUrl(&quot;http://chart.apis.google.com/chart?cht=p3&amp;chs=250x100&amp;chd=t:30,60,10&amp;chl=cars|bikes|trucks&quot;);
  setContentView(webView);
}
</pre><p>La méthode <code>onCreate()</code> est appelée à la création d&#8217;une activité. Dans l&#8217;exemple ci-dessus, nous avons créé une WebView, chargé l&#8217;url de notre graphique dans celle-ci et affecté notre vue comme composant principal de l&#8217;activité.</p><p>Pour que cela fonctionne, comme vous avez besoin d&#8217;un accès internet, vous devez ajouter la permission suivante dans votre <code>AndroidManifest.xml</code>.</p><pre class="brush: java; title: ; notranslate">
&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&gt;
</pre><p>Et c&#8217;est tout ce que vous avez à faire ! Notez au passage que vous n&#8217;êtes pas obligé de passer par une <code>WebView</code>, vous pouvez également télécharger cette image et l&#8217;afficher comme n&#8217;importe quel autre <em>drawable</em> dans n&#8217;importe quel composant (imageView, boutons, backgounds &#8230;)</p><p>Voici un capture d&#8217;écran du résultat obtenu, le graphique est plutôt joli. Il vous est possible de modifier les couleurs, ajouter une légende, changer le type de graphique en ajoutant des <a
href="http://code.google.com/apis/chart/docs/gallery/pie_charts.html" title="paramtres supplmentaires" >paramètres supplémentaires</a>.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/01_googleapichart-300x193.png" border="0" alt="Google Char Api Android" /></div><p>Si votre application n&#8217;a pas besoin d&#8217;accéder à internet, ce type de graphique n&#8217;est pas adapté. Continuons notre tour d&#8217;horizon avec une autre solution &#8230; hors ligne.</p><h4><a
name="achartengine"></a>achartengine</h4><p><a
href="http://code.google.com/p/achartengine/" title="achartengine" >achartengine</a> est un projet permettant de générer différents types de graphique pour Android. Cette API utilise le mécanisme d&#8217;<code>Intent</code>, des messages configurables qui permettent de lancer l&#8217;exécution d&#8217;une activité tierce. Elle ne nécessite aucune connexion internet..</p><p>Qui dit <code>Intent</code> dit nouvelle activité. Les graphiques sont affichés sur des activités dédiées. Contrairement à Google Chart API, vous ne pourrez donc pas intégrer vos graphiques directement dans vos activités.</p><p>Pour l&#8217;utiliser, télécharger la dernière version du jar du projet sur le <a
href="http://code.google.com/p/achartengine/downloads/list" title="Google Code du projet" >Google Code du projet</a>, puis ajoutez le à votre projet Android.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/02_libfolder.png" border="0" alt="" /></div><p>Voici l&#8217;exemple d&#8217;une classe contenant une méthode qui créer un <code>Intent</code> configuré pour afficher un camembert :</p><pre class="brush: java; title: ; notranslate">
public class MyChartExample {
  public Intent createIntent(Context context) {
    int[] colors = new int[] { Color.RED, Color.YELLOW, Color.BLUE };
    DefaultRenderer renderer = buildCategoryRenderer(colors);
    CategorySeries categorySeries = new CategorySeries(&quot;Vehicles Chart&quot;);
    categorySeries.add(&quot;cars &quot;, 30);
    categorySeries.add(&quot;trucks&quot;, 20);
    categorySeries.add(&quot;bikes &quot;, 60);
    return ChartFactory.getPieChartIntent(context, categorySeries, renderer);
  }
  private DefaultRenderer buildCategoryRenderer(int[] colors) {
    DefaultRenderer renderer = new DefaultRenderer();
    for (int color : colors) {
      SimpleSeriesRenderer r = new SimpleSeriesRenderer();
      r.setColor(color);
      renderer.addSeriesRenderer(r);
    }
    return renderer;
  }
}
</pre><p>La récupération de l&#8217;<code>Intent</code> bien configuré s&#8217;effectue par l&#8217;intermédiaire de la méthode <code>createIntent</code>. À l&#8217;intérieur de celle-ci, un <code>SimpleSeriesRenderer</code> est créé pour chaque part du camembert. Ces renderers sont ensuite ajoutés à un <code>DefaultRenderer</code> global au graphique.</p><p>À ce stade, la structure du graphique est configurée, il nous reste plus qu&#8217;à déclarer les valeurs des différentes parts de notre camembert. Pour cela, nous créons un <code>CategorySeries</code> avec les mêmes libellés et valeurs que nous avons utilisé dans l&#8217;exemple précédent.</p><p>Pour finir, nous fabriquons à partir de tout cela (renderers + series) un <code>Intent</code> correctement configuré en utilisant la factory prévue à cet effet.</p><p>Notre <code>Intent</code> créé, il ne nous reste plus qu&#8217;à l&#8217;utiliser pour lancer une nouvelle activité contenant le graphique. Il s&#8217;agit du mécanisme habituel pour lancer une nouvelle activité.</p><pre class="brush: java; title: ; notranslate">
  Intent achartIntent = MyChartExample.createIntent(this);
  startActivity(achartIntent);
</pre><p>Après avoir exécuté ce code, voici ce qui devrait s&#8217;afficher.</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/03_achart2-223x300.png" border="0" alt="" /></div><h4><a
name="Chartdroid"></a>Chartdroid</h4><p>La dernière solution présentée dans cet article est plus contraignante d&#8217;utilisation. Elle utilise le même mécanisme d&#8217;<code>Intent</code> que la solution précédente, mais ici les activités ne sont pas directement intégrées à votre projet. Pour que les <code>Intents</code> fonctionnent, vous devez installer une application tierce : <code>ChartDroid</code>. Notez qu&#8217;il vous est cependant possible de faciliter cette installation en proposant programmatiquement un lien sur le market pour la récupérer (ce mécanisme n&#8217;est pas présenté dans cet article, il fonctionne, une fois encore, via un <code>Intent</code>).</p><p>Pour utiliser cette solution, vous devez créer un <code>ContentProvider</code>. C&#8217;est un mot qui peut faire peur au premier abord, mais il s&#8217;agit d&#8217;un des mécanismes proposé par Android pour communiquer entre application. Un <code>ContentProvider</code> est utilisable après la création d&#8217;un <code>Intent</code>, il permet de récupérer des données à partir d&#8217;un type et d&#8217;un URL.</p><pre class="brush: java; title: ; notranslate">
public class ChartDroidDataProvider extends ContentProvider {
  static final String AUTHORITY =  &quot;com.xyz.contentprovider.chardroid&quot;;
  @Override
  public String getType(Uri uri) {
    return &quot;vnd.android.cursor.dir/vnd.com.googlecode.chartdroid.graphable&quot;;
  }
  public static final Uri PROVIDER_URI = new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT).authority(AUTHORITY).build();
  @Override
  public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
    // Fetch the actual data
    MatrixCursor c = new MatrixCursor(new String[] {
      BaseColumns._ID,
      &quot;COLUMN_AXIS_INDEX&quot;, &quot;COLUMN_SERIES_INDEX&quot;,
      &quot;COLUMN_DATUM_VALUE&quot;, &quot;COLUMN_DATUM_LABEL&quot;
    });
    c.newRow().add(1).add(0).add(1).add(30).add(null);
    c.newRow().add(2).add(0).add(1).add(10).add(null);
    c.newRow().add(3).add(0).add(1).add(60).add(null);
    return c;
  }
  ...
}
</pre><p>Notez que nous avons supprimé du code précédent les méthodes qui sont générées par défaut par nos IDEs et que nous n&#8217;avons pas eu besoin de modifier.</p><p>La méthode <code>query</code> est en fait chargée de fournir les données nécessaires à la construction du graphique. Ce listing est l&#8217;un des exemples les plus minimalistes nécessaire à l&#8217;API pour générer un camembert. Nous utilisons un <code>MatrixCursor</code> afin de passer les valeurs de notre graphique. Au premier abord, la manière de récupérer les données ne semblent pas très claire, la syntaxe n&#8217;est pas des plus conviviale. Au final, on dit souvent que la première impression est souvent la bonne <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>N&#8217;hésitez pas à consulter le <a
href="http://code.google.com/p/chartdroid/wiki/InterfaceSpecification" title="site officiel" >site officiel</a> pour plus d&#8217;informations sur ce projet.</p><p>Maintenant que notre content provider est crée, il ne nous reste plus qu&#8217;à démarrer l&#8217;activité ChartDroid pour afficher notre graphique. Cela s&#8217;effectue par un <code>Intent</code> :</p><pre class="brush: java; title: ; notranslate">
Intent chartDroidIntent = new Intent(Intent.ACTION_VIEW, ChartDroidDataProvider.PROVIDER_URI);
chartDroidIntent.putExtra(Intent.EXTRA_TITLE, &quot;Chart droid&quot;);
chartDroidIntent.addCategory(&quot;com.googlecode.chartdroid.intent.category.PIE_CHART&quot;);
startActivity(chartDroidIntent);
</pre><p>Dans le morceau de code précédent, la ligne <em>category</em> est importante car elle définie le type de graphique à afficher.</p><p>Après exécution, vous devriez avoir un résultat qui ressemble à cela :</p><div
align="center"> <img
src="http://blog.xebia.fr/wp-content/uploads/2010/10/04_chartdroid-211x300.png" border="0" alt="" /></div><h4><a
name="Conclusion"></a>Conclusion</h4><p>Pour conclure, la solution <strong>Google Chart API</strong> est la plus aboutie, je vous la recommande vivement. Les graphiques sont obtenus très facilement et sont plutôt jolis. Si vous n&#8217;êtes pas prêt à dépendre d&#8217;une connexion internet, je vous recommanderais la deuxième solution : <strong>achartengine</strong>. Bien que cela ne se voit pas sur les captures d&#8217;écran ci-dessous, les graphiques obtenus par achartengine sont généralement un peu moins jolis que ceux obtenus par chartdroid. C&#8217;est la contrainte d&#8217;avoir à installer une application tierce qui cause du tord à la troisième solution.</p><p>Pour finir, notez que toutes les solutions n&#8217;ont pas été présentées dans cet article. Je pense en particulier aux nombreuses petites surcouches jfreechart qui émergent (et meurent) ici et là. Je ne les ai pas présentées car la majorité d&#8217;entre elles ne sont que très peu actives.</p><div
align="center"> <a
href="http://twitter.com/ealliaume" ><br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/04/twitter4.png"  alt="twitter erwan alliaume" title="twitter erwan alliaume" border="0" /><br
/> </a></div><div
class="shr-publisher-5672"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F10%2F21%2Fcomment-integrer-des-graphiques-dans-une-application-android%2F' data-shr_title='Comment+int%C3%A9grer+des+graphiques+dans+une+application+Android+%3F'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F10%2F21%2Fcomment-integrer-des-graphiques-dans-une-application-android%2F' data-shr_title='Comment+int%C3%A9grer+des+graphiques+dans+une+application+Android+%3F'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/10/21/comment-integrer-des-graphiques-dans-une-application-android/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Le contexte, la pépite d&#8217;information pour une application Mobile réussie</title><link>http://blog.xebia.fr/2010/10/15/le-contexte-la-pepite-dinformation-pour-une-application-mobile-reussie/</link> <comments>http://blog.xebia.fr/2010/10/15/le-contexte-la-pepite-dinformation-pour-une-application-mobile-reussie/#comments</comments> <pubDate>Fri, 15 Oct 2010 12:22:02 +0000</pubDate> <dc:creator>Erwan Alliaume</dc:creator> <category><![CDATA[Mobilité]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[blackberry]]></category> <category><![CDATA[iPhone]]></category> <category><![CDATA[windows mobile]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=5649</guid> <description><![CDATA[Vous souvenez-vous de la course au Web ? Cette période pas si lointaine où bon nombre d&#8217;entre nous voulions un site Web sans trop savoir quoi mettre dedans ni trop comment s&#8217;y prendre. Plus que le contenu, l&#8217;important était d&#8217;être présent sur la toile même si on ne savait pas trop quoi y exposer. Depuis, [...]]]></description> <content:encoded><![CDATA[<p>Vous souvenez-vous de la course au Web ? Cette période pas si lointaine où bon nombre d&#8217;entre nous voulions un site Web sans trop savoir quoi mettre dedans ni trop comment s&#8217;y prendre. Plus que le contenu, l&#8217;important était d&#8217;être présent sur la toile même si on ne savait pas trop quoi y exposer. Depuis, notre <em>vitrine</em> a bien évolué, nous nous sommes approprié ce nouvel espace et nous avons adapté le contenu à ce <em>nouveau</em> support.</p><p>Avec la popularisation des smartphones, une nouvelle course démarre. Le nombre d&#8217;applications et de sites mobiles <a
href="http://www.androlib.com/appstats.aspx" title="explose" >explose</a>. Avant de jaillir des <em>starting blocks</em>, prenons le temps de connaitre les spécificités du parcours de cette nouvelle course.</p><p>Lorsque je navigue sur le web, je suis installé <strong>chez moi</strong>. Je suis assis sur une chaise ou un fauteuil <strong>confortable</strong>. Je dispose d&#8217;un écran de taille conséquente qui me permet d&#8217;afficher un <strong>grand nombre</strong> d&#8217;informations. Je peux prendre le <strong>temps que je désire</strong> pour effectuer chacune de mes actions. Je cherche, je farfouille, je compare, je prends des notes. Bref, j&#8217;ai directement à disposition tout ce que je désire pour me faire un avis pertinent sur ce que je consomme. La taille de mon écran et la puissance de mon ordinateur me permettent d&#8217;ouvrir de <strong>nombreuses applications</strong> simultanément. Mon confort, mon matériel et ma <strong>bande passante</strong> me permettent de parler à plusieurs personnes en même temps, d&#8217;effectuer des recherches sur internet, tout en écoutant le dernier album en ligne d&#8217;un nouvel artiste que je viens de découvrir sur mon forum spécialisé préféré.</p><p>Lorsque j&#8217;attrape mon smartphone, le contexte est complètement différent. Je suis souvent <strong>hors de chez moi</strong> et je compte utiliser celui-ci dans un <strong>but précis</strong>. Bien qu&#8217;il soit multitâche, les caractéristiques de mon téléphone ne me donnent pas forcément envie d&#8217;effectuer simultanément plusieurs tâches complexes. La taille de mon écran n&#8217;est pas adaptée à la lecture ou visionnage de vidéos durant plusieurs heures. Par contre, mon téléphone est un petit <strong>bijou technologique</strong> ; il dispose d&#8217;une puce GPS, d&#8217;un détecteur de mouvement, d&#8217;une boussole, d&#8217;un appareil photo, j&#8217;en passe et des meilleures, et surtout, d&#8217;une connexion internet mobile. Tout ce matériel ne sert qu&#8217;à une seule chose : fournir un maximum d&#8217;informations sur le <strong>contexte</strong> dans lequel j&#8217;utilise mon téléphone. Si on appelle ça un <em>smartphone</em>, c&#8217;est qu&#8217;il y a une raison <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Le contexte ! C&#8217;est la clé ! Cette information n&#8217;a jamais été aussi précise qu&#8217;avec un téléphone, il est temps d&#8217;en profiter !</p><p>Votre ordinateur ne délivre que très peu d&#8217;informations sur son contexte d&#8217;utilisation. Bien que certaines fonctionnalités piquées de votre mobile arrivent peu à peu sur votre poste fixe (géolocalisation, &#8230;), nous restons encore bien loin des possibilités offertes par votre téléphone. La force première de la mobilité est &#8230; votre mobilité <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Une conclusion découle directement de ce constat : vous avez tout intérêt à <strong>créer</strong> une application pensée pour la mobilité plutôt que d&#8217;essayer d&#8217;en adapter une. Essayer d&#8217;adapter un site web pour le mobile en n&#8217;en modifiant que le look and feel n&#8217;apporterait que de la <em>valeur minorée</em> à celui-ci. Penser une version mobile comme une version light de votre application en ligne vous fera passer à côté de ce que recherchent vos utilisateurs. Lorsqu&#8217;on utilise son téléphone, on s&#8217;attend à trouver de l&#8217;information en fonction de son contexte. Utiliseriez-vous l&#8217;application de recherche de stations Velib sur votre vélo si celle-ci n&#8217;était pas capable d&#8217;afficher les stations les plus proches de vous ?</p><p><center><strong>APPLICATIONS MOBILES = SERVICES au cœur de votre métier + CONTEXTE d&#8217;utilisation</strong></center></p><p>Malgré toute la valeur métier que vos services peuvent fournir, vous ne tirerez vraiment partie de ce nouveau média que si vous prenez en compte le contexte de vos utilisateurs. Pour approfondir ce sujet, je vous suggère la lecture de &laquo;&nbsp;<a
href="http://www.amazon.fr/gp/product/0596155441?ie=UTF8&#038;tag=andminmar-21&#038;linkCode=as2&#038;camp=1642&#038;creative=6746&#038;creativeASIN=0596155441" title="Mobile Design and Development" ><em>Mobile Design and Development</em></a>&nbsp;&raquo; qui y consacre l&#8217;un des ses chapitres.</p><div
align="center"> <a
href="http://twitter.com/ealliaume" ><br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/04/twitter4.png"  alt="twitter erwan alliaume" title="twitter erwan alliaume" border="0" /><br
/> </a></div><div
class="shr-publisher-5649"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F10%2F15%2Fle-contexte-la-pepite-dinformation-pour-une-application-mobile-reussie%2F' data-shr_title='Le+contexte%2C+la+p%C3%A9pite+d%27information+pour+une+application+Mobile+r%C3%A9ussie'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F10%2F15%2Fle-contexte-la-pepite-dinformation-pour-une-application-mobile-reussie%2F' data-shr_title='Le+contexte%2C+la+p%C3%A9pite+d%27information+pour+une+application+Mobile+r%C3%A9ussie'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/10/15/le-contexte-la-pepite-dinformation-pour-une-application-mobile-reussie/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Maven et Android, comment utiliser le plugin ?</title><link>http://blog.xebia.fr/2010/03/23/maven-et-android-comment-utiliser-le-plugin/</link> <comments>http://blog.xebia.fr/2010/03/23/maven-et-android-comment-utiliser-le-plugin/#comments</comments> <pubDate>Tue, 23 Mar 2010 13:06:35 +0000</pubDate> <dc:creator>Erwan Alliaume</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Mobilité]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[build]]></category> <category><![CDATA[dépendances]]></category> <category><![CDATA[Maven]]></category> <category><![CDATA[maven definitive guide]]></category> <category><![CDATA[mutlmodules]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4258</guid> <description><![CDATA[Si vous êtes développeur Android, vous aurez sans doute remarqué qu&#8217;aucun mécanisme ne permet de partager des ressources entre plusieurs projets. Étant l&#8217;auteur d&#8217;une petite dizaine d&#8217;applications, la gestion des ressources communes commence à devenir un véritable problème. En effet, s&#8217;il est très simple de partager du code Java par l&#8217;intermédiaire de jars, il vous [...]]]></description> <content:encoded><![CDATA[<p>Si vous êtes développeur Android, vous aurez sans doute remarqué qu&#8217;aucun mécanisme ne permet de partager des ressources entre plusieurs projets. Étant l&#8217;auteur d&#8217;une <a
href="http://www.android-mini-market.com/" title="petite dizaine dapplications" >petite dizaine d&#8217;applications</a>, la gestion des ressources communes commence à devenir un véritable problème. En effet, s&#8217;il est très simple de partager du code Java par l&#8217;intermédiaire de jars, il vous est impossible de partager des images ou des layouts entre plusieurs applications. Ceci vient de la gestion même des ressources dans un projet Android et de leur utilisation. En effet chaque ressource est référencée sous la forme d&#8217;une constante dans un fichier &#8216;R.java&#8217; automatiquement généré. C&#8217;est cette constante que vous devez utiliser pour utiliser vos différentes ressources dans vos applications. Comme il n&#8217;est pas possible d&#8217;inclure un projet Android dans un autre, nous somme bloqués.</p><p>Étonnamment, ce besoin ne semble pas intéresser plus que cela la communauté Android. En consultant la liste des <a
href="http://b.android.com/" title="demandes d'évolutions" >demandes d&#8217;évolutions</a>, seule une <a
href="http://code.google.com/p/android/issues/detail?id=3987&#038;q=include%20external%20apk&#038;colspec=ID%20Type%20Status%20Owner%20Summary%20Stars" title="fiche" >fiche</a> fait référence à ce type de besoin. Cette demande me paraissant pourtant légitime, j&#8217;en ai discuté avec Romain Guy, l&#8217;un des développeurs Android. Selon lui, la plateforme Android ne permet pas de répondre directement à cette problématique. Tournons-nous donc vers nos outils de builds.</p><p>Cet article présente une manière de configurer un build Maven sur une application Android. Après la lecture de cet article, vous saurez comment construire et déployer un projet Android en utilisant Maven, mais également comment découper vos applications pour partager du code entre votre application Android et sa partie serveur, et comment partager du code et des ressources entre différentes applications Android. Le contenu de cet article est largement inspiré  de la <a
href="http://maven-definitive-guide.fr/maven-reference-fr/site/reference/android-dev.html" title="traduction officielle du chapitre Android du Maven Reference Guide" >traduction officielle du chapitre Android du Maven Reference Guide</a> que je viens tout juste de terminer.</p><h3><a
name="LepluginMavenAndroid"></a>Le plugin Maven Android</h3><p>Le plugin Maven Android permet de construire, déployer et publier des applications Android avec Maven. Vous pouvez ainsi tirer parti des fonctionnalités Maven dans une application Android. Voyons comment utiliser un projet multi-module et la gestion des dépendances pour arriver d&#8217;une part à factoriser du code entre l&#8217;application Android et ses services web côté serveur, d&#8217;autre part à externaliser les assets/ressources communs entre plusieurs projets Android.</p><p>Pour installer ce plugin, récupérez-les <a
href="http://code.google.com/p/maven-android-plugin/" title="sources du projet sur google code" >sources du projet sur google code</a> et installez les artefacts dans votre dépôt :</p><pre class="brush: java; title: ; notranslate">
git clone git://github.com/jayway/maven-android-plugin.git
cd maven-android-plugin
mvn clean install
</pre><h3><a
name="PrparezvotreenvironnementAndro"></a>Préparez votre environnement Android pour Maven</h3><p>Avant de pouvoir utiliser Maven pour construire vos applications Android, quelques tâches préalables sont nécessaires :</p><ul><li>Installation du SDK Android</li><li>Installation des jars de l&#8217;API Android dans un dépôt (local et/ou distant)</li><li>Configuration de Maven pour simplifier l&#8217;utilisation du Maven Android Plugin</li></ul><h4><a
name="InstallationduSDKAndroid"></a>Installation du SDK Android</h4><p>Le plugin Android Maven nécessite la présence du SDK Android dans votre environnement de développement. La variable d&#8217;environnement <code>ANDROID_HOME</code> doit être configurée pour pointer vers le répertoire d&#8217;installation du SDK Android. Ce SDK doit être installé en suivant les consignes disponibles sur le site officiel <a
href="http://developer.android.com/sdk/index.html" title="Android Developer" >Android Developer</a>.</p><p>En plus du SDK, vous devez également installer les différentes versions des plates-formes dont vous avez besoin pour votre développement. Il s&#8217;agit des différentes versions des runtimes Android dont vous désirez vous servir. Par défaut, vous pouvez choisir de toutes les télécharger.  Pour en savoir plus à ce sujet, rendez-vous également sur la <a
href="http://developer.android.com/sdk/adding-components.html" title="documentation officielle" >documentation officielle</a>.</p><p>Enfin, afin de faciliter l&#8217;utilisation des outils du SDK en ligne de commande, vous pouvez rajouter le répertoire <code> ANDROID_HOME/tools</code> à votre <code>PATH</code>.</p><h4><a
name="InstallationdesartefactsAndroi"></a>Installation des artefacts Android dans votre dépôt</h4><p>Une fois que le SDK est installé, vous devez mettre à disposition les différents JARs d&#8217;API dans un dépôt Maven. L&#8217;outil <a
href="http://github.com/mosabua/maven-android-sdk-deployer" title="Maven Android SDK Deployer" >Maven Android SDK Deployer</a> permet d&#8217;effectuer cette tâche. Une fois l&#8217;outil téléchargé, rendez vous dans son répertoire et tapez la commande <code>mvn clean install</code>. Par défaut, cette commande installe les JARs <code>android.jar</code> et <code>maps.jar</code> dans votre dépôt local. Cet outil vous permet de n&#8217;installer qu&#8217;une partie des plateformes dans votre dépôt ou de les déployer dans sur un serveur distant, si ces fonctionnalités vous intéressent, rendez-vous à <a
href="http://maven-definitive-guide.fr/maven-reference-fr/site/reference/android-dev-sect-repository-install.html" title="ladresse suivante" >l&#8217;adresse suivante</a></p><h4><a
name="ConfigurationdeMavenpourAndroi"></a>Configuration de Maven pour Android</h4><p>Afin de pouvoir utiliser les goals du plugin Maven Android à partir de la ligne de commande en utilisant la version courte du nom du plugin &#8216;android&#8217;, vous devez ajouter l&#8217;extrait de configuration suivant dans votre fichier <code>settings.xml</code>.</p><pre class="brush: xml; title: ; notranslate">
&lt;pluginGroups&gt;
   &lt;pluginGroup&gt;
     com.jayway.maven.plugins.android.generation2
   &lt;/pluginGroup&gt;
&lt;/pluginGroups&gt;
</pre><h3><a
name="UtilisationduMavenAndroidPlugi"></a>Utilisation du Maven Android Plugin dans un projet simple</h3><p>Une fois que votre environnement est correctement configuré, vous pouvez configurer Maven pour construire vos applications Android. Pour cela, ajoutez ce <code>pom.xml</code> à la racine de votre application.</p><pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
           xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
           xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;
      &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
      &lt;groupId&gt;fr.xebia.android.demo.simple&lt;/groupId&gt;
      &lt;artifactId&gt;simple-android-project&lt;/artifactId&gt;
      &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
      &lt;packaging&gt;apk&lt;/packaging&gt;
      &lt;name&gt;Simple Android Project&lt;/name&gt;
      &lt;dependencies&gt;
          &lt;dependency&gt;
              &lt;groupId&gt;android&lt;/groupId&gt;
              &lt;artifactId&gt;android&lt;/artifactId&gt;
              &lt;version&gt;2.1_r1&lt;/version&gt;
              &lt;scope&gt;provided&lt;/scope&gt;
          &lt;/dependency&gt;
      &lt;/dependencies&gt;
      &lt;build&gt;
          &lt;sourceDirectory&gt;src&lt;/sourceDirectory&gt;
          &lt;plugins&gt;
              &lt;plugin&gt;
                  &lt;groupId&gt;com.jayway.maven.plugins.android.generation2&lt;/groupId&gt;
                  &lt;artifactId&gt;maven-android-plugin&lt;/artifactId&gt;
                  &lt;version&gt;2.2.3-SNAPSHOT&lt;/version&gt;
                  &lt;configuration&gt;
                      &lt;sdk&gt;
                          &lt;platform&gt;2.1&lt;/platform&gt;
                      &lt;/sdk&gt;
                      &lt;deleteConflictingFiles&gt;true&lt;/deleteConflictingFiles&gt;
                     &lt;undeployBeforeDeploy&gt;true&lt;/undeployBeforeDeploy&gt;
                  &lt;/configuration&gt;
                  &lt;extensions&gt;true&lt;/extensions&gt;
              &lt;/plugin&gt;
              &lt;plugin&gt;
                  &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
                  &lt;configuration&gt;
                      &lt;source&gt;1.5&lt;/source&gt;
                      &lt;target&gt;1.5&lt;/target&gt;
                  &lt;/configuration&gt;
              &lt;/plugin&gt;
          &lt;/plugins&gt;
      &lt;/build&gt;
  &lt;/project&gt;
</pre><p>Ce <code>pom.xml</code> est tout à fait traditionnel excepté les points suivants :</p><ul><li>Il dispose d&#8217;un nouveau type de packaging &#8216;APK&#8217;</li><li>Deux plugins sont configurés dans le <code>build</code> : Maven Android et Maven Compiler</li></ul><p>Le type de packaging APK permet d&#8217;activer le cycle de vie spécifique à Android. Il fait le lien entre Maven et les outils du SDK Android, permet la gestion des ressources, la conversion du bytecode Java en code exécutable Dalvik &#8230;</p><p>La dépendance vers le JAR de la plateforme doit utiliser la version de la cible telle qu&#8217;elle a été publiée dans le dépôt Maven par l&#8217;Android SDK Deployer. Il récupère les versions à partir des valeurs <code>Platform.Version</code> et <code>Pkg.Revision</code> renseignées dans le fichier de propriétés <code>source.properties</code> qui se trouve dans le dossier de la plateforme du SDK Android.</p><p>La configuration du plugin Maven Compiler dans le build est également nécessaire, car Android utilise les fonctionnalités Java 5 (annotations, boucles simplifiées&#8230;).</p><p>Pour construire l&#8217;application et l&#8217;exécuter sur un émulateur déjà lancé, lancez la commande :</p><pre class="brush: java; title: ; notranslate">
mvn clean install android:deploy
</pre><h3><a
name="Ajoutezdestestsvotreapplicatio"></a>Ajoutez des tests à votre application Android</h3><p>Le test du code d&#8217;une application Android peut-être effectué à la manière d&#8217;un test unitaire traditionnel <em>junit</em> dans le cadre du SDK Android, mais aussi par l&#8217;intermédiaire de tests <em>d&#8217;intégration</em>. Ces derniers sont appelés &#8216;instrumentation tests&#8217;.</p><h4><a
name="Excutiondestestsunitairesdunpr"></a>Exécution des tests unitaires d&#8217;un projet Android via Maven</h4><p>Le plugin Android Maven lance l&#8217;exécution des tests unitaires à la manière du plugin Surefire. Comme le chemin par défaut des classes de tests dans Eclipse et dans l&#8217;Android Development Toolkit ne respecte pas la convention Maven, vous devez configurer spécifiquement le dossier d&#8217;accès au code de vos tests unitaires.</p><pre class="brush: xml; title: ; notranslate">
&lt;build&gt;
  &lt;testSourceDirectory&gt;test&lt;/testSourceDirectory&gt;
  ...
&lt;/build&gt;
</pre><h4><a
name="GrezvostestsdinstrumentationAn"></a>Gérez vos tests d&#8217;instrumentation Android avec Maven</h4><p>Les tests d&#8217;instrumentation sont des tests d&#8217;intégration packagés dans une application qui est lancée dans un émulateur (ou un téléphone) et qui interagit avec une autre application pour tester son comportement. Pour exécuter les ces tests d&#8217;instrumentation, vous devez disposer de deux projets distincts : l&#8217;un pour l&#8217;application, l&#8217;autre pour les tests d&#8217;instrumentation. Ces modules sont liés par l&#8217;intermédiaire d&#8217;un pom parent.</p><p>La configuration du plugin Maven Android pour l&#8217;application contenant les tests d&#8217;instrumentation est la même que pour celle de l&#8217;application principale avec une seule différence : l&#8217;ajout d&#8217;une dépendance vers l&#8217;application principale. Il est important d&#8217;ajouter le <em>type apk</em> sur cette dépendance pour permettre au plugin Maven Android de trouver le package de l&#8217;application.</p><pre class="brush: xml; title: ; notranslate">
&lt;dependency&gt;
      &lt;groupId&gt;fr.xebia.android.demo.simple&lt;/groupId&gt;
      &lt;artifactId&gt;simple-android-project&lt;/artifactId&gt;
      &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
      &lt;type&gt;apk&lt;/type&gt;
&lt;/dependency&gt;
</pre><h3><a
name="RajoutezdesAddOnvosapplication"></a>Rajoutez des <em>Add-On</em> à vos applications Android</h3><p>Pour la majorité des applications, l&#8217;artefact du SDK (android.jar) suffit, il arrive pourtant que certaines applications nécessitent des Add Ons. L&#8217;un des Add-Ons les plus connus est celui de Google Maps. Cet Add-On a été déployé dans votre dépôt Maven par l&#8217;outil Maven Android SDK Deployer. Afin de pouvoir utiliser cette API, vous avez besoin d&#8217;ajouter une dépendance à votre application :</p><pre class="brush: xml; title: ; notranslate">
&lt;dependency&gt;
  &lt;groupId&gt;com.google.android.maps&lt;/groupId&gt;
  &lt;artifactId&gt;maps&lt;/artifactId&gt;
  &lt;version&gt;7_r1&lt;/version&gt;
  &lt;scope&gt;provided&lt;/scope&gt;
&lt;/dependency&gt;
</pre><h3><a
name="DcoupezvosprojetsAndroidavecMa"></a>Découpez vos projets Android avec Maven</h3><p>Le plugin Maven Android peut être utilisé sur un projet multi-module de manière transparente, voici comment je vais découper mes projets :</p><p>Le socle contient :</p><ul><li>Une application contenant le code et les ressources Android communes à toutes mes applications Android</li></ul><p>Chaque application contient :</p><ul><li>Un projet pour le code Java réutilisé côté serveur. Cela permet de partager du code entre une application Android et une application Web.</li><li>Une application web de type WAR contenant la partie serveur de l&#8217;application. C&#8217;est cette partie qui fournit les services distants à l&#8217;application Android.</li><li>L&#8217;application Android proprement dite est un projet Maven de type APK qui possède une dépendance sur le modèle et une dépendance sur le socle. C&#8217;est son pom qui configure le plugin Maven Android. Notez le type particulier de la dépendance vers le socle : <a
href="http://code.google.com/p/maven-android-plugin/wiki/ApkSourcesDependency" title="apksources" >apksources</a>, les sources et ressources incluses dans cette dépendance sont poussées dans l&#8217;application courante avant sa construction.</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;dependency&gt;
      &lt;groupId&gt;fr.xebia.android.demo.socle&lt;/groupId&gt;
      &lt;artifactId&gt;socle-sample&lt;/artifactId&gt;
      &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
      &lt;type&gt;apksources&lt;/type&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
      &lt;groupId&gt;fr.xebia.android.demo.simple&lt;/groupId&gt;
      &lt;artifactId&gt;simple-model&lt;/artifactId&gt;
      &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
&lt;/dependency&gt;
</pre><ul><li>Un dernier projet contenant les tests d&#8217;intégration qui dépend de l&#8217;application précédente.</li></ul><pre class="brush: xml; title: ; notranslate">
&lt;dependency&gt;
      &lt;groupId&gt;fr.xebia.android.demo.simple&lt;/groupId&gt;
      &lt;artifactId&gt;simple-android-project&lt;/artifactId&gt;
      &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
      &lt;type&gt;apk&lt;/type&gt;
&lt;/dependency&gt;
</pre><div
align="center"> <img
src=" http://blog.xebia.fr/wp-content/uploads/2010/03/android-multimodules.png" border="0" alt="android maven multimodules" /></div><p>Notez cependant que ce plugin Maven Android est toujours en cours de développement, j&#8217;ai rencontré de nombreux bugs. Le dernier en date, et pas des moindres : la fonctionnalité &#8216;apksources&#8217; ne fonctionnait plus. Utilisez ce genre de fonctionnalité que si vous n&#8217;avez pas peur de mettre les mains dans les sources du plugin en cas de problème. Tout cela sent encore la peinture fraîche, reste à savoir si elle va tenir.</p><p>La solution Maven ne vous a pas séduit ? Il est vrai qu&#8217;elle reste lourde et relativement compliquée, mais il existe bon nombre d&#8217;alternatives <a
href="http://www.linux-mag.com/cache/7667/1.html" title="Ant" >Ant</a>, <a
href="http://code.google.com/p/autoandroid/wiki/AndroidAnt" title="AndroidAnt" >AndroidAnt</a>, <a
href="http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.user/reference/ref-properties-build-path.htm" title="Eclipse Linked Source" >Eclipse Linked Source</a>, <code>ln -s</code> &#8230;</p><div
align="center"> <a
href="http://twitter.com/ealliaume" ><br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/04/twitter4.png"  alt="twitter erwan alliaume" title="twitter erwan alliaume" border="0" /><br
/> </a></div><div
class="shr-publisher-4258"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F03%2F23%2Fmaven-et-android-comment-utiliser-le-plugin%2F' data-shr_title='Maven+et+Android%2C+comment+utiliser+le+plugin+%3F'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F03%2F23%2Fmaven-et-android-comment-utiliser-le-plugin%2F' data-shr_title='Maven+et+Android%2C+comment+utiliser+le+plugin+%3F'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/03/23/maven-et-android-comment-utiliser-le-plugin/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>HTML5 &#8211; Les nouveaux éléments</title><link>http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/</link> <comments>http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#comments</comments> <pubDate>Tue, 02 Mar 2010 13:30:10 +0000</pubDate> <dc:creator>Séven Le Mesle</dc:creator> <category><![CDATA[Mobilité]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Apple]]></category> <category><![CDATA[Gears]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[HTML]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[JavaScript]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=4127</guid> <description><![CDATA[Comme évoqué dans une précédente revue de presse, voici le premier article de ma série sur HTML5. Plutôt que de faire du comptage de points entre Apple et Adobe, j&#8217;ai décidé de commencer par faire un tour d&#8217;horizon des nouveautés proposées par cette nouvelle spécification du W3C. Dans ce premier article, je vous propose donc [...]]]></description> <content:encoded><![CDATA[<p>Comme évoqué dans une précédente revue de presse, voici le premier article de ma série sur HTML5. Plutôt que de faire du comptage de points entre Apple et Adobe, j&#8217;ai décidé de commencer par faire un tour d&#8217;horizon des nouveautés proposées par cette nouvelle spécification du W3C. Dans ce premier article, je vous propose donc de faire un voyage à la découverte des nouveautés du côté de HTML. ; pour connaître les nouvelles balises, et les nouveaux attributs que nous pouvons déjà ou pourrons bientôt utiliser dans nos navigateurs. Du layout au canvas en passant par les WebForms, le son et la vidéo, tout tout tout, je vous dirai tout sur HTML5. Commençons donc par le commencement: HTML5 qu&#8217;est-ce que c&#8217;est ?</p><h3>Sommaire</h3><ul><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#HTML">HTML5 ?</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Nouveaumodledecontenu">Nouveau modèle de contenu</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Nouveauxlmentsdemiseenpage">Nouveaux éléments de mise en page</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Elmentsinteractifs">Eléments interactifs</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#LesWebForms">Les WebForms</a><ul><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Nouveauxinput">Nouveaux input</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Validationnative">Validation native</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Autocompltion">Auto-complétion</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Rptitions">Répétitions</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/#Etatdeslieux">Etat des lieux</a></li></ul></li><li><a
href="http://blog.xebia.fr/2010/03/02/html5-les-nouveaux-elements/#Multimedia">Multimedia</a><ul><li><a
href="http://blog.xebia.fr/2010/03/02/html5-les-nouveaux-elements/#AudioetVideo">Audio et Video</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html5-les-nouveaux-elements/#LaguerredesCodecs">La guerre des Codecs</a></li><li><a
href="http://blog.xebia.fr/2010/03/02/html5-les-nouveaux-elements/#LeCanvas">Le Canvas</a></li></ul></li><li><a
href="http://blog.xebia.fr/2010/03/02/html5-les-nouveaux-elements/#Conclusion">Conclusion</a></li></ul><h3><a
name="HTML"></a>HTML5 ?</h3><p>HTML5 est au départ la nouvelle version du langage HTML en cours de développement par le W3C. Pour le moment, il s&#8217;agit d&#8217;une recommandation en DRAFT, fruit du travail initial réalisé par le <a
title="WHATWG" href="http://www.whatwg.org">WHATWG</a> depuis 2004. Le <a
title="W3C" href="http://www.w3c.org">W3C</a> espère en faire un de ses standards libres aux alentours de 2022. De prime abord, ça nous laisse le temps de réfléchir au problème pendant les 10 prochaines années. L&#8217;idée d&#8217;une nouvelle version de HTML serait motivée par quelques constats simples :</p><ul><li>Les navigateurs ont besoin de plugins pour gérer le multimédia (flash et consorts)</li><li>La structure des documents n&#8217;est pas intuitive et rend l&#8217;accessibilité difficile</li><li>Les API JavaScript varient trop d&#8217;un navigateur à l&#8217;autre pour garantir la portabilité des documents</li><li>Les sites sont de plus en plus proches des applications de bureaux mais souffrent encore de limitations</li></ul><p>Pour répondre à ces problématiques et favoriser l&#8217;émergence du web sémantique, la spécification propose :</p><ul><li>Un nouveau modèle de contenu des éléments</li><li>Des éléments de mise en page</li><li>De nouveaux éléments pour les formulaires</li><li>Du contenu multimédia</li><li>Plus d&#8217;interactivité</li><li>Des APIs standards JavaScript</li></ul><p>Bien que la spécification soit encore en cours d&#8217;écriture, certaines parties sont déjà très avancées et les navigateurs ont tous commencé à les implémenter. Google Chrome est actuellement en tête. Il bénéficie nativement de Gears et respecte 87% de la spécification. Parmi les principaux supporters de ce standard en devenir, nous retrouvons Google, Mozilla, Opera, Apple et Palm, pour ne citer que les plus grands. Apparemment, les navigateurs qui ont le vent en poupe sont tous de la partie. Microsoft, de son côté, suit la tendance de très loin en intégrant des fonctionnalités au compte goutte dans son IE, qui supporte tout de même 28% du langage.</p><h3><a
name="Nouveaumodledecontenu"></a>Nouveau modèle de contenu</h3><p>Bye, bye, les alignements hasardeux dus aux éléments de type bloc ou en ligne. Les éléments seront plutôt classés par catégories.</p><div><a
href="http://blog.xebia.fr/wp-content/uploads/2010/03/contenthtml5.png"><img
class="aligncenter size-full wp-image-4135" title="contenthtml5" src="http://blog.xebia.fr/wp-content/uploads/2010/03/contenthtml5.png" alt="contenthtml5" width="520" height="284" /></a></div><ul><li>La catégorie ancêtre <code>Flow</code> correspond à tous les éléments qui contiennent un flot de texte</li><li><code>Phrasing</code> correspond aux éléments qui apparaissent dans le texte (a, li)</li><li><code>Interactive</code> définit les éléments qui fournissent une interaction avec l&#8217;utilisateur</li><li><code>Embedded</code> affiche des ressource externes dans le document</li><li>Les <code>Metadata</code> représentent tout ce qui n&#8217;est pas affiché (style, script, &#8230;)</li><li><code>Heading</code> définit les en-têtes d&#8217;une section</li><li><code>Sectioning</code> définit le scope des en-têtes et pieds de page</li></ul><p>Toutes ces catégories permettent de définir le contenu autorisé pour les éléments. Leur but est d&#8217;une part de fournir une grande souplesse de composition (par exemple la balise <code>a</code> peut maintenant contenir un paragraphe entier, une liste ou des headers (<code>h*</code>)), d&#8217;autre part ces catégories permettent aux navigateurs d&#8217;assimiler le contenu de la page, notamment pour les exports d&#8217;impression ou l&#8217;accessibilité.</p><h3><a
name="Nouveauxlmentsdemiseenpage"></a>Nouveaux éléments de mise en page</h3><p>Jusqu&#8217;à maintenant, l&#8217;élément de mise en page par excellence était la balise <code>div</code>. La grande majorité des sites est construite sur un modèle d&#8217;empilement de ces boites avec des <code>id</code> différents pour finir par une grosse partie de styles <code>CSS</code> assurant le positionnement. Mais cela a quelques inconvénients:</p><ul><li>Ce n&#8217;est pas intuitif pour le développeur, vous en conviendrez.</li><li>Le navigateur ne peut pas connaître le rôle de chacune des parties de la mise en page, ce qui rend beaucoup plus difficile la génération de plan ou d&#8217;aide à la navigation.</li></ul><div><table
border="0"><tbody><tr><td><a
href="http://blog.xebia.fr/wp-content/uploads/2010/03/layoutHTML4.png"><img
title="layoutHTML4" src="http://blog.xebia.fr/wp-content/uploads/2010/03/layoutHTML4.png" alt="layoutHTML4" width="351" /></a></td><td><a
href="http://blog.xebia.fr/wp-content/uploads/2010/03/layoutHTML5.png"><img
title="layoutHTML5" src="http://blog.xebia.fr/wp-content/uploads/2010/03/layoutHTML5.png" alt="layoutHTML5" width="351" /></a></td></tr></tbody></table></div><p>Les balises <code>article</code>, <code>section</code>, <code>header</code> et <code>footer</code> indiquent clairement à quel type de texte elles correspondent et comment s&#8217;organise leur contenu. La balise <code>aside</code> définit un contenu lié au sujet principal, sans en faire partie pour autant. Reste le tag <code>nav</code> qui est prévu pour servir les liens de navigations de la page comme un menu par exemple. La mise en page proposée ci-dessus ne révèle pas la flexibilité d&#8217;utilisation de ces éléments. Notez bien que les <code>article</code> et <code>section</code> peuvent avoir leur propre <code>header</code> et <code>footer</code>.</p><p>Avec ces nouvelles balises, nous serons enfin capables de gérer l&#8217;organisation de nos documents de façon intuitive et les navigateurs pourront générer le plan des documents eux-mêmes. L&#8217;algorithme nécessaire est d&#8217;ailleurs décrit dans la spécification. Tous ces éléments sont déjà supportés nativement par les navigateurs avec l&#8217;exception habituelle de IE pour lequel il existe un <a
title="workaround JavaScript" href="http://code.google.com/p/html5shiv/">workaround JavaScript</a>. Vous pouvez dès maintenant vous familiariser avec ces nouvelles balises sans avoir peur des problèmes de compatibilité.</p><h3><a
name="Elmentsinteractifs"></a>Eléments interactifs</h3><p>Sous ce terme limpide se cachent les éléments qui fournissent de l&#8217;interaction utilisateur dans la page. Ce qui correspond aux <a
title="Interactive elements" href="http://dev.w3.org/html5/spec/interactive-elements.html">Interactive elements</a> de la spécification. La grosse nouveauté ici est la définition d&#8217;une balise <code>menu</code> permettant de construire des barres de menu (<code>type="toolbar"</code>), des menus contextuels (<code>type="context"</code>) ou de simples listes de commandes. Un tag <code>menu</code> peut contenir des sous-menus et se compose d&#8217;éléments permettant de lancer des commandes.</p><pre class="brush: xml; title: ; notranslate">
&lt;menu type=&quot;toolbar&quot;&gt;
 &lt;li&gt;
  &lt;menu label=&quot;File&quot;&gt;
   &lt;button type=&quot;button&quot; onclick=&quot;fnew()&quot;&gt;New...&lt;/button&gt;
   &lt;button type=&quot;button&quot; onclick=&quot;fopen()&quot;&gt;Open...&lt;/button&gt;
   &lt;button type=&quot;button&quot; onclick=&quot;fsave()&quot;&gt;Save&lt;/button&gt;
  &lt;/menu&gt;
 &lt;/li&gt;
 &lt;li&gt;
  &lt;menu label=&quot;Edit&quot;&gt;
   &lt;button type=&quot;button&quot; onclick=&quot;ecopy()&quot;&gt;Copy&lt;/button&gt;
   &lt;button type=&quot;button&quot; onclick=&quot;epaste()&quot;&gt;Paste&lt;/button&gt;
  &lt;/menu&gt;
 &lt;/li&gt;
&lt;/menu&gt;
</pre><p>Pour les commandes, HTML5 propose directement un élément <code>command</code> qui permet d&#8217;associer un texte ou icône à une exécution JavaScript sur événement <code>onclick="alert('hello world')"</code>. Pour utiliser le menu contextuel, il suffit d&#8217;ajouter l&#8217;attribut <code>contextmenu="menu_id"</code>, sur l&#8217;élément qui doit utiliser le menu.</p><p>L&#8217;autre nouveauté parmi les éléments interactifs est la balise <code>details</code>. Le fonctionnement de ce tag est proche d&#8217;un menu en accordéon, avec une partie de texte toujours affichée et une partie cachée pouvant être rendue visible sur demande de l&#8217;utilisateur. Cela peut être utile, pour cacher des options avancées par exemple.</p><pre class="brush: xml; title: ; notranslate">
&lt;section class=&quot;progress window&quot;&gt;
 &lt;h1&gt;Copying &quot;Really Achieving Your Childhood Dreams&quot;&lt;/h1&gt;
 &lt;details&gt;
  &lt;summary&gt;Copying... &lt;progress max=&quot;375505392&quot; value=&quot;97543282&quot;&gt;&lt;/progress&gt; 25%&lt;/summary&gt;
  &lt;dl&gt;
   &lt;dt&gt;Transfer rate:&lt;/dt&gt; &lt;dd&gt;452KB/s&lt;/dd&gt;
   &lt;dt&gt;Local filename:&lt;/dt&gt; &lt;dd&gt;/home/rpausch/raycd.m4v&lt;/dd&gt;
   &lt;dt&gt;Remote filename:&lt;/dt&gt; &lt;dd&gt;/var/www/lectures/raycd.m4v&lt;/dd&gt;
  &lt;/dl&gt;
 &lt;/details&gt;
&lt;/section&gt;
</pre><p>Ici, le tag <code>details</code> est utilisé pour cacher les informations techniques d&#8217;une copie. Vous noterez au passage l&#8217;utilisation d&#8217;une balise <code>progress</code>, pour afficher une barre d&#8217;avancement.</p><h3><a
name="LesWebForms"></a>Les WebForms</h3><h4><a
name="Nouveauxinput"></a>Nouveaux input</h4><p>Les formulaires aussi profitent de la mise à jour en reprenant en partie <a
title="XForms" href="http://www.w3.org/TR/xforms11/">XForms</a> pour les connaisseurs. Le principe est de fournir des <code>input</code> fortement typés  ainsi qu&#8217;une API JavaScript de validation en plus d&#8217;une interactivité accrue. Parmi les nouveaux types d&#8217;input, il y a :</p><ul><li>Le support des saisies de dates et heure décliné sous plusieurs formes (<code>date</code>, <code>datetime</code>, <code>datetime-local</code>, <code>month</code>, <code>week</code>, <code>time</code>). Nous n&#8217;aurons donc plus besoin des widgets supplémentaires JavaScript pour générer des calendriers.</li><li>La saisie de formats numériques via les <code>number</code> et les <code>range</code> qui pourront prendre la forme d&#8217;un slider vertical ou horizontal</li><li>Différents types de chaînes formatées comme les <code>url</code>, les <code>email</code> et <code>tel</code></li><li>Le selecteur de couleur <code>color</code></li><li>Le champ de recherche <code>search</code></li></ul><p>Les anciens types sont maintenus. Ils bénéficient d&#8217;un bon lifting, tel le type <code>file</code> qui permettra désormais de sélectionner plusieurs fichiers d&#8217;un seul coup, tout en précisant le type mime accepté. Il y a aussi l&#8217;attribut <code>placeHolder</code> qui permet de fournir un texte descriptif affiché dans le champs si il n&#8217;est pas renseigné.</p><h4><a
name="Validationnative"></a>Validation native</h4><p>Tous les <code>input</code> supportent de nouveaux attributs de validation qui permettent de contraindre les saisies de l&#8217;utilisateur, et peuvent interdire la soumission du formulaire, s&#8217;il n&#8217;est pas valide. Encore une fois, cela permettra de remplacer des solutions hétérogènes JavaScript par un standard nativement supporté par le navigateur. La validation s&#8217;accompagne aussi de nouveaux évènements DOM pour notifier les erreurs ou surcharger la validation avec son propre code JavaScript. Plus besoin non plus de jouer avec les classes CSS pour faire ressortir les champs en erreur grâce aux pseudo-formats (<code>:invalid</code>, <code>:valid</code>, <code>:Out-of-range</code>, &#8230;).</p><p>Des validateurs par défaut sont fournis sous la forme de nouveaux attributs à placer sur les <code>input</code> :</p><ul><li><code>required</code> pour un champ requis</li><li><code>min</code> et <code>max</code> permettent de définir une valeur minimum et maximum sur les types numérique et date</li><li><code>pattern</code> fournit une expression régulière que la saisie doit respecter</li></ul><h4><a
name="Autocompltion"></a>Auto-complétion</h4><p>Autre nouveauté inspirée des widgets JavaScript existant, les <code>datalist</code> sont des listes de valeurs construites à l&#8217;aide d&#8217;éléments de type liste (<code>li</code>, <code>option</code>, &#8230;). La <code>datalist</code> est transparente par défaut mais elle peut-être liée à un ou plusieurs <code>input</code> avec l&#8217;attribut <code>list</code>. Une fois l&#8217;association établie avec un <code>input</code>, la liste est utilisée pour fournir des suggestions à la saisie. Les éléments à l&#8217;intérieur de la liste peuvent-être décorés par CSS directement.</p><pre class="brush: xml; title: ; notranslate">
&lt;input type=&quot;text&quot; list=&quot;roles&quot; autofocus /&gt;
&lt;datalist id=&quot;roles&quot;&gt;
   &lt;li&gt;Designer&lt;/li&gt;
   &lt;li&gt;Integrateur&lt;/li&gt;
   &lt;li&gt;Programmeur&lt;/li&gt;
&lt;/datalist&gt;
</pre><h4><a
name="Rptitions"></a>Répétitions</h4><p>Une autre évolution sympathique est la création d&#8217;un système de template, facilitant la création de formulaire dynamique. Dans les applications de gestion, il est souvent utile de pouvoir ajouter et supprimer des lignes de saisie dans le formulaire. Le système de répétition est fait pour ça. Je peux définir un bloc comme étant mon template, et le contenu de cet élément pourra être dupliqué via une API JavaScript.</p><pre class="brush: xml; title: ; notranslate">
&lt;tr id=&quot;order&quot; repeat=&quot;template&quot; repeat-start=&quot;3&quot;&gt;
   &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;row[order].product&quot; value=&quot;&quot;&gt;&lt;/td&gt;
   &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;row[order].quantity&quot; value=&quot;1&quot;&gt;&lt;/td&gt;
   &lt;td&gt;&lt;button type=&quot;remove&quot;&gt;Remove This Row&lt;/button&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;p&gt;&lt;button type=&quot;add&quot; template=&quot;order&quot;&gt;Add Row&lt;/button&gt;&lt;button type=&quot;submit&quot;&gt;Submit&lt;/button&gt;&lt;/p&gt;
</pre><p>C&#8217;est l&#8217;attribut <code>repeat</code> qui définit notre bloc de répétition, le <code>repeat-start</code> permet de gérer les aller-retour serveur, pour afficher la liste avec le nombre d&#8217;éléments précédemment soumis. Pour assurer l&#8217;ajout et la suppression de ligne, j&#8217;ai utilisé les boutons de type <code>add</code> et <code>remove</code> mais j&#8217;aurais aussi bien pu utiliser des méthodes JavaScript de l&#8217;élément template <code>addRepetitionBlock()</code>. Il y a aussi des solutions pour gérer l&#8217;ordre des répétitions permettant de monter et descendre les lignes répétées.</p><h4><a
name="Etatdeslieux"></a>Etat des lieux</h4><p>Voilà la promesse d&#8217;un monde meilleur dans lequel nous aurons moins de travail à fournir (CSS, JS) pour obtenir des résultats simplement meilleurs. Notez une dernière chose, les input peuvent être liés à un ou plusieurs formulaires via le nouvel attribut <code>form</code>. En d&#8217;autres termes, il sera possible de placer nos <code>input</code> pour un formulaire à l&#8217;extérieur de ce dernier.</p><p>Comme vous l&#8217;avez remarqué, j&#8217;ai utilisé le futur dans ce paragraphe car pour le moment seul Opera 9 supporte nativement les WebForms. Pour permettre aux développeurs de s&#8217;y essayer et valider la spécification, le projet <a
title="WebForms2" href="http://code.google.com/p/webforms2/">WebForms2</a> propose une implémentation partielle en JavaScript. La spécification au départ avait été séparée du langage HTML5, mais le W3C a décidé de la ré-intégrer en y apportant des modifications. Du coup la plupart des fonctions développées sont liées à une ancienne version des WebForms.</p><p>Pour les autres navigateurs, notez tout de même que les développements ont déjà commencé. Par exemple Chrome 5 devrait être livré avec le support des nouveaux <code>input</code> et l&#8217;API de validation(<a
title="Chrome Web Platform Status" href="http://www.chromium.org/developers/web-platform-status">Chrome Web Platform Status</a>). Safari bénéficie du même support que chrome qui se limite aux types <code>search</code>, <code>range</code> et <code>file</code> multiple. Du côté de Firefox, les choses sont moins claires ; il existe bien un ensemble de <a
title="bugs" href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=344614&amp;hide_resolved=0">bugs</a> pour le support des WebForms mais Mozilla communique peu sur le sujet. Actuellement, Internet Explorer 8 ne supporte aucune des ces nouveautés et il est impossible de connaître la roadmap de Microsoft sur le sujet. Tout ce que l&#8217;on sait, c&#8217;est que l&#8217;éditeur a décidé de mettre les bouchées doubles pour améliorer son support des travaux du W3C. Peut-être une bonne solution pour inverser la vapeur et en finir avec la descente aux enfers de son précieux navigateur.</p><p><a
title="Page de dmonstration pour Chrome Safari et Opera" href="http://www.miketaylr.com/pres/html5/forms2.html">Page de démonstration pour Chrome, Safari et Opera</a>.</p><h3><a
name="Multimedia"></a>Multimedia</h3><p>Il est temps de parler des nouveaux types de contenu poussés par HTML5. Les auteurs du whatwg se sont probablement demandé pourquoi doit-on installer des plugins dans nos navigateurs ? Nous savons a priori tous aujourd&#8217;hui que Flash est utilisé principalement pour 3 choses dans les applications :</p><ul><li>Pouvoir écouter de la musique</li><li>Pouvoir regarder des vidéos</li><li>Faire des animations de folies</li></ul><p>J&#8217;ai mis volontairement de côté Flex car il cible plutôt les applications d&#8217;entreprise, et les jeux Flash car le Boss ne veut pas en entendre parler <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Sachez, si vous êtes passé à côté de ça, que HTML5 adresse ces trois problématiques en sortant trois nouvelles balises de son chapeau :</p><ul><li><code>audio</code> permet de gérer la lecture de fichiers audio en streaming.</li><li><code>video</code> assure la lecture de vidéos en streaming toujours.</li><li><code>canvas</code> permet de dessiner et de faire des animations en JavaScript.</li></ul><h4><a
name="AudioetVideo"></a>Audio et Video</h4><p>Jusqu&#8217;à maintenant, les gros avantages de la technologie d&#8217;Adobe sont la portabilité puisque Flash est disponible pour tous les navigateurs, et la performance en comparaison avec les moteurs JavaScript. Il est clair que ces trois balises viennent marcher sur les plate-bandes de Flash. Les éléments média disposent des attributs :</p><ul><li><code>controls</code> pour activer l&#8217;affichage de l&#8217;interface de contrôle du navigateur</li><li><code>autobuffer</code> pour activer le chargement automatique de la ressource en cache</li><li><code>autoplay</code> pour activer le lancement automatique de la lecture</li><li><code>loop</code> pour lire le ou les médias en boucle</li><li><code>src</code> pour fournir l&#8217;url du fichier média à lire</li></ul><p>La balise <code>source</code> placée à l&#8217;intérieure d&#8217;une balise <code>audio</code> ou <code>video</code> permet aussi de définir l&#8217;url (<code>@src</code>), le type mime et le codec (<code>@type</code>) d&#8217;une ressource média. Il suffit de mettre plusieurs <code>source</code> pour créer une playlist.</p><pre class="brush: xml; title: ; notranslate">
&lt;audio controls autobuffer autoplay loop&gt;
  &lt;source src=&quot;elvis.ogg&quot; /&gt;
  &lt;source src=&quot;elvis.mp3&quot; /&gt;
&lt;/audio&gt;
&lt;video src=&quot;video.ogg&quot; controls&gt;
  &lt;source src='video.mp4' type='video/mp4; codecs=&quot;avc1.42E01E, mp4a.40.2&quot;'&gt;
  &lt;!-- Un texte alternatif pour les anciens navigateurs --&gt;
  Your browser does not support the &lt;code&gt;video&lt;/code&gt; element.
&lt;/video&gt;
</pre><p>Si le navigateurs n&#8217;arrivent pas à lire le fichier ogg, il tentera de lire le fichier H.264. De même, si le navigateur ne supporte pas l&#8217;élément <code>video</code>, il affichera le texte alternatif. Il suffit donc de placer un lecteur Flash à la place du texte pour que la vidéo reste lisible dans un ancien navigateur.</p><p>Si vous ne voulez pas utiliser l&#8217;interface native, ou que vous souhaitez simplement cacher le lecteur audio, vous pouvez utiliser l&#8217;API standard JavaScript pour créer un lecteur, et profiter des méthodes <code>play()</code>, <code>pause()</code>, et <code>load()</code> pour charger la prochaine ressource média. Une dernière méthode : <code>canPlayType(type)</code>, permet de demander au navigateur si il supporte le format vidéo ou audio fournit en paramètre. Cela sera très utile pour gérer les incompatibilités de format.</p><p>De plus l&#8217;interface <code>HTMLMediaElement</code> fournit quantité de propriétés allant du volume à l&#8217;état du buffer en passant par le temps de lecture courant. Le tout est, bien sûr, accompagné d&#8217;une batterie d&#8217;événements qui permettent de suivre l&#8217;avancement du chargement, l&#8217;état du lecteur, et les action lancées par l&#8217;utilisateur.</p><p>Pour plus de détail sur le sujet, je vous invite à lire la <a
title="spécification W3C des éléments média" href="http://www.w3.org/TR/html5/video.html">spécification W3C des éléments média</a> et à tester la démo de <a
title="jPlayer" href="http://www.happyworm.com/jquery/jplayer/latest/demos.htm">jPlayer</a> un lecteur audio pour jQuery.</p><h4><a
name="LaguerredesCodecs"></a>La guerre des Codecs</h4><p>Venons en au problème des codecs. Le W3C se contente de citer un certain nombre de formats allant du H.264 au DIRAC pour la vidéo en passant par mpeg-4 et Theora; même chose pour l&#8217;audio avec AAC, FLAC, Vorbis, &#8230; La spécification laisse le libre choix aux navigateurs et table sur la création d&#8217;extensions propres à ces derniers pour apporter le support de nouveaux formats. Si aujourd&#8217;hui <a
title="YouTube" href="http://www.youtube.com/html5">YouTube</a> et <a
title="Vimeo" href="http://vimeo.com/blog:268">Vimeo</a> ont choisi le H.264, <a
title="DailyMotion" href="http://www.dailymotion.com/openvideodemo">DailyMotion</a> joue les fidèles Mozilla avec sa démo basée sur Ogg et ne supportant que Firefox.</p><p>Chrome et Safari poussent H.264 tandis que Mozilla le rejette totalement et pousse les formats libres Vorbis et Theora (Ogg). Le gros avantage d&#8217;H.264, à mon sens, tient au fait qu&#8217;il est parfaitement adapté à l&#8217;embarqué et beaucoup plus optimisé que Theora. Malgré le barrage de Firefox (25% de parts de marché), avec Apple et Google le codec H.264 semble avoir de beaux jours devant lui. Google qui est justement le plus gros contributeur de Mozilla, fournira peut-être une extension, sinon ce sera probablement du codec pack pour tous.</p><p>Codecs supportés par navigateurs</p><table
style="border: 1px solid black" border="0" cellspacing="0" cellpadding="5"><tbody><tr><td
style="color: #ffffff; border: 1px solid black" bgcolor="#663366"><strong>Navigateur</strong></td><td
style="color: #ffffff; border: 1px solid black" bgcolor="#663366"><strong>Ogg</strong></td><td
style="color: #ffffff; border: 1px solid black" bgcolor="#663366"><strong>MP3</strong></td><td
style="color: #ffffff; border: 1px solid black" bgcolor="#663366"><strong>WAV</strong></td><td
style="color: #ffffff; border: 1px solid black" bgcolor="#663366"><strong>MP4</strong></td></tr><tr><td
style="border: 1px solid black"><strong>Firefox 3.5</strong></td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">-</td></tr><tr><td
style="border: 1px solid black"><strong>Safari 4</strong></td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">Ok</td></tr><tr><td
style="border: 1px solid black"><strong>Chrome 3</strong></td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">Ok</td></tr><tr><td
style="border: 1px solid black"><strong>Opera 10</strong></td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">Ok</td><td
style="border: 1px solid black">-</td></tr><tr><td
style="border: 1px solid black"><strong>IE</strong></td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">-</td><td
style="border: 1px solid black">-</td></tr></tbody></table><p>Internet Explorer est pour le moment hors-jeu, sauf si on installe <a
title="Google Chrome Frame" href="http://code.google.com/intl/fr-FR/chrome/chromeframe/">Google Chrome Frame</a>. Mais il semblerait que Microsoft s&#8217;intéresse au sujet pour l&#8217;avenir et participe à la rédaction de la spécification. En attendant, Flash conserve une avance confortable et profite de sa très large base installée. Le changement arrive bizarrement par l&#8217;embarqué, iPhone et iPod Touch en tête, qui, d&#8217;une part, supportent pleinement les balises <code>audio</code>, et <code>video</code>, et d&#8217;autre part prouvent que les utilisateurs peuvent se passer de Flash sur le web.</p><h4><a
name="LeCanvas"></a>Le Canvas</h4><p>Passons maintenant au <code>canvas</code>. Inventé par Apple pour le Dashboard d&#8217;OS X et ses widgets, le <code>canvas</code> fournit une API JavaScript pour le dessin 2D. La balise définit une aire de dessins avec sa hauteur et sa largeur. L&#8217;objet DOM donne accès au contexte graphique qui possède les primitives de dessins. Outre les formes géométriques standards, l&#8217;API permet de faire de la composition, des transformations, de manipuler des images et d&#8217;afficher du texte formaté. Avec un timeout ou un intervalle sur l&#8217;objet et un peu de JavaScript, il devient possible d&#8217;animer les dessins. Les implémentations ne sont pas encore très optimisées. Un simple gif animé reste pour le moment plus performant en terme d&#8217;animation. Il existe déjà un tas de librairie JS construites autour de l&#8217;élément <code>canvas</code> pour générer des graphes et des charts par exemple (<a
title="Flotr" href="http://solutoire.com/flotr/">Flotr</a>, <a
title="ProtoChart" href="http://www.deensoft.com/lab/protochart/">ProtoChart</a>, <a
title="fgCharting" href="http://www.filamentgroup.com/lab/jquery_visualize_plugin_accessible_charts_graphs_from_tables_html5_canvas/">fgCharting</a>).</p><pre class="brush: xml; title: ; notranslate">
&lt;canvas id=firstCanvas&quot;&gt;Browser does not support the canvas element.&lt;/canvas&gt;
&lt;script type=&quot;text/JavaScript&quot;&gt;
var canvas=document.getElementById('myCanvas');
var ctx=canvas.getContext('2d');
ctx.fillStyle='#FF0006';
ctx.fillRect(0,0,80,120);
&lt;/script&gt;
</pre><p>Les détracteurs déplorent l&#8217;utilisation d&#8217;une API procédurale, et l&#8217;absence d&#8217;éléments crées dans l&#8217;arbre DOM de la page comme le fait SVG. Autre inconvénient, <code>canvas</code> travaille la composition directement en pixels et non en calques. SVCKit a donc implémenté en grande partie SVG dans <code>canvas</code> dans <a
title="SVGCanvas" href="http://svgkit.sourceforge.net/web/SVGCanvas.html">SVGCanvas</a>. Il existe déjà beaucoup de documentations et tutoriels autour de <code>canvas</code> qui rencontre, malgré ses défauts (de jeunesse ?), un grand succès. Mozilla a même développé un IDE en ligne basé sur <code>canvas</code>, nom de code : <a
title="BeSpin" href="https://bespin.mozilla.com/">BeSpin</a>.</p><p>Voilà pour les domaines d&#8217;application, passons maintenant à la question des navigateurs. Avec Apple pour inventeur et Mozilla comme évangéliste, <code>canvas</code> est déjà supporté nativement sur Safari, Firefox, Chrome et Opéra. Comme d&#8217;habitude IE est à la traine, mais il existe des contournements comme le plugin <a
title="IECanvas" href="http://hg.mozilla.org/users/vladimir_mozilla.com/iecanvas">IECanvas</a>, ou le portage Flash <a
title="ExplorerCanvas" href="http://code.google.com/p/explorercanvas/">ExplorerCanvas</a>.</p><h3><a
name="Conclusion"></a>Conclusion</h3><p>Nous voici à la fin de ce tour d&#8217;horizon des nouveautés d&#8217;HTML5, côté contenu du moins.<br
/> Avec les grands du web dans la poche, HTML5 est déjà promis à un bel avenir, malgré son jeune age. La prochaine échéance du W3C devrait être le passage en recommandation dans le courant de cette année peut-être. Si les WebForms ne sont pas pour tout de suite, le multimédia et le canvas sont déjà suffisamment supportés pour être utilisés aujourd&#8217;hui. Il faudra attendre la sortie d&#8217;IE 9 pour connaître les plans concrets de Microsoft sur le sujet. A mon humble avis, Microsoft intégrera HTML5 au fur et à mesure qu&#8217;il s&#8217;imposera sur le web. Il faudra aussi regarder de près l&#8217;évolution du standard CSS car HTML5 ne va pas sans CSS3. De ce côté, pas de crainte à avoir puisque même IE est dans la course.</p><p>Il reste un problème d&#8217;outillage, car il n&#8217;existe pas pour le moment de WYSIWYG compatible HTML5. Et il ne faut sans doute pas compter sur Adobe pour le faire rapidement. Apple propose déjà DashCode pour créer des widgets ou des applications web iPhone avec un éditeur graphique bien monté. Mais l&#8217;export vers d&#8217;autres navigateurs est presque impossible tant les applications construites reposent sur des fonctionnalités spécifiques de Safari.</p><p>Dans le prochain article, je vous présenterai les nouveautés JavaScript poussées par HTML5 et leur état actuel d&#8217;implémentation.</p><div
class="shr-publisher-4127"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F03%2F02%2Fhtml-5-les-nouveaux-elements%2F' data-shr_title='HTML5+-+Les+nouveaux+%C3%A9l%C3%A9ments'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2010%2F03%2F02%2Fhtml-5-les-nouveaux-elements%2F' data-shr_title='HTML5+-+Les+nouveaux+%C3%A9l%C3%A9ments'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2010/03/02/html-5-les-nouveaux-elements/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>Devoxx &#8211; Jour 2 &#8211; Java FX The developer guide</title><link>http://blog.xebia.fr/2009/11/23/devoxx-jour-2-java-fx-the-developer-guide/</link> <comments>http://blog.xebia.fr/2009/11/23/devoxx-jour-2-java-fx-the-developer-guide/#comments</comments> <pubDate>Mon, 23 Nov 2009 10:57:00 +0000</pubDate> <dc:creator>Ellène Dijoux</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Mobilité]]></category> <category><![CDATA[Devoxx]]></category> <category><![CDATA[JavaFX]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=3256</guid> <description><![CDATA[La session JavaFX fut l&#8217;occasion de découvrir comment développer une application JavaFX. Le speaker Stephen Chin, chef de projet de WidgetFX, nous a proposé une introduction au langage de script JavaFX. La présentation semblait à mon avis plus modeste que les présentations faites l&#8217;année dernière. Le nombre de sessions JavaFX est moins important comparé l&#8217;année [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://www.devoxx.com/"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/11/logo.jpeg" alt="Devoxx" style="margin: 1em 1em 1em 1em; float: right;" /></a><br
/> La session JavaFX fut l&#8217;occasion de découvrir comment développer une application JavaFX. Le speaker <a
href="http://java.dzone.com/articles/javafx-in-practice-an-intervie" title="Stephen Chin" >Stephen Chin</a>, chef de projet de WidgetFX, nous a proposé une introduction au langage de script JavaFX.<br
/> La présentation semblait à mon avis plus modeste que les présentations faites l&#8217;année dernière. Le nombre de sessions JavaFX est moins important comparé l&#8217;année précédente. De même pas de présentation au Keynote où Adobe semble être mis en avant avec sa plateforme Flash.</p><h3><a
name="LescriptJavaFX"></a>Le script JavaFX</h3><p>Dans ce langage, tout est objet, donc pas de types primitifs. Le script permettant de définir les IHMs a une structure arborescente plus facile à manipuler.<br
/> Exemple de code :</p><pre class="brush: java; title: ; notranslate">
import javafx.stage.Stage;
Stage {
  title: &quot;Hello World !&quot;
  width: 100
  height: 50
}
</pre><p>Voici quelques unes des fonctionnalités qui nous ont été présentées :</p><ul><li>Le Data Binding : il est possible de lier <em>(binder)</em> des données entre deux objets avec JavaFX. Ce binding va plus loin avec la possibilité de <em>binder</em> un bloc ;</li><li><a
href="http://javafx.com/samples/PathAnimation/index.html" title="Transition" >Transition</a> c&#8217;est à dire le passage d&#8217;un état vers un autre ;</li><li>Les effets : pour déplacer un objet avec Move par exemple ;</li><li>Media player : JavaFx est capable de gérer les médias ;</li><li>Des layouts verticaux et horizontaux ;</li><li>Les composants sont skinables, c&#8217;est-à-dire qu&#8217;il est possible de mettre le style à part dans une CSS ;</li><li>Access modifier différent de java : avec <em>public-read</em> pour lecture uniquement ou <em>public-init</em> si seule l&#8217;initialisation est autorisée.</li></ul><p>Pour plus d&#8217;informations, voici <a
href="http://java.sun.com/javafx/reference/docs.jsp#api" title="la documentation de rfrence" >la documentation de référence</a>.</p><p>Des librairies supplémentaires sont également disponibles pour JavaFX :</p><ul><li><a
href="http://code.google.com/p/jfxtras/" title="JFXtras" >JFXtras</a> : fournit des librairies de composants supplémentaires ;</li><li>JFXtrasShapes : fournit des formes supplémentaires comme des flèches ou des étoiles ;</li><li><a
href="http://www.miglayout.com/" title="MigLayout" >MigLayout</a> pour JavaFX.</li></ul><h3><a
name="Courbedapprentissage"></a>Courbe d&#8217;apprentissage</h3><p>Stephen Chin semble dire que la courbe d&#8217;apprentissage de JavaFX n&#8217;est pas très importante pour un développeur Java. En effet, il serait possible d&#8217;importer des classes Java dans une application JavaFX. Il y a peut être eu des évolutions entre temps mais cette courbe d&#8217;apprentissage ne fut pas aussi évidente lors du <a
href="http://blog.xebia.fr/2009/06/17/xebia-mobile-application-contest-java-fx-android-iphone/" title="Mobile Contest" >Mobile Contest</a>.</p><h3><a
name="DployablesurunHTCDiamond"></a>Déployable sur un HTC Diamond !</h3><p>Pour nous prouver qu&#8217;il est possible de déployer sur un téléphone portable, Stephen Chin a fait tourner une application sur son téléphone comme lors de JavaOne l&#8217;année dernière. Mais en dehors de ces téléphones spécialement configurés, il n&#8217;y aurait aucun mobile grand public qui en serait capable pour le moment.</p><h3><a
name="NetbeansetsonJavaFXBuilder"></a>Netbeans 6.8 et son JavaFX Builder</h3><p>Un second speaker, <a
href="http://blogs.sun.com/tor/" title="Tor Nobye" >Tor Nobye</a>, est intervenu pour présenter la bêta de Netbeans 6.8 qui supporte (toujours) JavaFX. Une révolution pour les développeurs qui bénéficiaient jusqu&#8217;à présent de plugins très pauvres. Cette bêta fournit :</p><ul><li>le support du SDK 1.2.1 ;</li><li>meilleure complétion du code ;</li><li>un debugger amélioré ;</li><li>des suggestions pour les erreurs et warning de compilation.</li></ul><h3><a
name="Conclusion"></a>Conclusion</h3><p>La présentation fut intéressante pour comprendre le fonctionnement du langage et voir de quoi JavaFX était capable. D&#8217;après la documentation, il existe des composants graphiques comme des boutons, champs texte &#8230; Il aurait été intéressant de voir des exemples de réalisation de formulaires qui se rapproche plus de ce que l&#8217;on développe tous les jours. Finalement, il ne semble pas y avoir une énorme révolution par rapport aux versions précédentes.</p><p>Interrogée sur l&#8217;avenir de JavaFX, l&#8217;équipe du projet a expliqué que la prochaine version apporterait un gain significatif de performance. L&#8217;équipe est consciente de la montée en puissance de la plate-forme d&#8217;Adobe et se dit pénalisée par le temps de démarrage important de la JVM, rendant les applications Web JavaFX forcément moins attrayantes. Dès lors on comprend l&#8217;enjeu stratégique de la modularisation que Jigsaw apportera et qui permettra de rééquilibrer la plate-forme de Sun face à Flex en terme de performance. Ils tablent également sur une convergence des environnements RIA en terme de fonctionnalités à l&#8217;avenir, ce qui permettrait à JavaFX de briller grâce à l&#8217;intégration native à Java dont il dispose.</p><div
class="shr-publisher-3256"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F11%2F23%2Fdevoxx-jour-2-java-fx-the-developer-guide%2F' data-shr_title='Devoxx+-+Jour+2+-+Java+FX+The+developer+guide'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F11%2F23%2Fdevoxx-jour-2-java-fx-the-developer-guide%2F' data-shr_title='Devoxx+-+Jour+2+-+Java+FX+The+developer+guide'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/11/23/devoxx-jour-2-java-fx-the-developer-guide/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Jazoon &#8211; Jour 1 &#8211; Développement mobile</title><link>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-developpement-mobile/</link> <comments>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-developpement-mobile/#comments</comments> <pubDate>Wed, 24 Jun 2009 08:41:46 +0000</pubDate> <dc:creator>Pablo Lopez</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Mobilité]]></category> <category><![CDATA[iPhone]]></category> <category><![CDATA[j2me]]></category> <category><![CDATA[jazoon]]></category> <category><![CDATA[mobile]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2323</guid> <description><![CDATA[La conférence &#171;&#160;le développement iPhone vu par des développeurs Java&#160;&#187; a fait le plein. Nous n&#8217;avons pas assisté à cette conférence dans son intégralité, ce sujet ayant déjà été traité en profondeur dans le cadre de nos XKE. A noter cependant que ce sujet semble passionner les foules. Un autre sujet &#171;&#160;mobile&#160;&#187; était présenté aujourd&#8217;hui, [...]]]></description> <content:encoded><![CDATA[<p>La conférence &laquo;&nbsp;le développement iPhone vu par des développeurs Java&nbsp;&raquo; a fait le plein. Nous n&#8217;avons pas assisté à cette conférence dans son intégralité, ce sujet ayant déjà été traité en profondeur dans le cadre de nos <a
href="http://blog.xebia.fr/2009/06/17/xebia-mobile-application-contest-java-fx-android-iphone/">XKE</a>. A noter cependant que ce sujet semble passionner les foules.</p><p>Un autre sujet &laquo;&nbsp;mobile&nbsp;&raquo; était présenté aujourd&#8217;hui, à savoir la fragmentation du marché des mobiles. Cette fragmentation intervient à tous les niveaux : hardware, OS, environnement applicatif.</p><p>Le chaos est positif, car il amène l&#8217;innovation, mais il complique considérablement la tâche des développeurs. Pour réaliser une application fonctionnant sur toutes les plates-formes, plusieurs stratégies se présentent :</p><ul><li>Développer spécifiquement pour chaque appareil : la portabilité et l&#8217;expérience utilisateur sont maximales, mais le travail titanesque.</li><li>Développer une application n&#8217;utilisant que le plus petit dénominateur commun entre les plates formes, ce qui revient à sacrifier l&#8217;expérience utilisateur.</li><li>Utiliser un player, ce qui équivaut à la solution ci dessus <em>(l&#8217;expérience utilisateur est limitée par les fonctionnalités du player, elles mêmes limitées par les adhérences entre les différents mobiles)</em>.</li><li>Utiliser un framework de portage.</li></ul><p>C&#8217;est cette dernière solution qui était présentée, par les créateurs du framework <a
href="http://www.j2mepolish.org/cms/">J2ME Polish</a>. L&#8217;idée sous-jacente est d&#8217;écrire son programme en Java, et d&#8217;utiliser un framework pour le porter sur la majorité des mobiles. Le code est transcrit par le framework en J2ME en utilisant un repository d&#8217;appareils, qui spécifie les caractéristiques de chacun <em>(taille de l&#8217;écran, interactions possibles avec l&#8217;appareil)</em> &#8230;</p><p>Il est possible de migrer le code sous Android ou Blackberry <em>(J2ME Polish utilise pour ces deux cibles une reconstruction des classes J2ME spécifique)</em>.</p><p>Il est même possible de transformer ce code source pour le déployer sur  Windows mobile et sur iPhone : le code Java est représenté sous forme d&#8217;arbre et un &#8216;cross-compiler&#8217; est utiliser pour transformer cet arbre en langage cible.</p><p>Même si l&#8217;exercice est intéressant, il est un peu surfait, notamment parce que l&#8217;expérience utilisateur offerte par l&#8217;iPhone surclasse tous ces concurrents et qu&#8217;il n&#8217;est donc raisonnable que de porter une logique business lourde <em>(la conception des IHM étant trop différente selon les mobiles)</em>.</p><p>A noter que les créateurs du framework apprécient l&#8217;initiative JavaFX, mais ne se pencheront réellement dessus que si le marché des terminaux mobiles porte cette nouvelle technologie.</p><div
class="shr-publisher-2323"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F06%2F24%2Fjazoon-jour-1-developpement-mobile%2F' data-shr_title='Jazoon+-+Jour+1+-+D%C3%A9veloppement+mobile'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F06%2F24%2Fjazoon-jour-1-developpement-mobile%2F' data-shr_title='Jazoon+-+Jour+1+-+D%C3%A9veloppement+mobile'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/24/jazoon-jour-1-developpement-mobile/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Xebia Mobile Application Contest : Java FX &#8211; Android &#8211; iPhone</title><link>http://blog.xebia.fr/2009/06/17/xebia-mobile-application-contest-java-fx-android-iphone/</link> <comments>http://blog.xebia.fr/2009/06/17/xebia-mobile-application-contest-java-fx-android-iphone/#comments</comments> <pubDate>Wed, 17 Jun 2009 12:04:38 +0000</pubDate> <dc:creator>Xebia France</dc:creator> <category><![CDATA[Mobilité]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[avantages]]></category> <category><![CDATA[comparaison]]></category> <category><![CDATA[contest]]></category> <category><![CDATA[inconvénients]]></category> <category><![CDATA[iPhone]]></category> <category><![CDATA[JavaFX]]></category> <category><![CDATA[retours d'expérience]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2226</guid> <description><![CDATA[Fonctionnement du contest Dans le cadre de nos XKE (formations internes), beaucoup d&#8217;entre nous ont émis le souhait d&#8217;étendre leur champ de compétence au développement d&#8217;application sur téléphone mobile. Nous avions plusieurs technologies dans nos bagages : l&#8217;installé iPhone (à première vue pas vraiment compatible avec des développeurs Java), l&#8217;étoile montante Android, et l&#8217;outsider JavaFx. [...]]]></description> <content:encoded><![CDATA[<h3><a
name="Fonctionnementducontest"></a>Fonctionnement du contest</h3><p>Dans le cadre de nos XKE (formations internes), beaucoup d&#8217;entre nous ont émis le souhait d&#8217;étendre leur champ de compétence au développement d&#8217;application sur téléphone mobile. Nous avions plusieurs technologies dans nos bagages : l&#8217;installé iPhone (à première vue pas vraiment compatible avec des développeurs Java), l&#8217;étoile montante Android, et l&#8217;outsider JavaFx.<br
/> Mais pour voir au-delà des promesses marketing, il nous fallait nous mesurer à ces technologies dans le cadre de leur utilisation réelle, sur un projet de la &#8216;vraie vie&#8217;. Ainsi est née l&#8217;idée de ce contest : 3 technologies, 3 développeurs Java (<a
href="http://blog.xebia.fr/author/afathallah/" title="Amin Fathallah" >Amin Fathallah</a> sur iPhone, <a
href="http://blog.xebia.fr/author/ealliaume" title="Erwan Alliaume" >Erwan Alliaume</a> sur Android, <a
href="http://blog.xebia.fr/author/plopez/" title="Pablo Lopez" >Pablo Lopez</a> sur JavaFx), et un mois (sur notre temps libre) pour traiter d&#8217;un sujet choisi par nos collègues : afficher sur le téléphone mobile l&#8217;ensemble des photos Flickr à proximité de l&#8217;utilisateur géolocalisées sur une carte. Chaque technologie a donné lieu à une démo en live et une analyse du ressenti lors du XKE suivant.</p><h3><a
name="Rsultatsetcommentaires"></a>Résultats et commentaires</h3><p>Commençons par un survol des démos : JavaFx très poussif, sur émulateur. Pas un franc succès. Android sur un G1 flambant neuf, très convaincant, notamment par les divers ajouts hors cahier des charges. Large vainqueur à l&#8217;applaudimètre, l&#8217;iPhone, avec une UI très soignée et des effets graphiques à la hauteur de la réputation du célèbre terminal.</p><p>Dans le même ordre, voici l&#8217;analyse de chacun des développeurs.</p><h4><a
name="JavaFXMobile"></a>Java FX Mobile (SDK 1.1)</h4><p>Mes premières heures de développement de l&#8217;application m&#8217;ont confirmé mes a priori : cela n&#8217;allait pas être facile. Il n&#8217;existe pas à ma connaissance de composant JavaFx permettant de simplement se géolocaliser sur une carte, qui plus est si la source cartographique est gratuite (type Google). On croise quelques API J2ME offrant ce service, mais rien de bien convaincant en open source.<br
/> Direction donc le capot et c&#8217;est parti pour une séance de &#8216;mains dans le cambouis&#8217; : en utilisant l&#8217;API statique de Google et quelques astuces J2ME pour récupérer les coordonnées GPS, on peut s&#8217;en sortir.<br
/> Un petit tour ensuite sur les <a
href="http://javafx.com/docs/tutorials/mediabrowser/" title="tutoriels officiels" >tutoriels officiels</a> qui expliquent clairement comment récupérer des images flickR et les binder sur des composants JavaFx.<br
/> Et là commencent les ennuis réels, à savoir la gestion de l&#8217;affichage. J&#8217;ai eu la désagréable impression de revenir aux tous premiers temps de Swing : pas de layout (j&#8217;ai volontairement (faute de temps) laissé de côté les quelques frameworks open source proposant quelques composants graphiques de haut niveau) et donc tous les éléments doivent être &#8216;positionnés à la main&#8217; (entraînant toutes les éventuelles problématiques de resize&#8230;). Un simple exemple pour illustrer mon propos : pour encadrer une miniature flickR, il faut récupérer les dimensions de la miniature et dessiner programmatiquement &#8216;sous&#8217; celle-ci un rectangle de quelques pixels plus grand&#8230; Pas idéal.</p><p>Ajoutez à cela des plugins pour NetBeans et Eclipse défaillants (pas d&#8217;auto-complétion, mauvaise gestion des imports, marquage d&#8217;erreurs inexistantes, et pas de composition graphique&#8230;)</p><p>Peut être est ce la faute à une fonction de refactoring inexistante, mais mon code est rapidement devenu fouilli, et j&#8217;avais parfois du mal à m&#8217;y retrouver entre déclarations, binds et implémentations des fonctions.</p><p>Malgré tout, l&#8217;objectif est en partie atteint : l&#8217;application géolocalise l&#8217;utilisateur (en passant par la couche J2ME &#8216;pure&#8217;), affiche la carte et les miniatures, et permet de les zoomer / dézoomer, même si tout cela reste très artisanal.</p><p>Enfin, et à mon grand désespoir, contrairement à ce qui était sous-entendu dans nombre d&#8217;interviews des dirigeants de Sun à la sortie du Sdk 1.1, les terminaux mobiles du marché ne sont pas prêts à accueillir JavaFx. Il n&#8217;existe à ce jour aucun moyen de déployer des applications sur les téléphones du marché. Pour cela, il faudra attendre les terminaux &#8216;JavaFx ready&#8217; que l&#8217;on nous promet pour JavaOne.<br
/> Faute de mieux, j&#8217;ai dû réaliser ma démo sur l&#8217;émulateur (qui soit dit en passant est bien réalisé et très agréable à utiliser), avec toutes les interrogations que cela comporte (pas de limitation mémoire par exemple&#8230;)</p><p>Pour conclure, on entrevoit nettement les possibilités offertes par le langage de Sun, mais de nombreux obstacles (pitié, un environnement de développement digne de ce nom) viennent rapidement ternir le tableau et laisse JavaFx sur le bord de la route, loin derrière ses concurrents directs sur mobile.</p><table><tr
valign="middle"><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/pausitif.gif" alt="plus" title="plus"  /></td><td><ol><li> Des possibilités intéressantes</li><li> De nombreuses ressources (officielles ou non)</li><li> Un émulateur fonctionnel</li></ol></td></tr><tr
valign="middle"><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/negatif.gif" alt="moins" title="moins" /></a></td><td><ol><li> Langage loin d&#8217;être <em>production ready</em></li><li> Pas d&#8217;API / de composants graphiques de haut niveau</li><li> Un environnement de développement réduit au strict minimum</li></ol></td></tr></table><table
align="center"><tr><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/javafx1.jpg" alt="javafx" title="javafx" /></td><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/javafx2.jpg" alt="javafx" title="javafx" /></td></tr></table><h4><a
name="Android"></a>Android</h4><p>Il n&#8217;aura fallu que 3h (si si) pour répondre au cahier des charges : afficher des photos FlickR géolocalisées sur une carte. Entre la <a
href="http://developer.android.com/reference/com/google/android/maps/MapView.html" title="MapView" >MapView</a>, directement disponible dans le SDK Android et le <a
href="http://sourceforge.net/projects/flickrj/" title="wrapper Java de lapi FlickR" >wrapper Java de l&#8217;api FlickR</a> téléchargeable sur internet, très peu de code fut nécessaire pour développer les bases de cette application. Et c&#8217;est là toute la force d&#8217;Android !</p><p>D&#8217;autre part, contrairement à mes camarades, je n&#8217;ai pas eu à me préoccuper de toutes les connexions réseau. La carte se met à jour automatiquement et la communication vers le site de FlickR s&#8217;effectue par simple choix de protocole (REST ou SOAP).</p><p>Une fois ce POC terminé, seul un <em>gros</em> travail d&#8217;enrobage restait à effectuer :</p><ul><li>L&#8217;affichage des photos sur la map a nécessité la création d&#8217;un <a
href="http://mobdev.olin.edu/mobdevwiki/FrontPage/Tutorials/Map%20View" title="Overlay spécifique" >Overlay spécifique</a>, la  récupération des coordonnées GPS est passée par l&#8217;intermédiaire du <a
href="http://www.androidcompetencycenter.com/2009/01/android-location-api/" title="LocationManager" >LocationManager</a></li><li>La <a
href="http://kahdev.wordpress.com/2008/11/25/building-a-menu-for-your-android-v10-r1-app/" title="cration du menu" >création du menu</a> est aussi simple que d&#8217;ajouter des éléments dans une liste</li><li><a
href=" http://androidguys.com/?p=1891" title="Ldition des prfrences" >L&#8217;édition des préférences</a> s&#8217;effectue par simple description XML des écrans associés. Android se charge de sauvegarder celles-ci et de les rendre disponibles au reste de l&#8217;application</li><li>Externalisation de la recherche et récupération des informations des photos FlickR dans un <a
href="http://developerlife.com/tutorials/?p=356" title="service exécuté en background de l'application" >service exécuté en background de l&#8217;application</a>. Ainsi, l&#8217;UI ne reste pas bloquée lors de la récupération des photos. La communication entre le service et le front s&#8217;effectue par l&#8217;intermédiaire de messages : les <a
href="http://developer.android.com/reference/android/content/Intent.html" title="Intent" >Intent</a></li><li>Ajout de messages <a
href="http://developer.android.com/reference/android/widget/Toast.html" title="Toast" >Toast</a>, <a
href="http://www.maximyudin.com/2008/02/25/android/how-to-use-alertdialogbuilder-in-android-applications/" title="popup" >popup</a> et <a
href="http://www.anddev.org/show_notification_in_statusbar-t1019.html" title="notifications systme" >notifications système</a> en faisant vibrer le téléphone en rythme, juste histoire de jouer un peu avec le SDK</li><li>Affichage d&#8217;une <a
href=" http://markmail.org/message/uefm6ccn5sedmzhz" title="preview vido de lappareil photo du G1" >preview vidéo de l&#8217;appareil photo du G1</a> sur un canvas, il s&#8217;agit d&#8217;un point de départ à une fonctionnalité d&#8217;upload de photos FlickR</li></ul><div
align="center"> <a
href="http://blog.xebia.fr/wp-content/uploads/2009/06/android.jpg"><br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/android-300x176.jpg" alt="android" title="android" width="300" height="176" /><br
/> </a></div><p>La communauté Android est assez active, il est aisé de trouver une solution à la plupart des questions et problèmes que vous pouvez rencontrer. De plus, la documentation officielle est plutôt bien fournie, même si elle souffre de quelques lacunes : certaines notions fondamentales comme les &#8216;Intent&#8217; y sont par exemple mal expliquées.</p><p>Tout cela fait que les développeurs Java ne devraient avoir aucun mal à se lancer dans l&#8217;aventure. D&#8217;ailleurs suite à la <a
href="http://blog.xebia.fr/2009/03/25/presentation-android-et-vous-quelle-technologie-mobile-preferez-vous/" title="premire prsentation Android" >première présentation Android</a> effectuée lors du XKE de mars, quelques-uns d&#8217;entre nous se sont essayés à écrire leurs propres applications : programme TV, Tetris&#8230;</p><table><tr
valign="middle"><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/pausitif.gif" alt="plus" title="plus"  /></td><td><ol><li> Environnement et programmation full Java</li><li> SDK puissant et relativement simple à utiliser</li><li> Utilisation possible d&#8217;api java existantes</li><li> Licence développeur donnant l&#8217;accès au market peu onéreuse (25 €)</li></ol></td></tr><tr
valign="middle"><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/negatif.gif" alt="moins" title="moins" /></a></td><td><ol><li> Technologie naissante</li><li> Widgets et vues moins beaux que sur l&#8217;iPhone</li><li> Premiers mobiles qualifiés par certains de &#8216;moches&#8217;</li></ol></td></tr></table><table
align="center"><tr><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/android-map.jpg" alt="android-map" title="android-map" /></td><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/android-menu.jpg" alt="android-menu" title="android-menu" /></td><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/android-notif.jpg" alt="android-notif" title="android-notif"  /></td><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/android-prefs.jpg" alt="android-prefs" title="android-prefs"  /></td></tr></table><h4><a
name="iPhone"></a>iPhone</h4><p>Il m&#8217;a fallu attendre 2 semaines pour répondre au cahier des charges. L&#8217;api MapKit n&#8217;est pas accessible par les développeurs dans les versions 2.x.x du SDK d&#8217;iPhone. Heureusement, la nouvelle version 3.0 en beta est sortie avant la présentation des résultats. J&#8217;ai passé pas mal de temps pour comprendre l&#8217;utilisation des composants MkMapView et MkAnnotationView. Le résultat est impressionnant. Une carte très fluide annotée avec plus de 300 photos téléchargées en mode asynchrone.</p><p>D&#8217;autre part, à l&#8217;instar des concurrents, j&#8217;ai développé plus de fonctionnalités pour 50 heures de travail :</p><ul><li>Localisation des coordonnées GPS (longitude, latitude) de l&#8217;utilisateur.</li><li>Téléchargement des photos en mode asynchrone.</li><li>Cache des photos téléchargées.</li><li>Affichage des photos en liste.</li><li>Affichage des détails d&#8217;une photo (nom, auteur, commentaires).</li><li>Affichage des photos en taille réelle.</li><li>Affichage de toutes les photos au format tableau.</li><li>Affichage de la position de l&#8217;utilisateur sur la carte.</li><li>Annotation de la carte avec plus de 300 photos.</li></ul><p>La récupération des photos et de leurs informations de FlickR s&#8217;effectue par le protocole REST en mode asynchrone.</p><p>Une fois le développement terminé, j&#8217;ai passé beaucoup de temps pour déployer l&#8217;application sur l&#8217;iPhone. Plusieurs étapes sont nécessaires pour créer un profil développeur et pour générer les certificats nécessaires pour le déploiement de l&#8217;application sur l&#8217;iPhone.</p><p>Les développeurs Java auront du mal à se lancer dans l&#8217;aventure. La prise en main de l&#8217;iPhone SDK nécessite beaucoup de temps. Il faut apprendre un nouveau langage (Objective-C) et de nouveaux outils pour se lancer dans le développement (Xcode, Interface builder, Instruments, Shark).</p><p>La richesse des frameworks dépasse de loin celles des concurrents. La maturité des frameworks Cocoa utilisés comme couche basse de l&#8217;iPhone OS donne aussi un grand avantage à l&#8217;iPhone SDK.</p><table><tr
valign="middle"><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/pausitif.gif" alt="plus" title="plus"  /></td><td><ol><li> Un téléphone sexy</li><li> Multi-Touch</li><li> Technologie mature</li><li> Outils de développement complets et simples d&#8217;utilisation</li><li> SDK puissant, complet et relativement simple à utiliser</li><li> Beaucoup de composants graphiques de haut niveau</li></ol></td></tr><tr
valign="middle"><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/negatif.gif" alt="moins" title="moins" /></a></td><td><ol><li> L&#8217;iPhone SDK nécessite un MAC OS X 10.5.4+</li><li> Langage de programmation complexe</li><li> Licence développeur payante (99$)</li></ol></td></tr></table><table
align="center"><tr><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/1.jpg" alt="iphone1" title="iphone1" /></td><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/2.jpg" alt="iphone2" title="iphone2" /></td><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/3.jpg" alt="iphone3" title="iphone3"  /></td><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/4.jpg" alt="iphone4" title="iphone4"  /></td></tr><tr><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/5.jpg" alt="iphone5" title="iphone5" /></td><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/6.jpg" alt="iphone6" title="iphone6" /></td><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/7.jpg" alt="iphone7" title="iphone7"  /></td><td> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/06/8.jpg" alt="iphone8" title="iphone8"  /></td></tr></table><h3><a
name="Conclusions"></a>Conclusions</h3><p>Bien qu&#8217;il soit difficile de tirer de grands enseignements généraux sur des technologies ayant un vécu et un parcours si différent on retiendra :</p><ul><li>l&#8217;iPhone est définitivement le grand gagnant de l&#8217;expérience utilisateur. Mais la prise en main du langage peut constituer un très grand frein à l&#8217;adoption de cette technologie par les développeurs Java.</li><li>le Google Phone constitue la bonne surprise de ce contest. Le développement en full Java parle aux techniciens que nous sommes, et l&#8217;expérience utilisateur, même si elle n&#8217;est pas à la hauteur de celle que peut proposer l&#8217;iPhone, est très convaincante.</li><li>l&#8217;hypothétique JavaFxPhone reste sur le bord de la route. Même si les possibilités entrevues sont prometteuses, le manque de maturité de l&#8217;ensemble le condamne à rester dans l&#8217;ombre de ses concurrents, dans l&#8217;attente d&#8217;une version plus aboutie et plus riche.</li></ul><div
class="shr-publisher-2226"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F06%2F17%2Fxebia-mobile-application-contest-java-fx-android-iphone%2F' data-shr_title='Xebia+Mobile+Application+Contest+%3A+Java+FX+-+Android+-+iPhone+'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F06%2F17%2Fxebia-mobile-application-contest-java-fx-android-iphone%2F' data-shr_title='Xebia+Mobile+Application+Contest+%3A+Java+FX+-+Android+-+iPhone+'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/17/xebia-mobile-application-contest-java-fx-android-iphone/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>Google I/O 2009 &#8211; annonces et stratégie Google</title><link>http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/</link> <comments>http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/#comments</comments> <pubDate>Mon, 01 Jun 2009 12:58:21 +0000</pubDate> <dc:creator>Erwan Alliaume</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Mobilité]]></category> <category><![CDATA[RIA]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Chrome]]></category> <category><![CDATA[Google App Engine]]></category> <category><![CDATA[googleio]]></category> <category><![CDATA[GWT]]></category> <category><![CDATA[GWT Query]]></category> <category><![CDATA[HTML 5]]></category> <category><![CDATA[iPhone]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[wave]]></category> <category><![CDATA[Widgets]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2068</guid> <description><![CDATA[Google I/O 2009 s&#8217;est tenu la semaine dernière à San Francisco. Il s&#8217;agit d&#8217;une des conférence destinées aux développeurs utilisateurs des applications et des API de Google. Faute d&#8217;avoir eu l&#8217;occasion de me rendre sur place, j&#8217;ai essayé de suivre d&#8217;aussi prêt que possible son déroulement. Vu de l&#8217;extérieur : du grand spectacle ! Dans [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://code.google.com/events/io/" title="Google IO 2009" >Google I/O 2009</a> s&#8217;est tenu la semaine dernière à San Francisco. Il s&#8217;agit d&#8217;une des conférence destinées aux développeurs utilisateurs des applications et des API de Google. Faute d&#8217;avoir eu l&#8217;occasion de me rendre sur place, j&#8217;ai essayé de suivre d&#8217;aussi prêt que possible son déroulement. Vu de l&#8217;extérieur : du grand spectacle !</p><p>Dans cet article, je vais donc revenir sur les annonces et points marquants de ces deux jours de conférences.</p><p>D&#8217;autre part, les vidéos des keynotes sont disponibles, vous pouvez consulter celle du <a
href="http://www.youtube.com/watch?v=S5aJAaGZIvk" title="premier jour" >premier jour</a> (html5, android, web components &#8230;) ou celle du <a
href="http://www.youtube.com/watch?v=v_UyVmITiYQ" title="second jour" >second jour</a> (google wave).</p><p>Google I/O 2009, voici ce que j&#8217;en ai retenu  :</p><ul><li>Le futur du Web, avec les premières <strong>démonstrations émoustillantes <a
href="http://dev.w3.org/html5/spec/Overview.html" title="HTML 5" >HTML 5</a></strong>.</li><li><strong><a
href="http://wave.google.com" title="Google Wave" >Google Wave</a></strong>, le prochain outil de communication et collaboration made in Google.</li><li>La réconciliation de Google avec GWT et la sortie de <strong>GWT Query</strong>.</li><li>Le futur d&#8217;Android, avec l&#8217;annonce de la branche <strong>Android 2.0 : Donut</strong>.</li><li>Java sur Google App Engine en GA.</li><li><strong>Google Web Elements</strong>, comment intégrer les services Google dans vos pages web.</li><li>Les macros dans Google Document, avec <strong>Google Apps Script</strong>.</li><li>Arrivée des <strong>extensions dans Chrome</strong>.</li></ul><h3><a
name="HTMLlepremierwhaoueffect"></a>HTML 5, le premier whaou effect</h3><p>C&#8217;est la première fois que HTML 5 me fait rêver. C&#8217;est en effet un sacré coup de pouce que Google à donné afin de faire taire les <a
href="http://blog.xebia.fr/2008/08/11/revue-de-presse-xebia-69/#HTMLimmobilisparlestergiversat" title="tergiversions" >tergiversions</a>. Google a pris position, et nous en a mis plein la vue ! C&#8217;est ainsi qu&#8217;a débuté le premier jour de conférence avec <a
href="http://www.youtube.com/watch?v=W4FbF8GKChk" title="une vido dintroduction de 5 minutes" >une vidéo d&#8217;introduction de 5 minutes</a> présentant des applications écrites avec HTML 5. Application ai-je dit ? Eh bien oui, il semble bien loin le temps de la page web statique. Il semble bien loin le temps des hacks Javascript, arrêtons la bidouille et commençons le développement d&#8217;applications riches : c&#8217;est en tout cas ce que nous promet Google avec le HTML 5. Tout cela sans nécessiter le moindre plugin &#8230; pour peu que vous ayez un navigateur compatible.</p><p>Pour Google, le navigateur a encore de beaux jours devant lui. Installé sur prêt d&#8217;un <a
href="http://www.findmysoft.com/news/Google-I-O-2009-HTML-5-Web-Elements-App-Engine-Google-Earth-Android-Hardware/" title="demi-milliard d'ordinateurs" >demi-milliard d&#8217;ordinateurs</a>, il reste le moyen le plus simple et répandu pour accéder à Internet. Google l&#8217;a bien compris et a participé à la course <a
href="http://celtickane.com/labs/web-browser-javascript-benchmark/" title="aux performances des moteurs JavaScript" >aux performances des moteurs JavaScript</a>. En un an, les performances des moteurs JavaScript ont été multipliées par 5 ! Vous n&#8217;êtes pas fan de JavaScript, il faudra pourtant vous y faire. Comme nous vous pourrez le constater dans la suite de cet article, ce langage est l&#8217;un des points centraux de la stratégie Google.</p><p>Sans le savoir, vous possédez peut-être déjà l&#8217;un des navigateurs compatibles avec certaines fonctionnalités HTML 5, si tel est le cas vous pouvez lancer certaines des <a
href="http://htmlfive.appspot.com/" title="dmonstrations prsentes" >démonstrations présentées</a> directement depuis celui-ci.</p><p>Les principales nouveautés apportées par HTML 5 sont :</p><ul><li>Les <a
href="http://fr.wikipedia.org/wiki/Canvas_(balise_html)" title="canvas" >canvas</a>, zone sur laquelle il est possible de <em>dessiner</em> et d&#8217;effectuer des transformations : agrandissement, rotations, translations sur différents types de figures.</li><li>Des balises <em>audio</em> et <em>video</em>, qui permettent d&#8217;intégrer des médias dans le document sans nécessiter un plugin externe. Elles disposent de fonctionnalités similaires aux lecteurs <a
href="http://www.adobe.com/fr/products/flash" title="Flash" >Flash</a> ou <a
href="http://silverlight.net" title="Silverlight" >Silverlight</a> vous permettant de contrôler le comportement de vos médias.</li><li>Les <a
href="http://blog.whatwg.org/the-road-to-html-5-episode-1-the-section-element" title="sections" >sections</a> permettent de diviser vos pages en parts sémantiques. Elles se différencient des balises <em>div</em> qui ont pour rôle principal la présentation. Une section est complétée par un <em>header</em> et un <em>footer</em>.</li><li>Un nouvel attribut <em>async</em> pour les balises <em>script</em>, il permet d&#8217;exécuter un script indépendamment de l&#8217;affichage de la page. Ces scripts pourront s&#8217;activer à la demande selon la disponibilité de ressources.</li></ul><p>HTML 5 vous propose donc de transformer vos pages web en application riche, ce nouveau balisage vous permet de tirer pleinement partie de contenu multimédia sans nécessiter de plugin extérieur.</p><h3><a
name="GoogleWavelagrosseannoncedelac"></a>Google Wave, la grosse annonce de la conférence</h3><p>Sans conteste la grosse annonce de Google durant ces 2 jours, Google a annoncé la sortie prochaine de <a
href="http://wave.google.com/" title="Google Wave" >Google Wave</a>. Il s&#8217;agit d&#8217;un nouvel outil Open Source de communication et de collaboration, initié à l&#8217;origine par les deux frères Rasmussen, déjà à l&#8217;origine de Google Maps. Leur point de départ, à quoi les emails ressembleraient s&#8217;ils avaient été inventés aujourd&#8217;hui ? Après nous avoir parlé d&#8217;HTML 5 et d&#8217;applications riches, Google dévoile comment ils comptent tirer parti de ces nouveautés. A la vue du résultat, difficile de croire que l&#8217;application fonctionne sur un simple navigateur. Je vous encourage vivement de <a
href=" http://www.youtube.com/watch?v=v_UyVmITiYQ" title="regarder la démonstration" >regarder la démonstration</a>, le moins que l&#8217;on puisse dire est qu&#8217;elle donne envie <a
href="https://services.google.com/fb/forms/wavesignup/" title="dessayer le produit" >d&#8217;essayer le produit</a>. Pour ma part, même si j&#8217;avoue bien volontiers avoir été moins époustouflé qu&#8217;à la sortie de Google Earth il y a quelques années, il faut bien admettre qu&#8217;une fois encore Google est moteur d&#8217;innovations. Tout comme la sortie de Gmail, fort est à parier qu&#8217;une multitude de concurrents essayeront en vain d&#8217;égaler cette nouveauté. Et si une page était en train de se tourner dans le développement d&#8217;applications Web ?</p><p>Là où les emails permettaient un échange point à point, Google Wave centralise et met à disposition le contenu. On n&#8217;envoie pas une <em>Wave</em>, on y participe. L&#8217;historique des modifications des conversations (texte, média, widget) est stocké sur un serveur. Ainsi, tout nouveau participant pourra rejouer intégralement celle-ci.</p><p>Google Wave est un mixte entre email, messagerie instantanée, réseaux sociaux, partages de documents. Il se base sur un <a
href="http://www.waveprotocol.org/" title="protocole spcialement" >protocole spécialement</a> créé pour l&#8217;occasion. Celui-ci permet la transmission d&#8217;incréments de données et permet, entre autres, l&#8217;affichage caractère par caractère d&#8217;une conversation au fur et à mesure de la rédaction par son auteur.</p><p>Bien plus qu&#8217;une application, Google Wave est également contrôlable via une API spécifique. Vous pourrez donc y utiliser ces services à votre guise pour modeler vos propres solutions. Du coup, fort est à parier que Google Wave sera également disponible sous la forme de widget à utiliser sur vos blogs, sites web &#8230;</p><p>Pour plus d&#8217;information sur le sujet, vous pouvez <a
href=" http://mashable.com/2009/05/28/google-wave-guide/" title="consulter cette page" >consulter cette page</a> sur laquelle l&#8217;auteur à centralisé les informations, définitions et fonctionnalités de Google Wave.</p><h3><a
name="GWTaucurdelastratgieGoogle"></a>GWT, au cœur de la stratégie Google ?</h3><p>L&#8217;autre grosse surprise avec l&#8217;arrivée de Google Wave, l&#8217;utilisation de GWT à grande échelle dans un produit Google !</p><p>Jusqu&#8217;ici, il était drôle de constater que si GWT avait bien été créé intégralement en interne chez Google, au final, aucun produit phare n&#8217;utilisait cette technologie. Et bien, ceci sera bientôt du passé ! Non seulement le client Wave a été écrit en GWT, mais Google continue à investir beaucoup sur cette technologie. Certes GWT à tout de même dû subir pour l&#8217;occasion quelques modifications, mais force est de constater que GWT semble plus que jamais au centre de la stratégie Google. GWT permettra également la création d&#8217;applications pour Android et iPhone. C&#8217;est comme si Google voulait nous faire oublier nos applications locales/desktop aux bénéfices d&#8217;applications légères/riches.</p><p>Google I/O, c&#8217;est également l&#8217;annonce de la sortie de <a
href="http://code.google.com/p/gwtquery/" title="Gwt Query" >Gwt Query</a> : un clone de jQuery pour GWT. Cette nouvelle Api permet d&#8217;ajouter du comportement côté client sans rencontrer les lourdeurs des Widgets. À ce stage GWT Query reprend 98% des fonctionnalités de jQuery.</p><h3><a
name="AndroidDonutrecherchesetfiltre"></a>Android 2.0 Donut, recherches et filtres</h3><p>A l&#8217;heure où les premiers téléphones Android arrivent tout juste en France, Google a annoncé la création de la branche 2.0, appelée Donut. Sortie prévue : fin 2009.</p><p>Comme le communiquent <a
href=" http://www.zdnet.fr/actualites/telecoms/0,39040748,39501591,00.htm" title="certains" >certains</a>, 2009 sera probablement l&#8217;année d&#8217;Android. Si à ce jour seuls deux mobiles sous ce système sont timidement sortis en France, Google <a
href="http://bits.blogs.nytimes.com/2009/05/27/google-expect-18-android-phones-by-years-end/" title="attend la sortie dune vingtaine dappareils" >attend la sortie d&#8217;une vingtaine d&#8217;appareils</a> (pour une dizaine de fabriquants) en 2009.</p><p>Google I/O a donc été l&#8217;occasion de faire un point sur la roadmap de cette nouvelle version, celle-ci est prévue pour fin 2009 :</p><ul><li>Recherche globale : un champ de recherche commun pour le web, la musique, les contacts&#8230; C&#8217;est en effet, l&#8217;un des défauts de la version actuelle, le market nous encourage à installer toujours plus d&#8217;applications, il s&#8217;avère pour le moment peu pratique de retrouver celle que l&#8217;on cherche. J&#8217;avais d&#8217;ailleurs l&#8217;idée de développer une application &#8216;launcher&#8217;, je vais donc pouvoir nettoyer ma todo-list. Cette recherche globale vous permet donc d&#8217;effectuer des recherches aussi bien en local sur votre téléphone qu&#8217;en connecté sur le web. Démonstration de la fonctionnalité après la 3e minute <a
href="http://www.youtube.com/watch?v=uX9nt8Cpdqg&#038;feature=channel" title="de cette vido" >de cette vidéo</a>.</li><li>Contrôle par la voix : Android 1.5 (Cupcake) a introduit les embryons de Google Voice Search, vous permettant de lancer des recherches Google par la voix. Donut va davantage utiliser cette fonctionnalité qui vous permettra aussi bien d&#8217;appeler un contact que de contrôler vos applications à la voix. Ces fonctionnalités seront intégrées aux applications Google, mais pas seulement. Vous pourrez les utiliser dans vos applications via la nouvelle API. Révolutionnaire ? par forcément, j&#8217;ai utilisé cette fonctionnalité pour la première fois sur Pocket PC il y a 3 ans avec <a
href="http://www.microsoft.com/france/cp/2005/3/05030801_a79.mspx" title="Microsoft Voice Command" >Microsoft Voice Command</a>.</li><li>Synthèse vocale : vous contrôlez votre téléphone par la voix, celui-ci sait également vous parler. Donut offrira également des fonctionnalités de text2speach multi-langues, la présentation à été portée par une <a
href="http://www.youtube.com/watch?v=DZ-MZnMLb_A" title="application de traduction" >application de traduction</a> plutôt réussie.</li><li>Contrôle par le geste : votre téléphone sera capable également de reconnaître via l&#8217;écran tactile des formes complexes. Cela vous permettra entre autres de filtrer une liste de contacts en dessinant la première lettre du nom recherché.</li></ul><p>Pour clôturer ce sujet, notez l&#8217;ouverture d&#8217;un nouveau concours mondial de programmation sur Android : <a
href="http://code.google.com/intl/fr-FR/android/adc/" title="Android Developper Challenge 2" >Android Developper Challenge 2</a> avec de belles récompenses à la clé.</p><h3><a
name="JavasurGoogleAppEngineouvertto"></a>Java sur Google App Engine, ouvert à tous</h3><p>Bien qu&#8217;aucune annonce n&#8217;ait encore été faire sur le <a
href="http://googleappengine.blogspot.com/" title="blog officiel" >blog officiel</a>, il semblerait que Google ait annoncé officiellement le support Java sur <a
href="http://code.google.com/intl/fr/appengine/" title="Google App Engine" >Google App Engine</a>, ce qui veut dire : ouvert à tous. En effet, <a
href="http://blog.xebia.fr/2009/04/14/revue-de-presse-xebia-104/#GoogleAppEnginepourJavaetGroov" title="en avril dernier" >en avril dernier</a>, Google avait déjà pré-ouvert sa plateforme aux langages Java et Groovy aux 10 000 premiers inscrits.</p><h3><a
name="GoogleWebElementswidgetspourvo"></a>Google Web Elements, widgets pour vos sites internet</h3><p><a
href="http://www.google.com/webelements/" title="Google Web Elements" >Google Web Elements</a> vous permet d&#8217;utiliser les services Google sous la forme de widgets sur vos blogs ou sites web. Ces widgets nous permettront par exemple d&#8217;afficher facilement nos présentations PowerPoint sur le blog, les sites du type <a
href="http://www.slideshare.net/" title="Slideshare" >Slideshare</a> doivent grincer des dents&#8230;</p><p>Le fonctionnement est très simple :</p><ul><li>Rendez-vous sur le site de <a
href="http://www.google.com/webelements/" title="Google Web Elements" >Google Web Elements</a> pour choisir votre type de Widget.</li><li>Configurez-le en ligne via un simple formulaire permettant de générer le code HTML et JavaScript représentant le widget.</li><li>Copier-collez le code sur votre site ou blog.</li></ul><p>Huit applications sont disponibles pour le moment: Calendar, Presentation, Conversation, Custom Search, Maps, News, Spreadsheets et Youtube News.</p><h3><a
name="GoogleAppsScriptscriptezvosGoo"></a>Google Apps Script, scriptez vos Google Documents</h3><p>Google IO c&#8217;est du grand spectacle, comme nous l&#8217;avons vu durant les keynotes, mais aussi des annonces plus terre-à-terre : <a
href="http://www.youtube.com/watch?v=7ux-IexZFec" title="Google Apps Script" >Google Apps Script</a> en est un bon exemple. Avec cette fonctionnalité, il vous sera donc possible prochainement d&#8217;ajouter des fonctionnalités de scripting dans vos documents. Le développement de ces &#8216;macros&#8217; s&#8217;effectuera entièrement en JavaScript à partir d&#8217;un éditeur intégré aux différentes applications Google Document. Je vous invite à consulter une <a
href="http://www.youtube.com/watch?v=YJPsJOkaAzU" title="vido de dmonstration" >vidéo de démonstration</a> durant laquelle le présentateur effectue une macro d&#8217;envoi d&#8217;email.</p><h3><a
name="Chromearrivedesextensions"></a>Chrome, arrivée des extensions</h3><p>Comme certains le savent déjà, Chrome, le navigateur internet made in Google, proposera prochainement <a
href="http://dev.chromium.org/developers/design-documents/extensions/" title="un système de gestion d'extensions" >un système de gestion d&#8217;extensions</a>. Il vous est d&#8217;ailleurs déjà possible de commencer à écrire vos propres extensions en utilisant <a
href="http://dev.chromium.org/getting-involved/dev-channel" title="le dernier build developper" >le dernier build developper</a>, je m&#8217;y suis d&#8217;ailleurs essayé comme vous avez pu le <a
href="http://twitter.com/ealliaume" title="lire sur mon twitter" >lire sur mon twitter</a>. Si cela vous intéresse, jetez un coup d&#8217;œil au <a
href="http://dev.chromium.org/developers/design-documents/extensions/howto" title="howto" >howto</a> vous permettant de créer votre premier plugin en 30 secondes chrono.</p><p>Les extensions sont des archives ZIP contenant du HTML, des CSS et du JavaScript. Chaque partie d&#8217;UI d&#8217;une extension se présente sous la forme d&#8217;une simple page internet. Du coup, vous utilisez les mêmes outils, même debugger, mêmes librairies JavaScript et les mêmes techniques de programmation que pour créer vos pages web. Google a particulièrement bien travaillé son API pour la rendre aussi simple que possible.</p><p>Chrome dispose depuis <a
href="http://blog.xebia.fr/2008/09/09/google-chrome-1-semaine-apres/#Unrendustandardetquelquesnouve" title="sa premire version" >sa première version</a> d&#8217;une gestion des processus bien ficelée : chaque onglet dispose de son propre processus rendant de ce fait difficile de planter le navigateur à cause d&#8217;une des pages web. Les extensions fonctionneront sur un principe similaire et disposeront donc également de leur propre processus.</p><p>Les extensions seront distribuées sous la forme de fichier CRX composé de :</p><ul><li>Une signature, pour éviter les attaques du type Man In The Middle.</li><li>Un manifeste, contenant les informations générales (nom, version &#8230;).</li><li>Un fichier zip avec le contenu.</li></ul><p>Tiens tiens, cela n&#8217;est pas sans nous rappeler le packaging des applications Android&#8230;</p><div
align="center"> <a
href="http://twitter.com/ealliaume" ><br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/04/twitter4.png"  alt="twitter erwan alliaume" title="twitter erwan alliaume" border="0" /><br
/> </a></div><div
class="shr-publisher-2068"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F06%2F01%2Fgoogle-io-2009-annonces-et-strategie-google%2F' data-shr_title='Google+I%2FO+2009+-+annonces+et+strat%C3%A9gie+Google+'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F06%2F01%2Fgoogle-io-2009-annonces-et-strategie-google%2F' data-shr_title='Google+I%2FO+2009+-+annonces+et+strat%C3%A9gie+Google+'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/06/01/google-io-2009-annonces-et-strategie-google/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Premiers pas dans Android</title><link>http://blog.xebia.fr/2009/03/26/premiers-pas-dans-android/</link> <comments>http://blog.xebia.fr/2009/03/26/premiers-pas-dans-android/#comments</comments> <pubDate>Thu, 26 Mar 2009 07:00:14 +0000</pubDate> <dc:creator>Guillaume Carre</dc:creator> <category><![CDATA[Mobilité]]></category> <category><![CDATA[Android]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1662</guid> <description><![CDATA[En novembre 2007, Google, des opérateurs mobiles et des fabricants de terminaux annoncent la création de l&#8217;Open Handset Alliance(tm). Le but de l&#8217;OHA : créer une plateforme mobile ouverte, riche, moins chère, et qui donne une meilleure expérience mobile. Quelques jours après l&#8217;annonce, l&#8217;OHA met rapidement à disposition une première version &#171;&#160;early look&#160;&#187; du SDK [...]]]></description> <content:encoded><![CDATA[<div
style="float:left; margin-right: 15px"> <a
href="http://developer.android.com"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/03/logo_android.gif" alt="Android" title="Android" width="194" height="27" /></a></div><p>En novembre 2007, <a
href="http://www.openhandsetalliance.com/oha_members.html" title="Google, des opérateurs mobiles et des fabricants de terminaux" >Google, des opérateurs mobiles et des fabricants de terminaux</a> annoncent la création de <a
href="http://www.openhandsetalliance.com" title="l'Open Handset Alliance(tm)" >l&#8217;Open Handset Alliance(tm)</a>. Le but de l&#8217;OHA : créer une plateforme mobile ouverte, riche, moins chère, et qui donne une meilleure expérience mobile. Quelques jours après l&#8217;annonce, l&#8217;OHA met rapidement à disposition une première version &laquo;&nbsp;early look&nbsp;&raquo; du SDK Android.<br
/> Un peu moins d&#8217;un an après la création de l&#8217;OHA, en septembre 2008, le premier mobile tournant sous Android est mis en vente sur le marché américain : le HTC G1. Enfin un système d&#8217;exploitation et des terminaux capables de rivaliser avec l&#8217;iPhone d&#8217;Apple (septembre 2008, soit un an et trois mois après la sortie de l&#8217;iPhone&#8230;) !</p><p>Comme pour l&#8217;iPhone, qui est sorti en France en novembre 2007 cinq mois après sa sortie américaine, les premiers téléphones Android arrivent avec un peu de retard sur le territoire français ce mois-ci. Les plus impatients avaient déjà importé l&#8217;Android Dev Phone 1 (version développeur du HTC G1). La sortie du HTC G1 chez Orange il y a quelques jours et la sortie du HTC G2 chez SFR, fin avril, va donner aux développeurs Java hexagonaux l&#8217;occasion de développer des applications mobiles dans leur langage préféré.</p><p>La plateforme présente en effet plusieurs intérêts pour le développeur Java :</p><ul><li>les applications Android sont développées à 100% dans le langage Java. Si vous vous êtes frottés au SDK de l&#8217;iPhone et son langage ObjectiveC, et que Java est votre langage de prédilection, développer pour Android est un vrai bonheur</li><li>à l&#8217;image de l&#8217;AppStore d&#8217;Apple et de ses success stories vendues 1$ pièce, Android dispose d&#8217;un équivalent, l&#8217;Android Market. Il permettra à la fois aux entreprises et aux développeurs de mettre leurs applications gratuites ou payantes à la disposition des possesseurs de téléphone Android</li></ul><p>Cet article vous présente les premiers pas du développeur Java dans la plateforme :</p><ul><li>les téléphones à disposition pour tester ses applications,</li><li>les guides de développement,</li><li>exemples de code et livres à lire pour monter en compétence,</li><li>et les différents sites spécialisés à suivre pour se tenir au courant de l&#8217;actualité Android.</li></ul><h3><a
name="AndroidenFrance"></a>Android en France</h3><h4><a
name="Lestlphones"></a>Les téléphones</h4><div
style="float:right;"> <a
href="http://www.htc.com/www/product/magic/overview.html"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/03/htc-magic-200x150.jpg" border="0" alt="HTC Magic" title="HTC Magic" /></a></div><div
style="float:right;"> <a
href="http://www.htc.com/www/product/dream/overview.html"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/03/htc-dream-200x150.jpg" border="0" alt="HTC Dream" title="HTC Dream" /></a></div><p>Orange a annoncé début mars <a
href="http://www.lemonde.fr/technologies/article/2009/03/04/orange-a-vendu-810-000-iphone-en-france-depuis-novembre-2007_1163300_651865.html" title="avoir vendu 810 000 iPhone" >avoir vendu 810 000 iPhone</a> depuis sa sortie en France en novembre 2007. 810 000 iPhone, ce sont plusieurs centaines de milliers d&#8217;acheteurs potentiels <a
href="http://www.apple.com/fr/iphone/features/appstore.html" title="d'applications dédiées à l'iPhone sur l'AppStore" >d&#8217;applications dédiées à l&#8217;iPhone sur l&#8217;AppStore</a>, la plate-forme de téléchargement d&#8217;applications mise en place par Apple un an après la sortie de l&#8217;iPhone, avec le succès qu&#8217;on lui connaît : des milliers d&#8217;applications, à des prix souvent très bas, compensés pour les éditeurs par le volume d&#8217;applications vendues, sur un modèle de partage des revenus entre Apple et l&#8217;éditeur (30% pour Apple, 70% pour l&#8217;éditeur). 810 000 iPhone en France, le retard est considérable pour la plate-forme Android, qui dispose elle aussi d&#8217;un magasin d&#8217;applications en ligne, <a
href="http://www.android.com/market/" title="Android Market" >Android Market</a>.</p><p>Le premier téléphone sous Android à sortir en France est le modèle de chez HTC qui est disponible depuis plusieurs mois aux États-Unis et au Royaume-Uni, le <a
href="http://www.htc.com/www/product/dream/overview.html" title="HTC Dream" >HTC Dream</a> (ou G1). Le Dream est commercialisé par Orange, qui au passage a gagné la première bataille qui l&#8217;oppose à SFR, puisque SFR sortira son premier téléphone sous Android avec plusieurs semaines de retard : le <a
href="http://www.htc.com/www/product/magic/overview.html" title="HTC Magic" >HTC Magic</a> (ou G2). Là où le Dream est un téléphone à clavier assez peu sexy, le Magic est plus proche de l&#8217;iPhone : sans clavier physique (c&#8217;est un désavantage pour certains), un grand écran, et des dimensions plus réduites que l&#8217;iPhone. Vous pouvez trouver un <a
href="http://www.presse-citron.net/htc-magic-android-test-et-presentation-video/trackback" title="HTC Magic sur le blog presse-citron" >test très complet du HTC Magic sur le blog presse-citron</a>.</p><p>Quelles sont les perspectives de vente pour ces deux terminaux ? Si l&#8217;on regarde de l&#8217;autre côté de la Manche, les volumes de vente du HTC Dream (G1) sont très proches de ceux de l&#8217;iPhone : <a
href="http://tempsreel.nouvelobs.com/depeches/medias/multimedia/20090313.ZDN8489/landroid_market_souvre_aujourdhui_aux_applications__pay.html" title="pour 10 iPhone vendus, on vend 7 HTC G1" >pour 10 iPhone vendus, on vend 7 HTC G1</a> (source Nouvel Obs). Orange et SFR peuvent donc rapidement vendre plusieurs dizaines de milliers de terminaux Android d&#8217;ici quelques mois. Mais au-delà des &laquo;&nbsp;early adopters&nbsp;&raquo; qui vont se jeter sur les modèles de chez HTC, ce sont certainement la sortie de modèles sous Android des autres grandes marques qui devraient faire exploser le parc de terminaux sous Android en France. A priori, tout est réuni pour que les constructeurs se mettent à Android : Android est gratuit, et l&#8217;OS est équivalent ou supérieur sur certains points à l&#8217;iPhone OS propriété d&#8217;Apple. Si les constructeurs sont restés assez discrets lors du récent Mobile World Congress de Barcelone, ils sont plusieurs à avoir récemment annoncé des terminaux pour 2009 (<a
href="http://www.vnunet.fr/news/mobile_world_congress_android_veut_seduire_les_constructeurs_peu_receptifs-2030178" title="LG Samsung" >LG, Samsung</a>). Il va effectivement falloir patienter, certainement jusqu&#8217;au second semestre pour voir la sortie de ces mobiles, mais on peut espérer début 2010 avoir un parc de plusieurs centaines de milliers de téléphones en France sous Android, ayant tous accès à Android Market et aux applications que vous aurez développées !</p><h4><a
name="ConcoursSFR"></a>Concours SFR</h4><p>À l&#8217;image de l&#8217;Android Developer Challenge il y a un peu moins d&#8217;un an qui avait permis aux développeurs des cinquante meilleures applications de <a
href="http://www.readwriteweb.com/archives/android_developer_challenge_winners_announced.php" title="repartir avec un chèque de 25 000 $" >repartir avec un chèque de 25 000 $</a>, SFR organise du 10 mars au 14 avril l&#8217;équivalent, le <a
href="http://www.sfrjtd.fr" title="concours SFR Jeunes Talents Dveloppeurs" >concours SFR Jeunes Talents Développeurs</a>.<br
/> L&#8217;initiative permet de mettre en avant la plateforme, et les quatre lauréats (plus un prix du public) se partageront un chèque de 50 000€, qui devrait leur permettre de continuer le développement de leur application.</p><h3><a
name="AndroidMarket"></a>Android Market</h3><div
style="float:left; margin-right: 15px"> <a
href="http://market.android.com"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/03/android_market.jpg" alt="Android market" title="Android market" width="51" height="60" /></a></div><p>Comme avec l&#8217;AppStore d&#8217;Apple, vous pouvez mettre les applications que vous allez développer à la disposition des possesseurs de téléphones Android sur <a
href="http://market.android.com" title="Android Market">Android Market</a>. AppStore est un immense succès pour Apple, et pour les développeurs des applications les plus téléchargées et vendues, voici quelques chiffres <a
href="http://www.engadget.com/2009/03/17/live-from-apples-iphone-os-3-0-preview-event" title="keynote iPhone OS 3.0" >issus de la récente keynote iPhone OS 3.0</a> :</p><ul><li>800 000 SDK téléchargés</li><li>60% des développeurs ne connaissaient pas la plateforme de développement Apple</li><li>plus de 25 000 applications sur l&#8217;AppStore</li><li>plus de 800 millions d&#8217;applications téléchargées</li></ul><p>L&#8217;Android Market est aujourd&#8217;hui bien loin de tous ces chiffres. Depuis seulement mi-février 2009, <a
href="http://android-developers.blogspot.com/2009/02/android-market-update-support-for.html" title="les dveloppeurs amricains et britanniques peuvent soumettre des applications payantes" >les développeurs américains et britanniques peuvent soumettre des applications payantes</a>.<br
/> Si les débuts devraient être modestes pour les applications Android, les gains engendrés par la vente d&#8217;applications Android devraient s&#8217;approcher des chiffres de vente de l&#8217;AppStore en début d&#8217;année prochaine. Si Android obtient le succès qu&#8217;on lui souhaite, et que plusieurs grands constructeurs (faisant partie de l&#8217;Open Handset Alliance) sortent des téléphones Android, il sera aussi intéressant de développer des applications pour l&#8217;AppStore que pour Android Market.</p><p>La marche à suivre pour mettre son application sur Android Market est la suivante :</p><ul><li>inscription au programme de développement, l&#8217;inscription coûte 25$ (100$ chez Apple)</li><li>mise en ligne de l&#8217;application, il n&#8217;y a pas de validation <em>a priori</em> des applications de la part de Google, on peut donc espérer que la mise en ligne soit bien plus rapide que sur l&#8217;AppStore (c&#8217;est un des reproches faits à Apple)</li><li>comme sur l&#8217;AppStore, les gains des ventes sont partagés (30% pour Google, 70% pour le développeur)</li><li>le développeur récupère ses gains via le &laquo;&nbsp;PayPal&nbsp;&raquo; de Google, Google Checkout (enfin une utilisation pour Google Checkout !)</li></ul><h3><a
name="Guidededveloppementlittraturep"></a>Guide de développement, littérature, premiers développements</h3><div
style="float:left; margin-right: 15px"> <a
href="http://developer.android.com"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/03/icon_contribute.jpg" alt="Android Developer" title="Android Developer" width="50" height="50" /></a></div><p>Android dispose d&#8217;un site dédié aux développeurs : <a
href="http://developer.android.com" title="http://developer.android.com" >http://developer.android.com</a>. Commencez par télécharger le SDK ici : <a
href="http://developer.android.com/sdk" title="httpdeveloperandroidcomsdk" >http://developer.android.com/sdk</a>, vous pourrez également télécharger le plugin Eclipse en suivant les indications données dans le guide d&#8217;installation du SDK.</p><p>Le site développeur vous propose également :</p><ul><li><a
href="http://developer.android.com/guide/tutorials/views/index.html" title="un guide de dveloppement" >un guide de développement</a></li><li><a
href="http://developer.android.com/reference/packages.html" title="la JavaDoc des APIs Android" >la JavaDoc des APIs Android</a></li><li><a
href="http://android-developers.blogspot.com/" title="le blog de dveloppeurs dAndroid" >le blog de développeurs d&#8217;Android</a></li><li><a
href="http://developer.android.com/community/index.html" title="les mailing lists Android" >les mailing lists Android</a>, hébergées sur Google Groups</li></ul><p>Le guide de développement est (évidemment) très bien écrit : vous y trouverez notamment <a
href="http://developer.android.com/guide/basics/what-is-android.html" title="une introduction à Android" >une introduction à Android</a> et le traditionnel <a
href="http://developer.android.com/guide/tutorials/hello-world.html" title="Hello, World" >Hello, World</a>. La partie <a
href="http://developer.android.com/guide/topics/fundamentals.html" title="Framework Topics" >Framework Topics</a> est complète et détaille les différents composants de la plateforme Android, mais est quelque peu indigeste. Si vous arrivez à manipuler <a
href="http://developer.android.com/guide/topics/intents/intents-filters.html" title="les Intents" >les Intents</a> à la seule lecture de la page qui les présente, félicitations ! Cette documentation manque d&#8217;exemples de code concrets. Le SDK et l&#8217;émulateur sont accompagnés <a
href="http://developer.android.com/guide/samples/index.html" title="dapplications exemples" >d&#8217;applications exemples</a>, mais cette fois-ci  ce sont les commentaires associés à ces exemples qui manquent.</p><div
style="float:right; margin-left: 15px"> <a
href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-Android-Application-Development.productCd-0470344717.html"><img
src="http://blog.xebia.fr/wp-content/uploads/2009/03/professional_android_application_development.jpg" alt="Professional Android Application Development" title="Professional Android Application Development" width="97" height="126" /></a></div><p>Quelques <a
href="http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Daps&#038;field-keywords=android&#038;x=0&#038;y=0" title="livres dédiés à Android sont déjà disponibles" >livres dédiés à Android sont déjà disponibles</a>, nous vous recommandons fortement <a
href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-Android-Application-Development.productCd-0470344717.html" title="Professional Android Application Development" >Professional Android Application Development, par Reto Meier</a>, que nous avons lu, et qui vous permettra de monter en compétence sur la plateforme, grâce à de nombreux exemples de code concrets. Ce livre est un parfait complément au site <a
href="http://developer.android.com" title="dveloppeur dAndroid" >développeur d&#8217;Android</a>.</p><p>Enfin, un mot au sujet <a
href="http://developer.android.com/community/index.html" title="des listes de dveloppement" >des listes de développement</a>. Elles sont très actives, c&#8217;est un signe de bonne santé du projet et de la plateforme, mais elles le sont trop pour les suivre quotidiennement en s&#8217;y abonnant par email (plus d&#8217;une centaine de messages par jour). Vous pourrez en revanche facilement y trouver des informations par l&#8217;intermédiaire d&#8217;une recherche dans les groupes.<br
/> Si vous préférez le format &laquo;&nbsp;forum&nbsp;&raquo;, le <a
href="http://www.anddev.org" title="forum anddev.org" >forum anddev.org</a> est assez actif. Il n&#8217;y a pas encore de forum dédié à Android sur <a
href="http://www.developpez.net/forums" title="developpez.com" >developpez.com</a> (mais vous pouvez y trouver un <a
href="http://ydisanto.developpez.com/tutoriels/android/debuter/" title="tutoriel Hello World" >tutoriel Hello, World très bien fait</a>).</p><h3><a
name="LessitesddisAndroidsuivre"></a>Les sites dédiés à Android à suivre</h3><p>Enfin, voici une liste de sites qui vous permettront de suivre de près l&#8217;actualité de la communauté Android : sortie des nouveaux téléphones, de nouvelles applications dans Android Market, ou articles sur le développement d&#8217;applications Android.</p><p>Sites Français :</p><ul><li><a
href="http://www.frandroid.com" title="Frandroid" >Frandroid</a></li><li><a
href="http://www.pointgphone.com" title="PointGPhone" >PointGPhone</a></li></ul><p>Sites Anglais :</p><ul><li>le <a
href="http://android-developers.blogspot.com" title="blog officiel de lquipe de dveloppement dAndroid" >blog officiel de l&#8217;équipe de développement d&#8217;Android</a></li><li>le très complet <a
href="http://androidguys.com/" title="AndroidGuys" >AndroidGuys</a></li><li><a
href="http://www.planetandroid.com" title="PlanetAndroid" >PlanetAndroid</a>, agrégateur de blogs Android</li><li><a
href="http://www.anddev.org" title="le forum anddev" >le forum anddev</a></li></ul><p>J&#8217;y parle régulièrement d&#8217;Android, vous pouvez me suivre sur Twitter en cliquant-ici :</p><div
align="center"> <a
href="http://twitter.com/gcarre"><br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/04/twitter4.png" alt="twitter guillaume carré" title="twitter guillaume carré"  /><br
/> </a></div><div
class="shr-publisher-1662"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F03%2F26%2Fpremiers-pas-dans-android%2F' data-shr_title='Premiers+pas+dans+Android'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F03%2F26%2Fpremiers-pas-dans-android%2F' data-shr_title='Premiers+pas+dans+Android'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/03/26/premiers-pas-dans-android/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Présentation Android, et vous quelle technologie mobile préférez-vous ?</title><link>http://blog.xebia.fr/2009/03/25/presentation-android-et-vous-quelle-technologie-mobile-preferez-vous/</link> <comments>http://blog.xebia.fr/2009/03/25/presentation-android-et-vous-quelle-technologie-mobile-preferez-vous/#comments</comments> <pubDate>Wed, 25 Mar 2009 07:02:21 +0000</pubDate> <dc:creator>Erwan Alliaume</dc:creator> <category><![CDATA[Java / JEE]]></category> <category><![CDATA[Mobilité]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Sondage]]></category> <category><![CDATA[XKE]]></category> <guid
isPermaLink="false">http://blog.xebia.fr/?p=1646</guid> <description><![CDATA[Android sera probablement l&#8217;une des nouvelles technologies phares de l&#8217;année 2009. Si les premiers Google Phone fonctionnant sous ce système d&#8217;exploitation mobile commencent tout juste à arriver en France, de nombreux constructeurs annoncent déjà être intéressé par cette technologie. Ainsi, outre les nombreux modèles de téléphones prévus, d&#8217;autres types de machines devraient également voir le [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://developer.android.com" title="Android" >Android</a> sera probablement l&#8217;une des nouvelles technologies phares de l&#8217;année 2009. Si les premiers <em>Google Phone</em> fonctionnant sous ce système d&#8217;exploitation mobile commencent tout juste à arriver en France, de nombreux constructeurs annoncent déjà être intéressé par cette technologie. Ainsi, outre les nombreux modèles de téléphones prévus, d&#8217;autres types de machines devraient également voir le jour (<a
href=" http://www.earthtimes.org/articles/show/archos-combines-its-multimedia-framework,709315.shtml" title="Archos" >Archos</a>,  et peut-être même un <a
href=" http://venturebeat.com/2009/01/01/android-netbooks-on-their-way-likely-by-2010/" title="EEEPC" >EEEPC</a>).</p><p>Lors de notre dernier <a
href="http://blog.xebia.fr/tag/xke/" title="XKE" >XKE</a> (Xebia Knowledge Exchange), nous lancions, <em>attention teasing</em>, un concours de développement interne sur les nouvelles technologies mobiles, concours dans lequel Android a évidemment sa place. Avant de vous présenter les résultats de ce concours (que nous publierons prochainement), il nous semble intéressant de recueillir <em>a priori</em> votre opinion sur le sujet.</p><p>Nous lançons donc ce sondage : <strong>Développeurs, initiés, quelle technologie préférez-vous pour le développement sur mobile ?</strong></p><p>N&#8217;hésitez pas à nous faire part des raisons de votre choix dans les commentaires.</p><div
align="center"> <script type="text/javascript" charset="utf-8" language="javascript" src="http://static.polldaddy.com/p/1483912.js"></script><br
/> <noscript><br
/> <a
href ="http://answers.polldaddy.com/poll/1483912/" >Quelle technologie mobile préférez-vous ?</a><br
/> </noscript></div><p>D&#8217;autre part, comme cela n&#8217;a que très peu de risque de biaiser le sondage, profitons de cet article pour partager le contenu de la petite présentation Android effectuée en interne à Xebia lors de notre dernier XKE.</p><div
style="text-align:center" id="__ss_270612"> <object
style="width:700px;margin:0px" width="650" height="542"><param
name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=xke-20090305-android-090322155205-phpapp02&#038;stripped_title=android-overview-1181344"/><param
name="allowFullScreen" value="true"/><param
name="allowScriptAccess" value="always"/><embed
src="http://static.slideshare.net/swf/ssplayer2.swf?doc=xke-20090305-android-090322155205-phpapp02&#038;stripped_title=android-overview-1181344" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="650" height="542"></embed></object></p><div
style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;text-align:center;" > <a
href="http://www.slideshare.net/?src=embed"><br
/> <img
src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a><br
/> <a
href='http://blog.xebia.fr/wp-content/uploads/2009/03/xke-20090305-android.pdf' title='2009-03-24_xebia_erwanalliaume_android.pdf'><br
/> <img
src='http://blog.xebia.fr/wp-content/uploads/2008/02/pdf.miniature.jpg' height="20" border="0" alt="Android Presentation Xebia" /> T&eacute;l&eacute;charger en PDF</a></div></p></div><div>&nbsp;</div><div>&nbsp;</div><div>&nbsp;</div><p></p><div
align="center"> <a
href="http://twitter.com/ealliaume" ><br
/> <img
src="http://blog.xebia.fr/wp-content/uploads/2009/04/twitter4.png"  alt="twitter erwan alliaume" title="twitter erwan alliaume" border="0" /><br
/> </a></div><div
class="shr-publisher-1646"></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div
class='shareaholic-like-buttonset' style='float:none;height:30px;'><a
class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F03%2F25%2Fpresentation-android-et-vous-quelle-technologie-mobile-preferez-vous%2F' data-shr_title='Pr%C3%A9sentation+Android%2C+et+vous+quelle+technologie+mobile+pr%C3%A9f%C3%A9rez-vous+%3F'></a><a
class='shareaholic-tweetbutton' data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fblog.xebia.fr%2F2009%2F03%2F25%2Fpresentation-android-et-vous-quelle-technologie-mobile-preferez-vous%2F' data-shr_title='Pr%C3%A9sentation+Android%2C+et+vous+quelle+technologie+mobile+pr%C3%A9f%C3%A9rez-vous+%3F'></a></div><div
style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div>]]></content:encoded> <wfw:commentRss>http://blog.xebia.fr/2009/03/25/presentation-android-et-vous-quelle-technologie-mobile-preferez-vous/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
