close
Zum Inhalt springen

Standard Widget Toolkit

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von JFace)
Standard Widget Toolkit
BERJAYA
Beispielanwendung unter Windows 10
Basisdaten
Hauptentwickler Eclipse Foundation
Entwickler Stephen Northover
Aktuelle Version 4.34.0[1]
(20. November 2024)
Betriebssystem plattformunabhängig
Programmier­sprache Java[2]
Kategorie GUI-Toolkit
Lizenz Eclipse Public License 2.0[3]
www.eclipse.org/swt/

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

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.[4]

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.[5] 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.[6] SWT verwendet das Model View Controller Entwurfsmuster.[7] Auf der Basis von SWT lassen sich auch eigene Widgets erstellen.[8] Die Betriebbsystemsschicht bleibt dabei abstrahiert und wird nicht durchgereicht. Die Verwendung von SWT erfolgt ausschließlich über dessen Java-Schnittstelle.[9]

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.[10] 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.[11]

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.[12] 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 | Quelltext bearbeiten]
BERJAYA
Die gleiche Anwendung unter Linux
BERJAYA
… und unter Mac

Aktuelle Versionen unterstützen folgende Betriebssysteme, GUI-Toolkits und CPU-Architekturen:[13]

Zu den historischen Plattformen zählen:[14][15]

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Eclipse 4.34.0 Release Build: 4.34. 20. November 2024 (abgerufen am 10. Februar 2025).
  2. The swt Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 19. Oktober 2018).
  3. Eclipse Public License 2.0. In: GitHub.
  4. FAQ Why does Eclipse use SWT? In: GitHub. Abgerufen am 6. Juli 2026 (englisch).
  5. Steve Northover, Mike Wilson: SWT: the standard widget toolkit. Addison-Wesley, Boston 2004, ISBN 0-321-25663-8, S. xxi.
  6. Carolyn MacLeod, Steve Northover: Managing Operating System Resources. 27. November 2001, abgerufen am 7. Juli 2026 (englisch).
  7. Mauro Marinilli: Swing and SWT: A Tale of Two Java GUI Libraries. Archiviert vom Original am 23. Juni 2005; abgerufen am 7. Juli 2026 (englisch).
  8. Steve Northover, Carolyn MacLeod: Writing Your Own Widget. 22. März 2001, abgerufen am 7. Juli 2026 (englisch).
  9. Steve Northover: SWT: The Standard Widget Toolkit. 22. März 2001, abgerufen am 7. Juli 2026.
  10. Igor Križnar: SWT Vs. Swing Performance Comparison. (PDF) In: cosylab.com. 3. März 2006, archiviert vom Original (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.“
  11. FAQ Is SWT better than Swing? In: GitHub. Abgerufen am 6. Juli 2026 (englisch).
  12. Lars Vogel: Eclipse JFace Overview - Tutorial. In: vogella.com. Abgerufen am 6. Juli 2026 (englisch).
  13. Lars Vogel: SWT - Tutorial. In: vogella.com. Abgerufen am 6. Juli 2026 (englisch).
  14. David Williams, Christopher Guindon: 4.6.3 - Eclipse Project Downloads. Abgerufen am 6. Juli 2026 (englisch).
  15. Release Build: 3.0. In: archive.eclipse.org. 25. Juni 2004, abgerufen am 6. Juli 2026.