Tout le monde connait SWT, la librairie graphique libre pour Java cree par IBM et qui est notamment utilise par le projet Eclipse http://eclipse.org/(...)
Cette librairie a pour particularite (contrairement a SWING la librairie graphique standard de Java) d'etre native au systeme: par exemple sous Linux, une application SWT est en fait une application gtk.
L'avantage principale est la rapidite accrue par rapport a SWING.
Pour en savoir plus sur SWT: http://en.wikipedia.org/wiki/SWT(...)
SwingWT http://swingwt.sourceforge.net/(...) est une re-implementation des widgets SWING en SWT.
Ceci apporte qu'en programmant en Java/SWING standard, on peut fournir une application native a l'environnement sans changer une ligne de code. voila un screenshot: http://swingwt.sourceforge.net/ss22.png(...)
L'etat d'avancement du projet ? SwingWT is into beta now - everything seems to work, it has received some good testing, but some items may be missing (Swing is a BIG API after all). There's probably a few bugs still in there as well
Mais la ou cela devient vraiment interessant c'est de coupler GCJ (partie Java de GCC) et SWT. On obtient alors un programme compile natif (plus besoin de la JVM), bref c'est comme du C/gtk ou du C++/Qt en gros mais avec tous les avantages de Java (temps de developpement diminue).
Un developpeur a package SWT, SwingWT et MingW sous windows pour directement pouvoir compiler du code Java/SWING en natif sous Windows. J'ai essaye et ca fonctionne.
http://thisiscool.com/gcc_mingw.htm(...)
Malheureusement je suis bloque par GCJ qui ne gere pas encore tous les packages du JDK 1.4, notamment javax.net.ssl
Mais j'ai pu tout de meme m'amuser (avec des petites demos) avec et c'est carrement plus rapide que le meme programme version SWING + JVM.
Un autre projet amusant mais peut etre moins interessant finalement: http://chrriis.brainlex.com/projects/swtswing/(...)
C'est exactement l'inverse de SwingWT, c'est l'implementation de SWT en utilisant les classes de SWING: on obtient un programme SWT aussi portable que le meme ecrit en SWING.
Bref on va finalement arriver a un Java standard entierement libre et aussi rapide que du C++ grace a GCC et SWT, de la balle non ?
# Re: Un projet qui tue pour Java: SwingWT
Posté par Gniarf . Évalué à 1.
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par Eric Boulat . Évalué à 1.
Allons ! On n'est plus à l'époque du dos et des 640 ko de conventionnelle ! Linux peut gérer des giga-octets de ram ! On va pas pleurer pour quelques dizaines de kilo-octets.
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par Snark_Boojum . Évalué à 1.
1) chaque utilisateur fait tourner plus de programmes (les os modernes sont multitâches) ; et chaque machine peut recevoir plusieurs utilisateurs (penser à des TX dans une salle de TP, par exemple), donc il faut multiplier les dizaines de kilo-octets par le nombre de programmes et le nombre d'utilisateurs: ça va commencer à faire beaucoup, même si les .so aident à mutualiser;
2) ce n'est pas parce que les ressources sont moins rares qu'il faut les gaspiller, entre acheter une machine deux fois plus puissantes pour faire la même chose, et une machine deux fois plus puissantes pour faire le double, je choisis le second choix!
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par Boke Bocadillo (site web personnel) . Évalué à 2.
SwingWT offers many benefits:
* More responsive GUIs and faster startup times
* Less RAM usage for applications
[...]
C'est pas prouvé mais bon... on peut supposer que...
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par Gniarf . Évalué à 2.
à l'époque de Symantec Visual Café (v2) on pouvait déjà générer un executable pour Windows de son projet Java (paquet de classes). mais on se retrouvait avec des .exe énormes : il fallait bien caser le code des classes de base (java.*) quelque part, même s'il était recompilé nativement.
(ah, je viens de regarder, histoire de rire : le rt.jar d'un JRE 1.4 pèse ses 20 Mo, merci Sun, merci.)
# Re: Un projet qui tue pour Java: SwingWT
Posté par kruskal . Évalué à -1.
Envoie un patch au lieu de perdre du temps a mouler ici :o)
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par tanguy_k (site web personnel) . Évalué à 2.
Pour repondre a Gniarf (flemme de faire 2 posts)
> à l'époque de Symantec Visual Café (v2) on pouvait déjà générer un executable pour Windows de son projet Java (paquet de classes). mais on se retrouvait avec des .exe énormes
Un chti serveur HTTP (donc sans interface graphique) de 500 lignes compile sous Windows avec MingW fait 4Mo mais j'ai pas vraiment (je suis pas sur en fait) reussi a utiliser les librairies dynamiques. Toutes les demos graphiques que j'ai compiles sous Windows faisaient 4Mo environ. Pour comparer, ce meme serveur HTTP compile avec gcj sous Linux fait 67ko et Httpd.o fait 72ko cf: http://tanguy.dyndns.org/communication/httpd/httpd-0.1/(...)
Moi je pense sincerement que ca peu donner un super bon truc, rien que sur du code tout petit on voit clairement la difference de temps de lancement de l'application grace a gcc et SWING lag meme pour ouvrir une fenetre d'ouverture de fichier, ce qui n'est pas le cas de SWT. Pour la latence au niveau de l'interface graphique, il suffit de lancer Eclipse pour se faire son propre avis (Eclipse utilise la JVM, des builds de Eclipse compiles avec gcj existent mais c'est encore experimental).
Evidemment ca ne pourra jamais etre aussi rapide et leger qu'un code C, mais faut bien voir aussi qu'en Java on programme a mon avis 5 fois plus vite qu'en C pour au final un code plus clair, modulaire, reutilisable, plus facilement maintenable, portable, moins de ligne de code, moins buggue... tout ceci a un coup (reduit par la montee en puissance des ordinateurs). Bref c'est un compromis.
# Re: Un projet qui tue pour Java: SwingWT
Posté par Eric Boulat . Évalué à 1.
Certes il existe des librairies graphiques multi-plateformes mais à cause des variations des tailles des polices et des différents controles graphiques, un même source compilé sur différentes plateformes donne des résultats pas toujours trés heureux.
En java, si on n'y fait pas gaffe, là aussi les labels peuvent dépasser, les controles peuvent se chevaucher etc. Par contre, il y a la classe GridBagLayout qui permet de tout définir en relatif et grace à ça, la même interface peut tourner sur n'importe quel systeme. C'est même trés pratique pour localiser l'interface car on peut faire varier la taille des labels.
J'espère que cette classe est bien gérée dans ce projet.
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par 0xDEADBEEF . Évalué à 1.
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par Eric Boulat . Évalué à 1.
J'en ai fait 1 an et demi en entreprise (+2 ans à la fac) et je t'assure qu'en dehors du GridBagLayout, il n'y a pas moyen de faire une gui portable. J'ai du souvent jonglé entre Windows et Linux et je t'assurre que mes collègues et moi ont laissé tombé les autres layouts à force d'essayer. Les autres layouts sont peut-être relatifs mais c'est le seul qui donne de bons résultats sur ces aspects.
Attention, ce que j'affirme n'est valable que dans le cas d'interface redimensionnables. Si vous faites une interface où tout les controles graphiques sont à taille fixe, là d'autres layouts peuvent suffirent mais ça serait dommage de ne pas profiter de cet avantage.
Par contre il est plus dur à maitriser que les autres, heureusement qu'il y a des designers graphiques.
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par Ramso . Évalué à 1.
# Re: Un projet qui tue pour Java: SwingWT
Posté par locnet . Évalué à 1.
http://mldonkey.berlios.de/(...)
mldonkey, c'est de la bal.
java, c'est de la bal.
swt, c'est de la bal.
gcj, c'est de la bal.
Alors les 4 ensembles....
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par Ramso . Évalué à 1.
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par QuYuan . Évalué à 3.
Ma dernière virée...
Demain dans l'journal
y aura mon portrait !
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par Obi MO (site web personnel) . Évalué à 1.
Ils jouaient que des pornos
Moi ca m'disait trop rien
J'les avait deja vus
J'ai dit a mes copains
Y'a un baloche a sarcelles
On va y faire un tour
Y'aura p'tet des morues
Et pui ca fait un bail
Qu'on s'est pas bastonnes
Avec de la flicaille ou des garcons bouchers !
# Re: Un projet qui tue pour Java: SwingWT
Posté par Axel R. (site web personnel) . Évalué à 1.
Axel
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par tanguy_k (site web personnel) . Évalué à 1.
C'est pas un portage, c'est une recompilation* :-)
C'est justement la l'interet de la chose!
* sous reserve que gcj gere les classes que le programme utilise, sinon il faut contribue a gcj et classpath.
# Re: Un projet qui tue pour Java: SwingWT
Posté par daal . Évalué à 2.
Ca permet d'avoir une appli qui colle "plus" systeme , tout en étant transparent pour l'utilisateur.
De plus le fait de développer des "optimisations" comme ca (meme si elles peuvent dans certains cas être plus lourdes) , et qui tournent bien et ont du succès, ca peut peut etre pousser sun a se rendre compte qu'il peut y avoir un "bénéfice" à rendre le Java réellement libre, pour le faire évoluer plus vite.
[^] # Re: Un projet qui tue pour Java: SwingWT
Posté par zebul666 . Évalué à 1.
Vous avez essayer java 1.5.0beta1? Rien que sous linux c'est plus joli(?) et un chouïa plus rapide.
Plus besoin de bidouiller le fichier $JAVA_HOME/jre/lib/fonts/fonts.dir pour qu'il utilise des ttf. Ouf
Bien le bonjour à Pierre Tramo !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.