# SWING vs. SWT



## McSnoop (21. Jan 2005)

Wenn ich das richtig sehe (hab das auch schon in der suchfunktion eingetippt und nichts gefunden.), wurde dies noch nicht gefragt.

Wann sollte man bei Swing bleiben und wann sollte man sich an SWT wagen???

Viele haben geschrieben das SWT einfach schneller ist was GUI angeht, aber nur wegen den paar millisekunden schnelleres Laden bringt es das umzusteigen???

Ich habe auch gelesen das man mit SWT native Code (z.b. C) verwenden kann.

Dieser Thread soll als ein Pro und Kontra beider seiten dienen um sich ein bild über SWING und SWT zu machen zu machen.

Im Moment bin ich mit Swing unterwegs und finde das auch ganz ok. Mit den ganzen komponenten die Swing bietet bin ich bei weitem noch nicht durch, es bietet meiner Meinung nach mehr möglichkeiten als AWT.


----------



## bummerland (21. Jan 2005)

http://www.java-forum.org/de/viewtopic.php?t=10383&highlight=swt+swing

http://www.java-forum.org/de/viewtopic.php?t=6962&highlight=swt+swing


----------



## thE_29 (21. Jan 2005)

Native Code kannst immer verwenden, das hat nix mit SWT und Swing zu tun!

Swing geht überall wo java ist

Swt nur dann wenn du das SWT Paket mitübergibst oder der andere das hat!

Kann aber sonst nix gegen swt sagen, da ich es net kenne!

Ich benutze halt Swing weils einfach da ist/war


----------



## McSnoop (21. Jan 2005)

becstift hat gesagt.:
			
		

> http://www.java-forum.org/de/viewtopic.php?t=10383&highlight=swt+swing
> 
> http://www.java-forum.org/de/viewtopic.php?t=6962&highlight=swt+swing



hmm warum wurden mir die nicht angezeigt nach der suche, egal. Aber thx dafür.


----------



## stev.glasow (21. Jan 2005)

Pro Swing:
- Ist umfangreicher 
- läuft ohne etwas zuändern auf jedem gänigen Betriebsystem (SWT auch, aber du musst für jedes Bs eine extra zip zum download anbietet da die swt.jar jeweils anders ist)
- in Swing lassen gut eigene kleine Componenten schreiben, was in SWT recht mühsehlig ist

Pro SWT:
- arbeitet auf jeden fall schneller 
- Die Komponenten sehen genauso so aus wie das Standart Layout vom jeweiligen Betreibsystem (wenn ich mich jetzt nicht Irre)

Mehr weiß ich nicht, außer meiner Sicht ist der Hauptgrund die Performance warum jemand SWT nimmt. weiß aber auch nicht sehr viel darrüber.


----------



## McSnoop (21. Jan 2005)

stevg hat gesagt.:
			
		

> Pro Swing:
> Pro SWT:
> - arbeitet auf jeden fall schneller
> - Die Komponenten sehen genauso so aus wie das Standart Layout vom jeweiligen Betreibsystem (wenn ich mich jetzt nicht Irre)



unter SWING kann ich doch auch Look&Feel nutzen und dann schauts doch auch aus wie das entsprechende OS.


----------



## niemand (21. Jan 2005)

Und man kann noch eine Menge mehr Look&Feels benutzen, dann sieht es noch besser aus (für die Pro-Swing-Fraktion )

cu


----------



## AlArenal (21. Jan 2005)

Ich hab mich mit SWT noch nicht auseinandergesetzt, allerdings ist Swing nunmal schon deutlich länger da und wenn ich was im Web zum Thema Swing suche oder ein Buch brauche, dann gibts da auch was. Wenn ich zusätzliche Komponenten brauche, dann finde ich auch da was oder weiß wo ich Hilfe finde, um mir selbst was zu basteln. 

