JavaFX Pros und Contras ?

Major_Sauce

Bekanntes Mitglied
Guten Abend allerseits,

ich habe gerade mal wieder was mit graphischer Programmierung gemacht und plötzlich stolperte ich über "JavaFX".
Ich habe noch gar nicht gewusst dass eine neue UI entwickelt wird, war also gar nicht up to date und habe mich erst ein mal eingelesen.
Nach etwa einer Stunde hatte ich dann aber die Schnauze voll, da jeder etwas anderes gesagt hat.
Die einen sagen dass alles viel einfacher geworden ist als bei der "alten" Swing programmierung, die anderen schaffen es noch nicht ein mal ein Rechteck auf den Bildschirm zu kritzeln.
Performancetechnisch sieht das ganze genau so aus, desswegen wollte ich mal nach euren Erfahrungen fragen, wie es denn mit JavaFX steht und ob es sich lohnen würde Swing zu verabschieden.
Wichtig ist für mich auf jeden Fall die Performance, da ich oftmals 500 - 1000 Objekte zeichnen muss, und das bei ca 60 fps, das macht mit Swing nicht unbeding viel Spaß :noe:
Wäre schön wenn ihr mir mal eure Meinung dazu sagen könntet.

mfg Major_Sauce
 

top_chief

Mitglied
Hallo,
vorweg erst mal zu mir, damit du meine Antwort einordnen kannst:
Bin auch noch ein "Frischling" in JavaFx (seit ca. 10 Tagen programmiere ich jetzt etwa täglich 3-4 Stunden in JavaFx).
Mit Swing habe ich auch nur ganz elementare Erfahrungen sammeln können. Wobei ich sagen muss, dass mir der Einstieg in Swing etwas leichter viel (in Android und Qt habe ich deutlich mehr Erfahrung), dementsprechend ist die Ui-Programmierung nichts wirklich neues für mich.

Als ich kürzlich angefangen habe mich für JavaFx zu interessieren, ging es mir ähnlich wie dir... Eingelesen und "hä?!" gedacht. Jeder sagt was anderes und besonders viele gute Beispiele findet man für JavaFx leider nicht. Klar gibt es schon gute Tutorials, aber im direkten Vergleich mit anderen Plattformen geht das was man für JavaFx findet, regelrecht gegen null.
Trotzdem bin ich bei JavaFx geblieben und kann sagen, dass mir folgende Sachen ziemlich gefallen:
-Erstellung von Layouts mittels SceneBuilder
-Verknüpfung von Ui und Daten-Modell via Properties (<- wobei ich hier nach 10 Tagen nur aller erste Gehversuche gemacht habe - kann mir aber vorstellen, dass es eine erhebliche Arbeitsersparnis mit sich bringt, wenn man sich in diesem Thema besser auskennt, als ich derzeit... hier mehr Infos)
-gute Integration in IntelliJ (wohl noch besser in Eclipse bzw. Netbeans - aber ich bin IntelliJ-Fan^^)

Weniger gut gefallen mir ein paar sprachliche "Besonderheiten" (habe es in einem anderen Thread schon mal beschrieben), ich empfinde bspw die Methode "setDisable(boolean);" als nicht unbedingt intuitiv benannt. Davon gibts eine Reihe Fälle, die mich sonst einfache Sachen immer wieder nachschlagen lassen - aber das ist ja nichts Unerwartetes, wenn man sich in eine neue Plattform einarbeitet.

Fazit: insgesamt bin ich froh, dass ich mich bei meinem aktuellen Projekt für JavaFx entschieden habe und werde es jetzt auch in JavaFx fertigstellen bzw. auch in Zukunft JavaFx weiter nutzen.

Was mich persönlich extrem für die Nutzung von JavaFx bewegt hat, war das "JavaFx Ensemble" schaus dir am besten mal an -> Link.
Beachte auch, dass der Code zu den Beispielen, in der Anwendung enthalten ist.

Beste Grüße
Martin
 

AntiMuffin

