Was ist eigentlich die modernste GUI Umgebung, die man nutzt? Wenn JavaFx und Swing tot ist?
Das Problem ist erst einmal, was man als "tot" bezeichnet. "tote Pferde" (das ist der Begriff, zu dem ich gerne greife) sind Dinge die relativ wenig benutzt werden und wo ich auch keine Tendenz mehr sehe, dass dies mehr wird oder überhaupt mehr werden könnte.
Dann wäre erst einmal die Frage, was man denn überhaupt machen will. Was brauchst Du? Eine Anwendung mit einem User Interface war gefragt aber wir haben noch keine Details, wo es genau laufen soll.
-> Was man da auf jeden Fall zuerst sehen wird, sind die Plattformen selbst. Jeder Hersteller einer Umgebung stellt einen Weg bereit, Software zu erstellen.
Desktops:
- Windows - hier hat man ein breites Feld. Selbst Microsoft bietet da sehr viel. Aber die Hauptentwicklung hier ist dann halt der .Net Bereich mit WPF und Co. Auf Grund der Entwicklung der letzten Jahre dann .Net MAUI als Multi Platform Lösung, die auch den Desktop mit bedienen kann.
- macOS: Hier hat Apple Swift im Blick - damit kann man dann schön auf alle Libraries und Frameworks zugreifen, die Apple halt bietet
- Linux: Hier teilt sich alles massiv auf. Das ist dann der Witz: "Nenne 100 Betriebssysteme" "Linux". Hier hat man diverse Oberflächen, die dann unterschiedliche Frameworks mitbringen und dann entsprechend zu nutzen sind. KDE baut auf QT aber Gnome geht z.B. einen anderen Weg.
Mobil:
- Android: Hier hat Google den Kotlin Weg mit Android Studi oim Blick
- iOS: Hier hat Apple seine Swift Umgebung mit vorgesehen
Dann gibt es viele Lösungen, die das übergreifend lösen wollen. Flutter von Google und so. Es gibt da aber viele Wege und u.a. auch einen Java Weg (codename one
https://www.codenameone.com/).
Das Problem ist aber immer, dass es problematisch ist, sowas für alle Umgebungen dann auch zu bauen. Man hat halt ein System und das unterstützt in der Regel nicht das bauen für alle Umgebungen. Das kann man dann aber als Service einkaufen bzw. entsprechend aufsetzen (Dann hat man halt eine CI/CD Pipeline mit workern auf diversen Systemen - geht alles!)
Die Lösung, die aus meiner Sicht die größten Chancen für die Zukunft hat, ist schlicht html / css / JavaScript (oder Typescript, das zu JavaScript übersetzt wird). Das bietet vieles ohne wirklich diverse Plattformen berücksichtigen zu müssen. Dank WPA bekommt man auch diese "lokale App" und so. Das ist also schon sehr weitgehend. Und wo das nicht ausreicht, da kommen dann Wrapper Lösungen zum tragen. Beispiele wären hier:
...
Man kann hier also - soweit das nicht schon gut genug vorgesehen ist - auch durchaus auf native Komponenten zugreifen.
Ich sehe hier also für Java Desktop Anwendungen nicht wirklich einen Markt. Und ich scheine da nicht der Einzige zu sein. Wenn man sich anschaut, wie die Entwicklung seit Java 9 verlaufen ist: Da gab es ja die gute Entwicklung von JLink und JPackage und das sieht vielversprechend aus. Aber das Ecosystem hat es auch nach Jahren nicht geschafft, das zu adaptieren. Das Probklem ist dabei nicht technisch begründet sondern schlicht daran, dass zu viele das einfach nicht als notwendig betrachten. Die Enterprise Welt braucht keine Modularisierung und keine App Images. Da hat man seine war Files für Application Server oder die Container für Docker und Co. Und wer das nicht mag, der hat halt ein Java und ruft da alles entsprechend selbst auf.
Das einfach einmal als etwas längere Antwort meine Sichtweise. Aber ganz wichtig: Das ist rein meine Sichtweise und vieles sind einfache Thesen. Ob die Welt so tickt, wie ich es beschrieben habe oder obdie Gründe für einzelne Entwicklungen die sind, die ich unterstelle: Das kann sein oder das kann nicht sein. Ich habe halt auch nur eine sehr begrenzte Sichtweise.