228 votes

Cadres de java GUI. Que choisir ? Swing, SWT, AWT, SwingX, JGoodies, JavaFX, Pivot de l’Apache ?

Il y a beaucoup de gui cadres pour java, mais ce qui est reconnu aujourd'hui comme cadre de choix?

Ce qui suit est ma compréhension des différents encadrements, veuillez me corriger si je suis mal. C'est un très vaguement définis ensemble de questions, mais je pense toujours que sa précieuse pour tous ceux qui envisagent de créer de riches applications gui.


AWT

Est le fondement même de swing, il fonctionne bien, mais on manque de composants avancés. Si vous avez l'intention de créer des applications riches, AWT est probablement pas la voie à suivre. Cependant, pour de plus petites applications avec interface graphique, qui ne nécessite pas d'interfaces utilisateur. Cela peut convenir parfaitement que c'est un éprouvés et cadre.


Swing

Basé sur AWT comme indiqué précédemment. Dans son enfance, il a été considéré comme lent et buggé et a causé IBM pour créer SWT pour Eclipse. Cependant, avec Java 5 (ou 6?) Swing est devenu le cadre de choix pour la construction de nouvelles applications. Swing a beaucoup de composants riches, mais sont encore des lacunes dans certains domaines. Un exemple étant donné qu'il n'y a pas un complet TreeTable composant qui peut faire le tri et de filtrage de la recherche.


SWT

Créé par IBM pour Eclipse, ils semblent penser que le Swing n'est pas adapté pour Eclipse à l'époque. Par lui-même est assez bas niveau, et il utilise la plate-forme native de widgets via JNI. Il n'est pas lié à Swing et AWT. Leur API est cependant un peu maladroit et pas intuitif. Ils ont quelques avancées du composant comme un TreeTable. (mais je ne pense pas qu'ils en charge le tri et le filtrage de la sortie de la boîte). SWT utilise certains indigènes liaisons (via JNI?) et le coup de gueule sur l'internet est que ce cadre ne doit pas être utilisé aujourd'hui dans les projets. (pourquoi pas?)


SwingX

Basé sur le Swing et sa mission est de créer des composants riches pour le swing. Encore en cours de développement. (pas très active.) Avoir un très bel ensemble de composants, comme par exemple TreeTable. Mais le TreeTable ne prend pas en charge le filtrage et le tri pour autant que je sais. Il n'toutefois, le soutien à la recherche, avec mise en évidence.

Notez que SwingX est de composants (AFAIU) qui sont des extensions ou les compositions de l'existant composants Swing


JGoodies

Un cadre qui, je n'en sais rien... qu'est-Ce que c'est les forces et les faiblesses? Ce qui est Jgoodies à l'écart du reste?

JGoodies otoh, que est sur PLAFs et mises en page.


JavaFX

Le dernier phare de Java/Oracle. en promettant d'être le standard de facto dans le développement riche de bureau ou des applications web.


Apache Pivot

Il rend l'INTERFACE utilisateur à l'aide de Java2D, afin de minimiser l'impact de (OMI, ballonnement) legs de Swing et AWT. (@Auguste Thoo)

C'est l'objectif principal semble être sur la RIA (Rich internet applications), mais il semble qu'il peut aussi être appliqué à des applications de bureau. Et comme un commentaire personnel, l'air très intéressant! J'aime Surtout que c'est un projet apache.

https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html


Qt Jambi

Un wrapper java pour le natif de la bibliothèque qt qui est écrit en c/c++. Très puissant, largement utilisée et acceptée. A beaucoup de composants GUI et un facile pour utiliser l'API.

http://qt-jambi.org/


Donc, pour essayer de résumer un peu de ce que im demandant:

Dire que j'ai voulu créer une application de bureau aujourd'hui, en Java, ce qui implique beaucoup de composants évolués, que dois-je choisir? Et pourquoi?

Lequel de ces cadres devraient être reconnus comme obsolète et qui doit être reconnue, comme les cadres de l'avenir lointain?

Ce qui est aujourd'hui de facto-la norme-cadre et avec quels outils utilisez-vous pour créer des ihm java applications?


Je pourrais regretter de demander cela, mais mal essayer de toute façon:

