HTML5, Silverlight 5 ou Flash? Dur dur de choisir, car on entend de tout en ce moment. Rassurez-vous, ce que vous entendez s'agit simplement d'une belle intox, une opération de com' venant de services marketing douteux. Je vais ici tâcher de vous fournir une réponse technique à cette légitime question: "faut-il choisir HTML5 ou Silverlight ou Flash? Ou attendre?".
Pourquoi des RIA? Et qu’est-ce que c’est?
Pour commencer, il faut bien comprendre que les RIA sont une technologie d’avenir. Le problème est qu’aujourd’hui le décideur veut le beurre et l’argent du beurre (comme souvent), à savoir en termes techniques un déploiement facile et une interface qui tue et des fonctionnalités avancées. Or dans la vraie vie il doit choisir entre l’un et l’autre:
(diapositive issue de mes formations Silverlight)
Or notre décideur n’aime pas choisir. Que fait-il? Il prend le beurre et l’argent du beurre ainsi que la crémière. Ce qui dans le monde du développement revient à vouloir un déploiement facile et des fonctionnalités avancées/sexy. C’est pourquoi on a inventé les RIA, ou Rich Internet Applications:
Les RIA, ce sont des applications qui se déploient un peu moins bien que des applications Web, mais qui offre une richesse d’interface et d’accès à la machine au-delà du Web. Des animations, la Webcam, le mode déconnecté, une gestion fine de l’impression par exemple. Et des colonnes de grille redimensionnables, bien sûr. Les utilisateurs veulent toujours ça et c’est galère à faire en HTML4.
Bref, les RIA ont le vent en poupe vu qu’elles répondent à un besoin omniprésent. Toute grande entreprise de l’informatique veut donc avoir son RIA. Voilà pourquoi il y a énormément d’intox sur le sujet. Alors qui peut concourir? Voyons:
- Adobe: extrêmement bien placés, ils ont Flash qui est déjà présent dans 95% des navigateurs (source).
- Microsoft: ils n’avaient aucun lecteur de RIA, mais tous les outils côté serveur avec ASP.NET, WCF et compagnie. Ils ont donc sorti en vitesse Silverlight, basé sur le prometteur WPF. L’adoption de Silverlight a été rapide, il est aujourd’hui présent dans 72% des navigateurs (source).
- Sun: ils ont sorti JavaFX. Adoption: zéro. Mort né.
- Apple: ils sont arrivés un peu tard. Alors ils ont pris la tactique du “de toutes façons tout ça c’est nul et ça ne sert à rien”. On critique Flash pour n’importe quelle raison, genre la performance, et dit que HTML5 ça marche déjà. Puéril, mais des gens ont gobé le discours.
HTML5
Alors, Apple aurait-il raison? Faut-il faire du HTML5? Soyons clairs: si vous choisissez HTML5 pour votre appli RIA aujourd’hui vous faites deux erreurs:
- HTML5 n’est pris en charge que par une fraction infime des navigateurs aujourd'hui: pour le déploiement facile c’est raté.
- HTML5 n’est pas un standard; quand un navigateur dit comprendre HTML5, il n’en comprend en fait qu’une version spéciale, faite pour lui
- Le jour où HTML5 deviendra un standard, ce standard sera différent de la purée actuellement prise en charge par les IE9, Firefox 4 et autres. Il faudra donc recoder les sites faits en HTML5 non-standard pour les rendre conformes au standard (même problème qu’avec IE6 qui est aujourd’hui tant décrié car il avait fait l’erreur d’anticiper sur la norme HTML4).
- La norme HTML5 n’est prévue que pour … on ne sait pas. Dans 2 ans ou 20 ans, selon les sources, plutôt pour 2014 aux dernières nouvelles (voir Wikipedia).
- Quand HTML5 sortira en tant que norme, il est fort possible qu’il sera distancé par Flash et Silverlight sur la richesse d’interface. Pas d’accès à la webcam pour HTML5, par exemple. Mais il est difficile de prédire l’avenir.
Ne me méprenez pas. HTML5 sera super. Avoir un standard pour le Web, il n’y a rien de mieux, et rien ne me fait plus crier que de voir ma banque dire qu’ils ont une appli iPhone alors qu’ils n’ont même pas un site Web capable d’être affiché sur un smartphone qui respecte HTML4. Je suis pour les standards. Mais la question est: comment offrir aujourd’hui aux utilisateurs l’interface de demain?
Flash
Flash? Son gros avantage est son taux de pénétration. Présent dans presque tous les navigateurs, c’est presque le déploiement Web dont on rêve. Seul inconvénient: il ne prévoit rien pour l’exposition des services. Autrement dit, vous codez côté client en ActionScript alors que côté serveur vous utilisez au choix PHP, Java ou .NET. Le jour où vous voulez faire un tri côté serveur plutôt que côté client pour optimiser les choses, bon courage.
Si vous avez de l’existant en .NET, le passage à Flash pour la couche de présentation sera un nouvel investissement: apprentissage et Flash et ActionScript, et vous tomberez dans un monde un peu moins standard vu que pour les services Web consommés chacun utilise sa techno. Sinon, tant qu’à apprendre quelque chose, pourquoi pas Flash.
Silverlight
Un taux d’installation moins élevé que Flash mais astronomiquement plus élevé que les différentes saveurs d’HTML5. Il est surtout intéressant si vous avez déjà du .NET chez vous: C# ou VB.NET, ASP.NET ou WinForms. La formation sera rapide et vous pourrez réutiliser votre code (logique métier, par exemple) côté client. Et la faire passer du serveur au client facilement (et réciproquement).
Silverlight a en outre un énorme avantage sur la concurrence: comme WPF, il permet à un chef de projet ou un graphiste, moyennant 2 jours de formation, de pouvoir créer lui-même une maquette fonctionnelle qui sera directement réutilisable par le développeur. Dans cette configuration, le développeur n’a plus qu’à ajouter la logique métier et les Web services. Ce qui avec des fonctionnalités comme Entity Framework et WCF RIA Services se fait très vite.
Avec ce type de développement, on passe très vite de la maquette à l’application et il n’y a pas de surprise sur l’interface. Pour en voir un exemple, voyez ici comme nous passons de l’ergonome au graphiste au développeur sans perdre un octet de ce qui a été développé. J’ai plusieurs clients chez qui le chef de projet a réalisé et diffusé en quelques jours la maquette lui-même avec Expression Blend, avec pour résultat une appli endossée par les utilisateurs et sortie du produit fini extrêmement rapide.
Alors, je choisis quoi?
Bref, ma recommandation est la suivante:
- vous voulez déployer sur 100% des terminaux et acceptez une expérience utilisateur simple: prenez HTML4 avec éventuellement AJAX (ASP.NET le fait très bien)
- vous voulez faire une interface riche dans 2 ou 5 ans: attendez HTML5 (ASP.NET MVC3 le fait déjà)
- vous voulez faire une interface riche aujourd’hui et avez déjà du code en C# ou VB.NET: prenez Silverlight
- vous voulez faire une interface riche aujourd’hui et n’avez aucun existant .NET: prenez Flash
Besoin d’une analyse plus fine? Je suis à votre service.
Comments
J'aimerai savoir pourquoi, lorsqu'il n'y aucun existant, votre préférence va au Flash ?
Merci