Dot.Blog

Windows, UWP, C#, XAML, Xamarin

//BUILD/ Html 5 vs Silverlight : La confusion enfin dissipée

[new:30/09/2011]Le BUILD est en train de se dérouler aux USA, la Keynote est tout juste terminée et on sait maintenant exactement à quoi s’en tenir. Enfin, dirais-je ! Et ce qui ressort des 3h30 de présentation est que, en dehors des nouveautés de Windows 8, tout le monde s’est trompé sur le match HTML 5 vs Silverlight !

Windows 8, rien que Windows 8

Il faut bien comprendre une chose : Microsoft n’a parlé que de Windows 8, rien que de Windows 8.

Cette nouvelle version est pleine d’idées intéressantes et propose de nouvelles approches, tant du point de vue de l’interface utilisateur que de la façon de faire des applications pour Windows. Je ne parlerais pas de Windows 8 ici, ce qui m’intéresse c’est l’avenir de Silverlight. Les blogs du monde entier regorgeront ce matin de détails croustillants sur Windows 8, je vous invite à les consulter, ça vaut le détour. Si vous comprenez l’américain (parlé très vite, on aurait juré qu’ils étaient tous sous cocaïne !) vous pourrez certainement visionner la Keynote par vous-mêmes.

Mais revenons à ce qui m’intéresse ici. La nouvelle interface de Windows 8 et le nouveau modèle de conception d’applications.

Oui, on parle bien ici de fabriquer des applications pour Windows et non pour autre chose...

La grande confusion prend fin

Quand nous avons tous entendu Microsoft vanter les mérites de HTML 5 qui deviendrait une sorte de “voie royale” du développement, forcément tout le monde à entendu “mort de Silverlight”. C’est normal, jusqu’à ce jour, qui disait HTML disait Web.

Or l’erreur que nous faisions tous, et l’énorme surprise que nous réservait Microsoft, c’est que cette association si évidente “HTML = Web” allait être totalement remise en cause !

Finalement là est l’important. Nous savions tous, plus ou moins par intime conviction que C# et XAML n’allaient pas disparaitre dans un claquement de doigt. Mais pendant que nous “flippions” dans notre coin, un truc énorme, un secret bien gardé (pas comme Apple qui perd ces nouveaux protos d’IPhone à chaque release...) allait bouleverser notre vision du développement “natif”.

Quand on parlait développement Windows, on parlait C et C++, les langages vraiment “natifs”. VB.Net, C#, voire Java étaient déjà des langages plus éloignés de l’OS, ne permettant pas, par exemple d’écrire des drivers. Quant à HTML et JavaScript c’étaient des outils du Web et leurs noms ne seraient certainement jamais venu en tête d’aucun développeur raisonnable à propos de développements “natifs” Windows.

Microsoft poussant HTML 5, tout le monde avait en tête qu’il s’agissait forcément du Web, donc de mettre fin à Silverlight. La confusion a été plus forte encore puisqu’au même moment, pour suivre la mode et éviter de couler définitivement, Internet Explorer se mettait lui aussi à HTML 5.

Notre angoisse était donc bien compréhensible. Nous avons été berné jusqu’à la dernière seconde.

La grande nouvelle ne concernait pas le Web, mais Windows.

L’incroyable contresens technique nous échappait, légitimement : JavaScript et HTML vont permettre de créer des applications Windows “natives” !

Aujourd’hui, la terrible confusion qui s’était installée sur l’avenir de Silverlight prend fin. Et le sens de “développement natif” aussi j’en ai bien peur !

HTML 5 pour développer sous Windows

C’est bien de cela qu’il s’agit. Elle est là “l’innovation” majeure, l’ouverture incroyable et impensable de Microsoft, celle qui nous a grugé durant tout ce temps : Il est désormais possible de d’écrire des programmes “citoyens de première classe” pour Windows (je parle bien de Windows, l’OS) en utilisant HTML 5 et JavaScript !

Aussi hallucinant que cela puisse paraitre à tous ceux qui sont des maniaques du “natif”, les ex-amoureux de Delphi ou C++, les partisans de C# ou du Java compilé, aussi choquant techniquement que cela puisse sembler, oui, Microsoft a oser faire de HTML (accompagné de CSS et JS) un langage à part entière pour développer des applications “natives” Windows !

