109 votes

JavaFX ou Swing?

Je voulais juste vos commentaires sur quelque chose en ce qui concerne Java. Serait-ce un bon investissement pour étudier JavaFX pour mes interfaces utilisateur, ou s’en tenir à la balançoire serait plus facile ou plus pratique ?

97voto

assylias Points 102015

Plusieurs réponses se concentrent sur une fonction de comparaison de ma réponse, essaie de donner un feedback personnel de mon utilisation de JavaFX 2 pour l'instant:

L' --

  • Intégration avec Swing dans une rue à sens unique: vous pouvez intégrer JavaFX 2 scènes dans un ventail, mais vous ne pouvez pas faire le contraire - il peut être un problème si vous avez déjà de nombreux composants Swing.
  • Corollaire: il est important de déterminer le nombre de bibliothèques de composants:
  • moins de soutien est souvent citée - je n'ai pas trouvé très pénalisant jusqu'à présent - il y a déjà beaucoup de ressources en ligne et JavaFX 2 questions sur qui ont tendance à attirer des réponses (certes pas aussi vite que Swing)

L' ++

  • Avis subjectif: je préfère L&F de JavaFX plus de Swing, beaucoup. La meilleure façon est de trouver par vous-même en exécutant l'une des nombreuses démos maintenant disponible en ligne ou par la vérification des snapshots sur Oracle site officiel
  • La facilité d'utilisation (subjective de nouveau): personnellement, je préfère le design général de Java FX: large utilisation des médicaments génériques, en liaison / propriétés disponibles dans l'API standard. Mais à la fin c'est un événement axée sur l'environnement, semblable à Swing
  • Fil de sécurité: les exceptions sont envoyés lorsque JavaFX 2 composants sont appelés à l'extérieur de la thread GUI - je préfère ça que bizarre non identifié comportement lorsque la même chose se passe dans les Swing - vous ne savez pas si il y a une couverture de 100% si
  • Stabilité: les versions antérieures eu quelques bugs, mais je n'ai pas rencontré de bugs dans 2,2 encore - bug tracker disponible publiquement
  • Des cycles de publication: j'ai trouvé le développement très actif, avec des bugs en cours de correction très rapide et les nouvelles fonctionnalités ajoutées très régulièrement. Ils ont également été de travailler sur la performance
  • Intégration:
    • JavaFX 2 est désormais de la partie Java SE
    • JavaFX 2 est maintenant disponible pour Windows, OSX et Linux
    • JavaFX 2 offre une bonne intégration avec Java Webstart
  • Open source: je comprends que les contrôles de l'INTERFACE utilisateur ont été open source (open JDK) - pas sûr du reste

Mise à jour

