web-dev-qa-db-fra.com

Exécution d'une application JavaFX avec JDK 11+

Si je comprends bien les annonces d'Oracle, JavaFX ne sera pas inclus dans le JDK commençant par JDK 11 et sera uniquement disponible sous OpenJFX.

Quelles étapes dois-je suivre en tant que développeur logiciel pour permettre à mon application JavaFX de s'exécuter avec JDK 11+? Y a-t-il une bonne opportunité? OpenJDK sera-t-il disponible via Gradle?

16
Hannes

JavaFX 11 sera disponible à partir de Maven Central, vous pourrez donc l'inclure dans votre projet comme toute autre dépendance régulière, en utilisant Maven:

<dependencies>
    <dependency>
        <groupId>javafx</groupId>
        <artifactId>javafx.controls</artifactId>
        <version>11.0.0</version>
    </dependency>
</dependencies>

ou Gradle:

dependencies {
    compile 'javafx:javafx.controls:11.0.0'
}

Jusqu'ici (juin 2018), il s'agit d'un travail dans progrès , mais il devrait être prêt au moment de la JDK 11 release .

Pour l'instant, vous pouvez télécharger une version préliminaire du SDK autonome JavaFX de ici , comme annoncé récemment (mai 2018) .

Notez que dans tous les cas, vous n'aurez pas besoin de construire ni OpenJDK ni OpenJFX dans tous les cas.

Vous trouverez un tas de pots avec les différents modules comme javafx.base.jar ou javafx.controls.jar, ainsi que les bibliothèques natives requises pour votre plate-forme.

Vous pouvez les tester avec OpenJDK 10 ou 11 EA build que vous pouvez obtenir de ici .

Échantillon

Si vous avez une classe d'application JavaFX:

public class JavaFX11 extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Scene scene = new Scene(new StackPane(new Label("JavaFX 11")), 300, 200);
        stage.setScene(scene);
        stage.show();
    }
}

vous pouvez le compiler:

<path.to>/jdk-11.jdk/Contents/Home/bin/javac --module-path <path.to>/javafx-sdk-11/lib/ --add-modules=javafx.controls -d class/ src/<package.name>/JavaFX11.Java

et lancez-le:

cd class
<path.to>/jdk-11.jdk/Contents/Home/bin/Java --module-path <path.to>/javafx-sdk-11/lib/ --add-modules=javafx.controls <package.name>.JavaFX11

JavaFX 11

14
José Pereda