Délirant crieront certains. Ceux qui font une fixette sur les “compilos natifs 64 bits” par exemple... Du JavaScript interprété, du HTML verbeux non contrôlé, du CSS digne d’un bricolage de débutant en informatique, tout cela devient “natif”.

En trois heures et demi de présentation, Microsoft n’a parlé que de Windows 8. Pas un mot, même un tout petit, sur le développement Web qui semble devenir le cadet des soucis de l’éditeur. On le comprend d’ailleurs : c’est avec Windows que Microsoft gagne de l’argent ou peut disparaitre. L’adoption de Windows 8 est donc essentielle. Et comme tout bon plan markéting, il ne faut faire passer qu’un ou deux messages à la fois. La priorité à Windows 8 semble un exercice de style incontournable. Microsoft ne pouvait parler d’autre chose.

Windows 8 pour les tablettes ou pour tous ?

Comme tout le monde ou presque, vous pensiez que le look très Phone 7 de Windows 8 avec ses “tuiles” ça ne pouvait être intéressant que pour la version tablette de Windows 8.

Moi même j’avais des doutes, mais j’avoue qu’à la fin de la Keynote, en ayant vu toutes les bonnes idées de la nouvelle interface, j’en suis venu à douter de mes doutes (!) et même à admettre que, pourquoi pas, la nouvelle interface pouvait aussi être un véritable renouveau sur les PC de bureau.

Sans trop de parler de Windows 8 lui-même, disons que la nouvelle interface est un menu avec tuiles qui ressemble à celui de WP7 mais que surtout Windows 8 vient de tuer son propre nom : il n’y a plus de “fenêtres”, Windows 8 est un monde de “full screen”. C’est un tournant énorme. C’est tellement gros que je me demande bien comment cela sera perçu et qu’ici je ne m’avancerais certainement pas à jouer les devins. C’est une cassure totale de tout ce qu’on connait depuis que Apple avait piquer l’idée des fenêtres à Xerox pour ses premiers Mac.

Windows, n’a plus de fenêtre que son nom.

Un excellent jeu de mot a même été lancé à un moment sur ce sujet, lors d’une démo de Internet Explorer 10 (lui aussi conçu pour ce nouveau look). Quelqu’un à fait remarquer qu’il était “Chrome-less”, “sans Chrome”. Chrome était un célèbre thème de base de Windows (qu’on retrouve même dans les looks de bases des contrôles WPF ou Silverlight). Mais “sans Chrome” pouvait aussi se comprendre “sans le navigateur Chrome de Google”. Ach ! große plaisanterie Sourire

De fait, s’il est vrai qu’avec Windows 8 Microsoft vise le marché des tablettes (consommation mémoire et CPU enfin adaptée par exemple), Windows 8 sera bien le remplaçant de Windows 7, même sur les machines de bureau et les portables de tout genre. Microsoft fait même le pari (osé mais pourquoi pas?) que l’avenir de tous les PC c’est l’écran tactile. Même au bureau, même sur un portable, partout. Et Windows 8 est étudié pour.

Donc Windows 8, son menu en tuiles et son market place, cela fait très “tablette”, mais ne vous y trompez pas : c’est tout Windows qui change de cette façon !

Adios les fenêtres. Plus incroyable encore que le coup de HTML pour faire du “natif” !

La nouvelle plateforme de développement

Regardez le schéma ci-dessous. Il décrit la plateforme Windows 8 :

Imaginez quelques instants que la partie sur fond vert n’est pas affichée, celle surmontée du titre “Metro style Apps”.

Que reste-t-il ?

La partie bleu clair à droite : le monde Windows tel que nous le connaissons jusqu’à maintenant :

  • HTML et JavaScript, via Internent Explorer, se reposant sur le noyau Windows pour les applications Web
  • C, C++, via les APIs Win32 se reposant aussi sur le noyau pour faire des applications “natives” desktop
  • C# et VB, via le Framework .NET ou le Framework Silverlight, se reposant à leur tour sur le noyau pour des applications desktop classiques ou Out-Of-Browser pour Silverlight (Silverlight pour le Web n’est pas concerné ici).

Un monde qui disparait

