JavaFX 11不再是JDK的一部分,现在以两种形式分发:
- 作为https://gluonhq.com/products/javafx/中的 SDK 。
- 通过Maven Central,例如https://search.maven.org/artifact/org.openjfx/javafx-controls/11/jar
下载JavaFX SDK时,必须 选择
一个平台,与为平台安装JDK时一样。就API而言,它仍然是跨平台的,因此您的代码在每个平台上看起来都是相同的,但是就SDK /依赖性而言,它是特定于平台的。
这样做的原因是每个SDK都捆绑了本机库。
如果您查看三个JavaFX 11 SDK捆绑包,每个压缩包的大小约为40 MB:
- Windows:压缩后为39.7 MB,dll库中为64.8 MB(
jfxwebkit.dll
只有59.2 MB),jar和源文件中为15.5 MB。 - Mac:压缩后为39.7 MB,dylib库中为72.2 MB(
libjfxwebkit.dylib
只有67.8 MB),jar和源中为15.6 MB。 - Linux:压缩后为43.8 MB,因此库中为84.9 MB(
libjfxwebkit.so
只有80.1 MB),jar和源中为15.8 MB。
现在的问题是:您会将三个平台捆绑在一起吗?总压缩大小为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,并且将为三个不同的平台发布三个不同的版本,因此无论哪种方式,都需要特定于平台的分发。



