# Java > Interfaces Graphiques en Java > AWT/Swing >  Comparatif swing/eclipse RCP pour faire du client lourd [Dbat]

## joseph_p

Bonjour

Je me pose en ce moment la question suivante "quels sont les avantages et inconvnients respectifs d'eclipse rcp et swing en vue de faire du client lourd" ? 

Pour eclipse RCP, je vois :
en + : 
 # mcanisme de mise  jour
 # environnement prconstruit
 # communaut active
en - :
 # SWT : pb du look sur diffrents os
Pour swing je vois :
en + :
 # portabilit 
en - :
 # tout  faire, pas de rutilisation possible

Qu'en dites vous ? Comment complteriez vous cette liste ?

Merci d'avance
ZedroS

----------


## sinok

Pour swing:

Tout refaire c'est un peu limite quand tu vois le nombre de composants, de framework dispo sur le net rien que pour en citer deux gros:
Swinglabs (en fait un regroupement de plusieurs projets dont swingx, JDIC...)l2fprod commons qui n'est pas mal dans son style
Sinon tu peux parfaitement faire du RCP en swing: 

http://spring-rich-c.sourceforge.net/

Niveau communaut swing n'est pas dpourvu non plus, de loin pas...


Sinon vis  vis de SWT un petit dsavantage  rajouter: la gestion manuelle de la mmoire... Au revoir garbage collector

----------


## lunatix

tu peux aussi utiliser netbeans platform (un equivalent de eclipse rcp) 
tu as de nombreux tutoriels ici http://platform.netbeans.org/tutorials/index.html

----------


## joseph_p

Merci pour vos rponses. 

En gros, si je rcapitule, il y d'abord le choix entre SWT et Swing  faire, puis  regarder en dtail les plates formes RCP  choisir.

Du coup, pour (tenter de) rendre intelligilible tout cela, j'ai fait a :



> 1 - comparatif des bibliothques de GUI en Java:
> 
> 1.1 Swing 
> + portable
> + purement java
> + fort soutien de Sun
> + communaut importante (le sous forum ddi  4148 discussions)
> - a connu des problmes de lenteur (?) : sont ils vraiment rsolus, notamment par rapport  SWT ?
> 
> ...


J'avoue ne pas avoir fini, mais je pense vraiment continuer.

Autres points : toutes les remarques sont les bienvenues. Comme vous pouvez le voir j'ai tent d'intgrer vos rponses et de les creuser.

Par ailleurs, je me pose la question de l'intgration de 3D dans ces diffrents RCP : avez vous des pistes/ides sur le sujet ?

Encore merci

ZedroS

----------


## divxdede

Pour un petit projet personnel je me suis bas sur Netbeans RCP
Justement pour tre capable d'evaluer la plateforme.

cf: http://www.jprintcover.com

Si tu as des questions (pas trop compliqu) sur la plateforme pour ton comparatif, n'hezite pas.

----------


## otsgd

Salut,

J'ai boss pendant 1 an sur un projet utilisant Eclipse RCP et y a du pour et du contre :
- La modularit tant le maitre mot, il convient de bien penser son architecture de plugins, les interractions sont complexes  grer et non dbugg par Eclipse (au format xml). Le nommage doit tre d'une cohrence sans faille.
- Les fonctionnalits (mises  jour, prfrences, worskpace, vue, aide, diteurs ...) directement disponibles sont trs utiles et plutot bien penses.
- La doc en franais est quasi inexistante ds lors qu'on rentre dans les dtails, tout est en anglais et pas toujours vident  trouver.
- Le code source d'Eclipse que l'on parcourt ncessairement lorsque l'on fait une appli RCP (pour voir comment ils font tel truc) n'est pas document et pas facile  suivre.
-  notre entreprise avait apprcier la qualit graphique et ergonomique des rsultats
- dveloppement rapide de certaines fonctionnalits complexes (tableaux, arbres, tris, recherche, compltion ...
- Malgr ce qu'on pensait (jar de SWT diffrents selon les plateform), on avait eu certaines supprises suivant les OS, la prsentation tait parfois mal faite sous Windows ou sous Linux.

Voil une ide gnrale.

----------


## Nico73

Bonjour,

Je connais Eclipse RCP depuis dbut 2004 alors que la version 3.0 d'Eclipse tait encore en cours de ralisation (1re incorporation du RCP). Et c'est vrai qu' l'poque il n'y avait pas beaucoup de documentation...

Aujourd'hui je trouve que de ce point de vue l, a a pas mal volu. Le tutoriel de base (en 3 tapes) est assez simple  suivre.
Lien vers la premire tape du tutoriel

Evidemment le souci majeur est pour trouver de la documentation en franais. Je crois que des bouquins en franais sont quand mme sortis  propos d'eclipse et en particulier du RCP.

A part a, j'avoue ne pas connaitre les autres clients riches. Je me demande s'ils ont atteint la mme maturit qu'eclipse RCP (ils l'ont peut tre dpass ?). Je trouve quand mme l'interface d'eclipse trs agrable, et pouvoir reprendre les concepts de perspectives, vues, diteurs dans eclipse RCP est un plus  mes yeux.

