Développer pour WINDOWS 10
Windows 10 est disponible depuis le 29 juillet et peut être obtenu gratuitement pour ceux qui disposent d’une licence Windows 7 ou Windows 8.1. Dans le numéro précédent étaient présentés les apports essentiels de Windows 10 au niveau fonctionnalités et in
La gratuité de Windows 10, pour les détenteurs de licences valides Windows 7 ou 8.1, est la première étape d’une stratégie dont le but avoué est de faire de Windows 10 un système d’exploitation présent sur quasiment tous les supports : PC, tablettes, smartphones, consoles de jeux et objets connectés. Mise en Open Source de la stack .NET, ouverture et facilité d’adaptation pour les applications iOS et Linux, portage de .NET avec Mono, gratuité et absence de royalties pour les outils de développement (Visual Studio Community, Windows 10 SDK), applications universelles fonctionnant sur toutes les plates-formes Windows 10 sans ou avec peu d’adaptation : Microsoft n’a pas fait les choses à moitié et veut clairement attirer la majorité des développeurs.
La stack serveur .NET en Open Source
Lors de sa conférence développeurs Connect() en novembre dernier, Microsoft avait ajouté à son credo Cloud First, Mobile First un ajout de taille : Code First,
Open Source First. Bien que cette déclaration puisse paraître surprenante par rapport à la politique passée de Microsoft, cela ne fait que confirmer un peu plus le virage stratégique opéré depuis l’arrivée de Satia Nadella. La stratégie d’ouverture du géant de Redmond est de plus en plus claire, et l’éditeur semble avoir définitivement abandonné l’idée – ridicule, il est vrai, dans le monde de l’informatique professionnelle – de copier Apple et sa politique de propriétarisation exacerbée. Un virage salué par Jim Zemlin, le directeur exécutif de la fondation Linux : « Nous ne sommes pas d’accord avec tout ce que fait Microsoft et bien des projets open source sont en concurrence directe avec les leurs. Toutefois, le nouveau Microsoft est une entreprise différente du point de vue de l’Open Source. Microsoft a compris que les marchés informatiques ont changé et que les entreprises ne peuvent plus naviguer seules comme elles ont pu le faire… » L’Open Source n’est plus le diable pour Microsoft, mais au contraire la solution incontournable et le but à atteindre. Il était temps d’ouvrir les yeux, n’est-ce pas ?
.NET sur Mac et Linux
Si la mise en Open Source de toute la stack serveur de .NET a été l’annonce majeure de cette conférence, rappelons que Microsoft avait déjà bien amorcé ce virage en mettant en Open Source plusieurs composantes de .NET – le compilateur Roslyn et le framework ASP.NET, notamment. Il manquait à la liste deux éléments essentiels : le runtime et le framework. C’est maintenant chose faite.
Le .NET Core Framework et le .NET Core Runtime sont désormais des projets open source sous licence MIT. Ces versions Core sont le résultat de la réécriture du .NET Framework afin de l’alléger et de le rendre plus modulaire et d’en simplifier l’utilisation. Le but recherché est de faciliter les déploiements en packageant le runtime avec l’application en n’incluant que les bibliothèques nécessaires, et rien de plus, ce afin d’éviter au maximum des problèmes de compatibilité sous d’autres environnements. La volonté du géant de Seattle est claire : porter officiellement Framework et Runtime sous Mac et Linux. Le rapport de force semble avoir changé en faveur des partisans du Libre, qu’on se le dise ! Le code de la stack est disponible sur GitHub à l’adresse
https://github.com/ Microsoft/dotnet.
Compilation croisée depuis Visual Studio 2015
Microsoft aimerait bien que la communauté Mono – rappelons que le projet Mono a pour but le portage du .Net sous Unix/Linux – devienne au plus vite l’un des principaux contributeurs du portage en Open Source du framework, surtout en ce qui concerne la partie cross-platform (compilation croisée). L’éditeur a déjà démontré qu’il était possible de débugger en pas-à-pas une application ASP.NET s’exécutant dans un conteneur Docker sous Linux depuis Visual Studio 2015. Microsoft a bien précisé que c’était la stack serveur (ASP.NET Web Tools, ASP.NET Library, .NET Core Framework, .NET Core Runtime et Roslyn) qui était désormais en Open Source et cross-platform, et non la stack client. En effet, WPF (Windows Presentation Foundation) et les WinForms restent, pour le moment du moins, encore liés à Windows.
Un nouveau standard de développement
L’ouverture du code de .NET pourrait permettre à Microsoft de faire de son framework un véritable standard de développement pour de nombreux environnements, et c’est bien évidemment le but recherché par l’éditeur. Les développeurs vont désormais pouvoir, avec le .NET, créer des applications pour Windows mais aussi pour Linux et Mac OS X. Évidemment, il n’est pas totalement sûr qu’Apple « joue le jeu ». Sa politique de fermeture presque totale, que ce soit au niveau applicatif ou matériel, est loin de garantir cela. L’important est que cette façon de penser ne soit plus du tout d’actualité pour Microsoft. Une page se tourne, comme lorsque Sun avait ouvert ses technologies – en commençant par Java. L’ouverture concerne surtout les technologies dites .NET Core. Celles- ci comportent le .NET CLR – le runtime, élément de base permettant l’exécution des applications .NET –, le JIT (Just- In-Time Compiler), principe de compilation « à la volée » fortement inspiré de Java, le Garbage Collector (GC, ou ramassemiettes dans la langue de Rousseau) ainsi que les bibliothèques de base et les frameworks de plus haut niveau ( Web, data et API). Seuls les composants serveur sont concernés pour l’instant par cette ouverture. Les modules clients comme WPF et Windows Forms,
spécifiques à la plateforme Windows, ne font pas partie de cette mise à l’Open Source. Cela ne saurait sans doute tarder, mais peut être Microsoft souhaitet-il se garder encore quelque temps un champ réservé ? Il est vrai que les éléments précités étaient, pour ainsi dire, quasiment prêt à basculer du bon côté de la force (l’Open Source bien sûr), le processus étant engagé depuis déjà quelque temps.
Open Source et .NET Foundation
De par le passage de la stack .NET en open source, la communauté va désormais devenir le maillon essentiel à son évolution. La .NET Foundation doit donc faire évoluer en conséquence son modèle de gouvernance. Elle a annoncé la création d’un conseil consultatif qui siègera aux côtés du conseil d’administration et veillera à l’implication de l’ensemble de la communauté en s’assurant qu’elle reste bien « informée des décisions sur les orientations futures ainsi que sur l’état de santé de l’écosystème .NET » . La stack serveur .NET sera donc placée sous la gouvernance de la .NET Foundation. Celle- ci héberge au moment où nous écrivons ces lignes un peu plus d’une trentaine de projets ouverts par Microsoft et auxquels la communauté des développeurs peut avoir accès. Nous sommes très loin de la « philosophie » de l’ancien CEO de Microsoft, Steve Ballmer, qui considérait ouvertement l’open source comme un ennemi et le comparait à… un cancer. Il est vrai que son rêve était sans doute de devenir un clone d’Apple – mais il ne peut y avoir qu’un Apple, c’est déjà bien assez – sa stratégie se limitant souvent à comparer le chiffre global des deux sociétés, en oubliant un peu trop que Microsoft était beaucoup mieux implanté dans le monde du développement et de l’entreprise. Tout cela a, fort heureusement, bien changé, avec entre autres la création d’une entité dédiée, Open Technologies, ou celle de la CodePlex Foundation – rebaptisée OuterCurve – et surtout grâce aux travaux de Microsoft autour de Linux sur Azure. L’ouverture indéniable, bien que tardive, de Microsoft à l’Open Source a été accueillie assez favorablement par la communauté. Jim Zemlin, le patron de la Linux Foundation, a ainsi déclaré : « Microsoft est en train de se réinventer en réaction à un monde dirigé par les logiciels open source et le développement collaboratif et démontre son engagement envers les développeurs via de nombreux moyens comme l’annonce autour de .NET. Nous ne sommes pas en accord avec tout ce que fait Microsoft et nombre de projets open source sont des concurrents directs de ses produits. Toutefois, le nouveau Microsoft que nous voyons aujourd’hui est assurément celui d’une entreprise différente vis- à- vis de l’Open Source. » Le ciment semble prendre, et il paraît peu probable que Microsoft fasse marche-arrière sur ce point après tant de déclarations et d’engagements, au risque de passer pour peu sérieux et de réveiller la méfiance des développeurs.
Exit les décalages entre Mono et .NET
Les développeurs .NET pouvaient déjà faire tourner du code .NET sur d’autres environnements que Windows grâce à Mono, l’implémentation Open Source du framework développée notamment par Miguel de Icaza dans les labos de Novell. Rappelons au passage que Miguel de Icaza a fortement contribué à l’ouverture de .NET Core et à son utilisation future sous Linux et Mac OS X. Cela nécessitait néanmoins d’entretenir deux bases de codes séparées, ce qui n’était pas vraiment optimal. La communauté Mono devait donc ré-implémenter à chaque fois le .NET car aucune implémentation Open Source n’existait. Comme l’a mentionné Immo Landwerth, responsable de la technologie .NET, sur un blog du msdn ( http:// blogs.msdn.com/ b/dotnet/archive/2014/11/12/net-core-is-open-source. aspx) : « La meilleure façon de bâtir une solution multi plates-formes est de développer une stack unique, de façon collaborative. Et la meilleure façon de le faire est de la placer dans l’Open Source. » Mono 4.0 se rapproche des composants .NET livrés par Microsoft sous licence open source et est utilisé par les solutions de programmation de Xamarin. Il supporte le langage C# 6.0 qui est utilisé par défaut. Parmi les autres optimisations apportées à Mono, il faut citer la possibilité d’utiliser des nombres flottants codés
en 32 bits – qui a de meilleures performances qu’en 64 bits – et l’amélioration du garbage collector, SGen.
Mono et Xamarin
Mono 4.0 sera compatible uniquement avec le .NET 4.5. Exit la rétrocompatibilité avec les frameworks .NET 2.0, 3.5 et 4.0. C’est le prix à payer pour un changement de cap aussi radical, mais cela ne devrait pas poser trop de soucis pour adapter le code existant. Il propose également le support des machines PowerPC64 LE, serveurs Power8 de nouvelle génération fonctionnant sous Linux. Rappelons que Mono est utilisé par Xamarin pour ses solutions de développement desktop et mobiles (Windows, OS X, Android et iOS). La société est par ailleurs membre de la .NET Foundation.
Visual Studio Community Edition
La version Community de Visual Studio 2015 est gratuite et peut être employée librement pour les développeurs indépendants, les projets open source, la recherche et l’enseignement universitaire, les formations et même les petites équipes professionnelles. Elle propose une version complète de l’EDI en vue de faciliter l’accès aux technologies .NET et de favoriser le développement d’applications à partir du framework dans un environnement multi plates-formes. Cette édition Community bénéficie également des possibilités d’extensions de Visual Studio et peut donc intégrer différents modules, comme Xamarin, mais aussi VS Gallery, Tools for Unity, Node.JS Tools for VS ou encore Web Essentials for VS. Il aurait été étrange, après avoir mis la stack .NET en open source, de ne pas aller jusqu’au bout en ne proposant pas une version à la fois « full » et gratuite de l’EDI phare de Microsoft ; et de laisser les développeurs se débrouiller avec un Visual Studio Express limité ou un clone open source tel que SharpDevelop. Visual Studio Express a néanmoins sa version 2015, mais continuera-t-il à exister ?
Le Windows 10 Software Development Kit
Le Windows 10 SDK permet de créer ce que Microsoft appelle des « apps » UWP (Universal Windows Platform). Ces applications sont dites universelles car elles fonctionnent sur les diverses familles de machines Windows 10 : Windows Desktop, Windows Iot Core, Windows Mobile et même Xbox. Ce concept, introduit chez Microsoft avec Windows 8.1, est étendu avec Windows 10. La diversité des platesformes est bien plus grande, avec pour chacune des différences notamment en termes de graphisme (écrans, densité de pixels…). Chaque famille possède son API spécifique, en plus de l’API commune à toutes. Les développeurs peuvent bien sûr définir des fonctionnalités propres à une plate-forme donnée s’ils le souhaitent. Des simulateurs fournis avec Visual Studio permettent de visualiser son application sur ces différents périphériques. Ce n’est pas un moindre avantage pour nous, pauvres
programmeurs : développer un seul code – avec quelques modules spécifiques – pour tous les environnements Windows 10. Après l’échec des Surface
sous Windows RT, justement à cause de la quasi-inexistence d’applications pour ce système, Microsoft a tiré la bonne leçon : les applications sont le nerf de la guerre. En faciliter la création et le déploiement devrait attirer les développeurs et, du coup, encore plus d’utilisateurs.
Windows 10 IoT sur Raspberry Pi 2
Windows 10 pour les terminaux mobiles devrait être disponible avant la fin de l’année. Les consoles de jeux Xbox One auront droit à leur version de l’OS en novembre. Les Raspberry Pi 2 n’ont pas été oubliés. Microsoft a confirmé son intérêt pour cette plate-forme en mettant à disposition Windows 10 IoT Core, la version allégée de son système d’exploitation pour l’Internet des objets. Il est disponible gratuitement en téléchargement. Livré avec de nombreux outils de développement, il offre une prise en charge de plusieurs cartes mère, dont le Raspberry Pi 2 et le MinnowBoard Max. Windows 10 IoT Core apporte plusieurs améliorations et nouveautés, dont une meilleure prise en charge de Python et Node.js, un convertisseur de l’analogique vers le numérique (ADC), l’amélioration des performances pour le Raspberry Pi 2 et la prise en charge d’UWP. De nombreux exemples de code et des vidéos montrant comment créer des applications sont disponibles sur la page GitHub de Microsoft. Pour développer des applications pour Windows 10 IoT, vous devez disposer d’un PC sous Windows 10 et de Visual Studio 2015 (Community, Professional, Enterprise ou Express pour Windows 10). Vous pouvez développer des apps Windows 10 sur un poste Windows 8.1, mais vous n’aurez pas accès (pour l’instant du moins) à toutes les fonctionnalités comme le designer et le déploiement. Vous pouvez télécharger de nombreux
exemples de code à l’adresse http://ms-iot. github.io/content/en-US/win10/StartCoding.htm. Il faut bien penser, lors de la création d’une application « from scratch », à inclure une référence vers le SDK Windows 10 IoT Core. Cela vous permettra notamment d’utiliser les éléments du namespace Gpio, très utiles pour les I/O ( Entrées/ Sorties) du Raspberry. Une application, Watcher, permet de voir ce qui se passe sur les micro- ordinateurs Windows 10 IoT Core d’un réseau, avec leur IP et leur nom de machine. C’est d’autant plus pratique que vos Raspberry ne posséderont certainement pas tous un écran, en fonction de leur tâche. Côté déploiement, il est possible de s’appuyer sur l’intégration complète du développement pour IoT/ Raspberry Pi 2. En clair, vous développez sous Visual Studio 2015 ou avec un autre IDE, et dans ce cas avec le Windows Standalone SDK for Windows 10, et vous déployez votre application sur le Raspberry en pressant la touche F5. Le débogage est lui aussi disponible depuis Visual Studio.
Windows 10 et le XAML
Le langage XAML (eXtens ible Application Markup Language) est un langage déclaratif développé pour les besoins des systèmes d’exploitation Microsoft – depuis Vista – permettant la description de données structurées. C’est ce que l’on appelle un dialecte XML. Il permet l’instanciation à l’exécution d’objets issus des plates-formes .NET – dès la 3.0. Le principe est de séparer la déclaration des objets d’un programme du code sous-jacent. Le XAML inclut également des fonctionnalités de manipulation d’objets en trois dimensions. Microsoft a essayé de simplifier un peu le XAML et quelques améliorations lui ont été apportées.
RelativePanel Un nouveau contrôle de type conteneur apparaît, RelativePanel. Celui- ci implémente un style de layout (agent de positionnement) défini par les relations avec et entre ses « enfants » (sous- contrôles). Des Attached Properties – une bonne quinzaine – permettent de positionner les enfants entre eux et le RelativePanel avec ses enfants. Voici un exemple d’utilisation d’un RelativePanel, en XAML, tiré du msdn : Vous pouvez consulter le Guide des apps UWP (Universal Windows Platform) à l’adresse : https://msdn.microsoft.com/ library/ windows/ apps/dn894631.aspx.
AdaptiveTrigger
L’AdaptiveTrigger permet de manipuler une vue en fonction de la taille de la fenêtre de façon bien plus simple que sous Windows 8.1, et ce uniquement en XAML. Ce principe de positionnement, ainsi que le précédent (RelativePanel), est déjà connu et utilisé dans des bibliothèques graphiques comme Qt pour C++ et Python ainsi qu’en développement iOS et Android. Il permet une grande souplesse de positionnement pour la création d’interfaces graphiques dynamiques.
SplitView
Ce contrôle facilite la création de menus en permettant d’ajouter aisément un panneau latéral aux applications. Les propriétés incontournables de ce contrôle sont IsPaneOpen (booléen) pour ouvrir ou fermer le menu, PanePlacement ( Right/Left) afin de déterminer de quel côté apparaîtra le menu, OpenPaneLength pour sa taille, DisplayMode pour choisir le mode d’affichage (Inline, Overlay et Compact Inline ou Overlay). Bien d’autres améliorations ont été apportées au XAML, comme le databinding compilé. L’idée est de préparer les appels liés au databinding lors de la compilation afin d’améliorer – considérablement – les performances. Cela permet, de surcroît, de voir des erreurs à la compilation qui n’auraient sinon été découvertes qu’à l’exécution – ce qui est beaucoup moins bien. Visual Studio doit néanmoins connaître le type des objets liés aux contrôles graphiques afin de générer le code nécessaire aux databindings. ✖