Dot.Blog

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

Quelles avancées dans le futur Xamarin.Forms 3.x ?

Xamarin.Forms est devenu un rouleau compresseur éclipsant les variantes originelles uniquement dédiées à une plateforme ou une autre (iOS et Android au départ). Elles s’attaquent déjà à UWP depuis quelques temps, mais est-ce là le seul objectif de la version 3.0, s’étendre encore ? … Oui, mais certainement “pas que” !

Xamarin.Forms 3

A l’heure actuelle il est difficile de brosser un portrait définitif de cette version que Microsoft annonce pour la fin d’année. D’une part parce qu’il s’agit d’un travail encore en cours et que d’autre part le passé nous a appris à nous méfier des annonces et à nous faire une idée réelle sur la base de produits réellement releasés.Les XF 3.0 n’y échapperont pas. Néanmoins on en sait assez pour brosser le décors des apports importants de cette version majeure.

Les performances

On le sait on peut reprocher aux Xamarin.Forms un léger manque niveau performances (même si j’ai prouvé dans mon livre qu’on peut créer des animations très rapides sans code natif et ce sur de vraies machines et non des émulateurs, la perte de performances est donc déjà très faible à l’heure actuelle).

Le chargement d’une App fait partie des choses à améliorer, celui des pages aussi. Le mécanisme même de renderers par lequel le XAML que nous écrivons doit passer pour instancier des contrôles spécifiques à une plateforme impose un traitement intermédiaire. L’améliorer voire le supprimer permettrait surement d’accéder à ce petit gain supplémentaire de réactivité, au lancement comme à l’affichage des pages.

Microsoft s’est engagé dans un travail long et pénible : étudier chaque renderer l’un après l’autre pour voir comment les améliorer. C’est un travail d’optimisation, au cas par cas, qui oblige à rester cohérent sur toutes les plateformes. Tout ne sera certainement pas releasé pour la version 3.0 mais au fur et à mesure les développeurs pourront constater une amélioration constante au gré des mises à jours.

Dans un même souci d’efficacité Microsoft travaille sur le un nouveau binding, le “one time binding” qui s”appliquera partout où un binding n’aura pas besoin de gérer une mise en relation “vivante” entre source et destination. D’autres améliorations concernent le pipeline de compilation des vues pour aider à compresser les layouts à la compilation et rendre leur restitution au runtime encore plus rapide.

On le voit il y a beaucoup d’améliorations décisives côté performances à attendre de Xamarin Forms 3 et des releases suivantes. Et encore je n’ai ici qu’évoqué les plus marquantes, la liste complète (présumée telle) étant la suivante :

  • Les Renderers de contrôle, évolution vers des “fast renderers” entièrement refactorés évitant la création d’objets intermédiaires;
  • La compression des Layout, optimisation automatique des Layout à la compilation pour les rendre plus rapides à charger et minimiser leur utilisation mémoire;
  • Le Binding, nouveau mode “one time”;
  • Flexibilité, nouveau layout FlexLayout qui fonctionne comme la mise en page Web (adaptive layout) et qui implémente … oui enfin : le Visual State Manager si cher à WPF et feu Silverlight !
  • Styles, un système de styles inspiré de CSS qui viendra s’ajouter au styling XAML habituel, chacun choisira en fonction de ce qui lui est plus pratique (les développeurs Web s’y retrouveront mieux).

Et tout cela viendra gratuitement, doublement gratuitement. D’une part parce que Xamarin.Forms est désormais offert avec Visual Studio (rappelez-vous l’abonnement de près de $1000 - annuel !  - avant le rachat par Microsoft), et d’autre part car ces changements seront opérés de façon invisible au développeur qui n’aura rien à changer à son code. Peut-on rêver mieux ?

Nouvelles plateformes

L’expansion des Xamarin.Forms devient telle que cette philosophie de construction d’Apps cross-plateforme est en train de phagocyter toutes les autre approches, java compris.

image

D’un exotisme sympathique permettant de faire du C# sur iOS et Android (mais l’UI en natif dans chaque projet), on en arrive à une solution globale C#/XAML fonctionnant partout.

Et quand je dis partout, c’est partout !

Ainsi les nouvelles cibles suivantes seront intégrées à Xamarin Forms 3.x :

  • macOS
  • Linux
  • Windows Presentation Foundation (WPF)
  • Tizen

