# SWT Alternative zu AWT/Swing?



## MikeTheBike (3. Jul 2012)

Hallo, 

als Java-Anfänger hab ich eine Frage: Soweit ich es verstanden habe, ist SWT eine Alternative zu AWT und Swing. Kann ich SWT lernen, ohne AWT/Swing zu lernen, bzw. macht das für einen Anfänger Sinn? Ich will halt gleich das lernen, was ich auch brauche, nicht mehr. 

Und der Zusammenhang SWT - Eclipse RCP ist mir nicht ganz klar. Ersteres ist ein Teil des Letzteren, richtig? Also wenn hier im Forum von Eclipse RCP die Rede ist, ist automatisch SWT immer mitgemeint, oder?

Bin dankbar für Eure Erklärungen.


----------



## dzim (3. Jul 2012)

Hi,

du hast recht: SWT ist eine Alternative. Es macht IMHO auch für Anfänger Sinn.
Die Eclipse IDE ist ein Beispiel für eine SWT-Anwendung, aber auch Vuze/Azureus, RSS-Owl und andere Open Source Programme.

Eclipse RCP beschreibt dabei die komplexe Plattform mit der es einfacher sein soll auch komplizierte modulare Programme (Stichwort ist hier OSGi).
Tatsächlich ist aber IMHO weder die 3.x noch die neue 4.2 Plattform sehr Einsteigerfreundlich und sehr komplex. Ich arbeite jetzt einige Jahre damit und bin zwar durchaus als Fan zu bezeichnen, aber wirklich zu 100% durchgestiegen bin ich noch nicht.

Vorteil von SWT ist, dass deine Anwendungen ohne weitere Arbeit "nativ" aussehen - so, als ob sie ins System gehören. Bei Swing (AWT selbst ist keine echte Alternative - veraltet!) musst du entsprechende Look & Feels anwenden.
Mit Netbeans würde dir hier auch eine komplette RCP zur Verfügung stehen, darüber kann ich allerdings nicht allzuviel sagen...

Der Nachteil an SWT resultiert aus seinem Vorteil: Du brauchst immer ein spezielles Plattformabhängiges Paket (für Win, Linux, Mac). Wenn du dir im Vorfeld allerdings die aktuelle API und alle notwendigen Plattformabhängigen Pakete holst und den Export vorher bereits durchdenkst, stellt das kein Problem dar!

Alles in allen würde ich persönlich SWT vorziehen, erst einmal aber Eclipse RCP am Rand liegen lassen - du musst nicht notwendigerweise Eclipse verwenden um eine SWT-Anwendung zu erstellen.
Hier findest du alles, was du erst einmal brauchst: SWT: The Standard Widget Toolkit

Wenn du noch fragen hast, einfach raus damit!


----------



## Sonecc (3. Jul 2012)

Das meiste hat dzim schon gesagt, allerdings ist der RCP teil zu klein 

RCP ist ein Framework und ein Toolset, mit dem du komplexere Programme entwickeln kannst.
RCP hilft dir insofern, als dass es verschiedene Features anbietet, die du dann nicht mehr extra entwickeln musst (bspw. Das View/Editor Prinzip).
Ein Thema in diesem Forum, dass das anspricht ist: http://www.java-forum.org/plattformprogrammierung/138298-frage-verwendung-rcp.html

Eine kleine FAQ zu SWT und Swing findest du hier: http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/135693-swt-swing-grundlegende-informationen.html


----------



## krazun (3. Jul 2012)

MikeTheBike hat gesagt.:


> Also wenn hier im Forum von Eclipse RCP die Rede ist, ist automatisch SWT immer mitgemeint, oder?



Ich möchte noch ergänzen: Bei Eclipse RCP 3.x ist immer SWT die GUI-Technologie, bei Eclipse 4.x dagegen kann man sich leicht einen eigenen Renderer für jede GUI-Technologie schreiben. Also kann bei Eclipse RCP 4.x auch von Swing, JavaFX 2.1 oder anderem die Rede sein.

Und da du anscheinend grade GUI-Technologien evaluierst möchte ich noch JavaFX 2.1 in den Raum werfen, falls du dies nicht schon bewusst ausgeschlossen hast. JavaFX wird Swing/AWT als GUI-Technologie auf Mittlere/Lange sicht ablösen und momentan würde ich einem Anfänger guten gewissens raten direkt dort einzusteigen. 

grüße,
krazun


----------



## Sonecc (3. Jul 2012)

krazun hat gesagt.:


> (...) JavaFX wird Swing/AWT als GUI-Technologie auf Mittlere/Lange sicht ablösen (...)



Sehe ich anders und halte ich für eine gewagte Aussage.


----------



## krazun (3. Jul 2012)

Sonecc hat gesagt.:


> Sehe ich anders und halte ich für eine gewagte Aussage.




JavaFX 2.1 ist deutlich moderner als Swing. Teile des Swing Teams sind zu JavaFX rübergewechselt und Swing wird nicht mehr weiterentwickelt von Oracle, JavaFX dagegen schon, dort findet in Zukunft die gesamte Weiterentwicklung statt.

Das JavaFX der Java Client Standard werden soll ist die Offizielle Aussage von Oracle, ob die Entwickler das auch annehmen is wiederum eine andere Sache. Allerdings spricht außer der Fülle an Komponenten die Swing auf Grund des Alters JavaFX noch vorraus hat nichts mehr für Swing. Doch auch dies wird sich in Zukunft ändern.

Swing wird sicherlich noch lange eine Rolle spielen, da entsprechende Anwendungen haufenweise existieren und gepflegt werden wollen. Allerdings tut man sicher gut daran sich in JavaFX schonmal einzulesen und bei Neuentwicklungen auch darauf zu setzen, falls es keine konkreten Gründe dagegen gibt.

grüße,
krazun


----------



## Sonecc (3. Jul 2012)

Ich sehe gerade, ich hatte mich verlesen, nehme meine vorherige Aussage damit zurück


----------