Ce sont ces trois types d’applications qui, du jour au lendemain, d’une seconde à l’autre, passent dans la catégorie “has been – mais-toujours-supporté”.

Microsoft insiste sur le fait que tout cela fonctionne et fonctionnera encore un bon moment, mais cette zone bleu clair délimite désormais le passé.

Microsoft a ici “pédalé” un peu dans la semoule. En montrant que la zone bleue est résolument du passé, ils savaient qu’ils inquièteraient tout le monde (que faire des applications actuelles?). Ils se sont donc senti obligé d’affirmer en même temps que tout cela continuerait de marcher sans problème. Mais le paradoxe n’est que de surface : continuer de marcher ne signifie “continuer d’être développé” !

D’ailleurs si Hyper-V (le système de virtualisation) est intégré de base à Windows 8 ce n’est pas pour nous faire un cadeau, mais pour s’assurer que grâce l’émulation il n’y aurait aucun problème de compatibilité dans les années à venir pour les vieilles applications (stratégie plus aboutie techniquement que celle de Virtual PC sous Windows 7 mais équivalente dans l’intention).

Aussi faut-il bien comprendre les choses : seul le modèle de développement dans la zone verte permettra de bénéficier des dernières avancées, seules les applications conçues selon ce mode s’afficheront correctement dans la nouvelle interface. Les applications de la zone bleue feront se réafficher le bureau classique de Windows 7. Autant dire donc que même si ça continue de marcher, ça sera très vite démodé, donc mort.

L’art de révolutionner le monde sans faire peur est un exercice de style bien difficile il faut l’avouer !

Un autre émerge !

Faisons apparaitre de nouveau la partie sur fond vert... C’est le futur, c’est cela qui sera considéré comme “natif” sous Windows 8. Et il va falloir s’y habituer...

Au dessus du noyau Windows que voyons nous ? Un gros rectangle s’appelant WinRT.

WinRT est la nouvelle couche de services native de Windows 8. C’est elle qui fédère les services de base de l’OS comme les communications, la gestion des données, les graphiques et les médias, les périphériques, les impressions. C’est le grand frère du Framework .NET agrémenté de nouvelles classes simplifiant l’écriture d’applications “Metro style”. Le nouveau look de Windows donc.

Au dessus de WinRT se trouvent des langages accompagnés, ou non, de langages associés pour la description des UI.

C et C++ existent toujours, et s’appuieront désormais sur WinRT.

C# et Visual Basic existent toujours, et ils s’appuieront, eux aussi sur WinRT.

Ces quatre langages peuvent utiliser les services de XAML, intégré à l’OS, pour décrire des UI.

Bien entendu, cela ressemble farouchement à la partie bleu clair, mais ce n’est qu’apparence. Au lieu d’attaquer le noyau via des surcouches comme .NET, tous ces langages se reposeront sur les services de WinRT qui fait partie de l’OS. XAML compris. On comprend mieux pourquoi l’équipe de développement XAML a été intégrée dernièrement à l’équipe Windows.

Il s’agit d’une réorganisation intelligente, WinRT n’étant qu’un Framework .NET amélioré et intégré de base à Windows 8 tout simplement. Du coup, le Framework .NET tel qu’on le connait passe dans le bleu clair... Une simple surcouche de Windows “ancienne façon”, toujours utilisable, mais vouée à disparaitre... Pour mieux renaitre dans le modèles Windows 8 sous le nom de WinRT !

Le travail d’intégration fourni dans WinRT est époustouflant, la communication entre applications, le système de recherche de Windows 8 qui intègre le contenu des applications, tout cela est incroyable et mériterait d’en parler dans un billet dédié. Mais j’aurais le temps d’y revenir en détail dans les mois à venir ! Et puis je l’ai dit, vous trouverez des présentations de Windows 8 ce matin dans tous les blogs de la planète.

La “vraie” nouveauté qui nous interpelle ici, c’est bien l’apparition dans ce cercle très fermé des “vrais langages” de... JavaScript !

JavaScript utilisant HTML comme langage de description de l’UI, tout comme C++ ou C# peuvent utiliser XAML dans cette nouvelle organisation.

Le grand secret n’est plus...