Bekanntes Mitglied
Hallo,
ich benutze in meinem Aktuellen Projekt auch JavaFX und bin sehr begeistert davon !
Wenn man sich das .NET Framework ansieht ist Swing wie WinForms und JavaFX wie WPF. Ich bin auch davon überzeugt das JavaFX bald mehr im kommen ist, jedoch ist die Tatsache das Firmen meist noch auf Swing setzten...

Die Vorteile sind folgende:
- Du kannst nun FXML benutzen, was dir erlaubt die Oberfläche mithilfe davon zu gestalten und grenzt diese von Code ab. Der größte Vorteil daran ist das der Code viel übersichtlicher bleibt und man eine Hierachie hat.
- Du hast den Scene Builder. In Swing fand ich ALLE kostenfreien Tools für das Oberflächen Design sehr bescheiden. Der Scene Builder jedoch ist ein Super Tool mitdem du so gut wie alles machen kannst, er wird sogar in die IDE mit eingebunden.
- Du kannst alles mithilfe von CSS designen.
- ResourcesBundle kann sehr einfach eingebunden und verwendet werden. (Im Scene Builder werden auch gleich die richtigen werte angezeigt)
- Du hast die Möglichkeit des Databindings. Mithilfe von Databinding kannst du dir oft viel unnötigen Code sparen!
- Die Anwendungen sehen Gut aus - Nicht dieser Java Look wie in Swing.
- Bei Verwendung von FXML kann leicht das MVC eingehalten werden.

Gruß,
Kevin
 

Major_Sauce

Bekanntes Mitglied
Heyo, erstmal wollte ich mich für die Antworten bedanken.
Also bisher ist bei mir hängen geblieben dass man auf jeden Fall viel einfacher und mit weniger Aufwand programmieren bzw designen kann.
Noch eine kleine Frage: Gibt es Performance-Verbesserungen ?
Bei Swing regt es mich immer auf dass die GPU nicht anständig benutz wird, es sei denn man benutzt irgendwelche Bindings, JOGL oder so nen Mist.
Hat sich das bei javaFx mittlerweile verbessert ?

mfg Major
 

dzim

Top Contributor
Soweit ich weiss, wird die Darstellung von JavaFX, sofern verfügbar, via OpenGL vorgenommen. Ich habe für meine Arbeit eine mit Animationen schon fast überfrachtete Speed Test Anwendung gechrieben. Was mir dabei aufgefallen ist:

- CSS zum Stylen anstelle von Look-&-Feels ist deutlich einfacher und schneller - auch wenn die CSS-Referenz von Oracle etwas kryptisch ist und ich mich meistens auf das im JDK vorhandene modena.css verlassen habe
- Declarytive UIs - wie schon die Vorposter geschrieben haben, ist das gerade für die Trennung von UI und Code sehr hilfreich - seit Android möchte ich auch nicht anders
- separater UI Thread (der Hauptthread) - kenn ich bereits in der Form von SWT und Android, daher nichts neues für mich und nur Fleissarbeit, schön rechenintensive Arbeiten vom UI-Thread zu separaieren - das man hier Platform#runLater verwenden muss, ist mir dann recht schnell klar

Weniger schön finde ich, das die Performance unterschiedlich ausfallen kann:
Windows: Top!
Linux: Es läuft zwar performant, aber geht ganz schön auf die CPU - weiss nicht, ob ich hier mit den Graphik-Treibern noch irgendetwas falsch gemacht habe, sodass der Software-Renderer-Fallback verwendet wird (hab halt nen schnelles Notbook, da stört es nicht so).
Mac OSX: Habe ich selbst nicht, der Kollege mit einem hat bisher aber noch nichts bemängelt.

