J'ai un très gros programme qui utilise actuellement SWT. Le programme peut être exécuté sur Windows, Mac et Linux, et c'est une grande application de bureau avec de nombreux éléments. Maintenant que SWT est un peu vieux, je voudrais passer à Swing ou JavaFX. Et j'aimerais entendre vos réflexions sur trois choses.
Ma principale préoccupation est ce qui sera mieux pour une application GUI de bureau? (J'ai regardé en ligne et beaucoup de gens suggèrent que JavaFX est aussi bon que Swing, mais je n'ai pas vu beaucoup d'arguments valables, sauf de simples guerres de flamme d'opinion). Il doit fonctionner à la fois sur Windows, Mac et certaines distributions Linux populaires.
Qu'est-ce qui sera plus propre et plus facile à entretenir?
et ce qui sera plus rapide à construire à partir de zéro?
J'utilise la méthologie MVC dans mon application, si cela peut vous être utile.
Réponses:
Toutes choses étant égales par ailleurs, probablement JavaFX - l'API est beaucoup plus cohérente entre les composants. Cependant, cela dépend beaucoup plus de la façon dont le code est écrit que de la bibliothèque utilisée pour l'écrire .
Très dépendant de ce que vous construisez. Swing a plus de composants (tiers ou intégrés) et tous n'ont pas encore fait leur chemin vers la nouvelle plate-forme JavaFX, il peut donc y avoir une certaine quantité de réinventer la roue si vous avez besoin de quelque chose peu personnalisé. D'un autre côté, si vous voulez faire des transitions / animations / vidéos, alors c'est des ordres de grandeur plus faciles dans FX.
Une autre chose à garder à l'esprit est (peut-être) l'apparence. Si vous devez absolument avoir l'aspect et la convivialité du système par défaut, alors JavaFX (à l'heure actuelle) ne peut pas le fournir. Pas un gros must have pour moi (je préfère le look FX par défaut de toute façon) mais je suis conscient que certaines politiques imposent une restriction aux styles de système.
Personnellement, je vois JavaFX comme « et à venir » bibliothèque d'interface utilisateur qui est pas tout à fait encore là (mais plus utilisable), et Swing comme la bibliothèque de l' interface utilisateur-legacy limite qui est entièrement comporté et pris en charge pour le moment, mais ne sera probablement pas tant dans les années à venir (et donc les chances sont que FX le dépassera à un moment donné.)
la source
Comme indiqué par Oracle, JavaFX est la prochaine étape de leur stratégie de client riche basé sur Java. En conséquence, voici ce que je recommande pour votre situation:
Pour plus d'informations, veuillez consulter ces FAQ par Oracle concernant JavaFX ici.
la source
Personne ne l'a mentionné, mais JavaFX ne compile pas ou ne s'exécute pas sur certaines architectures considérées comme "serveurs" par Oracle (par exemple Solaris), en raison de la prise en charge "jfxrt.jar" manquante. Restez avec SWT, jusqu'à nouvel ordre.
la source
Je ne pense pas qu'il y ait une seule bonne réponse à cette question, mais mon conseil serait de rester avec SWT à moins que vous rencontriez des limitations sévères qui nécessitent une refonte aussi massive.
De plus, SWT est en fait plus récent et plus activement maintenu que Swing. (Il a été initialement développé en remplacement de Swing en utilisant des composants natifs).
la source
Je chercherais des composants (tiers?) Qui font ce que vous voulez. J'ai dû créer des composants Swing personnalisés pour une vue d'agenda où vous pouvez réserver plusieurs ressources, ainsi qu'une grille de type Excel qui fonctionne bien avec la navigation au clavier, etc. J'ai eu du mal à les faire fonctionner correctement parce que je devais me plonger dans les nombreuses subtilités de Swing chaque fois que je rencontrais un problème. Le comportement de la souris et de la mise au point et bien d'autres choses peuvent être très difficiles à corriger, en particulier pour un utilisateur Swing occasionnel. J'espère que JavaFX est un peu plus orienté vers l'avenir et plus fluide.
la source
Sur les ordinateurs portables plus anciens avec l'application Swing vidéo intégrée, elle démarre et fonctionne beaucoup plus rapidement que l'application JavaFX. En ce qui concerne le développement, je recommanderais de passer à Scala - l'application Scala Swing comparable contient 2 à 3 fois moins de code que Java. Quant à Swing vs SWT: l'interface graphique Netbeans est beaucoup plus rapide qu'Eclipse ...
la source