Swing-Komponenten sind leicht?
Frage
Jedes Mal, wenn ich über Schwingen lesen sie sagen, dass sie leichte Komponenten sind. Also ich Schwingen gerade gegoogelt und fand, dass es bedeutet, Schaukel hängt nicht von einheimischen Gleichaltrigen. Ist das, warum sie genannt "light weight" ? Ich meine, durch geringes Gewicht Ich dachte, vielleicht die Swing-Komponenten weniger Speicher als die AWT-Komponenten besetzen. Ist das nicht so?
Lösung
Swing- wird als leicht, weil es vollständig in Java implementiert ist, ohne das native Betriebssystem Aufruf für die grafischen Benutzeroberfläche Komponenten zeichnen.
Auf der anderen Seite, AWT (Abstract Window Toolkit) ist Schwergewichts-Toolkit, da es lediglich Aufrufe an das Betriebssystem, um seine GUI-Komponenten zu erzeugen.
Die Entwicklung des Swing-Lackiersystem Abschnitt aus die Malerei in AWT und Swing Artikel beschreibt den Unterschied zwischen Leicht- und Schwer :
Wenn der ursprüngliche AWT API war nur für JDK 1.0, entwickelt Schwergewichts-Komponenten bestanden ( „Schwergewichtige“ bedeutet, dass die Komponente verfügt über eine eigene undurchsichtige nativen Fenster). Dies ermöglichte die AWT zu verlassen stark auf dem Lack-Subsystem in jedem native Plattform.
[...]
Mit die Einführung von leichten Komponenten in JDK 1.1 (eine "leichte" Komponente ist eine, die die wiederverwendet nativen Fenster seiner engsten Schwergewichts-Vorfahren), die AWT benötigt die Lackverarbeitung zu implementieren, für Leichtbaukomponenten in der gemeinsamen Java-Code.
Als Swing-in Java implementiert ist, dauert es einige Performance-Nachteil haben, aber ich höre, dass die Leistung in den letzten Versionen von Java verbessert hat.
Der Vorteil von Swing ist, dass es viele weitere Komponenten zur Verfügung, wie JTable
und JList
, die mehr grafische und erweiterbare als die bereitgestellten Komponenten in AWT ist, für mehr grafikintensive Anwendungen ermöglicht entwickelt werden.
Andere Tipps
Leicht vs Schwergewicht ist eine Frage, wie die UI-Komponenten umgesetzt werden. Schwergewichts-Komponenten wickeln Betriebssystemobjekte, Leichtbaukomponenten nicht. Sie werden streng in der JDK implementiert.
Das ist einfach ein Zusatz, der das Schwergewicht gegen Leichtgewicht in einem anderen Kontext befaßt. Programmiermodell
In diesem Zusammenhang Swing ist definitiv Schwergewicht und kompliziert. Es ist nicht geeignet für Thin-Client-Implementierung in Betracht gezogen, und angesichts der Tatsache, dass heute gibt es so viele verschiedene Geräte, Swing ist in der Tat tot Technologie, obwohl Oracle nicht zurückgezogen hat ... noch (siehe auch JavaFX als Alternative ).