运行 JavaFX 应用程序JDK 11+

Running JavaFX application with JDK 11+

如果我理解 Oracle 的公告,JavaFX 将不会包含在以 JDK 11 开头的 JDK 中,并且将仅作为 OpenJFX 提供。

作为软件开发人员,我必须采取哪些步骤才能使我的 JavaFX 应用程序 运行 达到 JDK 11+?有什么好的建议吗?将通过 Gradle 开放JDK?

JavaFX 11 将从 Maven Central 提供,因此您可以使用 Maven 将其作为任何其他常规依赖项包含在您的项目中:

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

或Gradle:

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

到目前为止(2018 年 6 月),这是 progress, but it should be ready at the time of the JDK 11 release 的工作。

现在您可以从 here, as announced recently (May 2018) 下载 JavaFX 独立 SDK 的早期版本。

请注意,在任何情况下,您都不需要构建 OpenJDK 和 OpenJFX。

您会发现一堆带有不同模块的 jar,例如 javafx.base.jarjavafx.controls.jar,以及您的平台所需的本机库。

您可以使用从 here.

获得的 OpenJDK 10 或 11 EA 构建来测试它们

示例

如果您有 JavaFX 应用程序class:

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();
    }
}

可以编译:

<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

和运行它:

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

OpenJFX 与您的应用捆绑在一起

关于在您的应用程序中捆绑 JavaFX 库, 是正确的。

OpenJFX 与 Java

捆绑在一起

另一种方法是让您的用户在他们的机器上安装 Java 的实现,其中包括 OpenJFX (JavaFX) 库。对于广泛分发到 public 的应用程序,此方法可能行不通。但对于企业或机构等受控环境中的应用程序,这可能是有益的。

OpenJXF 是一个 sub-project on the OpenJDK project. But JavaFX technology is not defined as a part of Java SE。因此,一些供应商选择将 OpenJFX 与其基于 OpenJDK 的产品捆绑在一起,而另一些则不这样做。

目前至少有两家供应商提供了包含 OpenJFX 的 Java SE 的实现。两者都建立在 OpenJDK 之上。两者都将 OpenJFX 反向移植到 Java 8.

这是我制作的流程图,用于帮助选择 Java 实施的供应商。注意底部的 OpenJFX bundled? 分支。

您可以使用 LibericaJDK 而不是 OpenJDK。它与 JavaFX 捆绑在一起,可以为您节省大量配置。 https://bell-sw.com/pages/downloads/#/java-11-lts 只需要下载“完整版 JDK”。