Wat is het verschil tussen Swing en AWT?

Kan iemand me uitleggen wat het verschil is tussen Swing en AWT?

Zijn er gevallen waarin AWT nuttiger/aanbevolen is om te gebruiken dan swing of omgekeerd?


Antwoord 1, autoriteit 100%

AWT is een Java-interface naar native systeem-GUI-code die aanwezig is in uw besturingssysteem. Het zal niet op elk systeem hetzelfde werken, hoewel het het wel probeert.

Swing is een min of meer pure Java GUI. Het gebruikt AWT om een besturingssysteemvenster te maken en schildert vervolgens afbeeldingen van knoppen, labels, tekst, selectievakjes, enz. In dat venster en reageert op al uw muisklikken, toetsinvoer, enz. in plaats van het besturingssysteem het te laten afhandelen. Swing is dus 100% draagbaar en hetzelfde op alle platforms (hoewel het skinnable is en een “pluggable look and feel” heeft waardoor het er min of meer uitziet zoals de oorspronkelijke vensters en widgets eruit zouden zien).

Dit zijn enorm verschillende benaderingen van GUI-toolkits en hebben veel consequenties. Een volledig antwoord op uw vraag zou proberen al deze te verkennen. 🙂 Hier zijn er een paar:

AWT is een platformonafhankelijke interface, dus hoewel het het onderliggende besturingssysteem of de native GUI-toolkit gebruikt voor zijn functionaliteit, biedt het geen toegang tot alles wat die toolkits kunnen doen. Geavanceerde of nieuwere AWT-widgets die mogelijk op het ene platform bestaan, worden mogelijk niet ondersteund op een ander. Functies van widgets die niet op elk platform hetzelfde zijn, worden mogelijk niet ondersteund, of erger nog, ze werken op elk platform anders. Vroeger deden mensen veel moeite om hun AWT-applicaties consistent te laten werken op verschillende platforms – ze zouden bijvoorbeeld kunnen proberen om vanuit Java naar native code te bellen.

Omdat AWT native GUI-widgets gebruikt, is uw besturingssysteem hiervan op de hoogte en verwerkt het ze voor elkaar, enz., terwijl Swing-widgets zinloze pixels in een venster zijn vanuit het oogpunt van uw besturingssysteem. Swing zelf zorgt voor de lay-out en stapeling van uw widgets. Het mixen van AWT en Swing wordt in hoge mate niet ondersteund en kan leiden tot belachelijke resultaten, zoals native knoppen die al het andere verbergen in het dialoogvenster waarin ze zich bevinden, omdat al het andere is gemaakt met Swing.

Omdat Swing al het mogelijke in Java probeert te doen, behalve de zeer onbewerkte grafische routines die worden geboden door een native GUI-venster, was het een behoorlijk prestatieverlies in vergelijking met AWT. Hierdoor sloeg Swing helaas langzaam aan. Dit is de afgelopen jaren echter dramatisch gekrompen als gevolg van meer geoptimaliseerde JVM’s, snellere machines en (ik neem aan) optimalisatie van de interne onderdelen van Swing. Tegenwoordig kan een Swing-applicatie snel genoeg draaien om bruikbaar of zelfs pittig te zijn, en bijna niet te onderscheiden van een applicatie die native widgets gebruikt. Sommigen zullen zeggen dat het veel te lang duurde om op dit punt te komen, maar de meesten zullen zeggen dat het de moeite waard is.

Ten slotte wil je misschien ook eens kijken naar SWT (de GUI-toolkit die wordt gebruikt voor Eclipse en een alternatief voor zowel AWT als Swing), wat een beetje een terugkeer is naar het AWT-idee van toegang tot native Widgets via Java.

p>


Antwoord 2, autoriteit 15%

Het basisverschil dat iedereen al noemde, is dat de ene zwaaris en de andere licht. Laat me uitleggen, wat de term zwaargewicht in feite betekent, is dat wanneer u de awt-componenten gebruikt, de native code die wordt gebruikt voor het verkrijgen van de view-component wordt gegenereerd door het besturingssysteem, daarom is het uiterlijk en voel veranderingen van besturingssysteem naar besturingssysteem.Waar het bij swingcomponenten de verantwoordelijkheid is van JVM om de weergave voor de componenten te genereren.Een andere verklaring die ik zag is dat swing is gebaseerd op MVC en awt niet.


Antwoord 3, autoriteit 7%

Swing versus AWT. In feite kwam AWT eerst en is een set van zware UI-componenten (wat betekent dat het wrappers zijn voor besturingssysteemobjecten), terwijl Swing bovenop AWT is gebouwd met een rijkere set lichtgewicht componenten.