Il est intéressant de noter que moins de 6 mois plus tard, certains de ce qui précède est déjà devenu obsolète. Par exemple:

  • JavaFX est maintenant disponible sur les processeurs ARM et une version pour ios et android va bientôt être open source (info enterré au milieu de ce poste, en montrant que, beaucoup plus ouverte de l'approvisionnement a été en cours).
  • Beaucoup de nouvelles fonctionnalités sont prévues pour JavaFX 8, qui sera livré avec Java 8 au 1er trimestre 2014, y compris un TreeTableView (cf. l'un de mes commentaires dans la section), un nouveau moteur 3D et la possibilité d'intégrer des composants Swing dans une application JavaFX..

Ligne du bas: les inconvénients sont triés et JavaFX 8 devrait résoudre la plupart des problèmes mentionnés ci-dessus.

Note: je n'ai aucune affiliation que ce soit avec JavaFX

31voto

oxbow_lakes Points 70013

Je pense que l' utilisation de JavaFX sera plus difficile en raison du manque relatif de documentation, des tutoriels, des exemples , etc. De plus, je dirais que JavaFX suppose un peu de pré-familiarité avec Swing, par exemple le modèle d'événement ( ActionListener s etc) et le thread de distribution des événements.

Il y a 10 ans de ressources Swing et de bibliothèques sur Internet.

23voto

Daniel De León Points 2842

JavaFx est assez bon pour créer l'interface graphique et est moins cher que de Swing pour les applications de bureau. Livré avec un support pour de nouvelles caractéristiques comme les multi-touch. En un rien de temps, vous pouvez créer de magnifiques moderne se moque de votre INTERFACE utilisateur avec JavaFX Générateur de rapports, et de votre interface est similaire dans tous les environnements d'OS, avec le look que vous donnez, avec l'aide de CSS. Mais il n'est pas parfait: il y a des petits bugs ici et là, que vous devez les fixer avec les solutions de contournement (rien de trop grave). JavaFX a besoin de plus de puissance informatique que Swing, pour être vraiment bon.

De l'autre côté nous avons Swing, ce qui est bon et fiable. Vous pouvez créer rapidement des graphiques traditionnelles de mise en page (avec Netbeans) mais c'est vraiment lourd spécial pour la personnalisation de l'interface. Une fonctionnalité intéressante est que votre application graphique peut regarder en natif, en vertu de l'OS dans lequel il s'exécute, mais qui peut vous emmener à la tristement célèbre "Écrire une Fois, le Débogage de Partout, surtout quand vous voulez "non indigènes" comportements de l'INTERFACE utilisateur, et qui est où le Swing sera coûteux de programme.

Donc, si vous développez une application avec base de GUI besoins, utiliser le Swing sans doute. Lorsque le regard de l'application est la clé pour le succès de votre produit ou si vous avez besoin pour créer des interfaces personnalisées commponents, alors vous devez utiliser JavaFX, car il est livré avec plus de fonctions dynamiques.

FYI: JavaFX Scene Builder 1.0 http://www.oracle.com/technetwork/java/javafx/downloads/index.html

20voto

Eric Wendelin Points 13805

Points à considérer:

  • JavaFX est jeune, donc il n'a pas beaucoup de documentation. Toutefois, en fonction de ce que vous faites, il est beaucoup plus facile à utiliser. Par exemple: pour ajouter un gestionnaire de clic à n'importe quel nœud, il suffit d'ajouter onMouseClicked: myfunction(e:MouseEvent) dans la déclaration. Vous aurez plus d'exemples pour le Swing.
  • Il est beaucoup plus facile de commencer avec JavaFX que pour le faire plus tard. Vous n'avez pas à vous inquiéter à ce sujet car vous êtes un étudiant.
  • JavaFX a considérablement gagné en popularité depuis sa version 1.2. Il n'est pas encore dominant, mais pourrait être une bonne technologie de vous investir pour l'avenir (la pensée téléphones mobiles)

Puisque vous êtes un étudiant, je préfère personnellement-à-dire JavaFX. Assurez-vous qu'il est plus difficile de commencer, mais je pense qu'il va payer avec sa relative simplicité par rapport à Swing plus tard.

16voto

Deepak Mishra Points 1996

Je ne pense pas qu'il ya quelque chose que vous ne pouvez pas faire avec Swing. La gestion des événements ne devrait pas être un problème si vous avez fait votre cœur de java devoirs. Si vous à la recherche d'une meilleure Isu puis remplacer méthode de peinture, utiliser GradientPaint et d'expérimenter avec la LookAndFeel.

À noter également, dès à présent, vous ne peut pas redistribuer JavaFX avec votre application. Mais vous pouvez regrouper JRE avec votre application, qui contient le swing des bibliothèques.

Mise à JOUR

Natif De L'Emballage

Oracle fournit différentes méthodes de déploiement d'applications JavaFX. L'un d'eux est Application Autonome De L'Emballage.

Le paquet est tout simplement un seul dossier sur votre disque dur, qui comprend toutes les ressources de l'application ainsi que d'Exécution Java. Il peut être redistribué comme est, ou vous pouvez créer un paquet installable (par exemple, EXE ou DMG format).

Votre application est facilement mis en œuvre sur des systèmes sans frais exigence pour le Runtime Java doit être installé.

Mais l'application ne sera pas de mise à jour automatique comme dans le cas d'une Applet ou Web Start. Il est de la responsabilité des développeurs. Mais, vous pouvez voter pour la fonctionnalité "Ajout de la possibilité de mettre à jour automatiquement les co-livré app" sur JIRA

Je recommande cet Oracle blog pour JavaFX natif de l'emballage. Ils font un excellent travail. Faut le dire.

Pas Toujours au Top

Mais, JavaFX, mais ne fournit pas d' Always On Top la JFrame dans swing, qui est régulièrement utilisé. Vous ne pouvez pas déplacer votre JavaFX application sur la barre des tâches de windows. JavaFX 2.2 Scène toujours au top

JavaFX est pas thread-safe

JavaFX utilise le même EDT pivotant et n'est pas thread-safe. Il utilise un SwingWorker cousin. Comme indiqué dans un commentaire de William Billingsley :

J'espérais JavaFX 2.0 serait de passer à l'étape de l'être thread-safe. Les tâches semblent toujours fondée sur l'idée que l'UI thread tâches sont longues et peu nombreuses. Que de cœurs d'augmenter, il me semble que hors-fil tâches à l'avenir pourrait être courts et nombreux. Donc, la Tâche serait de plus en plus passe-partout qui jonchent le code.J'avais tranquillement espère JavaFX 2.0 serait conçu de manière à être thread-safe, et que le défaut serait que l'Application ne vous asseyez pas sur l'event dispatch thread, mais entièrement dans un ou plusieurs threads de travail

Fxexperience Blog

À l'heure actuelle, il existe très peu d'endroits où vous pouvez trouver de l'aide sur JavaFX, mais Oracle est la promotion de la nouvelle plate-forme avec le FX Expérience de blog pour les dernières mises à jour, des démos et des liens provenant de sources différentes. Ils offrent une superbe vue panoramique, qui aide dans la conception et la visualisation de votre application en cours de développement.

BAS DE LIGNE

J'ai toujours personnellement préfèrent Swing en raison de l'immensité des ressources disponibles sur internet, et la communauté qui l'entoure. "Swing n'est pas Encore mort". Mais JavaFX a l'air prometteur en effet.

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