Quel framework Java GUI choisir maintenant? [fermé]


Qui GUI cadre/bibliothèque choisiriez-vous si vous commencez votre nouveau projet maintenant ou dans un avenir proche?

Il doit être gratuit pour un usage commercial et multiplateforme.

J'ai été un utilisateur swing heureux, mais Sun semble pousser swingà la dépréciation, tout en poussant Javafx, qui n'est pas encore prêt pour le prime time.

Il y a aussi SWT, mais il semble qu'il ait des problèmes sur Linux.

Quelle est votre bibliothèque/framework Gui de choix?

EDIT: Sun a annulé le projetswingx . Du forum commentaires sur http://swingx.dev.java.net il semble que la majorité des ressources Sun qui travaillaient auparavant sur core swing développent maintenant JavaFX à temps plein.

Author: Jonik, 2008-11-11

3 answers

Je pense que malgré la mauvaise gestion de Sun, Swing est toujours un excellent cadre. Vous pouvez faire un lot avec, surtout si ce "lot" implique des contrôles d'interface utilisateur rendus personnalisés. Si votre application a besoin d'un LAF de marque, ou même de quelques contrôles personnalisés complexes ici et là, Swing est exactement ce que vous voulez.

De l'autre côté de la médaille, j'aime beaucoup SWT. Cela devient un mauvais coup parce que tout le monde pensait que c'était le stratagème d'IBM pour reprendre Java, mais c'est vraiment juste un autre cadre d'interface utilisateur qui est assez complémentaire à Swing. Je ne conseillerais pas d'utiliser SWT pour le rendu graphique super complexe (en particulier: compositing) ou pour créer des contrôles personnalisés vraiment non triviaux, mais pour tout le reste, c'est vraiment dandy. L'API elle-même reçoit beaucoup de critiques en raison de choses comme la dépendance aux masques de bits et une boucle de répartition des événements gérée par l'utilisateur, mais la plupart de ces choses sont assez transparentes une fois que vous vous y êtes habitué. Les composants eux mêmes sont beaucoup plus simples que Swing (en termes d'extensibilité et similaire), ce qui signifie que l'API peut être proportionnellement plus simple. Je peux en fait me rappeler comment créer et remplir une table dans SWT; alors que je ne pense pas avoir jamais géré cela dans Swing sans l'aide de Google.

Le plus gros problème de SWT en ce moment est que la version stable dépend de Carbon sur Mac OS X. Cela signifie que les applications SWT ne peuvent exécuter que 32 bits sur Java 5 (ou 32 bits sur SoyLatte). Comme pour les autres plates-formes, SWT est phénoménal sur Windows (Vista et XP) et presque aussi bien sur GTK Linux. Je n'ai pas (dans un passé récent) eu de problèmes avec SWT sur Linux, donc je suis un peu surpris que vous le mentionniez comme un point sensible.

Pour revenir à votre question: tout dépend des besoins de votre application. Si c'est une application flashy de style personnalisé avec des tonnes de contrôles personnalisés et compositing complexe, Swing est le seul jeu en ville. Cependant, si une API plus simple est plus importante pour vous, ou si vos utilisateurs exigent le nec plus ultra en plate-forme LAF fidelity, SWT est le meilleur choix.

 7
Author: Daniel Spiewak, 2008-11-11 16:58:42

En ce moment, j'utilise SWT ou Qt (Jambi).

Swing n'a pas évolué au cours des dernières années, disons, 10, les bugs ne sont pas corrigés, le développement s'est arrêté en faveur de JavaFX, donc vous ne verrez jamais de nouvelles fonctionnalités, aussi. JavaFX aura probablement fière allure, mais il est toujours vaporware et il est fait par les gens qui laissent Swing mourir de faim, donc je ne mets pas d'argent dessus.

Entre SWT et Qt, je préfère utiliser Qt car c'est un framework très mature et puissant fait par des gens qui savent ce qu'ils font (enfin, la plupart du temps de toute façon :)) et SWT si la licence du nouveau projet n'était pas compatible avec Qt.

 4
Author: Aaron Digulla, 2008-11-11 16:37:09

J'utilise toujours Swing, et je continuerai à le faire jusqu'à ce qu'il ne soit plus supporté du tout. Merci pour les informations sur Javafx, je vais devoir examiner celui-là maintenant.

 3
Author: Elie, 2008-11-11 16:16:47