Da kann SWT von der Basis her nicht mithalten und ist für mich der Hauptgrund mich auch nicht weiter damit auseinanderzusetzen. Wir  sind hier im Business darauf angewiesen für Probleme schnell Lösungen zu finden, darunter fallen sowohl Open Source als auch kommerzielle Komponenten und da ist die Auswahl für Swing einfach wesentlich größer. Für SWT gibts da kaum etwas und so lange die Nutzer-Basis von SWT nicht größer wird, wird sich da auch nciht soo viel dran ändern. Und DER Hammergrund pro SWT ist mir noch nicht untergekommen.


----------



## stev.glasow (21. Jan 2005)

Den Hammergrund wirds wohl auch nicht geben, darfür ist Swing zu genial  Aber wenn ich mir ein Programm wie Eclipse in Swing vorstelle, würde mich das bestimmt annerven, weil da merkt ma ndanns chon das Swing teilweise zulangsam ist. Außer man hat wieder son high-end Rechner.




			
				McSnoop hat gesagt.:
			
		

> stevg hat gesagt.:
> 
> 
> 
> ...


Welches soll das sein?


----------



## McSnoop (21. Jan 2005)

na wenn man sich die API beispiele anschaut da sind doch die einen Look & Feel beispiele dabei und die wurden doch fast alle in Swing geschrieben oder nicht??

Wenn JFrame auftaucht??


----------



## AlArenal (21. Jan 2005)

Wenn man ordentlich programmiert, ist Swing nicht zu langsam. Ob ein Button nun ne Millisekunde früher ne Action auslöst kann dem User wohl egal sein. Sinn einer Software ist es die ihm gestellte Aufgabe möglichst gut auszuführen und wenn ich da für SWT erst groß rumorgeln muss um mir Komponenten zu basteln, an die ich für Swing leicht rankomme, muss ich nicht lange überlegen. 

Für die Anwendungen wie ich sie hier zu stricken habe, sehe ich keinen wirtschaftlich vertretbaren Break-Even-Point. Das Geschwindigkeits-Argument ist meiner Meinung nach ein Argument eines Schlages von Menschen, die auch hunderte von Euros ausgeben, damit sie in irgendeinem Game bei allen Details  2 FPS mehr haben und geht an der eigentlichen Aufgabe der Software-Entwicklung vorbei.

Ich habe ein Problem und entwicle eine Software, die mir das Problem löst. Ich sehe kein Problem für das SWT die bessere Lösung wäre. Muss ich ne Anwendung aus Standard-Komponenten entwickeln und kenne ich mich in SWT aus, ist SWT sicher eine legitime Wahl. Manchmal entwickelt sich Software aber in Richtungen, an die man vorher nicht dachte und ich bekäme schon Bauchweh beim Gedanken, irgendwann mal ein Programm von SWT auf Swing umstellen zu müssen, weil sie mit Swing alleine nicht zu lösen ist.

Bin jetzt aber kein strikter SWT-Gegner oder so. Z.B. sehe ich das Problem der natiben Grafik-Lib bei SWT nicht wirklich als Problem. Für die gängigen Betriebssysteme gibts SWT-Libs und die die Anforderung der absoluten Plattformunabhängigkeit einer Java-Anwendung dürfte eher selten fallen. In der Praxis trifft man recht schnell auf Problemstellungen, die nur plattformabhängig zu lösen sind. 

Meist sit dies aber kein wirkliches Problem, weil die Zielgruppe für den überwiegenden Teil der Anwendungen bekannte Voraussetzungen hat, auf die man sich einstellen kann.


----------



## niemand (21. Jan 2005)

> Welches soll das sein?


Swing selbst liegen ein Windows-L&F (eigentlich nur in dem JRE für Win, aber es ist eigentlich bei jedem dabei), eines, welches Motif emuliert, eines welches GTK+ emuliert und eines für Mac bei.

Auf diversen Seiten findet man noch andere - GTK2+, QT3, WinXP usw.