Besonderes Schmankerl:
Aktive Community! Custom Controls via ControlsFX oder jfxtras.
Und zu guter letzt: RoboVM und javafxports habe JavaFX fit für Android und iOS gemacht. Suche nach javafxports und du wirst fündig. Gerade Android ist noch etwas wackelig (ich bekomme eine Test-Anwendung auf dem Nexus 5 hin, aber nicht auf meinem Nexus 6 - andere OpenGL ES Version (3.1, statt 3.0). Aber auch hier tut sich viel und ich sehe es als bessere Cross-Platform-Lösung (wenn man nur Android und iOS möchte) als Phonegap oder Cordova. Einzige IMHO weitere plausible Variante ist das gerade in Entwicklung befindliche Tabris.js.
 

Major_Sauce

Bekanntes Mitglied
Seht schön, danke @all, top_chief genau so was habe ich gesucht :)
Ich werds mir jetzt auf jeden Fall mal anschauen, danach erstatte ich mal Bericht wie es gelaufen ist.

Danke an alle die geantwortet haben.

mfg Major
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
mihe7 JavaFX - Verhalten ComboBox AWT, Swing, JavaFX & SWT 8
A JavaFX-Applikation als Maven-Projekt : JavaFX-Archetypen AWT, Swing, JavaFX & SWT 9
T JavaFX JavaFX, Dialoggröße in Gnome AWT, Swing, JavaFX & SWT 3
B Eclipse RCP (e4) Anwendung mit JavaFX / e(fx)clipse - Upgrade Probleme AWT, Swing, JavaFX & SWT 2
H JavaFX JAVA_HOME bei javaFX AWT, Swing, JavaFX & SWT 3
H JavaFX javafx-jdk einbinden AWT, Swing, JavaFX & SWT 5
C JavaFX In Eclipse ein JavaFX-Projekt mit Maven aufsetzen AWT, Swing, JavaFX & SWT 4
A JavaFX JavaFX images per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 1
Juelin Javafx hängt sich auf AWT, Swing, JavaFX & SWT 31
Juelin StringGrid in SceneBuilder und javaFX AWT, Swing, JavaFX & SWT 3
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 38
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
MiMa JUnit5 im JavaFX Projekt AWT, Swing, JavaFX & SWT 2
Juelin in javafx Event auslösen AWT, Swing, JavaFX & SWT 4
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
MiMa SwingFXUtils in JavaFX 20 AWT, Swing, JavaFX & SWT 6
MiMa JavaFX Fenstertitel zu klein. AWT, Swing, JavaFX & SWT 1
MiMa JavaFX JAR unter Windows ausführen schlägt fehl? AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
Hatsi09 Javafx MediaPlayer spielt nicht immer AWT, Swing, JavaFX & SWT 3
Hatsi09 Javafx Neuladen von ImageView und MediaView AWT, Swing, JavaFX & SWT 3
Maxim6394 JavaFX Umlaute in JavaFX GUI AWT, Swing, JavaFX & SWT 12
Maxim6394 JavaFX Scene Builder - Crash bei eigener Komponente AWT, Swing, JavaFX & SWT 2
Ernesto95 JavaFX JavaFX GUI mit sehr vielen Update requests AWT, Swing, JavaFX & SWT 4
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
JavaSchmecktLecker JavaFX JavaFX Ordner automatisch verlinken AWT, Swing, JavaFX & SWT 2
melaniemueller Taschenrechner JavaFX AWT, Swing, JavaFX & SWT 4
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
thor_norsk JavaFX Anwendung stürzt ab AWT, Swing, JavaFX & SWT 4
berserkerdq2 Skalieren sich javafx objekte automatisch auf die Bildschirmgröße AWT, Swing, JavaFX & SWT 6
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
H JavaFX wie JavaFX Projekt aufsetzen? AWT, Swing, JavaFX & SWT 10
thor_norsk JavaFX - Grafikkarte AWT, Swing, JavaFX & SWT 7
MiHimbert Rückmeldung an den aufrufenden JAVAFX-Dialog AWT, Swing, JavaFX & SWT 1
MiMa JavaFX Runtime components are Missing??? AWT, Swing, JavaFX & SWT 3
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
B JavaFX Sprachumschaltung mit Button auf der HMI AWT, Swing, JavaFX & SWT 6
H JavaFX Fehlende JavaFX Package AWT, Swing, JavaFX & SWT 10
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
G Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
G JavaFX Line Chart mit Farbverlauf/Gradient in Linie AWT, Swing, JavaFX & SWT 1
thor_norsk JavaFX, FXML und SceneBuilder AWT, Swing, JavaFX & SWT 6
G Über installDist exportiertes Programm wirft "Unsupported JavaFX configuration" AWT, Swing, JavaFX & SWT 0
CodingBerlin JavaFX Programm läuft nur unter Eclipse AWT, Swing, JavaFX & SWT 1
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
temi JavaFX "Frames" in JavaFx - passende Komponente? AWT, Swing, JavaFX & SWT 13
G JavaFX Steuerung bzw. Test von externer JavaFX Anwendung (liegt nur als jar vor) AWT, Swing, JavaFX & SWT 9
G [JavaFX] Spinner so einstellen, dass er nicht leer bleiben darf? AWT, Swing, JavaFX & SWT 6
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
J JavaFX Schiffe versenken mit JavaFX und Scene builder AWT, Swing, JavaFX & SWT 3
Encera ArrayList mit eigenen Objekten in JavaFX sortieren und ausgeben AWT, Swing, JavaFX & SWT 50
L JavaFx Textformatierung mittels Datenbank und Funktion anpassen AWT, Swing, JavaFX & SWT 5
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
S JavaFX: voneinander abhängige TextFields AWT, Swing, JavaFX & SWT 33
M Gluon will JavaFX in den Browser stecken AWT, Swing, JavaFX & SWT 0
H javafx application does not exist AWT, Swing, JavaFX & SWT 16
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
M Javafx versuch Bibliothek zu erstellen AWT, Swing, JavaFX & SWT 0
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
K JavaFx, Sound Aufnahme und Thread AWT, Swing, JavaFX & SWT 0
izoards JavaFX TextFlow - Sonderzeichen AWT, Swing, JavaFX & SWT 1
maximstein JavaFX WebView - java.lang.NoSuchMethodError: 'boolean com.sun.prism.ResourceFactory.isDisposed()' AWT, Swing, JavaFX & SWT 4
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
MiHimbert javaFX openfx (17) datepicker AWT, Swing, JavaFX & SWT 3
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
melaniemueller JavaFX Taschenrechner mit SceneBuilder AWT, Swing, JavaFX & SWT 12
Jose05 Javafx Label Höhe=Breite AWT, Swing, JavaFX & SWT 1
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
izoards JavaFX editierbare Tabelle AWT, Swing, JavaFX & SWT 4
N javafx Position der Bustaben finden label AWT, Swing, JavaFX & SWT 1
D Verschieden Scenen ansprechen mit dem Scene Builder und JavaFX (Eclipse) AWT, Swing, JavaFX & SWT 16
izoards JavaFX Background Task warten auf Knopfdruck AWT, Swing, JavaFX & SWT 4
M Zufallsgenerator bei JavaFx AWT, Swing, JavaFX & SWT 1
N Label Schriftart Ändern javafx AWT, Swing, JavaFX & SWT 2
L JavaFX JavaFX, MVVM und SceneBuilder AWT, Swing, JavaFX & SWT 4
S JavaFx Album AWT, Swing, JavaFX & SWT 137
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller JavaFX Beispiel kann nicht ausgeführt werden AWT, Swing, JavaFX & SWT 4
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
J JavaFX - Included FXML - Entfernen feststellen AWT, Swing, JavaFX & SWT 2
J JavaFX JavaFX/ Taskmenu / UML Klassendiagramm AWT, Swing, JavaFX & SWT 2
Davee JavaFX JavaFX Jar ausführbar jedoch nicht alle Stages AWT, Swing, JavaFX & SWT 3
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
C MouseEvent JavaFX AWT, Swing, JavaFX & SWT 4
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
M4cM4rco0707 JavaFX Custom-Komponente mit Custom-Controller AWT, Swing, JavaFX & SWT 3
M Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found AWT, Swing, JavaFX & SWT 14
G javafx build.fxbuild in eclipse und ANT AWT, Swing, JavaFX & SWT 9
M Kollisionensbehandlung mit JavaFX AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben