I componenti dell'oscillazione sono leggeri?
Domanda
Ogni volta che leggo Swing dicono che sono componenti leggeri. Quindi ho appena cercato su Google Swing e ho scoperto che significa che Swing non dipende dai colleghi nativi. È per questo che sono chiamati " peso leggero " ? Intendo per leggerezza, ho pensato che forse i componenti Swing occupano meno memoria dei componenti AWT. Non è così?
Soluzione
Swing è considerato leggero perché completamente implementato in Java, senza chiamando il sistema operativo nativo per disegnare i componenti dell'interfaccia utente grafica.
D'altra parte, AWT (Abstract Window Toolkit) è un toolkit per pesi massimi, in quanto semplicemente effettua chiamate al sistema operativo per produrre i suoi componenti della GUI.
La sezione Evolution of the Swing Paint System da l'articolo Painting in AWT and Swing spiega la differenza tra leggero e pesante :
Quando era l'API AWT originale sviluppato solo per JDK 1.0 esistevano componenti pesanti ("pesi massimi" significa che il il componente ha il suo nativo opaco finestra). Ciò ha consentito all'AWT di fare affidamento fortemente sul sottosistema di vernice in ciascuno piattaforma nativa.
[...]
Con l'introduzione del peso leggero componenti in JDK 1.1 (un "leggero") il componente è uno che riutilizza il file finestra nativa più vicina antenato dei pesi massimi), l'AWT aveva bisogno per implementare l'elaborazione della vernice per componenti leggeri nel condiviso Codice Java.
Poiché Swing è implementato in Java, presenta alcuni svantaggi nelle prestazioni, tuttavia, ho sentito che le prestazioni sono migliorate nelle recenti versioni di Java.
Il vantaggio di Swing è che ha molti più componenti disponibili come JTable
e JList
che sono più grafici ed estensibili dei componenti forniti in AWT, consentendo lo sviluppo di applicazioni più ricche di grafica.
Altri suggerimenti
Leggero vs pesante è una domanda su come vengono implementati i componenti dell'interfaccia utente. I componenti pesanti avvolgono gli oggetti del sistema operativo, i componenti leggeri no. Sono implementati rigorosamente nel JDK.
Questo è semplicemente un addendum che si rivolge ai pesi massimi e ai pesi leggeri in un altro contesto: il modello di programmazione.
In questo contesto Swing è decisamente pesante e complicato. Non è considerato adatto per l'implementazione di thin client e dato il fatto che oggi ci sono così tanti dispositivi diversi, Swing è, in effetti, una tecnologia morta, anche se Oracle non l'ha ritirata ... eppure (vedi anche JavaFX come alternativa ).