Sieht zwar nicht immer 100% exakt aus, aber ein Normaluser sieht den Unterschied nicht. 

AlArenal, bei richtig komplexen Applikationen merkt man den Unterschied schon recht deutlich, speziell bei langsameren Rechnern, wie sie häufig in Büros zu finden sind.


cu


----------



## Wildcard (21. Jan 2005)

Der bekannteste Vetreter der SWT Fraktion ist IMO Eclipse, und genau das ist auch ein wichtiger Grund
SWT zu nutzen. Immer mehr Unternehmen gehen dazu über ihre Software als Eclipse-Plugin zu schreiben
(man darf schließlich nicht vergessen das Eclipse nicht vorrangig eine IDE, sonder eigentlich ein Framework ist)
und falls sich dieser Trend fortsetzt werden sich eben viele Entwickler an SWT gewöhnen müssen.


----------



## Bleiglanz (21. Jan 2005)

SWT

a) wenn man Eclipse Plugins schreiben will

b) oder wenn man die dll / so Verteilung mit übernehmen will

c) oder wenn man unbedingt ein "Windows" Look- and Feel braucht (unter WIN), und unbedingt ein "GTK" unter Linux usw.

d) sich auf eine Plattform festlegt und ein paar "Features" von SWT nutzen will (oder muss) wie z.B. COM/OLE oder sowas

Ich sehe wegen der blöden native libs, den fehlenden Skills bei den meisten Entwicklern (ohne JFace ists fast unmöglich, viel Einarbeitung erforderlich), den fehlenden Komponenten und dem Fehlen ausgereifter Tools eigentlich kein sinnvolles Einsatzgebiet für SWT

auch wenns IMHO etwas "flüssiger" läuft als Swing


----------



## stev.glasow (21. Jan 2005)

@AlArenal:
Jo, Swing fetzt schon hab ich auch nie bestritten, das Geschwindigkeitsproblem ist auch kein großes Problem, es fällt nur auf und nervt teilweise. (einfachst Beispiel JFileChooser, und da kann ich noch so gut programmieren der JFileChooser  bleibt so wie er ist)  Mehr wollte ich damit nicht sagen.
Natürlich muss ich deswegen nicht gleich auf SWT umsteigen aber man kann doch anhand des Problems entscheiden was  man nun nimmt. Wenn ich eh nur die Standardkomponenten benötige und das nicht als Applet oder ähnliches laufen lassen will ist bei mir SWT die erste Wahl. Finde es auch eigenartig das ihr meint das man nur mit den Standardkomponenten  überhaubt nix  ordendliches zu Stande bekommt (  das z.B. ist meiner Meinung nach. zu übertrieben 





> Ich sehe wegen der blöden native libs, den fehlenden Skills bei den meisten Entwicklern (ohne JFace ists fast unmöglich, viel Einarbeitung erforderlich), den fehlenden Komponenten und dem Fehlen ausgereifter Tools eigentlich *kein sinnvolles Einsatzgebiet* für SWT


 )
Was vestehst du unter einem sinnvollen Einsatzgebiet? Es gibt doch auch Probleme die keine komplexe GUI erfordern.

Und zu Thema hohe Details in Spielen: ich hab zu Hause ne Geforce 2, 256 MB Ram und bis vor 2 Wochen einen 15 Zoll Monitor. 
P.S. hab in 2 Stunden Wochenende
[schild=11 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]geil[/schild]


----------



## Bleiglanz (21. Jan 2005)

stevg hat gesagt.:
			
		

> ...
> 
> 
> > Ich sehe wegen der blöden native libs, den fehlenden Skills bei den meisten Entwicklern (ohne JFace ists fast unmöglich, viel Einarbeitung erforderlich), den fehlenden Komponenten und dem Fehlen ausgereifter Tools eigentlich *kein sinnvolles Einsatzgebiet* für SWT
> ...


