Qu’est-ce qu’HTML 5 ?
Bon, je ne suis pas du tout spécialiste du développement web. J’en ai fait un peu comme tout le monde, et je suis suffisamment au courant du modèle WebForms pour créer des contrôles, y compris avec une partie client. J’ai commencé le JavaScript il y a presque 15 ans, maintenant, à une époque où l’idée même d’outils pour aider à coder était risible…
J’ai suivi les développements de HTML 3, puis HTML 4, puis XHTML. Dans les quelques développements web auxquels j’ai participé, j’ai toujours soigneusement séparé HTML pour la structure de CSS pour la présentation. Et pour moi, HTML est simplement ça : un langage structuré de représentation d’information publiable. Cela n’empêche pas un certain degré d’interaction grâce à des frameworks clients ou bien des modèles d’aller-retour serveur intégré comme WebForms, mais fondamentalement, HTML représente une structure d’information.
Du coup, j’ai un peu de mal avec la façon dont HTML 5 est mis en avant comme langage pour créer des applications riches. Je ne vois pas en quoi une nouvelle version nous libèrerait des limitations fondamentales du langage, à moins qu’il s’agisse d’une toute nouvelle technologie qui rompe avec l’existant.
A entendre certains commentaires sur internet (http://www.techrepublic.com/blog/programming-and-development/why-html5-makes-justifying-native-applications-more-difficult/4903), HTML 5, dont les specs ne seront pas stabilisées avant 2014, est pourtant déjà le choix obligatoire pour les développements RIA, alors que des plugins font parfaitement le boulot aujourd’hui. D’autres articles parlent de “développer en HTML” (http://www.indexel.net/applications/html-5-est-ce-enfin-le-moment-de-l-adopter-3366.html), mais pour moi, le développement se fait avec JavaScript et ActionScript côté client, et .NET ou J2EE côté serveur.
Alors, c’est quoi, HTML 5 ? Une plateforme de développement ou un langage de description de pages ?
Back to reading
Du coup, je me suis dit qu’il fallait creuser un peu plus pour se faire une idée plus précise, et je me suis attelé à deux livres sur HTML 5 :
Le bouquin de Pearson (http://www.pearson.fr/livre/?GCOI=27440100108830) est très bien pour commencer : clair et précis, pas trop long, et expliquant bien l’historique des choix qui ont été faits, sans entrer trop dans la technique.
Celui de Manning, bien que pas encore terminé mais accessible en mode Early Access (http://www.manning.com/crowther/) est bien plus technique, tout en restant abordable, et en expliquant très bien les différences avec HTML 4.
Les avancées de HTML 5
Pour résumer, HTML 5 apporte des avancées intéressantes, mais qui représentent surtout une inclusion dans la norme de ce qui se faisait jusqu’à présent par d’autres moyens. Exemples :
- HTML 5 définit des balises <header>, <footer>, <article>, etc. qui permettent de donner une bien meilleure sémantique à la structure de la page, plutôt que de laisser un tas de <div> imbriqués, avec seulement une classe CSS pour les différencier. C’est très bien, mais c’est surtout intéressant pour l’indexation, et n’a rien à voir avec l’utilisation d’e HTML 5 pour des applications de type Rich Internet Application.
- HTML 5 embarque des éléments spécialisés pour le multimédia. Visiblement, l’idée est de ne plus avoir besoin de plugin Flash ou Silverlight. Outre le fait que ça ressemble surtout à une idée de puriste (tout le monde utilise des plugins), le problème n’est que déporté, vu que les codecs associés ne sont pas normalisés. Vous vous rappelez la guerre des navigateurs il y a dix ans ? Moi, oui… j’étais au milieu…
- HTML 5 embarque des éléments pour effectuer de la validation côté client sur les éléments de formulaire. Bonne idée de mettre ça dans HTML lui-même. Ca arrive un peu tard, parce que beaucoup de frameworks JavaScript faisaient désormais ça très bien, mais vu que c’est quelque chose de très utilisé dans les RIA, c’est bien que ce soit inclus dans la norme.
- HTML 5 permet le stockage local de données, un peu comme un IsolatedStorage en .NET. Attention, cela ne veut pas dire que vous avez accès au disque dur local, mais juste à une toute petite partie dédiée à votre application. Pour le coup, ça me parait difficile de conclure, comme le fait un des articles plus haut, qu’il n’y a plus besoin de code natif pour les applications ayant besoin d’accès I/O : on ne peut pas partager directement de fichiers entre les applications…
- HTML 5 met l’accent sur les manipulations graphiques avec le composant Canvas, dans lequel on peut dessiner de manière simple. Les implémentations (IE9 en particulier) permettent d’après ce que j’ai compris une accélération graphique qui sera la bienvenue. Je me rappelle avoir fait du DHTML et avoir atteint des problèmes de performance dès le centième rectangle affiché.
- HTML 5 permet le Drag & Drop. C’est quelque chose qui pourrait être mis au crédit du développement RIA. Pourtant, même chose : on pouvait faire ça depuis longtemps avec DHTML. Et surtout, si il n’y a pas la possibilité de faire du Drag & Drop entre applications multiples, c’est trop limité par rapport à ce qu’on fait avec Silverlight en mode Out Of Browser, par exemple.
Ce que HTML 5 ne sera pas
Pour résumer, HTML 5 regroupe très bien tout ce qui a été apporté de manière multiple sur HTML 4 et le place dans la norme. Certaines des fonctions peuvent en effet faire progresser HTML vers l’utilisation dans le cadre d’applications RIA simples, mais soyons sérieux : la validation des entrées et le drag & drop représentent quoi ? 10% peut-être des besoins techniques qu’on a pour faire du RIA ?
Il manque toute l’interopérabilité avec le système, une pile JSON, une pile SOAP éventuellement, des manipulations 3D possibles (les solutions existantes sont des plugins), un mode déconnecté qui ne soit pas uniquement porté par un IsolatedStorage, mais qui gère de manière générique la déconnexion.
Il manque évidemment l’accès aux disques, l’accès unifié aux périphériques, la possibilité de gérer la sécurité applicative, le chargement dynamique de parties d’applications… Bref, il manque énormément de choses pour rivaliser avec des applications à plugin. Et ce n’est pas les API unifiées pour la géolocalisation qui changeront quoi que ce soit à cet état de fait.
Conclusion
Pour moi, HTML 5 est bien resté une grammaire de structuration de contenu. Beaucoup de gens le poussent en avant comme une alternative aux plugins, mais ce n’est, à mon humble avis, pas du tout le cas. HTML 5 apporte des fonctionnalités intéressantes à HTML 4, et qui vont indubitablement dans le sens de la production plus facile de RIA. Mais HTML 5 n’est pas une technologie suffisante pour cela.
Après lecture de ces deux livres et applications sur quelques prototypes, c’est plutôt cet article dans lequel je me retrouve le plus : http://www.infodsi.com/articles/124553/html5-est-hallucination-collective-franck-wolff-fondateur-president-granite-data-services.html
Je pense que beaucoup de gens placent des espoirs beaucoup trop hauts dans HTML 5. On entend beaucoup parler en ce moment du manque de futur de Silverlight, mais c’est un peu comme Visual Basic 6 : quand la dernière version est sortie, il était clair qu’il n’y aurait pas de suivant, et pourtant c’est une version stable qui est resté en production encore longtemps après (Microsoft a d’ailleurs sorti un patch pour le faire fonctionner sur Windows 2003 Server, ce qui n’était pas supporté). Silverlight 5 est sorti et est arrivé dans une version extrêmement mature, avec des fonctionnalités débordantes. Je suis persuadé qu’il va être encore très utile jusqu’en 2014 au moins.
Quant à l’approche Metro de Windows 8, je ne pense pas qu’elle obère le positionnement de Silverlight : HTML 5 est en effet utilisé pour la structuration des tiles, mais le code de WinRT contient la plupart des classes de Silverlight…
EDIT : S’il fallait donner un exemple supplémentaire de l’engouement absolument irrationnel sur HTML 5, l’actualité des blogs vient de m’en fournir un autre sur http://www.techrepublic.com/blog/10things/10-reasons-why-this-is-a-great-time-to-be-a-developer/2915. Allez-le lire, vous verrez, c’est extraordinaire… Il ne fait aucun doute que, lancé sur un tel élan, HTML 5 finisse par guérir des maladies graves, combler le trou de la sécu, etc.
Merci de ce très bon éclairage sur HTML 5 ! Il sera très utile lorsque nous devrons faire des choix sur une future interface Web… si tu voix ce que je veux dire 🙂