Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Xamarin 3.0 entre évolution et révolution autour de l’UI

[new:30/06/2014]Le 28 mai dernier Xamarin a mis sur le marché une mise à jour essentielle, la version 3.0. Xamarin.Forms est l’un des joyaux de cette version permettant d’unifier le développement des UI !

Xamarin 3.0 entre évolution et révolution

Il s’agit bien d’une version majeure, d’un saut important dans l’histoire de ce fantastique produit qu’est Xamarin et de sa société créatrice éponyme.

Bien loin des mises à jour plus ou moins factices des Apps mobiles qui utilisent cette ruse pour se rappeler à vous et attirer votre attention dans l’espoir de vous gaver de pub, je vous parle ici d’un colossal environnement de développement qui évolue à pas de géant.

Colossal ? Pas d’exagération ici. Xamarin c’est un ensemble fait d’un compilateur C# pour iOS et Android, d’un IDE de type Visual Studio – Xamarin Studio - (en plus de son intégration dans Visual Studio), d’un framework .NET portable, de tonnes de librairies de code, des éditeurs visuels spécialisés pour iOS et Android… etc, etc.

C’est incroyable tout ce qu’un tel produit contient et la masse de travail que cela représente. Miguel de Icaza, à l’origine de ce produit est, il faut bien le dire, une vraie “pointure” et même s’il n’est pas seul pour tout faire, c’est un sacré personnage.

Né en 72 à Mexico, 42 ans au compteur, il a été le meneur du projet GNOME bien connu des linuxiens et même au-delà tellement cette gestion de bureau a bouleversé la donne. Il  a reçu le prix du logiciel libre pour ce travail exceptionnel. Il a créé la société Ximian spécialisée autour de GNOME, société rachetée par Novell où il devint vice-président chargé du développement…

Mais dans le monde PC on se rappellera certainement plus de lui pour avoir lancé le fabuleux MONO, cette copie conforme de .NET en Open Source fonctionnant sous Linux. En créant Xamarin il a repris le flambeau de MONO délaissé par Novell. Mais certainement encore plus fort, il a conçu MonoDroid et MonoTouch des environnements .NET/C# pour iOS et Android aujourd’hui appelés Xamarin.Android et Xamarin.iOS.

Avec Xamarin 3.0, il pousse le raisonnement encore plus loin en offrant la portabilité totale même de l’UI !

Cette mise à jour comporte d’autres avancées qui habituellement auraient été présentées avec beaucoup d’emphase tellement elles sont importantes, mais il est vrai que l’unification des UI est en soi tellement “énorme” que cela masquera certainement tout le reste.

Designer iOS pour Visual Studio

Concevoir des applications portables c’est encore bien souvent avoir à supporter iOS. Même si ses parts de marchés ne sont plus que l’ombre de ce qu’elle furent, elles se maintiennent et on sait que le monde Apple transpire l’argent et le profit. Difficile d’ignorer iOS dans un tel contexte, en tout cas lorsqu’on cible le grand public.

Xamarin 3.0 offre un designer visuel iOS pour Visual Studio totalement bluffant. On aimerait presque avoir tout de suite un truc à développer pour iPhone histoire de jouer avec !

Mais le plus bluffant n’est pas forcément là…

Xamarin.Forms

Xamarin.Forms est une nouvelle librairie de code qui permet de construire des UI _natives_ pour iOS, Android et enfin Windows Phone depuis un code C# simple et partagé, donc unique.

imageL’astuce consiste bien entendu à déclarer l’UI en C# en utilisant une API riche pour ce début de plus de 40 contrôles visuels cross-plateforme qui sont traduit en leur équivalent _natif_ à la compilation sous chacun des OS supportés.

Cliquez sur l’image ci-contre pour accéder à une version haute résolution plus lisible.

 

 

Ce qui est fabuleux c’est que Xamarin.Forms s’utilise sur la base d’une page, donc il est possible de choisir, pour chaque page d’une App, d’utiliser Xamarin.Forms ou Xamarin.Android/iOS pour la mise en page. Par exemple un simple login sera développé en Xamarin.Forms pour aller plus vite, alors qu’une page plus sophistiquée nécessitant du visuel particulier pourra être créée en Xamarin.Android/iOS.

Mais cela va plus loin. Il est tout à fait possible d’insérer une vue personnalisée à l’intérieur d’une page en Xamarin.Forms… Inutile de tout coder en natif juste pour un effet ou un contrôle qui nécessite d’accéder à l’UI de façon native. Il suffit de coder ce qui est spécifique dans la page et l’intégrer dans une page Xamarin.Forms qui elle n’est à écrire qu’une fois pour les 3 plateformes cibles !

Encore mieux : au sein d’une page Xamarin.Forms il peut être nécessaire de faire appel à une fonction purement native, imagions l’accéléromètre. Pas de souci puisque une API de services est aussi fournie pour unifier les appels typiques de ce genre. Encore une fois : une seul code C#, trois plateformes gérées automatiquement le tout en natif ce qui est essentiel !

