J'ai un très gros programme qui utilise actuellement SWT. Le programme peut être exécuté à la fois sur Windows, Mac et Linux. Il s’agit d’une application de bureau volumineuse comportant de nombreux éléments. Maintenant que SWT est un peu vieux, j'aimerais passer à Swing ou à JavaFX. Et j'aimerais entendre votre opinion sur trois choses.
Ma principale préoccupation est de savoir ce qui sera meilleur pour une application graphique 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 à part de simples guerres de flammes 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 pour construire à partir de zéro?
J'utilise la méthodologie MVC dans mon application, si cela peut vous aider.
Qu'est-ce qui sera plus propre et plus facile à entretenir?
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 comment le code est écrit que de de la bibliothèque utilisée pour l'écrire .
Et quoi de plus rapide pour construire à partir de zéro?
Très dépendant de ce que vous construisez. Swing a plus de composants à sa disposition (tiers et intégrés) et tous n’ont pas encore migré vers la nouvelle plate-forme JavaFX. Il est donc possible qu’il y ait une certaine quantité de réinventer la roue si vous avez besoin de quelque chose. peu coutume. D'un autre côté, si vous souhaitez effectuer des transitions/animations/vidéos, cette opération est beaucoup plus simple dans les effets FX.
Une autre chose à garder à l'esprit est (peut-être) l'apparence. Si vous devez absolument avoir l'apparence du système par défaut, JavaFX (à l'heure actuelle) ne peut pas le fournir. Ce n’est pas un gros besoin pour moi (je préfère de toute façon le look FX par défaut), mais je sais que certaines politiques imposent une restriction des styles de système.
Personnellement, je vois JavaFX comme la bibliothèque d’interface utilisateur "montante et à venir" qui n’est pas assez pour le moment (mais plus qu’utilisable), et Swing comme frontière- Une bibliothèque d’interface utilisateur héritée qui est entièrement intégrée et prise en charge pour le moment, mais ne le sera probablement pas autant dans les années à venir (et par conséquent, il est probable que FX le dépassera à un moment donné.)
Comme indiqué par Oracle, JavaFX est la prochaine étape de leur stratégie de client riche basée sur Java. En conséquence, voici ce que je recommande pour votre situation:
Qu'est-ce qui serait plus facile et plus propre à entretenir
Quel serait plus rapide de construire à partir de zéro
Prise en charge de modèles MVC
Pour plus d'informations, veuillez consulter ces FAQ publications d'Oracle concernant JavaFX ici.
Personne ne l'a mentionné, mais JavaFX ne compile ni ne s'exécute sur certaines architectures considérées comme des "serveurs" par Oracle (Solaris, par exemple), en raison de l'absence de la prise en charge "jfxrt.jar". Coller avec SWT, jusqu'à nouvel ordre.
Je ne pense pas qu'il y ait une bonne réponse à cette question, mais mon conseil serait de rester avec SWT, sauf si vous rencontrez des limitations sévères nécessitant une refonte aussi importante.
En outre, SWT est en fait plus récent et plus activement géré que Swing. (C'était développé à l'origine pour remplacer Swing à l'aide de composants natifs).
Je regarderais autour de vous pour trouver des composants (tiers?) Qui font ce que vous voulez. J'ai dû créer des composants Swing personnalisés pour une vue d'agenda dans laquelle vous pouvez réserver plusieurs ressources, ainsi qu'une grille de type Excel qui fonctionne bien avec la navigation au clavier, etc. Je les ai terriblement mal obligés de les faire travailler, car je devais approfondir les nombreuses complexités de Swing chaque fois que je rencontrais un problème. Le comportement de la souris et de la mise au point, entre autres, peut être très difficile à obtenir, en particulier pour un utilisateur occasionnel de Swing. J'espère que JavaFX est un peu plus orienté vers l'avenir et plus fluide.
Sur les ordinateurs portables plus anciens avec vidéo intégrée, l'application Swing démarre et fonctionne beaucoup plus rapidement que l'application JavaFX. En ce qui concerne le développement, je vous recommande de passer à Scala - comparable Scala. L'application Swing contient 2,3 fois moins de code que Java. En ce qui concerne Swing vs SWT: Netbeans GUI considérablement plus rapide que Eclipse ...