Le BUILD et sa Keynote viennent de briser le secret le mieux gardé de l’histoire de l’informatique, au moins récente, aussi loin que je puisse me rappeler. Jamais une (double) nouvelle aussi incroyable n’avait été aussi bien gardée.

Microsoft voulait garder le silence, et ils ont tenu. Chacun tentant de percer les secrets de Jupiter, de Mosh, d’autres ayant repérer WinRT en décompilant quelque version Beta de Windows 8 piratée... Et pendant ce temps là le petit monde Silverlight s’agitait, se contractait, s’angoissait. A tort.

Silverlight ? Passé ou Futur ?

Très honnêtement si on considère que la zone bleue du schéma plus haut représente le “passé”, alors Silverlight, tout autant que C# et le Framework .NET sont morts.

Mais cela serait mal lire ce graphique.

On ne parle ici que de programmation Windows, rien que de programmation Windows. Le Web n’a jamais été évoqué une seule fois.

Silverlight pour le Web continue sa route, la version 5 sortira d’ici quelques temps d’ailleurs.

On sait que Microsoft n’avait pas pour prétention de remplacer HTML sur le Web. Pas plus que Flash ne l’avait fait. Les choses vont rester comme elles sont. Et évolueront forcément. HTML 5 change la donne. Il ralentit la progression des plugins, et nous fait perdre dix ans. Le temps qu’il faudra pour qu’on réinvente Silverlight en natif dans les browsers... On s’apercevra alors de l’erreur que fut le buzz HTML 5 et le gâchis de tout ce temps perdu pour arriver à faire difficilement ce qu’on savait très bien faire dix ans avant (car lorsque le Canvas de HTML 5 arrivera au niveau de possibilité de Silverlight, cela sera bien entendu implémenté différemment par chaque Browser, le Bronx habituel de HTML qui n’est pas supporté pareillement par deux browsers...).

Mais cela est l’histoire du Web, et finalement Silverlight s’en sortira plutôt bien face à Flash qui ne servait qu’à faire des bandeaux de pub et des petits jeux : HTML 5 le fait aussi, et sans plugin. Silverlight a pour lui les applications de gestion (LOB) pour les intranet et extranet des entreprises, un marché important où sa puissance est très appréciée. Un domaine interdit à Flash qui donc devient totalement inutile.

Silverlight, sous ce nom, appartient à ce monde là. Celui du Web où il ne remplacera jamais HTML, celui des entreprises qui doivent développer des clients riches. Sa vocation LOB est clairement affichée par Microsoft, ainsi que peuvent en attester les nombreuses spécialisations de Silverlight en ce domaine (validation, Ria Services, contrôles orientés données, ...).

Mais Silverlight n’a jamais été rien d’autre, jamais il n’a été un outil de développement pour créer des applications Windows. En tout cas jusqu’à Windows 8.

Le mode OOB faisait penser à une sorte de remplacement de XBap en plus light (sans avoir à installer le Framework).

Mais la fusion Silverlight / WPF est allée plus loin encore que ce que moi même j’imaginais lorsque j’annonçais cette inéluctable mouvement : WPF et Silverlight sous ces noms là appartiennent au passé, mais leur substantifique moelle, elle, se fond dans le nouveau modèle “Metro style apps”. Ni le nom Silverlight, ni le nom WPF n’ont été conservés dans ce mode spécial et bien plus large, mais leurs constituants essentiels, C#, VB.NET, XAML, deviennent les briques de base de “Metro style apps”.

Encore une fois, rappelons que cela ne concerne que le développement sous Windows...

De fait, Silverlight n’appartient ni au passé ni au futur. Silverlight est une technologie Web qui vivra sa vie tant qu’il aura du succès. Tout comme les applications C# et le Framework .NET... Ni plus, ni moins. Tous ces environnements sont dans la zone bleue...

Mais si on parle de Silverlight comme un outil de développement permettant de créer des applications en C# ou VB.NET en s’appuyant sur XAML, alors là les choses sont très différentes : Silverlight est le futur ! C# + XAML est un moyen fantastique de développer des applications Windows 8 modernes, répondant aux critères très spéciaux de ce nouvel OS. Sauf qu’on n’appelle plus ce mode là “Silverlight” ou “WPF”.

D’ailleurs, les outils eux-mêmes ne changent pas : Expression Blend et Visual Studio restent les piliers incontournables pour créer des applications Windows.