Pour prciser, si tu choisis eclipse RCP, tu feras forcment du SWT (et JFace, la couche suprieure). Par contre, tu peux intger des composants Swing dans un composant SWT (je le fais avec des composants JFreeChart et JGraph).

Personnellement, j'ai une mauvaise image de Swing que je trouve un peu vieillo. Mais j'ai lu que Sun avait reboss dessus pour Java 6. De plus, quand je l'utilisais, je ne connaissais pas les Look and Feel qu'il tait possible d'intgrer ( mon gout, le look and feel de base est laid et fait assez amateur).

Pour les adeptes de Swing, ne prenez pas a pour une attaque, j'ai juste eu une mauvaise premire exprience, et je suis prt  changer d'avis  ::): 

Nico

----------


## joseph_p

Merci pour ces rponses.

Une petite question : comment se passe les mises  jour de la plate forme (netbeans/eclipse) pour les applications construites dessus et dployes sur des postes ? Est ce transparent, y a t il blockage  un certain niveau, faut il tout retester avant ?

Merci d'avance
ZedroS

ps : Netbeans RCP a aussi l'air pas mal, maintenant j'suis encore en train de regarder de ci de l ^^

----------


## divxdede

Par rapport a ton dbut de comparatifs

JDIC: Multi-plateforme grace  la version cross-plateforme. Cette version charge au sein du classpath de l'application le jar "stub" propre  l'OS.
Problme ? Oui avec Netbeans RCP car Netbeans n'utilise pas un URLClassLoader necessaire au chargement du Stub de JDIC.
Donc JDIC Cross-Plateforme incompatible avec Netbeans RCP

Les Wizard de SwingX sont peut utile du moment que tu utilises un RCP car la pluspart intgre leur propre API de Wizard.

SwingX en soi est une trs belle API (propre et efficace). Si tu t'orientes sur une application Swing, cette librairie peut rapidement devenir un "must-have".

----------


## Jense

On utilise Eclipse RCP depuis un peu plus d'un an.
Je pense que c'est le RCP le plus abouti (puisqu'il est le plus vieux).
D'ailleurs NetBeans propose maintenant le sien et j'ai lu quelque part qu'une plateforme sera propose dans Java 1.7

Ct pratique, je suis vraiment convaincu par le RCP. Le systme de plugin propos par Eclipse est trs intressant ds lors on dveloppe plusieurs application. Les plugins seront donc rutiliss sans aucune modification (par exemple pour la log, les graphs, la 3D, etc... le tout accompagn des crans de prfrence et autres wizards qui seront automatiquement insrs)
D'ailleurs les plugins proposs par Eclipse ou la communaut open-source sont de plus en plus nombreux.

Le sytme des vues/perspectives a t trs vite aprhender par les utilisateurs. Ils adorent pouvoir adapter leur application en fonction de leurs besoins.

On utilise Java Web Start pour le dploiement. Ca ne pose aucun problme et permet d'avoir toujours la dernire version sur le poste.
Cependant le systme d'update propos par Eclipse est trs intressant puisqu'il permet aussi les updates automatiques.

