2008-11-11 21 views
17

Quelle infrastructure/bibliothèque GUI choisiriez-vous si vous deviez commencer votre nouveau projet maintenant ou dans un futur proche?Quel framework Java GUI choisir maintenant?

Il doit être gratuit pour un usage commercial et multi-plateforme.

Je suis un utilisateur de swing heureux, mais Sun semble comme pousser bat à deprecation, tout en poussant JavaFX, ce qui est pas encore prêt pour prime time.

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

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

EDIT: Sun a annulé le projet swingx. Des commentaires du forum sur http://swingx.dev.java.net semble que la majorité des ressources de Sun qui travaillaient précédemment sur le pivot principal développent maintenant JavaFx à temps plein.

+0

@Marko: Pourquoi pensez-vous que Swing sera obsolète? Et comment considérez-vous javafx comme un remplaçant? –

+0

JavaFX est-il encore disponible dans un format non-bêta maintenant? Je ne pensais pas que JavaFX allait être un concurrent de Swing. Ils semblaient complémentaires quand j'ai regardé JavaFX ... –

+0

SwingX n'est pas annulé et n'est pas Swing. SwingX est un projet open source permettant d'ajouter des extensions sur Swing. Ce qui a été dit, c'est que Sun n'a actuellement aucun personnel dédié à SwingX. Évidemment, beaucoup d'efforts sont mis dans JavaFX pour le moment. Le bureau JavaFX utilise Swing. –

Répondre

7

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

D'un autre côté, j'aime beaucoup SWT. Cela donne un mauvais coup parce que tout le monde pensait que c'était le stratagème d'IBM de prendre le contrôle de Java, mais c'est juste un autre cadre d'interface utilisateur qui est assez complémentaire de Swing. Je ne conseillerais pas d'utiliser SWT pour le rendu graphique super complexe (en particulier: la composition) 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 fait l'objet de nombreuses critiques en raison notamment de la dépendance vis-à-vis des masques binaires et d'une boucle de répartition des événements gérée par l'utilisateur, mais la plupart de ces éléments sont assez transparents. Les composants eux-mêmes sont beaucoup plus simples que ceux de Swing (en termes d'extensibilité et similaires), ce qui signifie que l'API peut être proportionnellement plus simple. Je peux réellement me rappeler comment créer et remplir une table dans SWT; alors que je ne pense pas que j'ai déjà traité cela dans Swing sans l'assistance de Google.

Le plus gros problème de SWT 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 plateformes, SWT est phénoménal sur Windows (Vista et XP) et presque aussi bon sur GTK Linux. Je n'ai pas (dans un passé récent) eu des problèmes avec SWT sur Linux, donc je suis un peu surpris que vous le mentionniez comme un point douloureux.

Revenons à votre question: tout dépend de ce dont votre application a besoin. Si c'est une application flashy personnalisée avec des tonnes de contrôles personnalisés et de composition complexe, Swing est le seul jeu en ville. Cependant, si une API plus simple est plus importante pour vous, ou si vos utilisateurs exigent la fidélité ultime de la plate-forme LAF, SWT est le meilleur choix.

+0

Je suis d'accord que SWT est un très bon cadre graphique. Fonctionne également sur PocketPC, ce qui signifie que vous pouvez créer une version mobile de votre application en allant assez vite lorsque la direction en fait la demande! – JeeBee

3

J'utilise toujours Swing, et je continuerai à le faire jusqu'à ce qu'il ne soit plus supporté du tout. Merci pour le heads-up sur Javafx, je vais devoir me pencher là-dessus maintenant.

+0

Oui, il est supporté de la manière dont AWT est supporté, mais il n'y aura pas de nouveau développement du côté swing. – Marko

+1

Ahh, mais si la version actuelle fait ce dont vous avez besoin, alors qui se soucie s'il n'y a pas de nouveau développement? Si ce n'est pas cassé, ne le répare pas. – Elie

4

À l'heure actuelle, j'utilise SWT ou Qt (Jambi). Swing n'a pas évolué depuis 10 ans, les bugs ne sont pas corrigés, le développement s'est arrêté en faveur de JavaFX, donc vous ne verrez plus jamais de nouveautés. JavaFX sera probablement très beau, mais il est toujours fabriqué par les gens qui ont laissé 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 réalisé par des gens qui savent ce qu'ils font (enfin, la plupart du temps :)) et SWT si la licence du nouveau projet n'était pas compatible avec Qt's.