使用JDK 11+运行JavaFX应用程序;
如果我了解Oracle的注释,JavaFX将不会从JDK 11开始包含在JDK中,并且只作为OpenJFX提供使用JDK 11+运行JavaFX应用程序;,java,javafx,javafx-8,openjfx,Java,Javafx,Javafx 8,Openjfx,如果我了解Oracle的注释,JavaFX将不会从JDK 11开始包含在JDK中,并且只作为OpenJFX提供 作为一名软件开发人员,我必须采取哪些步骤才能让我的JavaFX应用程序使用JDK 11+运行?有什么好的告别吗?OpenJDK是否可通过Gradle获得?JavaFX 11将可从Maven Central获得,因此您可以使用Maven将其作为任何其他常规依赖项包含在项目中: <dependencies> <dependency> <
作为一名软件开发人员,我必须采取哪些步骤才能让我的JavaFX应用程序使用JDK 11+运行?有什么好的告别吗?OpenJDK是否可通过Gradle获得?JavaFX 11将可从Maven Central获得,因此您可以使用Maven将其作为任何其他常规依赖项包含在项目中:
<dependencies>
<dependency>
<groupId>javafx</groupId>
<artifactId>javafx.controls</artifactId>
<version>11.0.0</version>
</dependency>
</dependencies>
到目前为止(2018年6月),这是工作,但它应该在JDK 11的时候准备好
现在,您可以从下载JavaFX独立SDK的早期版本,正如所宣布的那样
请注意,在任何情况下,您都不需要构建OpenJDK或OpenJFX
您将发现一堆jar,其中包含不同的模块,如javafx.base.jar
或javafx.controls.jar
,以及您的平台所需的本机库
您可以使用OpenJDK 10或11 EA构建来测试它们,您可以从中获得这些构建
样本
如果您有一个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();
}
}
您可以编译它:
<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
/jdk-11.jdk/Contents/Home/bin/javac--module path/javafx-sdk-11/lib/--add modules=javafx.controls-d class/src//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
cd类
/jdk-11.jdk/Contents/Home/bin/java--module path/javafx-sdk-11/lib/--add modules=javafx.controls.JavaFX11
OpenJFX与您的应用程序捆绑
在应用程序中绑定JavaFX库的方法是正确的
与Java捆绑的OpenJFX
另一种选择是,您的用户在其机器上安装了包含()库的Java实现。对于广泛分发给公众的应用程序,这种方法可能行不通。但对于受控环境(如企业或机构)中的应用程序,这可能是有益的
OpenJXF是一个很好的工具。但是JavaFX技术并没有被定义为一部分。因此,一些供应商选择将OpenJFX与其基于OpenJDK的产品捆绑在一起,而有些供应商则不这样做
目前至少有两家供应商提供了包含OpenJFX的JavaSE实现。这两个都建在屋顶上。两者都将OpenJFX向后移植到Java8
- Azul系统的ZuluFX。看
- 贝尔软件公司的LibericaFX。请参见第页的中间部分
您可以使用LibericaJDK而不是OpenJDK。它与JavaFX捆绑在一起,可以为您节省大量配置。
只需下载“完整JDK”。只需安装openjfx。在这种情况下,“安装”是什么意思?我需要将OpenJFX与我的应用程序一起发布吗?是的,它必须。同样,您也依赖于JRE。无论您是手动安装JRE(和OJFX),还是自定义JRE(使用jlink构建),您都可以自己判断。到目前为止,我只需要告诉用户安装JDK或JRE。此外,Java通常已经安装在几乎所有的机器上。所以现在当我想从JDK11开始使用JavaFX时,我需要用户进行另一个困难的依赖于平台的安装?这是一个倒退。本机库可以以独立于平台的方式更加智能地打包。例如,参见OSHI项目。对甲骨文的一些批评是有道理的。@StefanReich我不同意。Jigsaw允许您将JRE与应用程序捆绑在一起,并且可以在尚未安装JRE的系统上运行。非常感谢您的回答。继续使用JavaFX让人放心!二进制文件将在什么许可证下分发?如果检查二进制文件,每个模块都有许可证文件。到目前为止,它似乎将是GNU通用公共许可证,版本2,类路径例外。我们是否必须始终使用
/jdk-11.jdk/Contents/Home/bin/java--module path/javafx-sdk-11/lib/--add modules=javafx.controls.JavaFX11
运行应用程序?请参阅,这将取决于您使用的构建工具。
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