jeudi 30 mai 2013

Problèmes de l'architecture Windows 8


Windows 8 s'est démarqué principalement des précédents OS de Microsoft par sa nouvelle interface Metro qui a introduit une nouvelle manière de visualiser et lancer les applications. Cette évolution un peu forcée par Microsoft n'a pas été au goût de la plupart des utilisateurs de Windows, ce qui a obligé Microsoft de remettre le bouton démarrer classique dans le service pack 8.1 prévu pour bientôt, afin de conquérir les utilisateurs non adeptes de l'interface Metro. Cependant, le petit détail qui a été dévoilé dernièrement c'est que la nouvelle UI de Windows 8.1 n'aura du menu démarrer classique que le bouton qui ne fait rien d'autre qu'afficher l'interface Metro ! Étonnant non ?


Tout ça n'est pas de pure hasard, et c'est pas non plus de l'obstination de la part de Microsoft ou un manque de compréhension des besoins des utilisateurs, mais l'origine de ce choix s'agit tout simplement des problèmes de conception dans l'architecture de Windows et les API utilisées, ces problèmes commencent à apparaître dès la création du framework .Net par Microsoft, je m'explique :

MFC était le framework de développement le plus utilisé pour développer des applications Windows avant l'arrivée de .Net, son point fort est la performance qui est due à l'utilisation du langage C++ natif et l'API Win32.
Etant donnée que C++ n'était pas le plus simple des langages, le framework .Net à été conçu principalement pour faciliter la vie aux développeurs, en supportant des langages de développement plus simples notamment C# très inspiré du langage Java. 
Lors de la conception du framework .Net, Microsoft à commis certains erreurs qui ont fait qu'on arrive là où on est aujourd'hui :

  • Le framework .Net été totalement basé sur de nouvelles technologies, donc Microsoft n'a pas donné une possibilité de rétro-compatibilité avec l'API Win32, donc porter des anciens applications MFC vers la nouvelle architecture .Net été quasiment impossible.
  • Le framework .Net avais plusieurs avantages notamment l'environnement de développement Visual Studio riche en fonctionnalités et supportant plusieurs langages, mais l'architecture .Net était relativement loin en terme de performance de ce que donné les l'API Win32. A savoir que lors du développement de Windows 7, Microsoft était partie pour développer une nouvelle couche graphique basée sur l'API .Net, sauf que les résultats médiocres en terme de performances on obligés la firme a laisser tomber le projet pour re-développer la couche graphique en utilisant le vieux framework MFC qui été utilisé depuis plus que 20 ans.
  • Lors du développement de Windows 8, Microsoft a cherché une nouvelle solution : il n'est plus possible de continuer à utiliser un framework vieux de 20 ans, mais il n'est pas possible non plus d'utiliser .Net vu son manque de performance, donc Microsoft a été amenée a développer un troisième framework qui permet de regrouper les avantages des 2 précédents, il s'agit de WinRT, et c'est en utilisant cette API que Microsoft a développé la couche graphique de Windows 8 notamment la fameuse interface Metro.

Revenant au problème du bouton démarrer sur Windows 8, l'explication aux choix de Microsoft c'est qu'ils ne peuvent plus utiliser l'ancien menu démarrer développé avec l'API Win32, parce qu'il ne sera pas compatible avec le reste de la couche graphique Windows 8 développée en utilisant le framework DirectUI de l'API WinRT.
Par contre l'API Win32 est encore présente dans l'architecture Windows 8, ce qui permet d'exécuter les veilles applications développées en utilisant cette API.

Vous comprendrez mieux en lisant cet article que je trouve fort intéressant, et qui explique en détail les évolutions des API Windows et schématise leurs architectures, je vous invite à le lire :