Vor fast zwei Jahren habe ich die Arbeit an einem Swing basierten Projekt begonnen. Die anderen Teammitglieder fragten mich, was ich von der Entscheidung für Swing und gegen Webtechniken hielt. Ich habe ihnen gratuliert. In meiner Erfahrung werden viel zu viele Webanwendungen gebaut. Klar, Webanwendungen haben Vorteile, aber eben nicht nur. Und für viele Dinge ist ein Rich Client in zwei Schichten Architektur einfach einfacher. Und ich hatte volles Vertrauen in Swing. Ich hatte das letze mal etwa 2002 mit Swing gearbeitet und dachte mir, so langsam müsste es ja wohl gar sein. Nun ja, es war schneller geworden (ich sage nur Quake Tuning). Aber wir sind auf Bugs und Probleme gestoßen, die ich für Toolkit mit einer solch langen Geschichte nicht erwartet hätte. Ein Sanduhr als Wartecursor anzeigen macht mehr Stress als man glauben mag. Defaultbuttons verlieren spontan diese Eigenschaft, nach wie vor kein ausgereifter Standard-Datepicker. Es war schon ein wenig ernüchternd.

Aber es war Licht am Ende des Tunnels. Für Java 7 sollte Beans Binding kommen und das Application Framework und Validation. Alles Dinge für die wir 3rd Party Libraries eingesetzt haben. Doch dann kam es doch wieder ganz anders. Beans Binding kommt nicht von der Stelle, das Application Framework kommt nicht weiter und schließlich wird auch SwingX, einer der wenigen Impulsgeber von Swing erst völlig vor den Kopf gestoßen und am Ende nicht weiter unterstützt. Summa Summarum:

Swing ist tot

Klar, Support wird weiter geleistet. Bugs werden auch noch gefixt ... aber mit Weiterentwicklungen von SUNs Seite ist wohl nicht zu rechnen. Falls Kollegen vom oben erwähnten Projekt dies lesen: Swing war immer noch die richtige Wahl und es gibt keinen Grund in Panik zu verfallen. Aber wenn man heute ein Projekt beginnt, wofür sollte man sich entscheiden?

Swing obwohl dort nichts mehr passiert?

SWT ... welches mich nie überzeugt hat, und das außerhalb von Eclipse auch nicht wirklich beeindruckt?

Oder doch auf Webbasis aufbauen und mit Javascript die Dynamik erkaufen, die man von einem Rich Client erwartet?

JavaFX, was vermutlich bedeutet erstmal 3Jahre zu warten bis der Kram ausgereift ist?

Was ganz anderes wie Flash oder Silverlight?

Ich hab keine Ahnung, und ich weiß nicht was das soll. Trotz allem genöles, ist Swing eine attraktive Technik. Wieso wird dieses Gebiet nicht weiterverfolgt?

Wofür würdet ihr euch entscheiden, wenn ihr einen Rich Client produzieren solltet, der auch über die nächsten 10 Jahre attraktiv, benutzbar und wartbar bleiben soll?