Quels langages choisir pour mon projet d’applications universelles Windows?

Une question qui revient assez souvent.

Fun Fact : Pendant que je rédigeais ce billet au café du campus de l’université, un étudiant est encore venu me la poser.

Ces derniers temps, que ce soit dans les forums de développeurs, au sein des campus ou dans les User Groups, cette question, elle revient assez souvent. Chose qui n’est pas vraiment étonnante car le concept d’applications universelles Windows est tout récent; il a été introduit pour la première fois pendant la dernière conférence Build.

Le 21 janvier dernier, l’annonce officielle de la sortie de Windows 10 est venue donner toute une autre ampleur à ce concept qui ma foi, apporte tout son lot de bénéfices, d’innovations et d’opportunités tant pour les utilisateurs que pour les développeurs.

Avant de faire le tour d’horizon des choix des langages de programmation qui s’offrent à nous, et d’étudier quelques facteurs importants à considérer pour bien choisir, il convient de rappeler qu’on entend réellement par applications universelles.

Applications Universelles, c’est quoi au juste ?

IMPORTANT : Avant toute chose, il est judicieux de pouvoir différencier le concept d’applications universelles en point de vue Visual Studio et en point de vue Store.

Le point de vue Store consiste à lier une application Windows Phone à une application Windows Store de telle sorte qu’elles partagent un seul et même nom et dans certains cas le même prix et certains services tels que les achats in-app, tandis que le point de vue Visual Studio concerne toute la partie développement et code.

Dans la suite de ce billet nous traiterons du concept d’application universelle point de vue Visual Studio.

image

Le cœur du concept d’applications universelles est très simple : Écrire le CODE UNE SEULE FOIS et y associer les interfaces utilisateurs appropriées pour TOUS les appareils tournant sous WINDOWS.

Entre autres, ça veut dire qu’à partir d’une solution Visual Studio unique, on peut désormais produire des packages d’applications ciblant à la fois les plateformes pour téléphones, tablettes, PC, Xbox, IoT Surface Hub, HoloLens, etc. Tout ceci, grâce au Windows Runtime et à une logique de partage de code.

En parlant de code, observons de près le paysage des ­langages de programmation requis pour développer des applications universelles.

Quels sont les langages utilisés dans les applications universelles Windows ?

Les ensembles de langages suivants sont disponibles par défaut pour le développement des applications universelles :

  • HTML, CSS et JavaScript
  • XAML et C#
  • XAML, DirectX et C++
  • DirectX et C++

Belle brochette non!!? J Mais ça ne résout pas notre problème du jour qui consiste à choisir l’ensemble de langages les mieux adaptés pour mon projet.

A présent, voyons quelques facteurs qui pourraient nous influencer dans notre choix

Comment choisir les langages appropriés pour mon projet ?

Il y a un certain nombre de facteurs à considérer avant de choisir les langages de programmation adaptés à notre projet d’applications universelles. Parmi eux, on dénombre :

  • Notre background ou expérience personnelle (ou celle de notre équipe) : qui nous permettra de déterminer notre niveau de familiarité ou d’affinité avec l’un des ensembles de langages proposes
  • Le type et l’objectif de l’application : qui nous renseignera sur des éléments tels que le niveau d’accès en termes de ressources matérielles dont nous aurons besoin pour nos applications
  • Ciblage Multiplateforme

Considérant notre expérience personnelle pour le facteur affinité

Quand on aborde une nouvelle plateforme, l’une des premières choses à faire est de mettre en exploitation nos connaissances antérieures. Par exemple, si votre équipe ou vous-même êtes familiers avec l’un des ensembles des langages proposés, l’idéal serait de commencer par les utiliser.
En ce qui me concerne, j’avais déjà des notions en développement Web, ce qui naturellement, m’a encouragé à écrire mes premières applications à l’aide du HTML, JavaScript et CSS.

