Firemonkey vs. VCL


traduction par mes soins de l'article original de Jim McKeeth.

Régulièrement, quand je parle de VCL ou Firemonkey, ces questions reviennent souvent :
  • la VCL est-elle abandonnée ?
  • Vaut-il mieux utiliser FMX ou VCL ?
  • Si je commence un nouveau projet aujourd'hui, doit-il utiliser VCL ou FMX ?

  • img/FireMonkeyVsVCL.png

    On peut répondre facilement à la première question, les deux autres sont un peu plus complexes. La VCL (Visual Component Library - bibliothèque de composants visuels) n'est PAS abandonnée, et ne le sera pas prochainement. Aussi longtemps qu'existera Windows et son API, il y aura la VCL. Récemment dans le Webinar Windows 10 de Marco, celui-ci disait encore "La VCL est la meilleure librairie pour le développement d'application de bureau Windows et elle est complètement compatible avec Windows 10".

    La VCL est agrémentée de nouveaux composants, de nouvelles fonctionnalités et reçoit des correctifs fréquemment, mais peut-être pas aussi souvent que FireMonkey. La raison est simple, la VCL et un framework mature alors que FireMonkey est passé par de grosses évolutions sur les dernières versions (mais est devenu beaucoup plus stable dernièrement, et a atteint une certaine maturité).

    Alors, lequel est mieux, lequel utiliser ? Il n'y a pas de réponse évidente, mais je peux cependant vous donner les avantages des deux, et vous permettre de faire un choix éclairé pour votre prochain projet.

    Visual Component Library (VCL)


    La VCL est sortie avec la toute première version de Delphi. C'est principalement une petite surcouche à l'API des contrôles Windows, mais aussi tout un tas de contrôles dessinés par eux-même. Elle utilise GDI, les objets (handle) Windows et des messages Windows. Ce qui en fait quelque chose de similaire à 90% des applications windows existantes. Si vous le désirez, vous pouvez insérer un bouton VCL dans une application externe, ou intercepter les messages envoyés à une autre application pour les rediriger vers la vôtre.

    Comme dit précédemment, la VCL est mature, et c'est aussi le cas des composants tiers. Il existe des milliers de composants, de contrôles et de bibliothèques VCL de très bonne qualité. Les plus remarquables sont probablement les grilles. Les grilles VCL sont les meilleurs du marché, et ceci pour une très bonne raison, nos partenaires technologiques ont fait des grilles pour la VCL avant que toute autre plateforme ait eu l'idée de permettre la création de contrôles tiers. Donc, si vous voulez les meilleures grilles de la planète, vous utilisez probablement la VCL (ceci dit, les grilles FireMonkey s'améliorent rapidement).

    Dans la mesure où la VCL est une fine surcouche à l'API Windows, les applications VCL sont beaucoup plus petites que les applications FireMonkey. Cependant, ceci n'est pas un critère décisif avec des grandes capacité de téléchargement et des disques énormes. Mais si vous avez réellement besoin d'une application de faible poids, alors la VCL peut-être un choix judicieux.

    Puisque la VCL existe depuis un temps certain, vous avez peut-être du code VCL existant que vous voulez intégrer dans votre application. Vous pouvez utiliser des outils comme Mida converter pour le convertir à FireMonkey, or utiliser des choses comme Monkey Mixer ou TFireMonkeyContainer pour mixer FireMonkey et VCL.

    Généralement, si je construis une application qui utilise intensivement une simple grille et dont je sais qu'elle ne sera utilisée que sous Windows, je me retrouve à utiliser la VCL. De même, si je dois utiliser un composant tiers spécifique ou une fonction spécifique de l'API Windows. Mais cela est de moins en moins fréquent.

    Le framework multiplateforme FireMonkey (FMX)


    Comme FireMonkey est un nouveau framework, vous le verrez plus souvent mentionné. Beaucoup de gens sont en train d'apprendre à l'utiliser, et comment aborder le développement multiplateforme. L'avantage principal de FMX c'est qu'il est conçu dès le départ pour le multiplateforme. Il vous permet de concevoir une interface unique qui fonctionne et s'adapte à Windows, iOS, macOS et Android. Mais ce n'est pas la seule raison pour utiliser FireMonkey.

    FireMonkey utilise les dernières bibliothèque GPU: DirectX sous Windows et OpenGL partout ailleurs. Il supporte des modèles de rendu 2D et 3D, qui supportent tous les deux l'accélération matérielle. Si vous voulez des effets graphiques puissants ou de la 3D, alors FireMonkey sera probablement votre choix préféré. Il existe des moteurs 3D vraiment très puissants, ainsi que d'excellentes bibliothèques d'effets graphiques pour la VCL, mais FireMonkey intègre ces fonctionnalités en son coeur.

    FireMonkey est aussi beaucoup plus flexible. Vous pouvez incorporer n'importe quel contrôle dans n'importe quel autre. Cette capacité à assembler des contrôles permet de faire du petit ensemble de contrôles qu'il contient, un ensemble beaucoup plus étoffé. Il y a aussi les animations et les effets qui vous permettent de créer des interfaces fantastiques et riches avec très peu d'effort.

    La VCL possède un nombre respectable de conteneurs et de capacités d'alignement, mais FireMonkey en possède énormément plus, et encore une fois, il est beaucoup plus flexible. Une autre grosse différence est que FireMonkey utilise des nombres à virgule flottante au lieu d'entiers pour positionner les contrôles. C'est beaucoup plus précis, même si la précision en dessous du pixel ne semble pas indispensable, là ou cela prend tout son sens c'est quand vous utilisez la mise à l'échelle FireMonkey qui prend en charge différentes densités de pixels.

    La raison la plus évidente d'utiliser FireMonkey est quand vous prévoyez de cibler le multiplateforme, ou s'il existe une possibilité que vous deviez le faire dans l'avenir (ce qui est plus que probable). Les autres raisons seraient que vous voulez une interface plus souple ou que vous pensez profiter de la 3D ou des autres effets que propose FireMonkey.

    Conclusion


    En résumé, la VCL est formidable et continue d'être maintenue et d'évoluer. C'est le meilleur framework d'interface utilisateur que nul autre, à part peut-être FireMonkey. Donc utilisez la VCL quand vous développez uniquement pour Windows sans 3D, effets graphiques et sans la souplesse de FireMonkey. Utilisez FireMonkey quand vous avez besoin du multiplateforme ou de la souplesse de FireMonkey, notamment en matière de graphismes.

    Les deux environnements existeront pour longtemps. En utilisant les deux, vous aurez une meilleure idée duquel utiliser en fonction de la situation. J'aimerai beaucoup avoir vos retours sur vos choix d'environnement.

    Jim McKeeth

    Merci à Rolland Chastain pour la relecture.
    Date de dernière modification : 21/10/2016