C#/.Net est dit d'avoir un très bon ensemble de facile à utiliser des composants qui peut être plié dans tous les sens possible. Et après avoir enquêté sur java différents cadres dans une certaine mesure, je n'arrive pas à en dire de même à propos de Java. Pourquoi est-ce? Pourquoi ne pas java (langage de programmation largement utilisé dans le monde) ont le même ensemble de composants GUI?

Est-il juste que java a base de leurs composants gui à un niveau beaucoup plus faible, et il est possible d'écrire tous ces composants avancés que je cherche, mais vous avez à faire beaucoup, sinon la totalité de vos travaux vous-même?

79voto

Aaron Digulla Points 143830

Arbre de décision:

  1. Des cadres comme Qt et SWT besoin de Dll natives. Donc, vous avez à vous poser: faut plates-formes prises en charge? Vous pouvez package les Dll natives de votre application?

    Voir ici, comment faire pour SWT.

    Si vous avez le choix ici, vous devriez préférer Qt sur SWT. Qt a été développé par des gens qui comprennent l'INTERFACE utilisateur et l'ordinateur de bureau tout en SWT a été développé à partir de la nécessité de faire de l'Éclipse rapidement. C'est plus un patch de performances pour Java 1.4 qu'un framework d'INTERFACE. Sans JFace, vous êtes absent beaucoup de grands composants de l'INTERFACE utilisateur ou des éléments très importants de composants d'INTERFACE utilisateur (comme le filtrage sur les tables).

    Si SWT manque une fonctionnalité dont vous avez besoin, le cadre est un peu hostile à l'étendre. Par exemple, vous ne pouvez pas étendre une classe (les classes ne sont pas définitifs, ils ont juste lancer des exceptions lorsque le package de this.getClass() n'est pas org.eclipse.swt et vous ne pouvez pas ajouter de nouvelles classes dans le paquet parce que c'est signé).

  2. Si vous avez besoin d'un natif, pur Java solution, que vous laisse avec le reste. Commençons avec AWT, Swing, SwingX - le Swing.

    AWT est obsolète. Swing est obsolète (peut-être un peu moins mais pas beaucoup de travail a été fait sur Swing pour les 10 dernières années). On pourrait dire que le Swing était bon pour commencer, mais nous savons tous que le code des pourritures. Et c'est particulièrement vrai pour l'Isu aujourd'hui.

    Que vous laisse avec SwingX. Après une longue période de la lenteur des progrès, le développement a repris. L'inconvénient majeur de Swing, c'est qu'il se bloque sur certaines vieilles idées qui très gentil de bord de saignement il y a 15 ans, mais qui se sentent "maladroit" aujourd'hui. Par exemple, la table de points de vue ne soutien de filtrage et de tri mais il vous reste à configurer. Vous aurez à écrire beaucoup de chaudière plaque de code juste pour obtenir un décent de l'INTERFACE utilisateur qui se sent moderne.

    Un autre point faible est la thématisation. À compter d'aujourd'hui, il ya beaucoup de thèmes autour de. Voir ici pour un top 10. Mais certains sont lents, certains sont buggés, certains sont incomplets. Je déteste quand j'écris une INTERFACE utilisateur et les utilisateurs se plaignent que quelque chose ne fonctionne pas pour eux, car ils ont choisi une drôle de thème.

  3. JGoodies est une autre couche sur le dessus de Swing, comme SwingX. Il tente de faire Balancer de plus agréable à utiliser. Le site web de l'allure. Jetons un coup d'oeil au tutoriel ... hm ... toujours à la recherche ... d'accrocher sur. Il semble qu'il n'y a pas de documentation sur le site web à tous. Google à la rescousse. Nope, pas de tutoriels utiles à tous.

    Je ne me sens pas à l'aise avec un framework d'INTERFACE qui s'efforce de cacher la documentation à partir du potentiel de nouveaux fans. Cela ne veut pas dire JGoodies, c'est mauvais, je ne pouvais pas trouver quelque chose de bon à dire à ce sujet, mais que c'est joli.

  4. JavaFX. Grand, élégant. Le soutien est là, mais je pense que c'est plus un jouet brillant qu'un véritable framework d'INTERFACE. Ce sentiment racines dans le manque de complexe de composants d'INTERFACE utilisateur comme un arbre tables. Il est basé sur webkit composant pour afficher le code HTML.

    Quand il a été introduit, ma première pensée a été "cinq ans trop tard." Si votre objectif est une belle application pour les téléphones ou les sites web, les bonnes. Si votre objectif est professionnel application de bureau, assurez-vous qu'il offre ce dont vous avez besoin.

  5. Pivot. Première fois que j'ai entendu à ce sujet. En gros, c'est un nouveau framework d'INTERFACE basé sur Java2D. J'ai donc fait un essai hier. Pas de Swing, tout petit peu de AWT (new Font(...)).

    Ma première impression a été une belle. Il existe une vaste documentation qui vous aide à obtenir commencé. La plupart des exemples sont fournis avec des démonstrations en direct (Remarque: Vous devez avoir Java est activé dans votre navigateur web; c'est un risque de sécurité) dans la page web, donc vous pouvez voir le code et l'application résultante de l'autre côté.

    Dans mon expérience, plus d'efforts dans le code que dans la documentation. En regardant le Pivot docs, beaucoup d'efforts doivent aller dans le code. Notez qu'il y a actuellement un bug qui empêche certains des exemples de travail (PIVOT-858) dans votre navigateur.

    Ma deuxième impression de Pivot, c'est qu'il est facile à utiliser. Lorsque j'ai rencontré un problème, je pouvais généralement de résoudre rapidement en regardant un exemple. Je suis en manque une référence de tous les styles de laquelle chaque composant prend en charge, si.

    Comme avec JavaFX, il manque quelques niveau plus élevé de composants comme un arbre composant de tableau (PIVOT-306). Je n'ai pas essayer le chargement paresseux avec la vue du tableau. Mon impression est que si le modèle sous-jacent utilise le chargement différé, alors que c'est assez.

    Prometteuse. Si vous le pouvez, essayez-les.

12voto

Zsolt Török Points 3148

SWT par lui-même est assez bas niveau, et il utilise la plate-forme native de widgets via JNI. Il n'est pas lié à Swing et AWT. L' IDE Eclipse et tous basés sur Eclipse Rich Client Applications, comme le Vuze BitTorrent client, sont construites en utilisant SWT. Aussi, si vous le développement de plugins Eclipse, on utilise en général SWT.
J'ai été en développement basé sur Eclipse applications et plugins pour près de 5 ans maintenant, donc je suis clairement biaisée. Cependant, j'ai aussi une vaste expérience de travail avec SWT et JFace UI toolkit, qui est construit au-dessus d'elle. J'ai trouvé JFace pour être très riches et les puissants; dans certains cas, il peut même être la principale raison du choix de SWT. Il vous permet de vous concocter un travail d'INTERFACE utilisateur assez rapidement, tant qu'il est en IDE (avec des tables, des arbres, des commandes d'origine, etc). Bien sûr, vous pouvez intégrer des contrôles personnalisés, mais qui prend un certain effort supplémentaire.

9voto

Augustus Thoo Points 377

Je voudrais suggérer un autre cadre : Apache Pivot http://pivot.apache.org/.

J’ai essayé brièvement et a été impressionné par ce qu’il peut offrir comme une RIA (Rich Internet Application) cadre ala Flash.

Il restitue l’interface utilisateur en utilisant Java2D, minimisant ainsi l’impact des héritages (OMI, gonflé) de Swing et AWT.

9voto

helpermethod Points 11015

Balançoire + SwingX + Miglayout est ma combinaison de choix. Miglayout est tellement plus simple que balançoires perçu 200 gestionnaires de présentation différente et beaucoup plus puissant. Aussi, il vous donne la possibilité de « debug » vos mises en page, qui est particulièrement pratique lors de la création de mises en page complexes.

8voto

nimcap Points 2738

Une autre option est d’utiliser Qt Jambi. Il a presque toute la grandeur de Qt (nombreux composants, bonne documentation, facile à utiliser), sans les tracas de C++. Je l’ai utilisé il y a 3-4 ans pour un petit projet, même dans ce cas, c’était presque mature.

Vous pouvez voir la discussion sur Swing vs Qt ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X