رام*_*لله 7 java cross-platform javafx release javafx-11
JavaFX 11是否跨平台?正如我在openjfx.org中看到的,我必须为每个平台下载版本.如果是这样,我可以以任何方式以跨平台形式使用它吗?我应该为每个java版本使用每个javafx版本吗?不要告诉我使用maven或类似的东西.我想编写一个跨平台的软件.而且每个操作系统的每个版本都没有多版本软件.我在检查操作系统后加载模块但我可以这样做吗?任何方式都有很多跨平台的库,即使它有本机代码,为什么OpenJFX不这样做呢?
JavaFX 11不再是JDK的一部分,它现在以两种形式分发:
下载JavaFX SDK时,您必须选择一个平台,与为平台安装JDK时相同.它在API方面仍然是跨平台的,因此您的代码在每个平台上看起来都是一样的,但它在SDK /依赖性方面是特定于平台的.
原因是与每个SDK捆绑在一起的本机库.
如果您查看三个JavaFX 11 SDK包,每个压缩包都有大约40 MB:
jfxwebkit.dll
仅有59.2 MB),以及15.5 MB的jar和源代码.libjfxwebkit.dylib
仅有67.8 MB),以及15.6 MB的jar和源代码.libjfxwebkit.so
只有80.1 MB),以及15.8 MB的jar和源代码.现在的问题是:你会将三个平台捆绑在一起吗?总压缩大小为120 MB,三个平台大约220 MB的解压缩本机库?
在openjfx-dev邮件列表中确实存在关于这个问题的争论,但我认为采用的方法是正确的.
如果您使用Maven/Gradle并从Maven Central检索依赖项,则必须在Gradle上指定平台的分类器.请参阅"入门" 示例.Maven在内部完成它,所以即使你没有设置分类器,它也只为你的平台下载jar.
因此,对于一个普通的项目,你不使用的WebView,它可能是有意义的,因为你会为你的平台只下载所需模块的依赖:javafx.base
,javafx.graphics
,javafx.controls
和javafx.fxml
.
但到目前为止,这并不是现在可以改变的东西,您可以使用与平台无关的JavaFX API,但使用特定于平台的JavaFX SDK /模块.
请注意,在分发JavaFX应用程序时,您将使用Jpackager,您将为这三个不同的平台发布三个不同的版本,因此无论哪种方式,您都需要特定于平台的分发.