[WinRT] 6 choses à savoir sur le dev Windows 8
Hey guys,
Voici un article, en vrac’, qui présente 6 points à savoir sur le développement Windows 8.
Le XAML c’est du WPF like? Comment C++ peut-il y accéder?
Le XAML utilisé dans Windows 8 est certes ressemblant mais n’est pas le même. Certaines améliorations ont été réalisées. Cependant, d’habitude le XAML est représenté sous forme d’objets .NET ou Silverlight, mais dans Windows 8, les objets XAML sont des objets natif WinRT ce qui permet de ce fait:
- D’être utilisé en C# mais aussi en C++
- De, peut être, à l’avenir être utilisé en JS (mais pas pour le moment, le moteur de rendu n’étant pas le même)
- D’être plus performant
Source: décompilation d’un objet XAML
Les langages se valent-ils?
Clairement pas. Même si je suis un fan de HTML5, je pense que c’est celui le plus à la traine car c’est le seul à ne pas pouvoir créer de composant réutilisable, il est aussi le seul à ne pas pouvoir utiliser de XAML contrôle et la projection de WinRT n’est pas “full”, certains namespaces sont cachés au JavaScript. Pour finir, à titre personnel, je pense que le layout interpretor de IE10 reste un peu moins performant que l’interpréteur XAML. Sans compter le fait que nous travaillons pas en vectoriel (perte de qualité, taille des images etc..).
.NET possède une projection full coverage de WinRT, mais C++ discute directement avec l’API, il reste donc naturellement plus performent (comme d’habitude). Le C++ est aussi le seul langage, capable d’appeler un sous ensemble de Win32 dans une application métro (du moins j’ai pas encore testé en C# et je pense pas que ce soit possible de faire de l’interop).
Source: Tentez d’instancier un objet XAML en WinJS, utiliser le Windows Analyser pour comparer les perfs, Conferences Build MS
Avons-nous un full support de HTML5/CSS3/JS?
Oui, le moteur de rendu et l’interpréteur de IE10 sont mis a contribution pour afficher une app métro WinJS.
IE10 est franchement un bon navigateur et il est possible de pleinement profiter des features de HTML5, CSS3 et ECMAScript 5.
Microsoft s’ouvre donc à un nouveau monde de développeurs.
Source: Portage de home.dollon.net en app Windows 8, voir ici: http://youtu.be/Ku-cMXyFdJ0?t=9m16s
.NET est il mort?
Non, si vous développez en C# ou VB, vous aller de toute façon utiliser l’environnement .NET. C’est-a-dire la CLR installée par défaut sur Windows 8 pour profiter des assemblies .NET, du Garbage Collector and co. Pour le moment c’est le Framework 4 qui est disponible mais je pense qu’on aura peut être la chance d’avoir le 4.5 livré avec Windows 8.
Certaines parties du .NET framework sont cachés (oui cachés mais toujours là! Un petit hack suffit de les retrouver à l’exécution). Pourquoi caché? Car Microsoft souhaite que vous utilisiez les API WinRT (comme le nouveau XAML, la nouvelle façon de sauvegarder des fichiers etc…).
Vous faites donc bien du C#, qui sera bien compilé en MSIL et interprété par la CLR. Il est à noter qu’une application .NET normale peut aussi référencer WinRT !
Source: si on attache un débuguer (WinDbg) à une application métro dev en C#, on voit une CLR 4.0 charge l’assembly
Win32 est il mort?
Non pour plusieurs raisons. Premièrement il cohabite avec WinRT puisque nous aurons toujours un bureau Windows, que l’on soit en ARM ou non. Même les versions Windows RT auront un bureau Windows permettant, entre autre, de lancer Office.
Le problème de ce bureau sous ARM est qu’il est pour le moment réservé à Microsoft, de ce fait des navigateurs comme Mozilla ne peuvent en profiter (et crée la polémique, alors que sur les iPads pouraves ca faisait chier personne
).
La seconde chose est que sur une application métro C++ Kernel32 est chargé (faisant partie de Win32)!
Alors au risque de dire une très grosse bêtise, pour moi WinRT n’est pas le remplacent de Win32 comme tout le monde le dit. Pour moi c’est une nouvelle librairie, super clean (asynchrone and co) qui nécessite encore des appels Win32 pour pas mal de choses et qui ne possède pas (encore) l’ensemble des APIs de .NET. Win32, .NET et WinRT cohabitent tous ensemble, il n’y a pas de remplacent de quoi que ce soit.
Source: Docs MSDN pour les appels Win32, WinDgb également.
Puis-je utiliser Blend pour créer un site web HTML5/CSS3?
C’est possible oui, il suffit d’extraire les fichiers HTML générés. De la à dire que ce soit une bonne idée.. Blend s’appuie seulement sur le rendu de IE10 et je le trouve super verbeux, je trouve que l’HTML généré n’est pas toujours clean et qu’il a tendance à abuser du CSS inline. Qui plus est, il est beaucoup mois conciliant que Blend avec XAML, de ce fait, je trouve son utilité plus que limité.
Attendons de voir les prochaines moutures.
Source: expérience perso (ca m’arrive).