Quels sont les avantages et les inconvénients de C++ Qt vs Eclipse RCP pour le développement d'interfaces graphiques multiplateformes?
je vais développer une nouvelle interface graphique pour une application C++. L'application fonctionne sous Windows et Linux, et la communication avec GUI se fait par client/serveur.
Quels sont les avantages et les inconvénients entre Eclipse RCP et Qt?
2 réponses
Certains pros de l'intervalle Qt:
- les trucs c++ fonctionneront généralement mieux; cependant, c'est discutable.
- Qt est la base de Meego, la plateforme mobile parrainé par Intel, AMD et d'autres; cependant, son élan actuel ne semble pas trop élevé pour moi. Cela signifie que vous pouvez également créer des applications pour divers appareils mobiles et généralement intégrés
- il y a beaucoup d'applications basées sur Qt là-bas.
- il a un WYSIWYG designer.
- bon pour les petits à grands projets surtout à cause de QtQuick, qui permet la création de petites applications en peu de temps et avec des connaissances presque nulles sur C++
- Qt dispose d'un étonnant wrapper en Python appelé PyQt (il y a aussi le PySide bien sûr), qui permet un développement rapide et le prototypage lisse. Les gens utilisent souvent PyQt (ou PySide) pour le côté UI d'une application Qt à cause de cela. Vous pouvez bien sûr combiner avec la facilité Python et Qt dans le même demande de tirer parti de toutes leurs forces mais aussi des faiblesses). Cela permet des cycles de développement relativement rapides et doux, même pour les grands projets
Certains inconvénients de l'intervalle Qt:
- le code des applications basées sur Qt utiliser de certains éléments qui ne font pas partie du langage C++, qui doivent être convertis en C++ par un préprocesseur moc (Meta-Object Compiler)avant la compilation. Vous et votre build système à prendre en compte.
- Nokia (ancien propriétaire de Qt, car il acquis Trollech) a vendu à Digia. Toutefois, cela n' implique pas leur implication dans le développement de l'open source Qt a changé.
Certains pros de Eclipse RCP:
Eclipse RCP est beaucoup plus qu'une boîte à outils graphiques:
- il est doté d'une architecture basée sur un plugin qui peut aider distribuer les fonctionnalités entre les différents composants (plugins) et garder le contrôle des dépendances entre ces composants (plugins). Eclipse plugin system s'appuie sur leur propre implémentation de la spécification Java component system appelée OSGi.
- il fournit un mécanisme pour permettre l'extensibilité de l'application découplée appelé points d'extension.
Il y a plusieurs éclipses plugins que vous pouvez utiliser dans votre application et beaucoup d'entre eux ont des licences de distribution qui sont favorables aux produits commerciaux.
il a un WYSIWYG designer.
Quelques-uns des inconvénients de Eclipse RCP:
Eclipse utilise une boîte à outils de fenêtrage personnalisée appelée SWT; sur chaque plate-forme il s'appuie sur la couche graphique native. Sur Linux, il s'appuie sur Gtk+ (bien que ce soit aussi possible d'utiliser Motif), qui d'après mon expérience (et autres) a des problèmes de performance, la plupart du temps avec des widgets qui sont mis à jour à des taux élevés. En fait, beaucoup d'entre nous intègrent des éléments Swing dans les applications RCP Eclipse pour surmonter les problèmes de performance tout en gardant l'architecture extensible D'Eclipse; cela, cependant, peut apporter problèmes d'intégration. Il y a une version de SWT qui utilise Qt comme backend, mais son incorporation dans le codebase D'Eclipse semble stagné depuis octobre 2010.
temps de démarrage (c'est-à-dire le temps écoulé depuis le lancement de l'application jusqu'à ce qu'elle s'affiche dans une fenêtre) des applications RCP Eclipse peut être très long.
si vous avez l'intention d'intégrer des trucs C++ avec Java au moyen de JNI, sachez que certaines personnes trouvent qu'il est difficile.
Eclipse a beaucoup, beaucoup de bugs. bugzilla de L'éclipse est une ressource très utile pour le développeur RCP.
plus vous voulez éclipser l'apparence et le comportement de L'application RCP pour différer de L'IDE éclipse,plus vous aurez de problèmes.
Eclipse le développement du RCP a une grande courbe d'apprentissage, à mon avis.
utiliser Eclipse RCP pour de petits projets est fondamentalement un suicide (sauf si vous vous limitez à créer un plugin ou similaire). Il est conçu pour les projets de moyenne à grande envergure et de très grande envergure en raison de la complexité de son infrastructure, de ses besoins en ressources et de la courbe d'apprentissage abrupte mentionnée ci-dessus.
- Eclipse RCP N'est pas pour le développement mobile parce que...C'est RCP (Rich Client Platform). Si vous voulez aller mobile, ce n'est pas pour vous.
leurs deux licences de distribution (LGPL/GPL / commercial pour Qt, EPL pour Eclipse) sont suffisamment flexibles pour la plupart des utilisations, à mon avis. Néanmoins, je ne suis pas un avocat, donc je me trompe peut-être.
et bien sûr, d'autres facteurs tels que l'expérience des développeurs, leurs compétences techniques, la taille de l'équipe, les exigences concrètes, etc., doivent être pris en compte.
BTW, j'ai beaucoup d'expérience dans Eclipse RCP, mais seulement des connaissances théoriques sur l'intervalle Qt, donc je suis peut-être biaisé/trompé dans mes déclarations.
maintenant que Qt a une licence LGPL, je choisirais Qt n'importe quel jour de la semaine par rapport à Eclipse RCP.
j'ai utilisé les deux pour créer assez d'applications complexes.
puisque vous pouvez utiliser eclipse pour développer c++, je suppose que nous comparons principalement swt/jface vs Qt, et pas l'environnement de développement eclipse lui-même.
certaines choses que j'ai remarquées après avoir utilisé les deux:
1) Qt a une meilleure documentation et les échantillons
mis à part quelques exemples à moitié cuits sur le web, Je pourrais trouver peu de documentation eclipse utile.
2) Qt a beaucoup plus d'utilisateurs 'professionnels'
il y a de nombreuses entreprises professionnelles qui utilisent Qt comme cadre D'assurance-chômage. Étant donné qu'il est compatible avec trois plateformes (Windows, Linux, Mac), il est très flexible et a beaucoup de support.
3) QT tend à être plus complet et plus mature -
en utilisant Eclipse j'ai remarqué que très souvent les commandes, et les paquets qui étaient disponibles n'étaient que partiellement terminés, et pas tout à fait complets. Ils ont généralement été développés pour l'usage de quelqu'un, et seulement codé aussi loin que cela. Les contrôles de Qt étaient presque toujours une conception complète.
4) Style.
le rendu de Qt et D'Eclipse utilisant les bibliothèques de plate-forme locales, de sorte que votre interface utilisateur 'ressemblera' à d'autres interfaces UIs sur la plate-forme que vous utilisez (i.e. Linux vs Windows). Cependant, Qt fournit également assez sophistiqué style fonctionnalité qui vous permet de modifier l'apparence de tout contrôle, et vous donne beaucoup plus de contrôle sur l'apparence de votre application.
Avec le nouveau langage déclaratif (Qt 4.7.* ) vous approchez du niveau de contrôle du FPF, ce qui est vraiment incroyable.
5) concepteur de L'interface utilisateur:
Qt a un concepteur beaucoup plus riche qui vous permet de mettre en page votre formulaire, et faire des tests de base sans devoir compiler n'importe quel code. Le concepteur vous donne également la possibilité d'ajouter des interactions entre les commandes de votre formulaire. Ex. Cliquez sur ce bouton-désactivez cette option
Eclipse a également un concepteur de forme, bien que mon expérience avec elle est limitée. J'ai essayé de l'utiliser quelques fois avec un succès très limité. Finalement j'ai codé chaque forme à la main à travers le code. C'est douloureux.
6) interfaçage avec le code source existant
si vous n'avez pas ce problème, alors vous êtes très chanceux. Comme Qt est basé sur c++, il s'intègre parfaitement avec le code C et c++. Intégrer Java et C n'est pas facile.
7) Bibliothèques De Dessin
j'ai essayé de coder quelques formes dessinées à la main en utilisant les bibliothèques swt et j'ai été forcé de contourner de grandes parties de la bibliothèque de dessin swt, à cause du cludge qui était là. Utiliser Qt pour faire quelque chose de similaire n'était pas un problème du tout.
8) arbre et la Liste des Modèles
Eclipse fournit quelques fonctionnalités intéressantes pour les données propagées dans les arbres, les listes et les choses. Il est presque aussi bon en Qt, bien qu'un peu plus difficile à mettre en place.
9) Présentation De L'Application
Eclipse fournit de belles fonctionnalités pour gérer les 'vues (panneaux de dock), et les' perspectives ' (workflows) que si vous décidez de les utiliser rend la vie agréable et facile. Qt exige que vous le fassiez vous-même. Qt a la fonctionnalité de panneau de dock, mais lors de la construction d'une application riche vous devez mettre en place vous-même.
Note:
Qt a également fourni des bibliothèques supplémentaires pour supporter des choses comme xml,etc... Cela permet donc de combler un peu le fossé entre c++ et java pour des choses comme celles-ci.