(Un travail fantastique a été fait dans Blend pour lui permettre d’éditer des solutions de type HTML 5 / JS, c’est une façon incroyable de détourner cet outil purement Xaml, et c’est très bien fait. Je vous incite vraiment à regarder de plus près le kit de développement Windows 8 en preview !).

Une nouvelle plateforme plus cohérente

Windows 8 propose ainsi une nouvelle plateforme de développement repensée, cohérente.

Nouvelle car architecturée différemment. Mais reprenant bien évidemment tout ce qu’il y avait de meilleur : le Framework .NET s’améliore pour devenir WinRT, XAML devient un élément de l’OS, et un langage comme C# reste bien entendu le maitre absolu à bord, même si le discours (déjà ancien) que les autres langages sont “très bien aussi” est toujours le même. On sait que C# et le Framework sont liés et que l’un ne va pas sans l’autre. WinRT n’étant qu’un Framework amélioré, C# restera certainement le langage de référence de Windows 8.

Toutefois, la vraie surprise révélée enfin avec précision est l’intégration de HTML et JavaScript au même niveau d’importance pour la création d’application native Windows '”Metro style”. C’est vraiment incroyable.

Soyons un peu critique...

C’est vraiment incroyable, et en même temps c’est le sens de l’histoire qui se perd ainsi souvent dans des méandres qu’avec le recul on considère comme des modes, des pertes de temps.

Combien de fois l’avènement de tel ou tel Roi, de telle ou telle croyance, a-t-il fait perdre un siècle ou plusieurs à une civilisation sur ses voisines ? Pourquoi la chute des Incas, celle des Pharaons, de Rome, des Grecs antiques si évolués ? Combien de siècles, d’âges sombres les humains ont-ils traversés pour, finalement, comme nous en occident en revenir 2000 ans après aux valeurs de république ou de démocratie des anciens grecs ? Le passage par le moyen-âge, l’inquisition, la saleté, la bêtise était-il incontournable ? N’avons nous pas perdu 2000 ans, une paille, pour des croyances idiotes ? Si, bien entendu...

HTML 5 sera certainement ce nouveau veau d’or adoré bêtement qui nous fera perdre à tous des années d’une évolution qui aurait pu démarrer aujourd’hui. Cela prendra plus de temps que prévu, pour réinventer la roue, c’est sûr.

Mais Microsoft était très en retard sur les tablettes. Et comme vous le savez on se bat aujourd’hui sur ce marché à coup de centaine de milliers d’applications, comme il fut un temps on se battait à coup de Mega Hertz des processeurs.

Si vous avez un Iphone, un IPad, une tablette Android, vous savez comme moi que ces 200.000 applications sont pour la plus grande partie des recopies honteuses, des trucs inutiles, bogués, et que c’est l’enfer d’en trouver une correcte. On teste une, puis autre autre, puis au bout de la 5ème, épuisé de recherche, d’installation / désinstallation on conserve celle qui est gratuite et qui fait à peu près ce qu’on cherchait...

Microsoft aurait pu choisir de se battre sur la qualité et justement trancher avec ses concurrents en démontrant, ce qui était facile, que leurs 200.000 applications n’était que vent et inutilité. Mais la publicité négative est dangereuse, elle peut vous donner mauvaise presse. On aurait très vite entendu des tas de gens dire “ils critiquent parce qu’ils sont jaloux, en retard...”.

Alors comme les gens sont bêtes, Microsoft va leur donner ce qu’ils aiment... Tu veux un catalogue de 200.000 applications pour acheter ta tablette ? En voilà une benne pleine, je dépose ça où ? A côté des poubelles ? Sur ton tapis ?

C’est exactement ça.

Seulement voilà, il y a un hic : ne pas perdre son temps à expliquer aux idiots qu’ils le sont, ça veut dire faire pareil que les autres.

Or Microsoft aura des années de retard lors de la sortie de Windows 8.

Le seul moyen de combler ce retard est d’arriver à convaincre des tonnes de développeurs de venir développer des applications pour le market place ! Exactement comme pour le téléphone, que ces applis soient pourries, que les auteurs s’adonnent à une joyeuse foire à la contrefaçon, tout cela Apple, Google et donc Microsoft s’en fichent. Vous en voulez de l’application, vous en aurez !

