首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从jdk跨平台中删除它之后,JavaFX会不会?

从jdk跨平台中删除它之后,JavaFX会不会?
EN

Stack Overflow用户
提问于 2018-10-01 04:22:38
回答 2查看 3.7K关注 0票数 11

JavaFX 11跨平台吗?正如我在openjfx.org中看到的那样,我必须为每个平台下载版本。如果是的话,我可以以跨平台的形式使用它吗?对于每个java版本,我应该使用每个javafx版本吗?别让我用maven之类的。我想编写一个跨平台的软件。而不是一个多版本的软件,每个版本的每个操作系统。我想在检查操作系统之后加载模块,但我能这样做吗?无论如何,有很多库是跨平台的,即使它有本机代码,那么为什么OpenJFX不这样做呢?

编辑

我没有测试这个,但也许我们可以包含maven中所有系统的所有javafx依赖项。

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-02 09:10:47

JavaFX 11不再是JDK的一部分,它现在以两种方式分发:

当您下载JDK时,您必须选择一个平台,就像您为您的平台安装JavaFX一样。在API方面,它仍然是跨平台的,所以您的代码在每个平台上看起来都是一样的,但是它在SDK/依赖项方面是特定于平台的。

其原因是与每个SDK捆绑在一起的本地库。

如果您查看三个JavaFX 11 SDK包,每个压缩包都有大约40 MB:

  • Windows: 39.7MB的压缩,64.8MB的dll库(jfxwebkit.dll只有59.2MB),15.5MB的jars和源。
  • Mac: 39.7MB压缩,72.2MB在dylib库(libjfxwebkit.dylib只有67.8MB),15.6MB在jars和源代码中。
  • Linux: 43.8MB压缩,84.9MB在so库中(libjfxwebkit.so只有80.1MB),15.8 MB在jars和源代码中。

现在的问题是:你会把这三个平台捆绑在一起吗?总压缩大小为120 MB,为三个平台解压缩了大约220 MB的本机库?

在openjfx-dev邮件列表中对这个问题进行了一场辩论,但我相信采用的方法是正确的。

如果您使用Maven/Gradle并从Maven Central检索您的依赖项,那么在Gradle上您必须为您的plaform指定分类器。请看入门版示例。Maven在内部完成它,所以即使您不设置分类器,它也只下载平台的jars。

因此,对于不使用WebView的常规项目,它可能是有意义的,因为您将只下载平台所需的模块依赖项:javafx.basejavafx.graphicsjavafx.controlsjavafx.fxml

但是到目前为止,这还不是什么可以改变的东西,您可以得到与平台无关的JavaFX API,但是使用特定于平台的JavaFX SDK/模块。

注意,当您分发一个JavaFX应用程序时,您将使用Jpackager,您将为这三个不同的平台发布三个不同的版本,因此您需要一个特定于平台的发行版。

票数 17
EN

Stack Overflow用户

发布于 2018-10-01 04:28:52

JavaFX是用Java编写的,它运行在跨平台的JVM上。因此,这意味着JavaFX也是跨平台的。

您可以下载不同的版本在您的机器上运行JVM。但是您的JavaFX代码可以在任何一个版本上运行,所以它是跨平台的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52584519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档