sinnnvoll war eindeutig das falsche Wort, ich meinte "kommerziell" oder sowas in der Art

stell dir vor, du hast einen Kunden, der eine gewisse Stand-Alone-App mit GUI haben will

sagen wir 200 Mannstunden oder so veranschlagt

stell dir vor, deine Kunde hat schon mal von Java gehört, so dass also eine Java App überhaupt zur Debatte steht (jetzt wirds schon unwahrscheinlich 

dass der potentielle Auftraggeber überhaupt zwischen SWT/Swing unterscheiden kann halte ich für ausgeschlossen; und bei einem Gespräch die "Vorteile von SWT" zu verkaufen ist wahrscheinlich unmöglich...

sehe da aber ne Menge Nachteile (Wartung? Pflege? Plattformen? ) und so weiter...


----------



## stev.glasow (21. Jan 2005)

Interssiert es den Kunden denn ob du  SWT oder Swing verwendest? Er stellt Gewissen Anforderungen und du musst dann zu sehen wie du die zu Lösen hast (oder auch nicht), so kenn ich das. Aber ich hab auch nicht 10 Jahre Erfahrung auf dem Buckel. Ich glaub wir lassen das.


----------



## AlArenal (21. Jan 2005)

Der Kunde hat ein Problem und dafür will er innerhalb eines gesetzten preislichen und zeitlichen Rahmens eine definierte Funktionalität abgedeckt bekommen, dazu gibts mitunter noch Rahmenbedingungen (JRE Version, keine Installation mit Admin-Rechten auf Client nötig, Singel Sign On in der Windows-Domäne, ...). Da ist es dann peng of AWT, Swing, SWT oder alles über Graphics2D handgestrickt...


----------



## stev.glasow (21. Jan 2005)

AlArenal hat gesagt.:
			
		

> Da ist es dann peng of AWT, Swing, SWT oder alles über Graphics2D handgestrickt...


 Was? Das Single Sign On ?  Ich hab malnachgeguckt was das ist und dort steht 


> Single Sign-On (kurz SSO) bedeutet, dass ein Benutzer nach einer einmaligen Authentifizierung auf alle Rechner und Dienste, für die er berechtigt ist, zugreifen kann, ohne sich jedesmal neu anzumelden.
> 
> Ein Benutzer besitzt dadurch nur eine einzige Identität, die nur einmal (z.B. durch Passworteingabe) verifiziert werden muss.


In wie fern musst du da was mit Graphics2D handgestricken? 
Wenn du das überhaubt meintest.


----------



## AlArenal (21. Jan 2005)

Nein, das war nur ne lose Aufzählung von Anforderungen, die nicht grundsätzlich in Zusammenhang stehen müssen 

SSO brauche ich z.B. weil ich Java-Anwendungen entwickle, die per XML-RPC mit einer Webanwendung labern um Daten zu bekommen. Die Skripte sind Teil einer Web-Anwendung die meist intern auf Windows-Servern läuft und nur bestimmten Usern in der Domäne zugänglich sind (geschützt über NTLM aka Windows Integrated Authentication, eine proprietäre Verhackstückelung von HTTP durch Microsoft). Ab 1.4.2 macht Java das transparent im Hintergrund, der IE sowieso, Firefox auch, Opera nicht.. na jedenfalls soll der User nicht siene normalen Daten zur Anmeldung am Rechner eingeben müssen, wenn er die Webstart-Anwendung startet. Ist nur scheiße dass die Browser-Komponente von JDIC diese Authentifizierung nicht macht 

Das mit Graphics2D bezog sich auf die Widgets. Wenn das Programm den Job ordentlich macht, dann ist es dem Kunden egal ob die Knöpfe AWT, SWT, Swing oder handgezeichnet mit Graphics2D sind


----------



## McSnoop (21. Jan 2005)

THx an Alle.

ich glaube die frage ob man nun den Schritt zu SWT macht wäre geklärt. --> Nein

Weil es einfach nicht von Nöten ist und es IMO mehr Nachteile gibt als Vorteile.

Ich hatt mich bloss gewundern, bei uns in der Studiengruppe kann man im mom nicht richtig mitreden, weil irgendwie alle im SWT wahn geraten. Mein Project was ich bearbeite aber komplett in SWING schreibe.

Aber egal da ich mit SWING gut klar komm bis auf normale Probleme die jeder durchlaufen muss, werd ich bei SWING vorerst bleiben.


----------



## spunti (18. Jul 2005)

Hallo Kollegen,

ich bin noch nicht allzu lange bei Java dabei, aber ich hab z.B. noch nie ein "schönes" Java-GUI gesehen. Also eines, das wirklich fast so aussieht wie andere Programme. (Vielleicht mag aber einer einen Swing-Screenshot posten.)
Bei SWT/JFace ist das wirklich toll. Wenn da z.B. ein Theme geladen wird für das Betriebssystem, sieht das SWT-Programm wohl auch entsprechend aus.
Das ist für mich persönlich DAS Argument für SWT.

Dann hab ich aber noch paar Fragen, die hier von Interesse sind:
Läuft Swing auf auf Handys, PalmOS und WinCE (oder wie das PDA-System da heißt)?

Also SWT gibts z.B. noch nicht für Handy oder Palm.
Dann ist die Sache, daß die Linux-Leute in Europa besonders KDE (Qt) einsetzen und nicht Gnome (Gtk). Da sieht dann z.B. der Dateiauswahldialog auch nicht native aus. (Allerdings sind die KDE-Leute das etwas gewöhnt durch Programme wie Gimp, Firefox und glaube auch OpenOffice.)

Eine Hauptfrage ist auch die Lizenz.
Da bin ich mir nicht zu 100% sicher, ob ich SWT und JFace (welches auf SWT aufsetzt, ähnlich wie Swing auf AWT) wirklich frei benutzbar ist. Also auch für kommerzielle Produkte. Müßte aber eigentlich.

Dann ist mir aufgefallen, daß JFace irgendwie stark mit der Eclipse verstrickt ist. Kann es sein, daß man nicht nur SWT mitausliefern muß, sondern auch noch extra JFace und Eclipse.core?
Da seh ich noch nicht ganz durch.

danke für weitere Meinungen
spunti


----------



## Roar (18. Jul 2005)

spunti hat gesagt.:
			
		

> ich hab z.B. noch nie ein "schönes" Java-GUI gesehen.


schonmal gesucht ? vielleicht findest du hier was.



> Dann hab ich aber noch paar Fragen, die hier von Interesse sind:
> Läuft Swing auf auf Handys, PalmOS und WinCE (oder wie das PDA-System da heißt)?


nein, die ME hat ein eigenes kleines gui framework



> Eine Hauptfrage ist auch die Lizenz.
> Da bin ich mir nicht zu 100% sicher, ob ich SWT und JFace (welches auf SWT aufsetzt, ähnlich wie Swing auf AWT) wirklich frei benutzbar ist. Also auch für kommerzielle Produkte. Müßte aber eigentlich.


natürlich :?



> Dann ist mir aufgefallen, daß JFace irgendwie stark mit der Eclipse verstrickt ist. Kann es sein, daß man nicht nur SWT mitausliefern muß, sondern auch noch extra JFace und Eclipse.core?


so'n quark. nein, du musst nicht ganz eclipse mitliefert wenn du ein kleines progi mti swt schreibst.


----------



## AlArenal (18. Jul 2005)

spunti hat gesagt.:
			
		

> Hallo Kollegen,
> 
> ich bin noch nicht allzu lange bei Java dabei, aber ich hab z.B. noch nie ein "schönes" Java-GUI gesehen. Also eines, das wirklich fast so aussieht wie andere Programme. (Vielleicht mag aber einer einen Swing-Screenshot posten.)
> Bei SWT/JFace ist das wirklich toll. Wenn da z.B. ein Theme geladen wird für das Betriebssystem, sieht das SWT-Programm wohl auch entsprechend aus.
> Das ist für mich persönlich DAS Argument für SWT.



Nein, nicht wirklich. Ich habe z.B. viel im Kopf, will mir dies und jenes anschauen, da haben SWT und die Eclipse Platform wirklich keine Priorität. Ich bin viel im Web unterwegs und lese mir dann gerne Artikel aus der Feder von irgendwelchen Gurus durch. Soweit ich die verstehe hat SWT das Problem, dass die vorhandenen Komponenten schwerer anspassbar sind und neue Komponenten entsprechend länger brauchen. Sorry, aber die meisten Kunden sind eh blind, ob die nun Swing in irgendeinem L&F oder SWT vorgesetzt bekommen ist denen schnuppe. Aber die bezahlen mir nicht die Zeit die ich brauche mir in SWT einen anbzubrechen, wogegen es für Swing schon 1001 Komponente gibt und ich kiloweise gute Literatur auf  Halde liegen habe und jederzeit neue bekomme. 

Der Einfluss eines L&F auf den Erfolg einer Anwendung wird überschätzt. Wenn ich mir ansehe wie gruselig schlecht manche interne Webanwendung in großen Unternehmen ist oder auch native Anwendungen wie SAP R/3 (mit MySAP haben sie Kurve ja nochmal bekommen  ) - die Software soll ja was können und da geht Funktion noch immer vor Design.


----------



## spunti (18. Jul 2005)

Ich meinte, wenn ich JFace benutze, was muß ich dann alles mitliefern?
Ich komm darauf, daß man dann haufen Sachen mitliefern muß, weil
1.)mein akutelles Programm das anscheinend so will, da benutz ich von JFace den PrefereceStore und einen Dialog
und 2.)weil hier in dem Tutorial über Standalone-SWT/JFace noch eine ganze Reihe von zusätzlichen jars gefordert werden:
http://www-128.ibm.com/developerworks/opensource/library/os-ecgui1/