Al het serieuze Java UI-werk wordt gedaan in Swing, niet in AWT, dat voornamelijk werd gebruikt voor applets.


Antwoord 4, autoriteit 5%

Voor zover AWT nuttiger kan zijn dan Swing –

  • mogelijk richt u zich op een oudere JVM of platform dat Swing niet ondersteunt. Dit speelde altijd een rol als je Applets bouwde – je wilde je richten op de kleinste gemene deler, zodat mensen geen nieuwere Java-plug-in hoefden te installeren. Ik weet niet zeker wat de huidige meest geïnstalleerde versie van de Java-plug-in is – dit kan vandaag anders zijn.
  • sommige mensen geven de voorkeur aan het oorspronkelijke uiterlijk van AWT boven de ‘niet helemaal daar’-platformskins van Swing. (Er zijn betere native skins van derden dan de implementaties van Swing trouwens) Veel mensen gaven de voorkeur aan het gebruik van AWT’s FileDialog boven Swing’s FileChooser omdat het de platformbestandsdialoog gaf die de meeste mensen gewend waren in plaats van de ‘rare’ aangepaste Swing.

Antwoord 5, Autoriteit 4%

Verschillende gevolgen resulteren uit dit verschil tussen AWT en Swing.

AWT is een dunne laag code bovenop het besturingssysteem, terwijl swing veel groter is.
Swing heeft ook heel veel rijkere functionaliteit. Met AWT, dat moet je
Implementeer veel dingen zelf, terwijl de swing ze heeft ingebouwd. Voor
Gui-intensief werk, tint voelt erg primitief om mee te werken in vergelijking met swing.
Omdat swing de GUI-functionaliteit zelf implementeert in plaats van te vertrouwen op de
HOST OS, het kan een rijkere omgeving bieden op alle platforms Java werkt op.
AWT is beperkter in het leveren van dezelfde functionaliteit op alle platforms
Omdat niet alle platforms dezelfde ogende controles in hetzelfde implementeren
manieren.

Swing-componenten worden “lichtgewicht” genoemd omdat ze geen a nodig hebben
Native OS-object om hun functionaliteit te implementeren. JDialogen JFramezijn
zwaargewicht, omdat ze een peer hebben. Dus componenten zoals JButton,
JTextArea, etc., zijn lichtgewicht omdat ze geen OS-peer hebben.

A Peer is een widget van het besturingssysteem, zoals een
knop object of een invoerveldobject.


Antwoord 6, Autoriteit 3%

swing:

  1. Swing maakt deel uit van de Java Foundation-klassen.
  2. Swing Components zijn platformonafhankelijk.
  3. Swing Components zijn lichtgewicht componenten omdat swing op de top van AWT zit.

awt:

  1. AWT wordt het abstracte venstergereedschap genoemd.
  2. AWT-componenten zijn platformafhankelijk.
  3. AWT-componenten zijn zwaargewicht componenten.

Antwoord 7, Autoriteit 2%

  • Swing Component biedt veel flexibele gebruikersinterface omdat het
    Volg Model View Controller (MVC).
  • AWT is geen MVC gebaseerd.
  • schommelen werkt sneller.
  • awt werkt niet sneller.
  • schommelcomponenten zijn licht van gewicht.
  • awt-componenten zijn zwaar.
  • swing neemt minder geheugenruimte in beslag.
  • awt neemt meer geheugenruimte in beslag.
  • swing-component is platformonafhankelijk.
  • awt is platformafhankelijk.
  • swing vereist javax.swing-pakket.
  • awt vereist javax.awt-pakket.

Antwoord 8

AWT
1 . AWT neemt meer geheugenruimte in beslag
2 . AWT is platformafhankelijk
3 . AWT vereist javax.awt-pakket

schommels
1 . Swing neemt minder geheugenruimte in beslag
2 . Swing-component is platformonafhankelijk
3 . Swing vereist javax.swing-pakket


Antwoord 9

Java 8

Zwaaien

  • Het maakt deel uit van Java Foundation Classes
  • Swing is gebouwd op AWT
  • Schommelcomponenten zijn lichtgewicht
  • Swing ondersteunt pluggable look en feel
  • Platformonafhankelijk
  • Gebruikt MVC: Model-View-Controller-architectuur
  • pakket: javax.swing
  • In tegenstelling tot de andere componenten van Swing,
    die lichtgewicht zijn, zijn de containers op het hoogste niveau zwaar.

AWT – Abstracte venster-toolkit

  • Platformafhankelijk
  • AWT-componenten zijn zwaar
  • pakket java.awt

Other episodes