Lohnt es sich noch JavaFX oder Java Swing zu lernen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Swing zu lernen, habe ich bisher stets als geeignete Übung für OOP-Fortgeschrittene gesehen, um sich im gleichen Zuge auch mit ein paar Design Pattern auseinanderzusetzen (z.B. Command, Composite, MVC, Observer, Strategy) und einen ersten Einstieg in die GUI-Programmierung zu finden. In der Hinsicht würde ich also deine Frage für Swing schon mit ja beantworten.

Des Weiteren ist es nicht ausgeschlossen, dass du auch im Berufsleben noch mit Swing in Berührung kommen könntest. Auch wenn es als veraltet gilt, wird das Toolkit noch immer öfter genutzt.

Größtenteils natürlich bei älteren Projekten. Bei Neuentwicklungen wird die Wahrscheinlichkeit höher sein, dass diese mit JavaFX begonnen werden. Swing würde ich deswegen aber nicht komplett ausschließen.

Um ein paar Real World Use Cases für Swing zu nennen: Das Toolkit ist beispielsweise öfter in Software aus dem Bereich der Bioinformatik zu finden. Diese soll dann Genome / RNA-Sequenzen o.ä. visualisieren. Ganz konkrete Beispiele wären hier das GenoViz SDK für IGE, DEWE SEDA, LA-iMageS, Mass-Up oder S2P. Die drei letztgenannten basieren auf dem AIBench-Framework, welches im Kern wiederum auf Java Swing aufbaut. Das heißt, es sind öfter auch Lösungen, die Swing nicht nur nutzen, sondern ebenso (um eigene Abstraktionen) erweitern.

Die Roadmap von Oracle (11.5.2020) sieht vor, Swing und AWT weiterhin im SE zu behalten und zu unterstützen. Daher verwundert mich deine Aussage etwas:

(...) und Java Swing wird bald auch nicht mehr von Oracle unterstützt (...)

Kannst du dazu eine Quelle anhängen?

Nicht verwunderlich fände ich es, wenn sich die künftigen Arbeiten an AWT/Swing weiterhin auf die Wartung limitieren. Beide Toolkits liegen nicht im (wirtschaftlichen) Fokus von Oracle und im Zweifel lässt sich stets auf JavaFX verweisen.

Zu JavaFX: Die Abspaltung vom SE war für das Framework, so wie ich das sehe, vorteilhaft, denn so wurde der Entwicklungsprozess von der Java SE abgekoppelt. Er ist nicht so sehr an die halbjährlichen Java-Updates gebunden. Die Versionssprünge dauern etwas länger, sind aber auch dem Streben nach einer langfristigen Wartung des Projekts geschuldet.

Bezüglich der Zukunftspläne steuert JavaFX in Richtung Support für mobile Endgeräte. Inwiefern es da in der Zukunft auf dem Markt noch groß etwas reißen kann, bleibt spannend, immerhin gibt es da schon ziemlich große (und populärere) Konkurrenz (React, Flutter, vielleicht bald auch MAUI).

Und ob es sich also lohnt, es extra zu lernen? Es schadet natürlich nicht, es sich einmal anzuschauen. Vor allem wenn man die Absicht hat, mit Java dynamische und komplexe Applikationen zu bauen. Im Gegensatz zu Swing ist das Framework für Pattern wie MVC oder MVVM ausgereifter und hat einen besseren Support für die Integration medialer Inhalte (Videos, Charts, Animationen). Des Weiteren kann die WebView-Komponente als Schnittstelle dafür dienen, um die grafische Oberfläche mit HTML und CSS zu gestalten.

Wenn du all das nicht brauchst, reicht Swing vollkommen aus.

Solltest du generell in Richtung Web- / Enterprise-Entwicklung gehen wollen, brauchst du kein JavaFX. Die damaligen Pläne, JavaFX im Web einzusetzen, kann man als gescheitert betrachten. Alles was mit Web Start und Applets zutun hat, ist seit Java 9 deprecated.

Im Web sind Lösungen wie Spring, Struts, Vaadin oder Wicket von größerem Interesse.

JavaFX ist seit Java 11 einfach ein separat gepflegtes Open-Source-Projekt. Es ist in vieler Hinsicht der Nachfolger von Swing und wird aktiv weiterentwickelt.

Java Swing wird bald auch nicht mehr von Oracle unterstützt

Swing ist weiterhin Teil der Standardbibliothek und es gibt keine Anstalten, das zu ändern. Großartige neue Features wird's nicht mehr geben, wobei es aber durchaus manchmal noch interessante Entwicklungen im Umfeld gibt: https://lp.jetbrains.com/projector/

Oracle ist zweifellos noch der relativ größte Sponsor der Entwicklung von Java SE, aber zahlreiche große und sehr erfolgreiche Projekte im (riesigen) Java-Ökosystem haben gar nichts mit Oracle zu tun. Die Situation von Java ist hier anders als z.B. bei .NET, wo das ganze Ökosystem immer noch extrem stark von Microsoft abhängt.