Hey Leute,
ich habe die vergangenen 2 Jahre eine kleine aber feine Desktop-Anwendung basierend auf Swing und dem Nimbus LaF auf die Beine gestellt. Alles funktioniert soweit. Als “Schnittstellen” braucht muss die Anwendung von Anwender mit XML-Dateien sowie Daten über Eingabe-Felder gefüttert werden, auf der anderen Seite werden die Daten über Netzwerk und/oder serielle Schnittstelle weiter kommuniziert.
Aber ich habe mehr und mehr das Gefühl dass was das UI betrifft ich “mit der Zeit” gehen müsste.
Bin dann schnell auf JavaFX gestoßen. Das hat schon was: Schickes Konzept, schicke UIs. Aber hat das Zukunft? Wenn man den News folgt, dann gliedert Oracle JavaFX ja gerade aus dem JDK aus. JavaFX wird also an die Community übergeben. Aktuell hat es für mich noch den Eindruck dass es ein wenig “gefrickel” ist. Der Scene-Editor hat so seine Macken. Es funktioniert alles irgendwie, aber es wirkt nicht besonders “rund”.
Swing ist auch irgendwie totgesagt. Ja, es steckt noch im JDK, aber die Anwendungen sehen trotz den vielfältigen LaFs doch irgendwie “altbacken” aus.
Zuguter letzt steht das Thema “überall laufen lassen” immer mehr im Vordergrund. Die Leute nutzen mehr und mehr Tablets und mobile Geräte. Eine Java-Desktop-Anwendung und eine Android mobile Anwendung separat entwickeln klingt nach zu viel Aufwand.
Es gibt mehr und mehr Lösungen die Anwendung auf HTML/Web-Techniken basieren zu lassen und Java mehr in den Hintergrund zu rücken, also als Backend/Logik-Seite laufen zu lassen.
Aber mir rollen sich die Nägel hoch wenn ich an die ganzen Krücken und Stolpersteine denke die dafür notwendig sind die resultierende Anwendung wahlweise als Desktop-Anwendung und als Server/Web-Anwendung zu realisieren.
Meine Anwendung ist mehr oder wneiger schon so aufgebaut dass ich UI von Logik trennen kann: Zwei Projekte. Eins die ganze Business-Logik und so weiter, eines das mehr oder weniger reine UI.
Die aktuellste Idee die mir vorschwebt:
Meine Logik mit einer REST-Schnittstelle “webfähig” machen und darauf ein leichtgewichtiges WEB-UI setzen.
Für “lokale Desktop-Anwendung” müsste dann halt ein lokaler Jetty oder sowas her und die Anwendung läuft dann auf localhost im Browser, oder wird irgendwie so in einer Wrapper-Anwendung gekapselt, dass es aussieht als wäre es doch eine Desktop-Anwendung.
Und für die Server-Lösung: Die Logik mit REST auf den Server klatschen und dann halt entfernt mit dem Browser drauf zugreifen.
Aktuell würde ich sagen ich brauche noch beide Lösungen. Weil eben die Anwendung beim User laufen muss. Ich kann das technisch nicht als Web-Lösung von mir gehostet anbieten (serielle Schnittstelle und so). Aber in einer “Experten-Variante” könnte die Server-Seite auf einem kleinen Server laufen. Und das wird auch irgendwann sicherlich soweit kommen. Aber bis dato brauch ich noch die Desktop-Only-Variante.
Was ist denn euer Favorit wenn es um UI Entwicklung innerhalb der Java-Welt geht? Tatsächlich noch JavaFX oder Swing?
Oder gibt es doch schicke und einfache Wege das UI mit Web-Techniken zu lösen und an Java anzubinden?
Wie sind da eure Erfahrungen?
Gruß
Alex