IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

[votre avis m'interesse] Interface avec un programme Java [Débat]


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre actif Avatar de LineLe
    Inscrit en
    Septembre 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2003
    Messages : 285
    Points : 246
    Points
    246
    Par défaut [votre avis m'interesse] Interface avec un programme Java
    Bonjour!!

    Je débute en java, et j'ai du reprendre en main un projet relativement complexe en Java pour un projet sur les systèmes multi agents. Seulement voila, pour un autre projet, je dois également implémenter l'interface graphique de ce projet
    Je voulais donc savoir ce que vous me conseilleriez d'utiliser pour faire une belle interface (relativement aisément, manque de temps oblige... ) entre Qt, GTK et la librairie swt de java...

    On m'a dit qu'avec Qt on pouvait faire de beaux trucs rapidement mais que la communication entre les méthodes java et l'interface était pas forcément évidente. Concernant swt c'est clair que ce sera plus facile de l'intégrer, mais on m'a dit que c'etait galere pour faire une belle interface...

    Comme je ne connais ni l'un ni l'autre il faudra que je me mette de toute façon à l'un des trois... Mais lequel?

    En gros j'ai besoin de vos conseils, et de vos retour d'expériences!

    Merci d'avance !!

  2. #2
    Membre averti
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Points : 334
    Points
    334
    Par défaut
    Soyons clairs. Qt c'est une librairie C++, et ce que tu appelles SWT (je suppose que tu parles de Swing) c'est du Java. Alors interfacer une bibliothèque graphique en C++ avec du code Java, j'ai jamais essayé mais alors bon courage !

    Perso j'ai déjà bossé avec les deux, Qt et Swing et je peux t'assurer que les deux ont, sur le plan graphique du moins, la même tronche. En Qt il y a le mécanisme des slots/signals qui est très puissant mais de toute façon je ne vois pas comment tu peux interfacer ça avec du Java. En plus, à l'avantage de SWING il y a les PLAF (Pluggable Look And Feel) qui te permettent de faire une interface complètement skinnable en deux coups de cuiller à pot.

    Donc si tu veux faire une belle interface graphique pour un soft préexistant en Java (aaah la mode des systèmes multi-agents ! Vive la sauterelle !), je te conseille chaudement Swing. C'est tout aussi simple que Qt, ça peut être plus beau (avec le bon L&F) et surtout c'est à ma connaissance le seul moyen de faire une bonne interface graphique pour un programme Java (avec AWT bien sûr mais ça remonte à loin ça...).

    Si tu veux te faire une idée des belles interfaces qu'on peut faire avec Swing et les LNF, je te conseille ce site : http://www.javootoo.com

    Bon courage
    Sébastien ARBOGAST
    SCJP

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 46
    Points : 44
    Points
    44
    Par défaut
    Je suis débutant en Java mais bon il me semble que SWING et SWT c'est pas la meme chose, d'une part Swing est un compasant du JDK de java et est completement integres a Java alors que SWT est un composant qui permet de faire des interface natif et il est nécessaire d'installer une dll SWT sous windows un .so sous Linux, etc pour que le programme fonctionne.

    Enfin voila apres quoi prendre je peux pas te dire

  4. #4
    Membre averti
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Points : 334
    Points
    334
    Par défaut
    Alors SWT je ne connais pas, mais ma question reste posée : pourquoi s'embêter à utiliser une librairie externe native alors que Java t'offre, avec Swing, tout ce dont tu as besoin, avec la portabilité en plus (pas besoin d'installer de dll ou de so puisque Swing est présent dans toutes les distributions de Java.

    Au passage je me suis tuyauté sur SWT vite fait et le seul intérêt que j'y vois c'est un certain gain en performance du fait que la librairie utilise JNI pour accéder directement à la gestion graphique du système. La question est de savoir si ça vaut la peine...
    Sébastien ARBOGAST
    SCJP

  5. #5
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par rozwel
    [swt]La question est de savoir si ça vaut la peine...
    sans lancer un troll, je dirais que plus la version du JDK est récente et moins SWT est utile côté perfs
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  6. #6
    Membre averti
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Points : 334
    Points
    334
    Par défaut
    Je suis tout à fait d'accord avec ça étant donné que Swing s'intègre de mieux en mieux dans l'environnement du système sur lequel tourne la machine virtuelle. Il suffit de regarder l'évolution de l'interface de JFileChooser par exemple pour s'en rendre compte, ou encore l'évolution des JComponent qui, dans le thème de la plateforme sur laquelle tourne la machine virtuelle, sont dessinés par le système lui-même.

    D'ailleurs du peu que j'ai pu en voir, j'ai l'impression que SWT est sur le déclin devant les améliorations constantes de Swing. Apparemment cette librairie a été initiée vers 2001, date à laquelle Swing était effectivement très lourd. Mais les réalités ont changé...

    Pour conclure sur la question initiale. Je pense ne pas me tromper en affirmant qu'interfacer une GUI Qt avec un core Java me semble très très difficile. Idem pour les autres API graphiques non-Java (comme c'est le cas de GTK il me semble). Donc le vrai choix se pose entre SWTet Swing (AWT étant plus ou moins exclu pour des interfaces "haut-niveau" comme pour un système multi-agent par exemple) et tu connais déjà mon avis sur ce choix...
    Sébastien ARBOGAST
    SCJP

  7. #7
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    conclusion:

    VOTEZ SWING

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 85
    Points : 73
    Points
    73
    Par défaut
    Sinon y a aussi SwingWT pour contrer les developpeurs d'Eclipse (c eux qui on tpondu SWT). Pour ca il faut coder avec swing, telecharger l'API SwingWT et remplacer les import javax.swing part SwingWT. Car les methodes portent les meme nom

    Mais j'ai jamais essayer donc c'est à voir. Mais comme dis ci dessus plus la JDK est récente et moin c'est performant mais c'est encore relativement réssent .

  9. #9
    Membre actif Avatar de LineLe
    Inscrit en
    Septembre 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2003
    Messages : 285
    Points : 246
    Points
    246
    Par défaut
    Tout d'abord, merci pour vos réponses!

    La personne qui m'avait parlé de l'interface avait bien parlé de SWT et non de swing... (meme si personnellement j'ai encore du mal a voir la difference fondamentale entre les deux )
    Tout ce que j'ai vu c'est que quand j'ai fait ma recherche sur mon ami google... ben il y avait beaucoup moins de reponses pour swt...

    Et comme je suis une vraie débutante en java... ben j'ai du mal à tout comprendre et donc à voir les différences entre les deux, et ainsi les avantages et les inconvénients de l'un et de l'autre...

  10. #10
    Membre averti
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Points : 334
    Points
    334
    Par défaut
    Alors si tu es "une vraie débutante en Java", clarifions et simplifions les différences.

    La plateforme Java intégre sa propre API GUI (Graphical User Interface ndlr), qui s'appelle Swing. Elle en intègre aussi une autre, plus ancienne, plus intégrée au système et beaucoup moins puissante qui tend à mon avis à disparaître et qui s'appelle AWT.

    A coté de ça tu as toute une floppée de librairies qui offrent ce genre de fonctionnalités mais il faut bien distinguer les librairies Java des non Java. Certains déçus de la faible performance de Swing du début ont pris des routes alternatives, comme SWT ou SwingWT, mais concrètement elles n'apportent pas grand chose par rapport aux efforts d'intégration qu'il faut faire pour les utiliser.

    Alors définitivement, si tu cherches une solution simple et efficace, utilise Swing. De toute façon, elles utilisent toutes peu ou prou les mêmes fonctions, il n'y a que l'implémentation qui change derrière. Et surtout un autre avantage qui n'a pas été cité encore pour Swing : c'est du made in Sun Microsystems, donc en fiabilité c'est forcément beaucoup plus stable qu'un projet Open Source... en tout cas d'après mon expérience.
    Sébastien ARBOGAST
    SCJP

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 46
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par rozwel
    Alors SWT je ne connais pas, mais ma question reste posée : pourquoi s'embêter à utiliser une librairie externe native alors que Java t'offre, avec Swing, tout ce dont tu as besoin, avec la portabilité en plus (pas besoin d'installer de dll ou de so puisque Swing est présent dans toutes les distributions de Java.
    J'ai jamais dit le contraire d'ailleurs j'ai choisis SWING pour mon projet c'était juste pour clarifier ce que tu pensais qu'étais le SWT.

    Sinon Linele apres différente recherche j'opter pour SWING, donc a mon avis écoute Rozwel (meme si je suis pas d'accord qu'un projet open source est moins stable).

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 85
    Points : 73
    Points
    73
    Par défaut
    Certains déçus de la faible performance de Swing du début ont pris des routes alternatives, comme SWT ou SwingWT, mais concrètement elles n'apportent pas grand chose par rapport aux efforts d'intégration qu'il faut faire pour les utiliser.
    Juste comme ca SwingWT y a rien de plus facile a integrer. Il suffit de coder avec Swing et ensuite de modifier simplement les import. Bien entendu il faut telecharger les API.

    Sinon si tu veux pas d'embeter utilise swing comme on te l'a conseillé. Sinon t sur que c'est pas de awt dont on a parlé parceuqe SWT c'est vraiment pas répendu, mais alors pas du tout.

    http://swingwt.sourceforge.net/

    Pour le swingWt

  13. #13
    Membre actif Avatar de LineLe
    Inscrit en
    Septembre 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2003
    Messages : 285
    Points : 246
    Points
    246
    Par défaut
    Salut!

    oui oui je suis sure pour le SWT... il avait meme insisté pour que je ne prenne pas le awt parce que selon lui on pouvait des trucs beaucoup plus jolis avec swt...

    Donc visiblement Qt est à écarter, gtk n'a pas inspiré grand monde...

    maintenant reste la grande question entre swing, swt, et SwingWT...

    sinon à ce que j'ai cru comprendre, SwingWT ça aurait la meme tete que SWT mais codé à la façon de Swing...

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    salut je viens de lire toutes vos réponses et je commence à me poser des questions sur mon propre projet :

    logiciel de traitement d'image pour 1 labo de bio

    toute la partie calcul, traitement de l'image est en c++, et je me suis dit que j'allais faire l'interface en Java en passant par la JNI : j'ai deja fait deux interfaces en java, jamais en c++, je ne connaissait pas de librairies et d'outils en c++ pour faire aussi bien ke swing....
    alors les librairies c++ dont vous parlez elles sont si bien que ça ? est-ce ke l'on retrouve toutes les possibités offertes par swing? est-ce que je me fait chier pour rien en faisant mon interface en java? ou est-ce ke ça serait encore plus de temps perdu d'utiliser des librairies ke j'ai jamais utilisé?
    voila pour l'instant j'ai fait la structure des fichiers et coder la communication avec la partie c++ (pas mal de temps passé à règler la JNI...) mais pas commencé à coder les objets swing

    alors ?
    merci

  15. #15
    Membre averti
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Points : 334
    Points
    334
    Par défaut
    Alors écoute perso je m'étais frotté aux MFC de Visual C++ 6 pour la partie graphique et je trouve cette API particulièrement insupportable. Personnellement je suis convaincu que c'est très puissant mais c'est une véritable usine à gaz.

    Il y a d'autres solutions d'API graphiques pour C++. Elles sont beaucoup plus nombreuses que pour Java. Il y a les WinForms de .NET que je ne connais que de nom, mais dont on m'a dit qu'elles étaient très puissantes... mais réservées à des projets .NET
    Sinon il y a aussi WxWidgets qui est une librairie Open Source multiplateforme que je n'ai pas utilisé directement mais un pote dans un projet parallèle l'avait utilisé et ne m'en a dit que du bien. En plus ça s'intègre pas mal dans des EDI Open Source qui au final de permettent d'avoir un vrai environnement de développement alternatif à Visual.

    Moi personnellement l'API que j'ai le plus utilisé ces derniers mois c'est Qt. C'est une véritable merveille cette librairie. Ca fait du graphique et ça fait plein d'autres choses et ça le fait bien. Et c'est cross-platform, et c'est livré avec des outils très puissants, notamment QtDesigner qui est le soft de fabrication d'interfaces le plus flexible et le plus simple que j'ai utilisé jusqu'à présent : pas de fioritures, juste l'essentiel, tu disposes tes boutons, tu cliques sur un bouton et hop c'est dans un layout. Un vrai bonheur ! Sans parler de tous les mécanismes surpuissants intégrés dans Qt (ils n'ont pas inventé la roue mais ils ont tout rassemblé) comme les signaux/slots ou encore les boites de dialogues compilées à l'exécution : tu fais une boîte de dialogue dans QtDesigner, tu mets ton initialisation dans un fichier C++ à part, ta boîte de dialogue en elle-même elle est enregistrée dans un fichier XML et dans ton code tu peux charger ce fichier XML pour construire ta boîte de dialogue à la volée. En plus c'est livré avec QtAssistant (et une documentation en béton armé, comme celle de Java) et QtLinguist pour l'internationalisation qui est gérée en natif.

    Comme tu peux le voir j'ai été emballé... le seul petit inconvénient c'est que chez TrollTech (la boîte qui développe Qt), ils sont un peu sectaires à l'égard des développeurs Windows et la version non-commerciale de la librairie est super dure à trouver. Moi j'ai fini par acheter cet excellent bouquin qui est livré avec un CD avec Qt3.2.1 non commercial et tout ce qu'il faut pour l'installer le compiler et l'intégrer dans un EDI Microsoft. Sinon si tu développes sous Linux tu n'auras aucun problème pour trouver la version libre. Après si c'est pour un développement pro, je crois qu'il y a une licence.

    Voila pour Qt. Pour le support français, il y a ce forum en attendant que DVP fasse une rubrique pour Qt

    Tout dépend à quel point tu es avancé mais pour moi, avec JNI tu vas te faire suer rapidement, sans parler des problèmes de performances d'une GUI java sur un core C++. Qt est simple d'accès, ça m'a pris quelques semaines pour maitriser les bases et en tout cas largement assez pour faire une GUI. Sinon je te conseille vraiment le bouquin cité plus haut. C'est LE bouquin officiel et il facilite vraiment l'apprentissage en donnant des exemples immédiatement exploitables.

    Voila bon courage

    @+++
    Sébastien ARBOGAST
    SCJP

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    merci bien je vais jetter un oeil attentif à Qt, si c pas trop long à maitriser je pense que je vais me jetter là dedans, paske c clair que la JNI c un peu lourd dès que tu as pas mal de données à transfèrer de la partie c++ à la partie jave et vice et versa. J'ai bien mis 5h à comprendre comment ça marchait et à transfèrer des tableaux de string et d'entiers...

    bye

  17. #17
    Membre averti
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Points : 334
    Points
    334
    Par défaut
    De toute façon, par expérience y'a surtout deux utilisations où JNI est vraiment utile :
    • L'interfaçage avec des librairies de traitement faites dans des langages spécialisés comme Matlab par exemple

    • Quand tu as besoin d'accéder à des éléments avancés du système, genre la base de registres où des composants ActiveX


    Dans tous les cas personnellement je vois plus JNI comme une interface gros bout java vers petit bout autres que l'inverse. Donc si la majorité de ton code est en C++, prend une librairie graphique C++, c'est clair.

    Mais faut qu'on fasse attention on est en train de parler de C++ et de librairies C++ dans un forum Java

    Bon courage @+++
    Sébastien ARBOGAST
    SCJP

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 85
    Points : 73
    Points
    73
    Par défaut
    Un petit lien comme ca pour le fun sur SWT : http://jmdoudoux.developpez.com/cours/developpons/java/

    Voir aussi les excellents cours et tutoriels programmation java : http://java.developpez.com/cours/

  19. #19
    Membre averti
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Points : 334
    Points
    334
    Par défaut
    Mais ce document est tout à fait hallucinant. Si un mod m'entend, il est quasi obligatoire de le mettre dans la section tutos java c'est une des docs les plus larges que j'aie vues jusqu'à présent. Certains points sont couverts un peu brillamment mais elle est amenée à évoluer je pense.
    Un vrai must... dommage qu'elle ne soit pas téléchargeable parce que j'en ferai facilement une petite référence.
    Sébastien ARBOGAST
    SCJP

  20. #20
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 46
    Points : 44
    Points
    44
    Par défaut
    Moi qui suis débutant je confirme, j'y jette souvent des coups d'oeil car elle aide vraiment

    Edit : j'oubliais il y aussi un un guide pour développer en JAVA avec Eclipse

    D'ailleurs il ya meme les versions téléchargeable en PDF

    Voici le site http://jmdoudoux.developpez.com/cours/developpons/java/

    Et jetter un coup d'oeil rubrique Java

Discussions similaires

  1. Réponses: 16
    Dernier message: 14/09/2007, 12h52
  2. BTS IG - Lacunes en maths, votre avis m'interesse
    Par leodavinci94 dans le forum Etudes
    Réponses: 8
    Dernier message: 05/09/2007, 09h14
  3. Votre avis m'interesse !
    Par BrItneY dans le forum Flash
    Réponses: 24
    Dernier message: 28/06/2006, 15h42
  4. [Plugin][WTP] votre avis m'interesse.
    Par phalae dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 22/02/2006, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo