运行 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.jar
或 javafx.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.
- Azul Systems 的 ZuluFX。参见 their FAQ。
- BellSoft 的 LibericaFX。请参阅 their configurations page 的中间部分。
这是我制作的流程图,用于帮助选择 Java 实施的供应商。注意底部的 OpenJFX bundled? 分支。
您可以使用 LibericaJDK 而不是 OpenJDK。它与 JavaFX 捆绑在一起,可以为您节省大量配置。
https://bell-sw.com/pages/downloads/#/java-11-lts
只需要下载“完整版 JDK”。
如果我理解 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.jar
或 javafx.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.
- Azul Systems 的 ZuluFX。参见 their FAQ。
- BellSoft 的 LibericaFX。请参阅 their configurations page 的中间部分。
这是我制作的流程图,用于帮助选择 Java 实施的供应商。注意底部的 OpenJFX bundled? 分支。
您可以使用 LibericaJDK 而不是 OpenJDK。它与 JavaFX 捆绑在一起,可以为您节省大量配置。 https://bell-sw.com/pages/downloads/#/java-11-lts 只需要下载“完整版 JDK”。