Mich wundert aber, daß ich z.B. JFace gar nicht einzeln ohne Eclipsr runterladen kann. Verwirrt mich etwas. Sollte man vielleicht JFace besser nicht verwenden und nur reines SWT?

danke
spunti


----------



## Guest (19. Jul 2005)

Welche Komponenten meint ihr eigentlich, die man so dringend braucht und die bei SWT/JFace nicht vorhanden sind und die sich nur schwer erstellen lassen?

Bisher bin ich mit den SWT-Bordmitteln eigentlich ganz gut zurecht gekommen.

/Helios


----------



## skatbruder (19. Jul 2005)

spunti hat gesagt.:
			
		

> Sollte man vielleicht JFace besser nicht verwenden und nur reines SWT?



Ist nicht empfehlenswert. Die höhere Abstraktion des JFace-Frameworks gegenüber SWT spart dir viel Arbeit, bspw. wenn du mit Table- und Tree-Widgets arbeitest. In diesem Fall solltest du auf jeden Fall mit dem jface.viewers-Framework arbeiten. Weitere nützliche Frameworks sind bspw. jface.resource zur Resourcen-Verwaltung oder jface.wizard zur unkomplizierten Erstellung von Wizards. Mein Tipp wäre daher, SWT und JFace sinnvoll zu kombinieren.

Was die SWT-vs-Swing-Debatte angeht, habe ich hier einen der wenigen Artikel gefunden, der wirklich versucht, auf Grund eigener Erfahrungen sachlich zu argumentieren und nicht nur irgendwelche Klischees a la "SWT sieht besser aus" oder "Swing ist langsam" gegeneinander aufbringt.

http://www.hacknot.info/hacknot/action/showEntry?eid=74


----------

