JavaFX ist seit Version 11 bekanntlich aus dem JDK ausgezogen und wird als eigenständiges Projekt (OpenJFX) im gleichen Takt wie das JDK weiterentwickelt. Mit Java 25 ist auch JavaFX 25 erschienen, und zwar als LTS-Version, die bis September 2028 gepflegt wird. Technisch macht das Release vieles richtig. Was allerdings sofort ins Auge sticht: Das Standard-Design ist alt. Modena begleitet JavaFX seit Version 8, und das merkt man. Eine Applikation, die 2025 mit dem Standard-Theme ausgeliefert wird, wirkt wie von gestern.
Genau hier kommt AtlantaFX ins Spiel. Dabei handelt es sich um eine moderne CSS-Theme-Sammlung mit zusätzlichen Controls. Das Schöne an der Architektur: AtlantaFX ist CSS first und funktioniert mit allen bestehenden JavaFX-Controls. Als User-Agent-Stylesheet ersetzt es Modena komplett — keine Codeanpassungen an der Applikation nötig.
Die Themes gibt es jeweils als Light- und Dark-Variante — ein Dark Mode für die eigene Applikation ist damit quasi gratis. Dazu liefert AtlantaFX Controls, die im Standard schlicht fehlen, z.B. einen ToggleSwitch und Loading-Indikatoren, sowie eine flüssige Validator-API für Formulare.
Was bringt nun JavaFX 25 konkret? Für mich die Highlights:
• Controls in der Titelleiste (Preview): Mit dem neuen StageStyle EXTENDED und dem HeaderBar-Control lässt sich der Client-Bereich in die Titelleiste ziehen.
• CSS Media Feature Queries: Stylesheets können auf Umgebungsmerkmale reagieren.
• RichTextArea (Incubator): Highlights lassen sich jetzt per CSS stylen.
• Diverse neue Text-/TextFlow-APIs (Layout-Info, TabStopPolicy) und 74 Bugfixes.
Wichtig zu wissen: JavaFX 25 verlangt mindestens JDK 23.
Die eigentliche Stärke liegt in der Kombination der beiden Komponenten:
Moderne Optik ohne Eigenaufwand. Drei Zeilen Setup genügen, und die gesamte Applikation — inklusive aller Standard-Controls — erscheint im modernen Flat Design. Über alle Plattformen hinweg mit demselben Erscheinungsbild.
Dark Mode zur Laufzeit. Die Themes liegen als Light- und Dark-Variante vor. Ein Theme-Wechsel zur Laufzeit ist nichts anderes als das Austauschen des User-Agent-Stylesheets — dank der Media Feature Queries in JavaFX 25 lässt sich das Styling zudem erstmals sauber auf Umgebungsmerkmale abstimmen.
Eigenes Window-Chrome. JavaFX 25 liefert mit StageStyle EXTENDED die Basis, eigene Controls in die Titelleiste zu setzen. Das HeaderBar-Control ersetzt dabei die System-Titelleiste: Sein Hintergrund ist ziehbar, sodass sich das Fenster wie gewohnt per Maus verschieben lässt, Doppelklick maximiert es, und unter Windows funktionieren sogar die Snap-Layouts. Native Rahmen und Schatten bleiben erhalten — im Gegensatz zu UNDECORATED. Ohne HeaderBar im Scene Graph gibt es allerdings nichts zum Ziehen, und als Preview-Feature muss es zunächst per -Djavafx.enablePreview=true aktiviert werden (in JavaFX 27 ist es inzwischen final). Das decorations-Modul von AtlantaFX baut genau darauf auf (JDK-8313424) und stellt fertige Stile für Header-Buttons wie Minimieren, Maximieren und Schliessen bereit. Das Resultat: ein Fenster im Design der Applikation, statt dem vom Betriebssystem vorgegebenen Rahmen.
Stabile Basis. Java 25 und JavaFX 25 werden als LTS-Kombination bis 2028 gepflegt — eine solide Grundlage für langlebige Rich-Clients. AtlantaFX selbst bringt keine Abhängigkeiten mit. Zu beachten ist die Versionierung: Die aktuelle Version 3.0.0 verlangt bereits Java 25 und JavaFX 27. Wer beim LTS-Release JavaFX 25 bleibt, setzt die 2.x-Linie ein.