Ct dveloppement, SWT/JFace impose une (courte) priode d'adaptation. Mais les principes Java sont largement respects. Le seul inconvniant est de grer les resources systme (images, fonts et couleurs). Mais l aussi, c'est facilement grable avec, par exemple, une classe ResourceManager.
L'autre avantage de SWT (pour moi), c'est justement qu'il s'adapte au look&feel de l'OS. L'utilisateur a vraiment l'impression d'avoir une appli qui s'intgre  son environnement et qui a la mme tte que son navigateur ou que son exporateur de fichier.

Bref, on utilise Eclipse RCP, parcequ'on pense que c'est le plus abouti et le plus vivant. Mais on garde toujours un oeil sur les propositions concurentes.

----------


## adiGuba

Salut,





> - a connu des problmes de lenteur (?) : sont ils vraiment rsolus, notamment par rapport  SWT ?


Les performances de Swing se sont nettement amliorer depuis Java 1.2. De plus la plupart de ces "problmes" venait du fameux bugs des carr gris, caus  cause d'une mauvaise gestion des threads...





> 2.2.A.2 SwingWorker
> 
> Rsoud la problmatique du lancement de tches dont le temps d'excution est long. Sans Swingworker ces tches font que 
> 
> l'application ne rpond plus.
> + utile 
> + ??
> - problme spcifique  Swing ??


Ce n'est pas un problme spcifique  Swing !
La plupart des API graphique sont mono-thread, et implique donc deux choses :
l'utilisation de thread spar pour les tche de fond.l'utilisation du thread qui gre l'UI pour mettre  jour l'affichage.

C'est la mme chose pour SWT d'ailleur, et les mthodes asyncExec() et syncExec() de la classe Display de SWT correspondent aux invokeLater() et invokeAndWait() de la classe SwingUtilities...

Il me semble d'ailleur que SWT est encore plus svre en provoquant une exception si on modifie l'UI depuis un mauvais thread...

Sinon pour SwingWorker je rajouterais :
 + En standard dans Java 6
 + Simplifie grandement la gestion des threads.


Enfin pour JDIC, il faut quand mme rajouter ceci :
 + Certaine fonctions (ouverture du navigateur/client email, ouverture des fichiers avec le programme associ, intgration dans la barre des tche) sont dj intgr dans Java 6 en standard !
 - La portabilit n'est pas parfaite, notamment sous Mac  ::?:  





> L'autre avantage de SWT (pour moi), c'est justement qu'il s'adapte au look&feel de l'OS.


Swing peut galement s'adapter au Look de l'OS en utilisant le LookAndFeel systme. Il suffit de rajouter une ligne de code (5avec le try/catch qui va avec) :


```

```

a++

----------


## n!co

J'ai aussi du faire ce choix pour l'application que je dveloppe.

Pour rajouter un petit arguement au dbat, si tu veux faire un peu mumuse avec tes composants graphiques, c'est imposible avec SWT. Il n'y a pas de notion d'hritage juste de la composition de plusieurs composants.

----------


## lunatix

il y a aussi d'autres solutions plus legeres que le RCP complet
voir http://www.clientjava.com/blog/2006/...937901773.html 
ou un simple docking framework peuvent aussi etre suffisants

----------


## divxdede

> il y a aussi d'autres solutions plus legeres que le RCP complet
> voir http://www.clientjava.com/blog/2006/...937901773.html 
> ou un simple docking framework peuvent aussi etre suffisants


A ce sujet j'ai cru comprendre que le Docking System de Netbeans s'externalisait en un projet appel JDocking. Wait & See.

https://jdocking.dev.java.net/

----------


## lunatix

super ca ! j'avais suivi un post sur java.net ou un mec disait qu'il avait extrait ca de netbeans, mais pas vu qu'il ouvrait un projet. Je vais tester tient  :;): 

merci pour l'info

----------


## joseph_p

Chtite question, surtout pour du Swing seul mais pourquoi pas pour du SWT : existe t il des composants permettant la mise  jour automatique de prdfinis ?

----------


## divxdede

> Chtite question, surtout pour du Swing seul mais pourquoi pas pour du SWT : existe t il des composants permettant la mise  jour automatique de prdfinis ?


la mise  jour de prdefinie ? Qu'entends tu par l ?

Si tu parles de prferences utilisateur, il existe dans Java 1.5 le packages *java.util.prefs* 

