Java Desktop application: SWT vs. Swing [fermé]

je suis développeur web à day et je pense à construire 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'ai utilisé avant pour des trucs sur le web, connaître la syntaxe assez bien et je veux que l'application soit cross plattform aussi facile que possible.

où je ne suis pas si sûr est si je dois utiliser SWT ou Swing. Mon principal le public utilise Windows, je veux le regarder aussi natif que possible là-bas. Linux et Mac devraient fonctionner, mais les looks ne sont pas si importants ici.

alors quels sont les arguments pour et contre chaque cadre D'assurance-chômage, Swing ou SWT?

Merci.

PS: je développe sur Windows en utilisant Eclipse. Mais je pensais jouer avec Netbeans.

151
demandé sur janpio 2010-02-21 17:39:40

10 réponses

Pros Swing:

  • partie de la bibliothèque java, pas besoin de autres bibliothèques natives
  • fonctionne de la même façon sur toutes les plateformes
  • Intégré l'Éditeur de l'interface de Netbeans et Eclipse
  • bons tutoriels en ligne par Sun/Oracle
  • supporté par des extensions java officielles (comme java OpenGL)

Cons Swing:

  • L'apparence et le toucher autochtones peuvent se comporter différent du vrai autochtone système.
  • pièces lourdes (natif/awt) masquer les composants swing, pas un problème, la plupart du temps, comme l'utilisation de composés lourds est plutôt rare

Pros SWT:

  • utilise des éléments natifs quand c'est possible, donc toujours le comportement natif
  • soutenu par eclipse, GUI editor VEP (VEP prend aussi en charge Swing et AWT)
  • grand nombre d'exemples en ligne
  • est doté d'un pont awt/swt intégré permettant l'utilisation de composants awt et swing

Contre SWT:

  • nécessite des bibliothèques natives pour chaque Système pris en charge
  • peut ne pas supporter tous les comportements sur tous les systèmes à cause de natif ressources utilisées (indice options)
  • Gérer les ressources natives, tandis que les composants natifs seront souvent éliminés avec leur parent d'autres ressources telles que les polices doivent être manuellement libérés ou enregistrés en tant qu'écouteur dispose à un composant pour la libération automatique.
148
répondu josefx 2014-04-03 11:35:39

une chose importante à considérer est que certains utilisateurs et certains revendeurs (Dell) installent une VM 64 bits sur leurs fenêtres 64 bits, et vous ne pouvez pas utiliser la même bibliothèque SWT sur les Vm 32 bits et 64 bits.

cela signifie que vous devrez distribuer et tester différents paquets selon que les utilisateurs ont une VM Java 32 bits ou 64 bits. Voir ce problème avec Azureus, par exemple, mais vous avez aussi avec Eclipse, où dès aujourd'hui s'appuie sur les page de téléchargement avant ne pas fonctionner sur une VM 64 bits.

62
répondu Ludovico Fischer 2010-02-21 15:26:53

