Zum Inhalt springen

Standard Widget Toolkit

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von JFace)
Standard Widget Toolkit

[[Datei:Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)|150px]]
Datei:Eclipse SWT Windows example.png
Beispielanwendung unter Windows 10
Basisdaten

Hauptentwickler Eclipse Foundation
Entwickler Stephen Northover
Erscheinungsjahr Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
Aktuelle Version Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value))
Aktuelle Vorabversion Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value))
Betriebssystem plattformunabhängig
Programmier­sprache Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
Kategorie GUI-Toolkit
Lizenz Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)

Das Standard Widget Toolkit (SWT) ist ein GUI-Toolkit für die Erstellung grafischer Oberflächen mit Java.

Geschichte[Bearbeiten]

SWT wurde von IBM für die Entwicklungsumgebung Eclipse entwickelt. Das Designprinzip geht jedoch auf IBM VisualAge zurück, das in Smalltalk geschrieben war. Es nutzte mit den Common Widgets (CW) eine gemeinsame API für alle Plattformen, die native Widgets vorsah, um das Look and Feel des Betriebssystems zu erhalten und für eine gute Performance zu sorgen.<ref>FAQ Why does Eclipse use SWT? In: GitHub. Abgerufen am 6. Juli 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

Architektur[Bearbeiten]

Bei SWT werden native Widgets durch dünne Wrapper eingebunden, anstatt Teile der Funktionalität in native Peer-Klassen auszulagern wie etwa bei AWT. Der Nachteil ist, dass jede Schicht für jedes Betriebssystem einzeln implementiert und mit der jeweiligen API interagiert werden muss.<ref>Steve Northover, Mike Wilson: SWT: the standard widget toolkit. Addison-Wesley, Boston 2004, ISBN 0-321-25663-8, S. xxi.</ref> Zudem müssen Ressourcen des Betriebssystems nach Verwendung manuell wieder freigegeben werden, da sie nicht mit der Garbage Collection der Java Virtual Machine verbunden sind.<ref>Carolyn MacLeod, Steve Northover: Managing Operating System Resources. 27. November 2001, abgerufen am 7. Juli 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> SWT verwendet das Model View Controller Entwurfsmuster.<ref>Mauro Marinilli: Swing and SWT: A Tale of Two Java GUI Libraries. Archiviert vom Vorlage:IconExternal am 23. Juni 2005; abgerufen am 7. Juli 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Auf der Basis von SWT lassen sich auch eigene Widgets erstellen.<ref>Steve Northover, Carolyn MacLeod: Writing Your Own Widget. 22. März 2001, abgerufen am 7. Juli 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Die Betriebssystemsschicht bleibt dabei abstrahiert und wird nicht durchgereicht. Die Verwendung von SWT erfolgt ausschließlich über dessen Java-Schnittstelle.<ref>Steve Northover: SWT: The Standard Widget Toolkit. 22. März 2001, abgerufen am 7. Juli 2026.</ref>

SWT wurde als reaktionsschnellere und kompaktere Konkurrenz zu Swing entwickelt. Leistungsvergleiche zeigen allerdings, dass SWT nicht schneller als Swing ist und die Resultate stark vom Kontext und der Testumgebung abhängen.<ref>Igor Križnar: SWT Vs. Swing Performance Comparison. (PDF) In: cosylab.com. 3. März 2006, archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 4. Juli 2008; abgerufen am 16. September 2009: „Initial expectation before performing this benchmark was to find SWT outperform Swing. This expectation stemmed from greater responsiveness of SWT-based Java applications (e.g., Eclipse IDE) compared to Swing-based applications. However, this expectation could not be quantitatively confirmed.“</ref> Die Entwickler von Eclipse verweisen darauf, dass die hochabstrahierte Architektur und das auf allen Plattformen gleiche Aussehen von Swing eine andere Herangehensweise mit anderen Designzielen sei und beide Toolkits jeweils unterschiedliche Trade-offs besäßen.<ref>FAQ Is SWT better than Swing? In: GitHub. Abgerufen am 6. Juli 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

JFace[Bearbeiten]

Das GUI-Toolkit JFace setzt aus den von SWT gelieferten Basiskomponenten komplexere Widgets zusammen und stellt eine Abstraktionsschicht (Viewer) für den Zugriff auf die Komponenten bereit.<ref>Lars Vogel: Eclipse JFace Overview - Tutorial. In: vogella.com. Abgerufen am 6. Juli 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Die wichtigsten Klassen von JFace sind:

  • Viewers zur Verbindung von GUI-Elementen zum Datenmodell
  • Actions zur Entkopplung von GUI-Events und der auszuführenden Aktion
  • Image- und Font-Registries zur Verwaltung von Bildern und Schriftarten
  • Komplexere GUI-Elemente wie Wizards und Dialoge

Verfügbare Systeme und Architekturen[Bearbeiten]

Datei:Eclipse SWT Linux example.png
Die gleiche Anwendung unter Linux
Datei:Eclipse SWT Mac example.png
… und unter Mac

Aktuelle Versionen unterstützen folgende Betriebssysteme, GUI-Toolkits und CPU-Architekturen:<ref>Lars Vogel: SWT - Tutorial. In: vogella.com. Abgerufen am 6. Juli 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

Zu den historischen Plattformen zählen:<ref>David Williams, Christopher Guindon: 4.6.3 - Eclipse Project Downloads. Abgerufen am 6. Juli 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref>Release Build: 3.0. In: archive.eclipse.org. 25. Juni 2004, abgerufen am 6. Juli 2026.</ref>

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

<references />