Tu peu (en exemple) enregistrer une prference utilisateur de cette manire:



```

```

Et charger une preference utilisateur comme suit:



```

```

----------


## joseph_p

Je me suis mal exprim. Je parle de mise  jour de l'application (update), genre changer une partie de l'interface ou du code mtier.

Perso je vois a comme une fonctionnalit quasi incontournable et assez dure  mettre  en place.

Je ne suis pas certain que Java Web Start rsolve tous ces problmes pour une application purement Swing/SWT, notamment vu que les RCP tels Netbeans/Eclipse proposent un module de mise  jour.

----------


## lunatix

java web start peut effectivement de mettre a jour ton application facilement. du coup, si tu changes un jar, il le mets a jour automatiquement.

Les deux RCP sont plus evolus, puisqu'ils permettent d'aller chercher des plugins sur differentes url, voir meme en local. c'est plus complexe, mais plus souple c'est sur.

----------


## divxdede

> Je me suis mal exprim. Je parle de mise  jour de l'application (update), genre changer une partie de l'interface ou du code mtier.
> 
> Perso je vois a comme une fonctionnalit quasi incontournable et assez dure  mettre  en place.
> 
> Je ne suis pas certain que Java Web Start rsolve tous ces problmes pour une application purement Swing/SWT, notamment vu que les RCP tels Netbeans/Eclipse proposent un module de mise  jour.


Si tu utilises un RCP (tel que Netbeans/Eclipse) tu as effectivement un UpdateCenter mis  disposition. 

Si tu utilises Swing pur, le moyen le plus rapide est Java Web Start.

Sinon faut crire son propre outil

----------


## joseph_p

Sur le mme thme :
Eclipse RCP vs. NetBeans Platform: A Developer's Insights  // http://blogs.sun.com/geertjan/entry/...beans_platform

On en parle l :
Eclipse RCP vs Netbeans Platform // http://www.application-servers.com/s...09-14-11:36:36
et l 
http://www.theserverside.com/news/th...hread_id=42198

 ::D:

----------


## alexismp

> Par contre, tu peux intger des composants Swing dans un composant SWT (je le fais avec des composants JFreeChart et JGraph).


Sans problme de drag-n-drop, de mlange composants lourds/lgers (repaint, overlap), ou de look and feel?
Le bridge SWT/Swing reste une solution risque (cf. https://bugs.eclipse.org/bugs/show_bug.cgi?id=67384)

----------


## alexismp

Comme ca a dj t prcis, un RCP est puissant mais complexe d'abord.
C'est une des raisons de l'existance du groupe de travail JSR 296: Swing Application Framework qui travaille  la cration d'un canevas d'application Swing (en intgrant la partie Beans Binding). A suivre dans les mois  venir...

----------


## alexismp

Pour une illustration de la partie Swing Application Framework et Beans Binding, le prototype est dmontr par Romain GUY dans les videos du JavaDay de Versailles qui viennent d'tre publies: ftp://ftp.developpez.tv/tv/java/java...JavaDay5-3.avi

----------


## Valre

> On utilise Eclipse RCP depuis un peu plus d'un an.
> Je pense que c'est le RCP le plus abouti (puisqu'il est le plus vieux).
> D'ailleurs NetBeans propose maintenant le sien et j'ai lu quelque part qu'une plateforme sera propose dans Java 1.7


[tousse] Je suis un peu  la bourre sur le sujet (je suis tomb dessus en cherchant autre chose) mais Netbeans Platform aka Netbeans RCP existe depuis les tout dbuts, c'est  dire 9 ans maintenant...

Certes, la plateforme n'a rencontr que rcement un vrai succs (depuis NB5.0 et la cration de nombreux assistants pour crer des nouveaux modules) mais la base est l depuis bien plus longtemps qu'Eclipse.

http://www.netbeans.info/newsletter/story.php?id=846

Valre

PS: je m'tonne qu'Alexis n'ait pas relev  ::P:

----------


## olitank

Les clients RCP offrent des applications presque compltes,  personnaliser pour obtenir sa propre application. 
C'est une bonne approche mais il existe une autre approche consistant  gnrer et  personnaliser via la rflection un prototype d'application (voir ReflectionUI).

----------

