JavaFX Überblick, weitere Themen

JavaFX ist das Desktop-GUI-Framework, das aktuell für neue Projekte eingesetzt wird (oder werden sollte). Projekte, die seit langer Zeit bestehen (IDE NetBeans, IDE IntelliJ, IDE Eclipse, etc.), verwenden für das GUI jedoch entweder Swing oder SWT.

Es gibt innerhalb von JavaFX erfreulicherweise Bibliotheken, die das Einbetten von JavaFX-Komponenten in – samt Kooperation mit – Swing bzw. SWT ermöglichen.

Auch das Einbetten bestehender Swing- und SWT-Komponenten in eine JavaFX-App ist möglich.

JavaFX hat gute Unterstützung moderner Grafikkarten-Fähigkeiten und bietet alle Möglichkeiten, Multimedia-Inhalte zu verwenden. Weiters wird eine vollständige Web-Browser-Komponente (WebView) bereitgestellt, die bidirektionale Kooperation zwischen Web-Inhalten und JavaFX-Komponenten ermöglicht.

1. Historisches

  • AWT (1996, ab Java 1.0 experimentell und optional, für breiten Einsatz, Teil des JDK ab 1.1)

  • Swing (in JFC=JavaFoundationClasses für breiten Einsatz seit 1998, Teil des JDK ab Java 1.2, bis ca. 2015)

  • SWT (2001 gemeinsam mit Eclipse, primäres GUI-Framework in Eclipse).

    • Wichtiges darauf ausetzendes GUI-Toolkit: JFace (wird auch von Eclipse verwendet, da es SWT-Programmierung wesentlich vereinfacht)

    • mittlerweile können SWT- und JavaFX-Komponenten hochfunktional ineinander eingebettet werden

  • JavaFX – gute Übersicht auch für historische Entwicklung siehe JavaFX – Wikipedia

  • JavaFX erste Generation – (ab 2008) eigene leistungsfähige Scriptsprache

  • JavaFX-2 – (ab 2011) Grundlegende Überarbeitung, Umstellung von eigener Script-Sprache auf Java

  • JavaFX-8 – (2014 als Bestandteil von JDK-8)

  • JavaFX-9 – (2017 als Bestandteil von JDK-9) nun wie das gesamte JDK-9 modularisiert

  • JavaFX ab JDK 11 (LTS, Sept. 2018) nicht mehr Teil des SDK, das frei verfügbare, gut gepflegte ZULU JDK integriert es aber weiterhin.
    Alternativ kann es wie jede andere externe Bibliothek eingebunden werden.

2. Grundideen

3. Wichtige Basisklassen

4. Fenster und Inhalt

5. Ereignisse

6. Controls

7. Container

8. Layout

9. Styling ohne und mit CSS

10. Applikationsdesign - MVC, MVVM etc.

11. UI-Zustandsverwaltung

12. Properties und Data Binding

13. UI-Apps und Testen

14. Bilder und Multimedia

15. Grafik

16. Web-Inhalte mit der JAvaFX-Webbrowser Komponente

17. Kooperation Web-Inhalte und JavaFX

18. Zusätzlicher geplanter Nicht-JavaFX-Stoff

18.1. Varargs (beliebig viele Parameter desselben Typs als letzter Parameter)

mit z.B. someMethod(String txt, int…​ zahlen)

18.2. Dateisystem-Handling

18.3. Dateien lesen, schreiben (binär und textuell)

18.4. Reguläre Ausdrücke (Regex)

18.5. Mehr zu Generics

18.6. Einbinden externer Bibliotheken/JARs

19. Zusätzlicher optionaler Lehrstoff

19.1. Methoden als Parameter

19.2. Default-Methoden-Implementation in Interfaces

20. Weitere interessante Themen

20.1. Netzwerk-Kommunikation

20.2. Dependency Injection

20.3. Versionsmanagement - GIT und andere; Hosting mit/bei GitHub, GitLab, BitBucket, Gitea

20.4. Build-Tools - Maven und Gradle, älter: Ant, Ivy

20.5. Enterprise Plattformen

  • OSGi

  • Spring

  • Spring-Boot

  • Java-EE

  • Eclipse-Jakarta-EE

20.6. xxx

20.7. …​

21. Kurzinfo 2D + 3D + Spiele + Multimedia