Schutz für JavaFX-Anwendungen

Sowohl gewöhnliche Java-Anwendungen als auch Spring Boot-Desktop-Anwendungen können JavaFX aktiviert werden. Die vereinfachte Laufzeit von P4JX enthält standardmäßig kein JavaFX und muss beim Paketieren explizit oder aufgrund von Kompatibilitätsempfehlungen aktiviert werden.

1. GUI-Bedienung

  1. Für gewöhnliche JavaFX-Anwendungen wählen Sie auf der Anwendungsart-Seite Java Application aus; für JavaFX-Desktop-Anwendungen, die einen Spring-Container verwenden, wählen Sie Spring Boot aus. Library Encryption erzeugt lediglich ein geschütztes Archiv und kann die Paketierung einer JavaFX-Anwendung nicht ersetzen.

    Wählen Sie „Java Application“ oder „Spring Boot“ aus

  2. Wählen Sie die Eingabesource JAR, Die mitgelieferte Java-Version sowie die Zielplattform aus und entscheiden Sie sich anschließend für den Einfachmodus oder den Fortgeschrittenen Modus. Die JavaFX-Ressourcen werden für jede Ziel-Java-Version und -Plattform separat heruntergeladen; mehrplattformige Aufgaben erzeugen unabhängige Ausgabepakete.

    Wählen Sie Eingabe, Java-Version, Zielplattform und Modus aus

  3. Im Einfachmodus zeigt die Kompatibilitätsüberprüfung bei Entdeckung von Verweisen auf javafx.* oder JavaFX-Abhängigkeiten im Scan-Ergebnis den Grund für die Anpassung an und aktiviert JavaFX automatisch; bei Entdeckung von javafx.scene.web wird außerdem eine WebView hinzugefügt. Die Überprüfung erfolgt durch statische heuristische Analyse – auf der Ausgabeseite sollte dennoch der JavaFX-Zusammenfassung nochmals überprüft werden.

  4. Im Fortgeschrittenen Modus wählen Sie im Tab JavaFX runtime Bundle JavaFX into the packaged runtime aus und legen anschließend die WebView-Strategie fest:

    • Auto: Automatische Entscheidung je nachdem, ob die Anwendung auf javafx.scene.web verweist oder nicht;
    • Include: Verpflichtende Einbeziehung von WebView (fx-webkit);
    • Exclude: Verpflichtende Ausklammerung von WebView.

    Der Eingangspunkt für herkömmliche Java-Anwendungen ist wie folgt:

    Wählen Sie im Bereich „Erweiterte Parameter“ einer normalen Java-Anwendung den JavaFX-Runtime aus

    Spring Boot Desktop-Anwendungen verwenden das gleichnamige Tab:

    Wählen Sie im fortgeschrittenen Parameterbereich von Spring Boot den JavaFX Runtime aus

  5. Nach Auswahl des Ausgabeverzeichnisses sollte in der Parameterübersicht JavaFX als bereits integriert angezeigt werden, der Zustand von WebView entspricht den Erwartungen – danach wird auf Run protection geklickt. Nach der Erstellung werden über die im Paket enthaltenen Startskripte auf jeder Zielplattform Fenster, FXML-, CSS-/Bildressourcen sowie WebView überprüft.

Die WebView-Ressourcen wiegen etwa 40 MB; bei Nichtverwendung kann man Exclude wählen, um die Paketgröße zu verringern. Die Bedeutung weiterer Einstellungen in der fortgeschrittenen Benutzeroberfläche findet man unter Einstellungen für den Fortgeschrittenen-Modus von Protector4J und Einstellungen für Spring Boot.

2. CLI kann online heruntergeladen werden.

p4j javaapp fx-app.jar dist --javafx

Spring Boot JavaFX:

p4j springboot fx-boot.jar dist --javafx

Verpflichtende Einbeziehung oder Ausklammerung von WebView:

--javafx-webview
--no-javafx-webview

Das Tool bezieht die entsprechenden Materialien von offiziellen Download-Seiten in der aktuellen Region, abhängig von der Ziel-Java-Trainingslinie und Plattform. Weder beim Download von JavaFX noch beim Download von VLX JRE ist es notwendig, den Cloud-Speicher-Schlüssel an den Client weiterzugeben.

3. Offline-Materialien

CLI unterstützt lokale Verzeichnisse:

p4j javaapp fx-app.jar dist --javafx /opt/p4jx-fx

Das Verzeichnis kann Folgendes enthalten:

  • fx-core.tar.gz zusammen mit dem optionalen fx-webkit.tar.gz; oder
  • Ein ausgeklapptes JavaFX-Dateisystem mit lib/ als Wurzel.

Die GUI bietet keine Möglichkeit zur Auswahl eines lokalen JavaFX-Verzeichnisses; in Offline-Szenarien sollte die CLI verwendet werden.

4. FXML

Falls die Anwendung FXMLLoader verwendet, empfiehlt die Kompatibilitätsprüfung die Aktivierung des Scanners ZIP overlay:

p4j javaapp fx-app.jar dist --javafx --zip-overlay scanner

Für Ressourcen im FXML-Format, Controller-Signierungen sowie Framework-Scans sind tatsächliche Starttests auf der Zielplattform erforderlich.

5. Java 8 und Java 11+

  • Java 8 verwendet das jfxrt.jar/Erweiterungsverzeichnismodell; bei der Erstellung von Skripten sind in der Regel keine Modulparameter notwendig.
  • Java 11+ nutzt modulare JavaFX JAR-Dateien; bei der Erstellung von Skripten werden automatisch ein spezieller module path sowie --add-modules festgelegt.

Verwenden Sie stets die erzeugten Dateien run.sh, run.command oder run.bat – verwenden Sie nicht den gesamten vlxjre/lib als module path.

6. Automatische Erkennung von Grenzen

Der Detektor scannt die eigenen Klassenzuordnungen und erkennt JavaFX anhand der Namen der abhängigen JAR-Dateien. Er scannt nicht tief in den Bytecode aller Drittanbieter-Abhängigkeiten, um eine optionale JavaFX-Integration fälschlicherweise als tatsächliche Verwendung einzustufen.

Falls JavaFX in eine Abhängigkeit mit unkenntlichem Namen eingebettet ist, können automatische Scans Fehler aufweisen; in solchen Fällen sollte --javafx explizit verwendet werden.

7. Empfehlungen zum Schutzumfang

  • Ob Unterklasse von JavaFX Application, FXML Controller sowie das Eigenschaftsmodell geschützt werden sollen, hängt von den tatsächlichen Testergebnissen der jeweiligen Java-Version ab.
  • Brückenklassen, die direkt über JNI/native aufgerufen werden, sollten als gewöhnliche Klassen bleiben.
  • Zunächst sollte im Einfachmodus oder mit --compat-scan gearbeitet werden, anschließend sollten Regressionstests für das Öffnen von Fenstern, das Laden von FXML, CSS/Bildressourcen, WebView sowie die Plattform-native Bibliotheken durchgeführt werden.