L’une des choses qui m’ont plu c’est que rien ne change dans nos habitudes de développement. On continue à écrire le code de la même manière qu’avant, on a accès aux mêmes API et standards ouverts, et en bonus, nous disposons de la bibliothèque WinJS, qui facilite l’écriture des applications natives à l’aide du JavaScript.

Si les technologies WPF ou Silverlight vous sont familières, alors vous serez à l’aise avec au moins l’un des ensembles composés de XAML. En effet il s’agit du même langage déclaratif que vous maitrisez déjà, en plus de quelques espaces de noms et bibliothèques dédiés aux applications universelles Windows.
Et comme compagnon compilé, vous aurez le choix entre C# et C++. Le tout dépendra de votre degré de familiarité avec l’un ou l’autre de ces langages.

Si par contre, vous n’avez aucune expérience des langages susmentionnés, je vous conseillerais d’apprendre l’ensemble qui vous paraît le plus facile à assimiler ou bien celui pour lequel vous ressentez plus de motivation…

Considérant le type et l’objectif de l’application

Il est super important de prendre en considération le type et l’objectif de l’application pour le choix des langages, car ceux-ci peuvent très vite devenir une contrainte rendant votre projet impossible à réaliser avec les performances voulues.

Si vous écrivez une application métier et de productivité, vous pouvez généralement choisir le langage qui vous convient le mieux.

Mais par contre, si vous avez pour ambition de développer un jeu gourmand en ressources matérielles ou des applications graphiques, l’idéal serait d’orienter votre choix vers C++ et DirectX. Car ceux-ci vous permettent entre autres de rester proche du matériel et ainsi améliorer les performances.

Si ça ne vous tente pas d’apprendre le C++, JavaScript offre cependant un bon compromis. Il est tout à fait possible de développer des applications de forte intensité telles que des jeux 3D. Les applications universelles HTML/JavaScript gèrent très bien les moteurs de rendu 3D tels que le WebGL.

Considérant le ciblage multiplateforme

Si votre ambition ne se limite pas qu’aux applications universelles Windows et que vous désirez cibler les plateformes Android et iOS, soyez rassurés, il existe plusieurs technologies permettant de le faire aisément.

Les plus connues sont Cordova et Xamarin.

Ces technologies ont l’avantage de faire tirer profit de la quasi-totalité des API natives des différentes plateformes.

Si vous êtes à l’aise avec HTML, CSS et JavaScript, Cordova est votre compagnon.

Par contre, si vous avez des compétences en C#, Xamarin est sans aucun doute la technologie vers laquelle se tourner.

En ce qui concerne les jeux, bon nombre de solutions permettent de faire le ciblage multiplateforme. On peut citer :

  • Unity : qui entre autres permet déjà de profiter des améliorations de DirectX 12 disponible dans Windows 10.
  • Construct 2 : basé sur HTML, permet de créer des jeux en 2D.
  • Etc.

Et la suite ?

Bien entendu, il y a plusieurs autres facteurs (tels que le temps, le budget, etc. ) qui peuvent nous influencer dans le choix des langages pour un projet d’applications universelles Windows. Une bonne pratique consiste à analyser l’ensemble de ces facteurs et de s’orienter vers la solution qui offre plus de possibilités et moins de contraintes par rapport à notre projet.

Une fois que cette décision prise, que vous soyez débutant ou expérimenté, vous vous sentirez très vite dans votre élément, car le développement des applications universelles Windows est à la portée de tous.

La prise en main est très facile surtout grâce à Visual Studio, l’outil de prédilection pour le développement sur la plateforme Windows, et qui intègre aussi les technologies multiplateformes. Sans compter la disponibilité de centaines de plugins et bibliothèques qui vous éviteront souvent de réinventer la roue.
En plus de cela Microsoft met à disposition des cours, tutoriels et exemples de code, accessibles gratuitement à partir de Microsoft Virtual Academy, Channel9 et MSDN.

Liens vers des formations gratuities

Liens vers des échantillons d’application

Universal Windows apps samples

Autres liens

Téléchager Visual Studio
Cordova
Xamarin