JavaFX 11跨平台吗?正如我在openjfx.org中看到的那样,我必须为每个平台下载版本。如果是的话,我可以以跨平台的形式使用它吗?对于每个java版本,我应该使用每个javafx版本吗?别让我用maven之类的。我想编写一个跨平台的软件。而不是一个多版本的软件,每个版本的每个操作系统。我想在检查操作系统之后加载模块,但我能这样做吗?无论如何,有很多库是跨平台的,即使它有本机代码,那么为什么OpenJFX不这样做呢?
编辑
我没有测试这个,但也许我们可以包含maven中所有系统的所有javafx依赖项。
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>15.0.1</version>
<classifier>win</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>15.0.1</version>
<classifier>linux</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>15.0.1</version>
<classifier>mac</classifier>
</dependency>
</dependency>发布于 2018-10-02 09:10:47
JavaFX 11不再是JDK的一部分,它现在以两种方式分发:
当您下载JDK时,您必须选择一个平台,就像您为您的平台安装JavaFX一样。在API方面,它仍然是跨平台的,所以您的代码在每个平台上看起来都是一样的,但是它在SDK/依赖项方面是特定于平台的。
其原因是与每个SDK捆绑在一起的本地库。
如果您查看三个JavaFX 11 SDK包,每个压缩包都有大约40 MB:
jfxwebkit.dll只有59.2MB),15.5MB的jars和源。libjfxwebkit.dylib只有67.8MB),15.6MB在jars和源代码中。libjfxwebkit.so只有80.1MB),15.8 MB在jars和源代码中。现在的问题是:你会把这三个平台捆绑在一起吗?总压缩大小为120 MB,为三个平台解压缩了大约220 MB的本机库?
在openjfx-dev邮件列表中对这个问题进行了一场辩论,但我相信采用的方法是正确的。
如果您使用Maven/Gradle并从Maven Central检索您的依赖项,那么在Gradle上您必须为您的plaform指定分类器。请看入门版示例。Maven在内部完成它,所以即使您不设置分类器,它也只下载平台的jars。
因此,对于不使用WebView的常规项目,它可能是有意义的,因为您将只下载平台所需的模块依赖项:javafx.base、javafx.graphics、javafx.controls和javafx.fxml。
但是到目前为止,这还不是什么可以改变的东西,您可以得到与平台无关的JavaFX API,但是使用特定于平台的JavaFX SDK/模块。
注意,当您分发一个JavaFX应用程序时,您将使用Jpackager,您将为这三个不同的平台发布三个不同的版本,因此您需要一个特定于平台的发行版。
发布于 2018-10-01 04:28:52
JavaFX是用Java编写的,它运行在跨平台的JVM上。因此,这意味着JavaFX也是跨平台的。
您可以下载不同的版本在您的机器上运行JVM。但是您的JavaFX代码可以在任何一个版本上运行,所以它是跨平台的。
https://stackoverflow.com/questions/52584519
复制相似问题