Développer un App qui tourne d’emblée sur un iPhone, un Motorola Android, une tablette UWP c’est déjà la réalité et c’est déjà énorme. Mais sans rien faire de plus étendre le champ de cette application aux Mac d’Apple, aux stations Linux, à Tizen mais aussi à WPF pour rester en natif Avalon tout en codant en XF… Aucune solution du marché n’est capable d’aligner un tel grand écart technologique en se fondant pourtant à la base sur un couple aussi homogène que C#/XAML (sans parler de .NET Standard que j’ai déjà abordé ici et ici).

Cela propulsera les Apps Xamarin Forms auprès des millions d’utilisateurs de Tizen, à la télévision, aux “wearables” et bien plus !

Intégration bi-directionnelle

Jusqu’à maintenant il était possible d’appeler du code natif dans une App Xamarin.Forms, mais faire le contraire était quasi impossible, voire totalement d’ailleurs.

Xamarin.Forms 3 change la donne en rendant de tels échanges réalisables dans les deux sens et de façon très simples.

Supposons une App commencée en natif Xamarin iOS ou Android. Le temps faisant, les améliorations de Xamarin.Forms aidant, il peut s’avérer très rentable pour certaines pages, par forcément toute, de les écrire en XF et non plus en natif. Et cela de façon soft, totalement intégrée. On pourrait supposer un Login Screen repris à l’identique sur une série d’Apps qui serait en Xamarin.Forms par exemple.

Bien entendu cela suppose d’amener à la plateforme le data binding et d’autres spécificité comme le conteneur d’injection de dépendances par exemple.

Lors que la version sera releasée je vous montrerai à quel point tout cela est facile, je me méfie des pré-versions ou des bouts de code publiés avant la sortie du produit.

On est bien ensemble, le temps de presse pas, on est appelé à se revoir, alors autant faire les choses bien !

XAML Standard

Comme ce le fut annoncé au Build 2017, les équipes Xamarin.Forms collaborent désormais avec les équipes de la division Windows pour la création de XAML Standard. Ce qui permettra comme pour C# de partager des snippets ou des assets entre toutes les versions de XAML, principalement UWP et WPF vraisemblablement.

Conclusion

Xamarin.Forms n’est plus un exotisme d’une petite boîte. C’est devenu un produit Microsoft, un produit phare qui permet à Microsoft d’étendre sa sphère d’influence sur toutes les plateformes. Une “vengeance” indispensable pour cette société qui n’a pas réussie à s’imposer sur les smartphones (même Bill Gates avouait très dernièrement utiliser un Android !). Comment exister sans disparaître sur ce marché ? Si ce n’est pas en l’inondant de machines au logo de la marque, ça le sera en abreuvant les Stores d’Apps portant la signature Microsoft, mais surtout la nôtre ! Microsoft nous offre mieux qu’un nouveau Windows Phone à l’avenir aussi incertain que les précédents, ils nous offrent les pouvoir d’un demi-dieu du développement, le don d’ubuquité ! et comme terrain de jeu tous les smartphones de la création ! Et en prime WPF, les Mac et les stations Linux et même Tizen !

Nous n’avons rien perdu au change, au contraire. Visual Studio, C#/XAML, de simple challengers pouvant se sentir parfois frustrés comparativement à certains environnements de développement hybrides et par un retournement de situation incroyable font de nous les maîtres du jeu, les seuls à pouvoir produire avec le même code une App pour toutes les plateformes !

Les maîtres du monde de la mobilité et de la workstation. Voilà ce que Microsoft fait de nous avec Xamarin.Forms.

Tout nous est possible.

Certains comme moi en sont convaincus depuis des années, à vous de convaincre les autres !

Par quel bout commencer ? Un bon livre en français est une bonne idée, cela tombe bien (suivez le lien !) le tout complété par une bonne formation (remplissez la fiche contact pour un devis gratuit !). Et pour les entreprises qui veulent aller plus loin, pourquoi pas de la réalisation complète, partielle, voire de la sous-traitance … La même fiche contact peut servir à tout ça !

Pas de pub gênante pour vous sur Dot.Blog, je m’y refuse. Mais je compte en retour sur mes lecteurs pour faire la mienne…

Merci d’avance et…

Stay Tuned !

blog comments powered by Disqus