Je suis un développeur Web de jour et je songe à créer ma première application de bureau réelle. L'idée est de construire un outil qui automatise une tâche très répétitive dans une application Web où aucune API n'est disponible.
Je sais que je veux utiliser Java. Je l'avais déjà utilisée pour le Web, connaissais assez bien la syntaxe et souhaitais que l'application soit transversale autant que possible.
Là où je ne suis pas sûr de savoir si je devrais utiliser SWT ou Swing. Étant donné que mon public principal utilise Windows, je souhaite l’avoir le plus natif possible. Linux et Mac devraient fonctionner, mais les apparences ne sont pas si importantes ici.
Alors, quels sont les arguments pour et contre chaque Framework, Swing ou SWT?
Merci.
PS: Je développe sous Windows en utilisant Eclipse. Mais pensait à jouer avec Netbeans.
Pro Swing:
Inconvénient:
Pros SWT:
Contre SWT:
Il est important de noter que certains utilisateurs et certains revendeurs (Dell) installent un VM 64 bits sur leur Windows 64 bits et que vous ne pouvez pas utiliser la même bibliothèque SWT sur des ordinateurs virtuels 32 et 64 bits.
Cela signifie que vous devrez distribuer et tester différents packages, selon que les utilisateurs disposent d'une machine virtuelle Java 32 bits ou 64 bits. Voir ce problème avec Azureus, par exemple, mais vous l'avez également avec Eclipse, où, à ce jour, les versions sur la page de téléchargement avant ne fonctionnent pas sur une machine virtuelle 64 bits.
swing pro:
Mais en fin de compte, je ne suggérerais pas d’utiliser le swing "pur" ou swt ;-) Il existe plusieurs cadres d’application pour le swing/swt out. Regardez ici . Les plus gros joueurs sont Netbeans (swing) et Eclipse (swt). Un autre cadre de Nice pourrait être Griffon et un "ensemble de composants" de Nice est pivot (swing). Griffon est très intéressant car il intègre beaucoup de bibliothèques et pas seulement swing ; aussi pivot, swt, etc.
J'utiliserais Swing pour plusieurs raisons.
Il existe depuis plus longtemps et a fait l'objet d'efforts de développement plus importants. Par conséquent, il est probable que plus de fonctionnalités soient complètes et (peut-être) moins de bogues.
Il existe de nombreux documents et conseils sur la production d’applications performantes.
Si vous souhaitez créer une application très riche en fonctionnalités, vous pouvez consulter le NetBeans RCP (Rich Client Platform). Il y a une courbe d'apprentissage, mais vous pouvez créer rapidement de belles applications avec un peu de pratique. Je n'ai pas suffisamment d'expérience avec la plate-forme Eclipse pour me prononcer correctement.
Si vous ne souhaitez pas utiliser l'intégralité du RCP, NetBeans comporte également de nombreux composants utiles qui peuvent être extraits et utilisés indépendamment.
Un autre conseil, regardez dans différents gestionnaires de disposition. Ils m'ont fait trébucher pendant longtemps quand j'apprenais. Certains des meilleurs ne sont même pas dans la bibliothèque standard. Les outils MigLayout (pour Swing et SWT) et JGoodies sont deux des meilleurs à mon avis.
Je choisirais swing uniquement parce que c'est "natif" pour Java.
De plus, regardez http://swingx.Java.net/ .
Pour répondre à vos besoins, il semble que le résultat final soit l’utilisation de Swing, car il est légèrement plus facile de démarrer et n’est pas aussi étroitement intégrée à la plate-forme native que SWT.
Swing est généralement une valeur sûre.
Question interessante. Je ne connais pas trop bien SWT pour me vanter (contrairement à Swing et AWT), mais voici la comparaison effectuée sur SWT/Swing/AWT.
Et voici le site où vous pouvez obtenir un didacticiel sur pratiquement tout ce qui concerne SWT ( http://www.Java2s.com/Tutorial/Java/0280__SWT/Catalog0280__SWT.htm )
J'espère que vous prendrez une bonne décision (s'il y a de bonnes décisions en matière de codage) ... :-)
Une chose à considérer: les lecteurs d’écran
Pour certaines raisons, certains composants Swing ne fonctionnent pas correctement avec un lecteur d’écran (et le Java AccessBridge pour Windows). Sachez que différents lecteurs d’écran entraînent un comportement différent. Et d’après mon expérience, l’arborescence SWT fonctionne bien mieux que Swing-Tree en combinaison avec un lecteur d'écran. Ainsi, notre application a fini par utiliser à la fois les composants SWT et Swing.
Pour la distribution et le chargement de la bibliothèque SWT appropriée, vous pouvez trouver ce lien utile: http://www.chrisnewland.com/select-correct-swt-jar-for-your-os-and-jvm-at -runtime-191
Si vous envisagez de créer des applications fonctionnelles complètes avec plus d'une poignée de fonctionnalités, je vous suggérerai de passer directement à l'utilisation de Eclipse RCP en tant que cadre.
Si votre application ne devient pas trop volumineuse ou si vos exigences sont trop uniques pour être gérées par un cadre métier normal, vous pouvez sans risque vous lancer dans Swing.
À la fin de la journée, je vous suggère d'essayer les deux technologies pour trouver celle qui vous convient le mieux. Comme Netbeans vs Eclipse vs IntelliJ, il n’ya pas de réponse absolument correcte ici et les deux frameworks ont leurs propres inconvénients.
Pro Swing:
Pro SWT:
SWT a été créé en réponse à la morosité de Swing au tournant du siècle. Maintenant que les différences de performances deviennent négligeables, je pense que Swing est une meilleure option pour vos applications standard. SWT/Eclipse a un cadre Nice qui aide avec beaucoup de code de plaque de chaudière.