SWT & Swing - Grundlegende Informationen
Abschließendes:
Die Forensuche ergab, dass es keine FAQ gibt, die das Thema SWT hat oder auch nur über SWT im entferntesten handelt. Falls es dennoch eine vergleichbare FAQ gibt, bitte ich mein Versäumnis zu entschuldigen.
Ich behaupte nicht, dass meine Recherchen all umfassend sind oder alles richtig ist.
(wenngleich ich auch alles hier stehende recherchiert habe, kann ich nicht auf die Richtigkeit in allen Punkten garantieren)
Wenn jemand Verbesserungsvorschläge hat, kann er diese gerne an mich oder jeden Mod abgeben.
Auch Fehler dürfen mir gerne mitgeteilt werden, und ich bin auch nicht böse, wenn man (konstruktive) Kritik ausübt.
Weiterführende Links:
- Was ist SWT?
Das Standard Widget Toolkit ist eine von IBM entwickelte Bibliothek zur Entwicklung grafischer Oberflächen für Java.
Sie wurde ursprünglich entwickelt um eine effektive Oberfläche für Eclipse bieten zu können.
Die Entwicklung wurde angefangen, da AWT von Sun nicht mehr weiterentwickelt wurde und Swing damals als langsam, speicherfressend und fehlerbehaftet galt.
SWT nutzt die nativen (System eigenen) Komponenten (auch heavyweight Components genannt). Das bedeutet, dass in SWT die meisten Widgets nicht nur nativ aussehen, sondern auch entsprechende Verhaltensmuster bieten, da sie vom Betriebssystem gerendert und erzeugt werden.
Durch die nahe Bindung an das Betriebssystem, muss SWT allerdings auch entsprechende dynamische Bibliotheken mitliefern, wodurch SWT nicht mehr grundsätzlich plattformunabhängig ist.
- Was ist Swing?
Auch Swing ist eine Bibliothek zur Entwicklung grafischer Oberflächen in Java.
Das von Sun entwickelte Swing nutzt "leichtgewichtige" Komponenten (auch lightweight Components genannt). Das bedeutet, dass die Komponenten direkt in Java gerendert werden und dadurch auf jedem Betriebssystem gleich aussehen und sich gleich verhalten.
- Was sind die Vorteile von SWT?
- In SWT erstellte Programme bieten ein Aussehen und Verhalten, dass sich stark am Betriebssystem orientiert. Dadurch können Programme erzeugt werden, die nicht von anderen Programmen aus anderen Sprachen zu unterscheiden sind.
- SWT ist auf Windows Systemen recht performant
- Swing Komponenten lassen sich über SWT nutzen
- Es sind auch solche Funktionen nutzbar, die vom Betriebssystem selbst abhängen
- Was sind die Nachteile von SWT?
- Auf Nicht-Windows Systemen (wie Linux) ist SWT manchmal weniger performant, da bestimmte Basistools nicht vorhanden sind und erst emuliert werden müssen.
- Da SWT nicht zur Standard Bibliothek gehört, muss es extra mit dem Programm ausgeliefert werden
- SWT ist nicht MVC basiert, bietet mit der JFace Erweiterung aber eine MVC Abstraktion (Was MVC ist, erfahrt ihr hier)
- Nicht zwingend ein Nachteil, aber dennoch zu erwähnen ist, dass die meisten SWT-Widgets nicht erweitert werden können
- SWT ist im Allgemeinen nicht Thread-Sicher, emuliert dies jedoch durch den so genannten GUI-Thread
- Was sind die Vorteile von Swing?
- Swing ist vollständig in Java geschrieben und damit plattformunabhängig.
- Swing lässt sich durch die Look and Feels dynamisch (und zur Laufzeit) anpassen
- Swing ist inzwischen ähnlich performant wie SWT
- Swing ist in der Standard Bibliothek von Java enthalten und muss damit nicht mit ausgeliefert werden
- Swing ist MVC basiert
- Was sind die Nachteile von Swing?
- In Swing können keine SWT Elemente genutzt werden
- Die gemeinsame Nutzung von Swing und AWT kann zu starken Problemen führen (siehe Warum nicht AWT und Swing mischen?)
- Dass Aussehen und das Verhalten von Swing basierten GUIs unterscheidet sich in vielen Fällen vom Betriebssystem
- Swing ist im Allgemeinen nicht Thread-Sicher, emuliert dies jedoch über bestimmte Techniken (siehe Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 16.25 AWT, Swing und die Threads)
- Und was ist mit AWT?
AWT ist zwar noch in Java vorhanden, sollte aber möglichst nicht mehr genutzt werden, da AWT inzwischen stark veraltet ist und SWING in nahezu allen Fällen besser geeignet ist.
- Was ist nun besser? SWT oder Swing?
Diese Frage zu beantworten ist nahezu unmöglich.
SWT und Swing haben beide ihre Vor- und Nachteile.
Welches System man nun nutzt, hängt stark von den Anforderungen ab und von den Vorlieben der Entwickler.
Meiner Meinung nach, bieten sich folgende Empfehlungen an:
SWT sollte immer dann gewählt werden, wenn man nur für Windows Systeme entwickelt und dort eine nahe Bindung an das System aufbauen will. Das liegt darin begründet, dass die meisten Funktionen von SWT auf Windows Systemen am besten und sichersten laufen.
Swing ist dagegen immer dann zu empfehlen, wenn man voll Plattformunabhängig sein will.
Die Plattformunabhängigkeit ist hier sehr einfach zu erreichen und man erreicht, dass sich das Programm auf jedem System gleich aussieht und das gleiche Verhalten bietet.
Abschließendes:
Die Forensuche ergab, dass es keine FAQ gibt, die das Thema SWT hat oder auch nur über SWT im entferntesten handelt. Falls es dennoch eine vergleichbare FAQ gibt, bitte ich mein Versäumnis zu entschuldigen.
Ich behaupte nicht, dass meine Recherchen all umfassend sind oder alles richtig ist.
(wenngleich ich auch alles hier stehende recherchiert habe, kann ich nicht auf die Richtigkeit in allen Punkten garantieren)
Wenn jemand Verbesserungsvorschläge hat, kann er diese gerne an mich oder jeden Mod abgeben.
Auch Fehler dürfen mir gerne mitgeteilt werden, und ich bin auch nicht böse, wenn man (konstruktive) Kritik ausübt.
Weiterführende Links:
Zuletzt bearbeitet von einem Moderator: