# Was wird heute mehr verwendet - Swing oder AWT?



## DennisXX (6. Jan 2011)

Und wenn ja warum gerade das eine und nicht das andere?

mfg


----------



## Marco01_809 (6. Jan 2011)

http://www.java-forum.org/entwuerfe/94299-faq-swt-swing-grundlegende-informationen.html
Guckst du 7.


----------



## Herr K. (7. Jan 2011)

Hallo Dennis,

der Unterschied ist leider nicht in dem Link erläutert, deshalb würde ich den als "wenig geeignet" bezeichnet (sorry @Marco). 

Bei AWT handelt es sich quasi um den "Vorläufer" von Swing. Genauer um eine erste Schnittstelle die Java die Verwendung von GUIs erlaubt(e). Dabei stand, ganz dem Java-Konzept entsprechend, die Plattformunabhängigkeit im Vordergrund. Um diese zu erreichen wurde einfach der Umfang der Komponenten auf das beschränkt, was wirklich auf jeder Plattform zur Verfügung steht. Die Liste der Komponenten fällt hier eher bescheiden aus und es fehlt schnell etwas (ich glaube schon Tabellen wirst Du nicht finden). 

AWT führte nun also zu einem Konflikt, auf der einen Seite wollte man eine plattformunabhängige Programmierung aufrecht halten, auf der anderen Seite möchte man natürlich auch nicht nur einfachste Oberfläche erlauben, bei denen elementare Elemente fehlen. Als Kompromiss hat man Swing geschaffen, bei dem keine nativen/ fertigen Komponenten des Betriebssytems verwendet werden, sondern Zeichenfunktionen. Statt also Windows oder Linux zu sagen, dass man einen Dialog öffnen möchte (und dem OS die Arbeit zu überlassen) zeichnet Swing den Dialog einfach auf den Bildschirm. 

Das hat den Vorteil, dass man nun jede denkbare Komponente erstellen kann, allerdings geht dies auf Kosten der benötigten Rechenleistung. Hier wurde natürlich in den letzten Jahren viel optimiert und verbessert, trotzdem werden mit Swing Applikationen gerne grafisch eher einfache Anwendungen mit geringer Performance assoziiert. 

Aber auch zu diesen beiden Schnittstellen gibt es Alternativen. Die bekanntest ist sicher SWT, eine einfache Abstraktionsschicht, die (wie AWT) direkt auf die Elemente des OS zugreifen. Entsprechend sieht ein SWT Fenster genauso wie jedes andere Fenster aus. Windows wurde einfach als Referenz verwendet, weshalb gerne darauf hingewiesen wird, dass SWT unter diesem System am performantesten funktioniert. Man sollte hier beachten, dass hier nur ein Vergleich des gleichen Werkzeugs auf unterschiedlichen Plattformen erfolgt, denn SWT bietet meist immer noch eine höhere Performance (und vor allem ein gewohnteres Aussehen und Verhalten) als ein Swing pendant. 
Wie bereits gesagt unterstützt eben nicht jede Plattform die gleichen Komponenten. Während Swing hier stets alles zeichnet verwendet SWT einfach eine Form der Emulation und baut das fehlende Verhalten nach (was dann zur schlechteren Performance führen kann). 

Ganz ähnlich kannst Du übrigens auch auf Qt zugreifen, auch hier gibt es einfach eine Kapselung, welche eine Java-Schnittstelle anbietet, darunter liegt dann Qt, dass selbst wieder die Systemfunktionen verwendet. 

Aktuell machen es nur SWT und Swing unter sich aus. Sie unterscheiden sich in der Plattformunabhängigkeit (SWT muss mehr tun um diese zu erreichen, das heißt man muss mehr Bibliotheken mitliefern, der Rest ist transparent und muss einen nicht stören), Swing sieht wirklich überall gleich aus, hat aber im Betrieb einen höheren Overhead und wirkt nicht gerade spritzig. Das es beide noch (mit guter Verbreitung) gibt zeigt auch einfach, dass es für beides Anwendungsfälle gibt.


----------



## DennisXX (7. Jan 2011)

ok danke für die Erläuterungen. Mir ist dadurch gerade noch eine Frage eingefallen, die zar mit der eigentlichen Frage nichts zu tun hat, aber trotzdem interessant sein dürfte.

Ist eine Webanwendung (z.B. mit JSF) besser, als eine Desktopanwendung (z.B. mit Swing)? Wann genau entwickle ich eine Web- und wann eine Desktopanwendung? Hat Webanwendung immer Vorteile?


----------



## bygones (10. Jan 2011)

DennisXX hat gesagt.:


> Ist eine Webanwendung (z.B. mit JSF) besser, als eine Desktopanwendung (z.B. mit Swing)?


die Frage ist "was ist dein Qualitätskriterium".... als simple antwort auf diese Frage: Nein



DennisXX hat gesagt.:


> Wann genau entwickle ich eine Web- und wann eine Desktopanwendung? Hat Webanwendung immer Vorteile?


Die Webanwendungen haben in den letzten Jahren immens aufgeholt. Viele mächtige Sachen wie allein schon Tabellensortieren ging vor Jahren in Webandwendungen gar nicht bzw äußerst mühsam. Mittlerweilen sind die beiden imo recht angeglichen. 

Bei Webanwendungen hat man die gesamten Server-Client Vor- und eben auch Nachteile. 

zb:

- Vorteil: Installation für den Kunden trivial. Datenbanken und sonstige Software meist auf Serverseite.
- Nachteil: Ist dein Server mal offline steht der Kunde vor einem Problem.

Vielleicht hat jemand Lust einen Roman zu schreiben.... ansonsten gilt es was die Anforderung des Kunden ists....


----------