On sait très bien que trouver des pointures en C# pour faire des superbes applications ce n’est pas facile... Donc comment remplir la benne à ordure, pardon, le market place ? Vous avez compris. Il est plus facile de faire de l’œil aux bricoleurs qui font du HTML 5 et du JavaScript que d’essayer d’éduquer les foules à la beauté de C#, Linq et de XAML...

Microsoft était donc coincé. Tout ce battage autour de HTML 5 n’a qu’une seule raison : remplir le market place.

C’est pourquoi C# et Xaml, sont, et resteront la référence pour créer de vraies applications professionnelles. C’est la raison de leur présence dans la zone verte, Microsoft ne tient surtout pas à perdre ceux qui suivent le Framework avec raison depuis des années.

Mais il est difficile dans un message publicitaire de dire aux uns de venir et aux autres de rester... Microsoft compte sur le fait que les amoureux de C#, de Silverlight, du Framework comprendront vite que rien n’a changé pour eux.

C’est de la com’ ... N’en voulons pas trop à Microsoft qui doit malgré tout se sortir d’une mauvaise passe, se trouvant si loin derrière les autres sur deux marchés essentiels pour l’avenir : les Smartphones et les tablettes.

Les outils de la plateforme

On le voit ici, C# et XAML sont des “world-class development languages”. Rien ne change donc. Juste le nom de la technologie et quelques classes (beaucoup !) pour améliorer le Framework qui devient WinRT.

Les outils de développement restent identiques mais améliorés : Expression Blend et Visual Studio sont toujours nos amis !

Transition

En fait il n’y aura pas de transition ! Silverlight restera ce fantastique plugin Web qu’il est aujourd’hui.

En revanche le couple C# / XAML permettra de développer des applications Windows “natives” dans le plus pur “Metro style'” et bénéficiant par là même de toutes les nouveautés de l’OS. C’est un peu le retour de WPF sans le dire, ce nom disparaissant totalement. En fait le code est plus proche de Silverlight qui est en revanche toujours vivant.

image

Ci-dessus la transformation en quelques lignes d’une application Silverlight Web classique en une application “Metro Style” pouvant tourner en natif sous Windows 8.

Par exemple ici, le développeur change la ListBox qui ne supporte pas tous les modes de scrolling tactile par une GridView qui elle accepte les nouveautés. En général le travail ne sera pas beaucoup plus compliqué que celui-là.

Conclusion

Windows 8 est une version vraiment intéressante de l’OS. Elle innove sur plus d’un plan. Elle déroute par certains choix, mais au moins elle tente de briser les schémas éculés repris par d’autres (Android sur tablette recopie finalement le bureau de Windows avec des icônes, pas de chance, Windows ne sera plus comme ça !).

L’adoption du tout tactile me laisse plus perplexe, surtout pour les machines de bureau (restez le bras tendu une journée entière pour “cliquer” du doigt et vous comprendrez mes doutes). Microsoft y croit en tout cas. Mais c’est un détail.

Windows 8 marche mieux, plus vite (le chargement est impressionnant), consomme moins, et sera un superbe OS pour tablette. Ce sera même le seul qui permettra de développeur des applications tablette sur une tablette...

Windows 8 pour le PC de bureau sera une évolution inéluctable : toutes les nouvelles machines seront livrées comme cela, et la pression des utilisateurs fera le reste.

Pour nous, le plus important c’est que les bases mêmes de Silverlight, C# et XAML, permettront de créer des applications Windows natives comme WPF le permettait sous Windows 7. Silverlight sur le Web n’est en rien concerné par tout ce mystère qui régnait ...

Appelons cette technologie “Metro Style”, cela ne me dérange pas. Etendons cette technologie à HTML et JS, je n’y vois aucun inconvénient. Quel développeur C# aurait peur de ceux qui aiment et ne connaissent que HTML et JavaScript...

L’essentiel est bien que la technologie en laquelle nous croyons depuis longtemps est bien une technologie d’avenir que Microsoft, loin de la mettre à l’écart, a intégré aux couches les plus modernes de Windows 8.

Vive C#, Vive XAML !

Et Stay Tuned !

blog comments powered by Disqus