Pro swing:

  • le plus grand avantage de swing IMHO est que vous n'avez pas besoin d'expédier les bibliothèques avec votre application (ce qui évite des douzaines de MB(!)).
  • look et feel Native est beaucoup mieux pour swing que dans les premières années
  • La performance
  • est comparable au swt (swing n'est pas lent!)
  • NetBeans offre Matisse comme un constructeur de composants confortables.
  • le L'intégration des composants Swing dans JavaFX est plus facile.

mais au fond, Je ne suggérerais pas d'utiliser "pure" swing ou swt ;-) Il existe plusieurs cadres d'application pour swing/swt out. Regardez ici . Les plus grands joueurs sont netbeans (swing) et eclipse (swt). Un autre cadre agréable pourrait être griffon et un beau "ensemble de composants" est pivot (swing). Griffon est très intéressant parce qu'il intègre beaucoup de bibliothèques et non seulement swing ; également pivot, swt, etc

23
répondu Karussell 2010-02-23 22:01:02

J'utiliserais Swing pour deux raisons.

  • plus l'effort de développement appliqué à il. Par conséquent, il est probablement plus caractéristique complet et (peut-être) a moins de bugs.

  • il y a beaucoup de documentation et autres conseils sur la production performant applications.

  • il semble comme les changements à Swing propagent à toutes les plates-formes simultanément, tout en les changements au SWT semblent apparaître sur Windows d'abord, puis Linux.

si vous voulez construire une application très riche en fonctionnalités, vous pouvez consulter le NetBeans RCP (Rich Client Platform). Il ya une courbe d'apprentissage, mais vous pouvez mettre en place de belles applications rapidement avec un peu de pratique. Je n'ai pas assez d'expérience avec la plateforme Eclipse pour porter un jugement valable.

si vous ne si vous voulez utiliser L'intégralité du RCP, NetBeans dispose également de nombreux composants utiles qui peuvent être retirés et utilisés indépendamment.

un autre conseil, examinez les différents responsables de la mise en page. 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 MigLayout (pour Swing et SWT) et JGoodies formulaires outils sont deux des meilleurs à mon avis.

13
répondu clartaq 2010-02-21 16:24:17

je choisirais swing juste parce que c'est" natif " pour java.

Plus, jetez un oeil à http://swingx.java.net / .

10
répondu zeroed 2013-07-31 03:58:56

pour vos besoins, il semble que la ligne de fond sera D'utiliser Swing Car il est légèrement plus facile de commencer avec et pas aussi étroitement intégré à la plate-forme native que SWT.

Swing est habituellement un pari sûr.

8
répondu Yuval Adam 2010-02-21 14:47:15

question intéressante. Je ne sais pas trop bien SWT pour se vanter à ce sujet (contrairement Swing et AWT), Mais voici la comparaison fait sur SWT/Swing/AWT.

http://www.developer.com/java/other/article.php/10936_2179061_2/Swing-and-SWT-A-Tale-of-Two-Java-GUI-Libraries.htm

et voici le site où vous pouvez obtenir tutoriel sur essentiellement n'importe quoi sur SWT ( http://www.java2s.com/Tutorial/Java/0280__SWT/Catalog0280__SWT.htm )

espère que vous prenez une bonne décision (s'il y a de bonnes décisions dans le codage)... :- )

6
répondu Buhake Sindi 2010-02-21 14:52:20

si vous prévoyez de construire une application fonctionnelle complète avec plus d'une poignée de fonctionnalités, je vous suggérerai de sauter directement à L'utilisation D'Eclipse RCP comme cadre.

si votre application ne deviendra pas trop grande ou si vos exigences sont tout simplement trop uniques pour être gérées par un cadre d'affaires normal, vous pouvez sauter en toute sécurité avec Swing.

à la fin de la journée, je vous suggérerais d'essayer les deux technologies pour trouver celle qui vous convient le mieux. Comme Netbeans vs Eclipse vs IntelliJ, il n'y a pas la réponse absolue correcte ici et les deux cadres ont leurs propres inconvénients.

Pro Swing:

  • plus d'experts
  • plus Java-comme (presque pas de champ public, pas besoin de disposer des ressources)

Pro SWT:

  • plus d'OS natif
  • plus rapide
4
répondu nanda 2010-02-21 15:48:47

Une chose à considérer: les lecteurs d'écran

pour certaines raisons, certains composants Swing ne fonctionnent pas bien lorsqu'on utilise un lecteur d'écran (et le Java AccessBridge pour Windows). Sachez que différents screenreaders entraînent des comportements différents. Et d'après mon expérience, le SWT-Tree fonctionne beaucoup mieux que le Swing-Tree en combinaison avec un screenreader. Ainsi, notre application a fini par utiliser à la fois des composants SWT et Swing.

pour la distribution et chargement de la bibliothèque SWT appropriée, vous pourriez trouver ce lien utile: http://www.chrisnewland.com/select-correct-swt-jar-for-your-os-and-jvm-at-runtime-191

4
répondu incomudro 2013-04-23 09:27:28

SWT a été créé en réponse à la lenteur de Swing autour du tournant du siècle. Maintenant que les différences de performance deviennent négligeables, je pense que Swing est une meilleure option pour vos applications standard. SWT / Eclipse a un cadre agréable qui aide avec beaucoup de code de la plaque de chaudière.

3
répondu Oliver Watkins 2013-02-28 15:51:50