JavaFX 2.0 et Qt pour une application multiplateforme
J'ai besoin d'un peu de conseils auprès de vous des développeurs qui traitent de la croix-plate-forme d'applications (plus précisément des programmes avec une interface graphique).
Je vais créer une application dès que besoin d'être multi-plateforme et donc, j'ai fait quelques recherches préliminaires sur deux cadres différents: JavaFX 2.0 et Qt.
Honnêtement, les deux auraient plus de répondre à mes besoins. Alors je me suis demandé pourquoi j'ai choisi de l'un sur l'autre (SPOILER ALERT: je ne connais pas la réponse 😛 ). Je sais que JavaFX 2.0 est assez nouveau (2012) et n'est pas entièrement pris en charge sur les plates-formes, mais il sera finalement.
La question que je pose est: est-ce l'une de ces utiliseriez-vous pour une application multiplate-forme, et quels critères avez-vous regarder lors de la prise de cette décision?
Merci d'avoir pris le temps de lire ceci! 🙂
EDIT:
Pour votre référence lors de l'examen de cette question, l'application que je vais écrire implique la lecture/écriture de fichiers XML, de l'affichage des images et la création de certains petits widgets avec des fonctionnalités personnalisées. J'ai écrit une application en C# avec .NET, mais voudrait des conseils lors de l'examen de JavaFX 2.0 ou Qt pour la croix-plate-forme de convivialité.
Merci encore! 🙂
source d'informationauteur FooBar
Vous devez vous connecter pour publier un commentaire.
C'est la vieille question: stabilité vs bord de saignement. Je vais essayer de vous donner quelques réflexions personnelles basées sur les fonctionnalités de vos applications.
Bien, il est entièrement pris en charge sur Linux, Windows et Mac. Je peux dire que parce que je suis le développement d'un JavaFX 2.2 application dans Mac lequel le serveur tourne sur une machine Linux et les clients sur Windows boîtes.
Je suis encore à voir certains outil/interface mieux/plus facile, plus rapide que sax2 pour parser XML. Bien sûr QtXMLPatterns module analyseur deservers respect, mais ils sont à même d'élaborer un SAX2 basé sur XML parser (Qui en passant n'est pas complète et ne pas être entièrement compatible avec les anciens SAX1 méthodes) je dirais donc qu'ajouter JavaFX 2 certaines score.
Les deux technologies permet d'afficher des images avec assez de facilité, mais JavaFX 2.2 manque un peu d'outils pour de manipulation de l'image (Spécialement format codecs). Si le traitement d'image est une question cruciale, je dirais que Qt est très légère hausse de l'avant dans la lutte.
Comme de maintenant, ce n'est pas une tâche facile dans JavaFX 2 depuis la Scène de l'objet n'a pas une option comme ALWAYS_ON_TOP et ne pas avoir jusqu'à 3.0 (quelque part en 2013), Il n'est pas impossible difficile, mais Qt a déjà quelques bons outils pour personnaliser/afficher/gérer les widgets que nous ne peuvent tout simplement pas se reproduire en JavaFX.
Bien, JavaFX 2.2 est faite de et pour Java. Personnellement, je trouve programmer en Java beaucoup mieux et facile que le C++. Vous n'aurez jamais de mal avec les pointeurs en java, vous pouvez toujours compter sur le Garbage Collector pour la gestion de la mémoire, il y a une abondance de la documentation et les tutoriels sur le web (ce qui, je crois surpasse C++) et un toujours croissant de Java Gourous de la communauté.
En résumé, j'ai choisir de JavaFX 2.2 parce que c'est joli, parce que c'est cool, parce que je peux gérer le MVC plus facilement et parce que j'aime Java, mais je crois que vous devriez aller pour Qt si le widget partie de votre application est le but principal.
J'espère que ça a aidé, merci
Je suis actuellement à la recherche des différentes croix-plate-forme des cadres appropriés pour le développement d'un mode hors connexion html5 application de création. Au-delà de la croix-plate-forme d'exploitation (Windows, Linux, OS X), mon app a également ces exigences principales:
De base de données intégré
Embarqué (ou, secondairement, un grand navigateur HTML5 moteur de rendu
Haut-fonctionnement modifiable MDN arbre, un diviseur de bord, et l'éditeur de texte enrichi, des widgets
Moyen-obligation de traitement d'image
Clé USB portabilité
J'ai pris un air sérieux à ces cadres:
jQuery (JavaScript), HTML5, CSS3
Google Web Toolkit [GWT] (Java, JavaScript)
JavaFX 2.0 (Java)
QT (C++ (Java liaison disponible))
Xulrunner (XML, JavaScript)
GTK+ (C)
Adobe Air
Pyjama
J'ai passé un mineur de fortune sur les livres pour l'ensemble de ces technologies, et j'ai commencé le codage des prototypes pour voir à quelle vitesse et dans quelle mesure chaque cadre pourrait me prendre.
D'abord, JavaFX 2.0 m'a pris le plus loin le plus rapide, par une grande marge. L'explication simple pour cela est, avec JavaFX, tous les outils, des IDEs, des bibliothèques, de la documentation, des exemples de code, assainissements, le débogage, le soutien de la communauté, le fabricant (Oracle), et les courbes d'apprentissage sont venus avec le moins de désadaptation d'impédance.
Probablement JavaFX la plus grande victoire a été la facilité de mise en œuvre côté client de base de données intégré (Derby). Avec tous les autres cadres, cette tâche était, étonnamment, beaucoup plus difficile et " encombrants.'
Malheureusement, j'ai couru dans une grave JavaFX pierre d'achoppement quand j'ai découvert la WebView widget ne pas exécuter le code JavaScript à partir d'un fichier local://Url. QtWebKit, GTKWebKit, Safari et Opera (tous basé sur WebKit) présentent également la même file://JavaScript comportement de blocage (cependant Chrome ne fonctionne pas), j'ai donc conjecturer c'est un défaut WebKit mesure de sécurité.
À l'époque, j'ai considéré le fichier://JavaScript problème de JavaFX clou du spectacle alors j'ai déménagé sur le développement de jQuery, GWT, et Xulrunner prototypes. En conséquence, si, ma le prototypage de la productivité a fait un grand plongeon. Le Frankensteining et de désadaptation d'impédance avec ces autres cadres a été bien pire qu'avec JavaFX.
Tellement qu'après de nombreuses semaines à errer dans les mauvaises herbes, je suis retourné à mon JavaFX prototype très motivés pour trouver un travail autour de. J'ai finalement résolu le problème en intégrant Java SE 6 du serveur web dans le prototype, et de se connecter à des fichiers locaux par le chargement du JavaFX WebEngine avec les Url au format suivant: "http://localhost:58357/xxxxx.html" Déblocage en Charge le prototype de cette manière était comme rentrer à la maison. C'était une vraie bouffée d'air frais, pour ne pas mentionner grande productivité.
Sur la base de ces expériences, voici quelques idées qui pourraient se révéler utiles dans le JavaFX vs Qt débat.
#1 et #2 favori, la plupart des choix de production.
le cadre est tellement forte et tellement chargé avec un potentiel pour x-plate-forme
le développement de l'application que j'irais jusqu'à dire que c'est
incontournable. Dans mon vaste recherche pour les commandes de widget, le
les principaux candidats pour modifiable MDN arbre, répartiteur de panneau, et riche
texte de l'éditeur wysiwyg widgets s'est avéré être open source jQuery
les plugins. Une fois que vous obtenez sur le terrain, file://problème,
jQuery/HTML5/CSS3 est bien compatible avec le JavaFX WebView
widget de. Le seul domaine où jQuery/HTML5/CSS3 tombe court est avec
côté client, le stockage de base de données. C'est là une combinaison de JavaFX
et jQuery/HTML5/CSS3 cadres s'avère extrêmement puissant.
Langage JavaScript wrappers sens développeurs n'ont pas besoin de connaître ou d'utiliser
C++ pour utiliser Qt.
soit-ou la question. En fait, plus constructive et enrichissante
la question pourrait bien être, "JavaFX ET Qt?"
le meilleur de la croix-plate-forme de développement d'application du cadre est en fait un
l'amalgame de JavaFX 2, straight-up de Java SE Swing (pour une ancienne coutume
widget), WebKit, et jQuery/HTML5/CSS3. En bas de la route, GWT,
associé tiers GWT bibliothèques, et des modules de Qt
potentiellement rejoindre le mélange. Le point ici est le plan pour l'utilisation d'un seul,
génétiquement purs cadre rapidement sortit par la fenêtre.
cadre ensemble est de plain old Java SE. Et parce que JavaFX 2 est
construit sur Java SE, mon vote est de commencer avec JavaFX 2, puis ajouter le Swing,
WebKit, jQuery/HTML5/CSS3, GWT, et Qt sur une base comme-nécessaire.
http://fxexperience.com/2012/04/interview-with-peter-zhelezniakov/
--H
Je vois depuis le timestamp qu'il était de 4 mois, quand j'ai signalé que j'avais choisi JavaFX2 sur QT pour mon prototypage projet de recherche. Environ 2 mois, j'ai commencé à commutation de JavaFX2 en QT, et je n'ai pas regardé en arrière depuis. Le principal point de discorde était la transition du prototypage à la production. Pour l'écriture de code de production, QT s'est avéré être miles d'avance de JavaFX2.
Comme toujours, le diable est dans les détails, et c'était un tas de petits trucs qui ont fait une grosse différence. Avec JavaFX2, j'ai été constamment de les confronter et de travail autour de ce genre de petites choses incontrôlables splitter-volet comportement de redimensionnement, limité contrôle d'arborescence, et limitée WebKit l'accès à l'API (par exemple, essayez la mise en œuvre de navigateur boutons de zoom, ou d'enregistrer l'intégralité d'une page web dans un fichier html local - c'est faisable, mais 100X moins agiles que ce qu'elle devrait être). Additionnées, ces "petites" solutions de rechange ralenti les progrès réalisés à l'arrêt.
Avec QT, tels obstacles sont beaucoup moins présent, et comme un résultat, du prototype au produit a été naturelle, transparente, et les ordres de grandeur plus rapide.
Sur le revers de la médaille, arriver à "Hello World" avec QT a pris beaucoup plus de temps. Une fois là, cependant, la productivité a vite pris le pas et de loin dépassé JavaFX2. L'une des raisons pour cela est la documentation de QT, les programmes d'exemple, la communauté de développeurs et sont beaucoup plus vastes. QT a été autour depuis 1992, JavaFX2 depuis 2011, et cette différence d'âge fait une différence significative dans les niveaux de maturité des deux GUI cadres.
Que pour le Java vs C++ question, n'a pas été du tout un problème. Les deux sont grandes langues. Personnellement, pour une variété d'efficacité, de productivité, et des raisons de performances, je suis la recherche C++ pour être le supérieur de la langue GUI, mais encore une fois, c'est une conclusion personnelle.
En venir .NET/C#, vous devriez également considérer Real Studio comme un moyen de créer des applications multiplates-formes. Il a certainement répond à vos exigences de ce que vous essayez de créer et sera beaucoup plus simple que JavaFX ou Qt.