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 ?
Réponses
Trop de publicités?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:
- par exemple, si vous avez besoin avancée fonctions de création de graphiques, il n'y a pas d'équivalent pour JFreeChart dans le JavaFX environnement (encore) - va pour JavaFX est probablement pas dans votre intérêt dans ce cas.
- autre exemple: certains des composants avancés de SwingX ne sont pas disponibles dans Java FX (par exemple: arbre table)
- 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
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.
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
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.
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.