Les pages

Afin d’aider le développeur qui doit coder une page sans retour visuel direct, Xamarin.Forms propose des modèles facile à imaginer pour y placer le visuel. Par exemple les pages peuvent être de simple conteneurs où on place ce qu’on veut mais aussi des vues maître/détail, des pages à onglet, etc…

image

Les layouts

A un niveau plus fin on trouve aussi des conteneurs spéciaux qui aident à concevoir une UI propre et organisée en quelques instructions. De la pile de contrôle (le StackPanel en XAML) à la grille personnalisable (de type Grid XAML), le développeur dispose d’un choix suffisamment large pour couvrir immédiatement les principaux besoins.

image

(rappel : vous pouvez cliquer sur les images pour obtenir un affichage en plus haute résolution plus facile à lire).

Les contrôles

Quant aux contrôles dans cette première version de Xamarin.Forms on trouve déjà le nécessaire pour concevoir l’UI d’une majorité d’apps. L’indicateur d’activité, le bouton, le sélecteur de date, l’image, le label, … il sont tous là, reconvertit en contrôles natifs à la compilation.

image

Extensibilité

Quelle que soit la richesse des Xamarin.Forms il se trouvera toujours un projet pour lequel ce qui est dans la boîte ne sera pas totalement suffisant.

Peu importe… Les Xamarin.Forms sont extensibles. Le développeur peut définir ses propres contrôles, ses propres layouts, ses propres types de cellules de grille. Ces contrôles natifs peuvent être exposés afin d’être utilisables directement dans les pages Xamarin.Forms. Il est aussi possible de sous-classer les contrôles fournis pour en créer de nouveau.

MVVM

La conception des Xamarin.Forms n’oblige pas à quitter les paradigmes essentiels à la bonne conception d’une application moderne. On retrouve donc de façon naturelle la prise en charge de l’architecture MVVM.

Binding

Comment parler de MVVM s’il n’y a pas de binding… C’est pourtant le cas des environnements primitifs comme iOS ou Android, loin de la richesse et de la sophistication de XAML. Là aussi les avancées sont considérables puisque Xamarin.Forms introduit un binding two-way pour la synchronisation entre UI et Model !

Fluidité

Le festival n’est pas terminé… Xamarin.Forms ajoute un système d’injection de dépendance avec l’assurance d’un démarrage inférieur à 10 ms. Que demander de plus ?

Messages

MVVM avec le binding c’est bien, mais avec une messagerie c’est mieux… Xamarin.Forms propose justement une telle messagerie pour assurer un couplage faible entre les différents composants des applications.

Un visuel animé

Une UI moderne utilise souvent – quand cela est pertinent et améliore l’UX – des animations de type rotation, translation, changement de taille… Les Xamarin.Forms proposent toute une panoplie d’animations de ce type pouvant être composées pour créer des effets sophistiqués.

Il existe même une API bas niveau pour appeler le mécanisme d’animation et concevoir ses propres effets personnalisés.

Bien entendu toutes les opérations sont systématiquement traduites et déléguées aux API natives de chaque plateforme.

Qu’attendre de plus ? … de pouvoir attendre qu’une animation se termine avant de passer à autre chose par exemple. Et oui, c’est possible, et de la façon la plus élégante qu’il soit puisqu’en utilisant le modèle async/await qui permet d’écrire du code d’aspect séquentiel tout en respectant la fluidité.

peut-on faire plus fort ?

Tout en XAML !

Oui, ils l’ont fait… Même si ce n’est que le début et que les designers visuels précédents ne sont pas compatibles avec ce XAML là, il est possible de décrire une page entière à l’aide d’un sous-ensemble de XAML : vues, layouts et même bindings peuvent être décrits dans ce mode.

Bientôt un XAML portable comme .NET ? Ce n’est certainement pas le but, mais un sous-ensemble avec designer visuel pour obtenir une conception d’UI unique mais portable, certainement à termes.

Conclusion

Xamarin 3.0 c’est bien entendu encore plein d’autres choses. Mais il faut que je calme mon enthousiasme au risque de donner l’impression de faire le VRP Sourire

Construire des applications avec du code portable c’était déjà extraordinaire. On savait étendre tout cela à plusieurs plateformes en utilisant des PCL et un framework comme MvvmCross. Mais on en restait au niveau des Models et des ViewModels. L’UI restait le dernier bastion à prendre.

Il est pris.

Mieux, certainement grâce au rapprochement entre Microsoft et Xamarin, nous avons maintenant une plateforme de développement unifiée tant pour le code que l’UI capable de supporter immédiatement les trois cibles mobiles les plus importantes du marché : iOS, Android et enfin Windows Phone.

Sans bricolage. Pour un résultat purement natif.

Si ce n’est pas une révolution, cela y ressemble beaucoup tout de même…

Stay Tuned !

blog comments powered by Disqus