JavaFX TreeTableView in Java7 portieren?

lam_tr

Top Contributor
Hallo zusammen, hallo @dzim,

ich habe eine Aufgabe bekommen, eine bestehende JavaFX App in Java 8 auf Java 7 zu portieren. Die miesten Compile Errors lassen sich schnell mit Eclipse quickfixen.

* FilteredList gabs in Java 7 noch nicht, nagut das lässt sich auch schnell nachprogrammieren -> abgehackt
* TreeTableView gibts auch nicht, und den kann man leider nicht so einfach nachbauen, ich habs teilweise versucht den code von JavaFX8 in mein Code reinzuplatzieren, auch nicht schön, zu viele Referenzierungen.
* DatePicker ist ein weiterer Kanidat. Jetzt überall im Code anpassen ist so anstrengend.

Habt ihr da einen Weg wie ich da besser vorgehen kann?

Grüße
lam
 

sascha-sphw

Top Contributor
Mich würde brennend interessieren, warum man sowas machen möchte?

Wäre es nicht schlauer, auf Java 11 zu gehen und die JRE im Installer mit auszuliefern?
 

lam_tr

Top Contributor
Mich würde brennend interessieren, warum man sowas machen möchte?

Wäre es nicht schlauer, auf Java 11 zu gehen und die JRE im Installer mit auszuliefern?
Diese Anwendung wurde ursprünglich in Java 8 und JavaFX8 programmiert, jetzt soll das in ein Projekt eingebunden werden, dass noch Java 7 benutzt.

Ich würde auch lieber auf Java 11 / 14 und OpenJFX14 portieren. Leider ist es so gewünscht.
 

sascha-sphw

Top Contributor
Ich würde vermutlich versuchen es auf existierende Komponenten umzuprogrammieren. Also mit TableView und TableCell. Das aussehen variiert dann je nachdem ob das Model parent- / child-elemente enthält. Im TableView würden dann alle Elemente als Liste angezeigt. Die Aufgeklappten Elemente müssen dann halt an richtiger Stelle hinzugefügt/entfernt werden.
 

dzim

Top Contributor
Puh sorry, @lam_tr - hat der Kunde eine Subscription für Java7? Aber selbst wenn, es gibt imho alle aktuellen Backports von JavaFX nur für das LTS 8er von Oracle - und BellSoft.

Warum wird nicht umgekehrt die 7er-Anwendung auf einer 8er JVM laufen lassen? Downgrades sind keine einfache Sache, vor allem wenn dir essentielle Klassen auf der Library fehlen und die Anwendung nun einmal urspünglich mit 8 implementiert wurde und somit eigentlich mit logischen Sachverstand nur vorwärts entwickelt werden kann.
Ich würde genau das ansprechen und dass es nicht mit vertretbaren Aufwand möglich ist.

Was ist das eigentlich für eine Anwendung auf 7? Hat die ein UI? Schon JavaFX, oder Swing oder SWT?

Ansonsten: Wenn alles argumentieren nichts bringt: Bau die 8er-API als Wrapper-Klasse nach und rufe dahinter Swing (oder SWT, oder wie von @sascha-sphw vorgeschlagen mit den vorhandenen Komponenten nach-implementieren) auf. Ich würde hier so was wie ein "java7-compat"-Modul dafür machen und das in deiner Anwendung als optionale Dependency (Maven z.B. via Profile) einbinden. Ist sicher keine kleine oder einfache Baustelle, aber dann bleibt der Änderungs-Aufwand in deinem Code überschaubar (bzw. null, wenn du die gleiche Packetstruktur wie JavaFX verwendest).
 

lam_tr

Top Contributor
Puh sorry, @lam_tr - hat der Kunde eine Subscription für Java7? Aber selbst wenn, es gibt imho alle aktuellen Backports von JavaFX nur für das LTS 8er von Oracle - und BellSoft.

Warum wird nicht umgekehrt die 7er-Anwendung auf einer 8er JVM laufen lassen? Downgrades sind keine einfache Sache, vor allem wenn dir essentielle Klassen auf der Library fehlen und die Anwendung nun einmal urspünglich mit 8 implementiert wurde und somit eigentlich mit logischen Sachverstand nur vorwärts entwickelt werden kann.
Ich würde genau das ansprechen und dass es nicht mit vertretbaren Aufwand möglich ist.

Was ist das eigentlich für eine Anwendung auf 7? Hat die ein UI? Schon JavaFX, oder Swing oder SWT?

Ansonsten: Wenn alles argumentieren nichts bringt: Bau die 8er-API als Wrapper-Klasse nach und rufe dahinter Swing (oder SWT, oder wie von @sascha-sphw vorgeschlagen mit den vorhandenen Komponenten nach-implementieren) auf. Ich würde hier so was wie ein "java7-compat"-Modul dafür machen und das in deiner Anwendung als optionale Dependency (Maven z.B. via Profile) einbinden. Ist sicher keine kleine oder einfache Baustelle, aber dann bleibt der Änderungs-Aufwand in deinem Code überschaubar (bzw. null, wenn du die gleiche Packetstruktur wie JavaFX verwendest).
Die Hauptanwendung läuft unter Java 7, deswegen kann ich den Client nicht auf 8 machen. Ich werde dir compat Lösung wohl machen müssen.
 

Ähnliche Java Themen

Neue Themen


Oben