J'ai programmé Aqua, Macintosh Quick Draw, Windows GDI et GDI +, Qt et .NET WinForms et WPF est par loin l'API la plus sophistiquée que j'ai utilisée. Bien qu'il dispose d'un ensemble de fonctionnalités assez performant qui soit meilleur que les technologies précédentes, telles que le swing, WPF ne correspond pas à la norme. Il résout certains problèmes majeurs qui ont affecté la programmation graphique. Si vous venez du monde HTML/JS, il est facile à apprendre, mais si vous venez du monde de la programmation graphique traditionnelle, c'est un changement de paradigme majeur. Peu importe, c'est beaucoup plus facile à apprendre que CSS/HTML/JS. C'est une rupture nette par rapport aux concepts hérités qui affectent d'autres environnements de programmation graphique.
La plus grande force de WPF est qu'il est indépendant de la résolution. Il peut évoluer sur plusieurs appareils avec peu ou pas de modifications. Il nécessite peu de travail pour prendre une version d'écran d'un dessin et la sortir sur une imprimante haute résolution sans perte de résolution.
Il prend également en charge le déclenchement d'événement. Les éléments de l'interface utilisateur peuvent répondre aux événements d'autres éléments de l'interface utilisateur ou au code de votre application, ce qui rend les interfaces dynamiques possibles. Il est facile de séparer votre code de l'interface utilisateur d'une manière que même HTML/JS ne peut pas atteindre. Les éléments peuvent diffuser et écouter des événements et répondre en conséquence.
Une autre force est son API hautement orientée objet et déclarative. En utilisant XAML, vous pouvez facilement construire une interface de travail rapidement et efficacement avec quelques lignes. Contrairement à HTML/JS, il est plus facile à apprendre et sa sortie est beaucoup plus prévisible et efficace. Vous pouvez même programmer WPF complètement en code, mais cela ne vaut généralement pas le gain de performance mineur. Une meilleure méthode consiste à compiler votre Xaml en code .NET.
En outre, l'outillage disponible pour WPF est très étendu par rapport à JavaFX. Il y a des tonnes d'outils comprenant le mélange d'expression disponible. Il existe également de nombreux outils pour prendre des formats graphiques vectoriels tels que SVG et Adobe Illustrator et les convertir en XAML.Maintenant, les concepteurs et les programmeurs peuvent collaborer sur la publication assistée par ordinateur d'une manière qui était très difficile à faire auparavant. En résumé, WPF est si complet que l'équipe Mono a choisi de ne pas le porter sur la base du code Mono. Ils ont affirmé qu'il faudrait beaucoup d'années-hommes pour mettre pleinement en œuvre un ensemble de fonctionnalités raisonnables. Si une version compatible avec Mono de WPF existait, cela ferait de .NET le framework d'application multiplateforme de facto. En fait, il peut même remplacer HTML/CSS, car il est beaucoup plus puissant et plus facile de se faire une idée. Malheureusement, Microsoft n'a pas vu de business case pour un WPF compatible multiplateforme. C'est pourquoi SilverLight/WPF a perdu en HTML5/JS. Grâce à cette erreur, ils sont maintenant obligés de passer non seulement le web mais une partie de leur bureau à HTML 5/JS.
JavaFX semble prometteur. –
Pas de véritable support 3D, en particulier pour le langage de shader trouvé dans DirectX HLSL et OpenGL SL. De plus, tout support IDE existant pour JavaFX ne peut pas correspondre à la puissance du concepteur Expression Blend XAML et de Visual Studio 2008 et Visual Studio 2010 Cider (concepteur WPF dans Visual Studio). –
Gère-t-il la liaison de données aussi facilement? –