Ich habe ein sehr großes Programm, das derzeit SWT verwendet. Das Programm kann sowohl unter Windows als auch unter Mac und Linux ausgeführt werden und ist eine große Desktop-Anwendung mit vielen Elementen. Jetzt, da SWT etwas alt ist, möchte ich entweder zu Swing oder JavaFX wechseln. Und ich würde gerne Ihre Gedanken zu drei Dingen hören.
Mein Hauptanliegen ist, was für eine Desktop-GUI-Anwendung besser ist. (Ich habe online gesucht und viele Leute schlagen vor, dass JavaFX genauso gut ist wie Swing, aber ich habe nicht viele gültige Argumente außer einfachen Meinungsflammenkriegen gesehen). Es muss sowohl auf Windows, Mac als auch auf einigen gängigen Linux-Distributionen funktionieren.
Was wird sauberer und pflegeleichter?
und was lässt sich schneller von Grund auf neu bauen?
Ich verwende MVC-Methologie in meiner Anwendung, wenn dies hilfreich ist.
Antworten:
Wenn alle Dinge gleich sind, wahrscheinlich JavaFX - die API ist komponentenübergreifend viel konsistenter. Dies hängt jedoch viel mehr davon ab, wie der Code geschrieben wird, als davon, in welcher Bibliothek er geschrieben wird .
Sehr abhängig von dem, was Sie bauen. Swing hat mehr Komponenten (sowohl von Drittanbietern als auch eingebaut) und noch nicht alle haben den Weg zur neueren JavaFX-Plattform gefunden. Wenn Sie etwas benötigen, muss das Rad möglicherweise in gewissem Umfang neu erfunden werden etwas benutzerdefiniert. Wenn Sie dagegen Übergänge / Animationen / Videos machen möchten, ist dies in FX um Größenordnungen einfacher.
Eine andere Sache zu beachten ist (vielleicht) Aussehen und Gefühl. Wenn Sie unbedingt das Standard-System-Look & Feel haben müssen, kann JavaFX (derzeit) dies nicht bereitstellen. Für mich kein großes Muss (ich bevorzuge sowieso den Standard-FX-Look), aber ich bin mir bewusst, dass einige Richtlinien eine Beschränkung auf Systemstile vorschreiben.
Persönlich sehe ich JavaFX als die "aufstrebende" UI-Bibliothek, die noch nicht ganz da ist (aber mehr als verwendbar), und Swing als die Borderline-Legacy-UI-Bibliothek, die im Moment voll funktionsfähig und unterstützt ist, aber wahrscheinlich nicht sein wird so viel in den kommenden Jahren (und daher besteht die Möglichkeit, dass FX es irgendwann überholen wird.)
quelle
Wie von Oracle angegeben, ist JavaFX der nächste Schritt in der Java-basierten Rich-Client-Strategie. Dementsprechend empfehle ich Folgendes für Ihre Situation:
Weitere Informationen finden Sie in diesen FAQ von Oracle zu JavaFX hier.
quelle
Niemand hat es erwähnt, aber JavaFX wird auf bestimmten Architekturen, die von Oracle als "Server" eingestuft werden (z. B. Solaris), aufgrund der fehlenden Unterstützung von "jfxrt.jar" nicht kompiliert oder ausgeführt. Bleib bis auf weiteres bei SWT.
quelle
Ich glaube nicht, dass es eine richtige Antwort auf diese Frage gibt, aber mein Rat wäre, bei SWT zu bleiben, es sei denn, Sie stoßen auf schwerwiegende Einschränkungen, die eine solch massive Überarbeitung erfordern.
Außerdem ist SWT tatsächlich neuer und aktiver als Swing. (Es wurde ursprünglich als Ersatz für Swing mit nativen Komponenten entwickelt).
quelle
Ich würde mich umschauen, um einige Komponenten (von Drittanbietern?) Zu finden, die das tun, was Sie wollen. Ich musste benutzerdefinierte Swing-Komponenten für eine Agenda-Ansicht erstellen, in der Sie mehrere Ressourcen buchen können, sowie ein Excel-ähnliches Raster, das gut mit der Tastaturnavigation usw. funktioniert. Ich hatte eine schreckliche Zeit, sie dazu zu bringen, gut zu arbeiten, weil ich mich mit vielen der vielen Feinheiten von Swing befassen musste, wenn ich auf ein Problem stieß. Maus- und Fokusverhalten und viele andere Dinge können sehr schwierig zu korrigieren sein, insbesondere für einen gelegentlichen Swing-Benutzer. Ich würde hoffen, dass JavaFX ein bisschen zukunftsorientierter und sofort einsatzbereit ist.
quelle
Bei älteren Notebooks mit integriertem Video startet und funktioniert die Swing-App viel schneller als die JavaFX-App. Für die Entwicklung würde ich empfehlen, auf Scala umzusteigen - eine vergleichbare Scala Swing-App enthält 2-3 mal weniger Code als Java. Swing vs SWT: Netbeans GUI deutlich schneller als Eclipse ...
quelle