gpt4 book ai didi

JavaFX 和 OpenJDK

转载 作者:IT老高 更新时间:2023-10-28 11:32:29 25 4
gpt4 key购买 nike

我正在尝试决定是否可以为 Java 应用程序的用户界面切换到 JavaFX。我的大多数用户都会使用 Oracle JRE,现在它集成了 JavaFX。但是,有些正在使用 OpenJDK(在 linux 上)。 This (旧)问题表明 OpenJDK 对 JavaFX 的处理非常糟糕。根据 this问题,替代的 OpenJFX 只会在版本 9 中完全集成到 OpenJDK 中。所以我的问题是双重的:

  • OpenJDK 中的 JavaFX 支持是否仍然如此糟糕?
  • 如果是这样,是否有任何 Linux 发行版已经提供了 OpenJFX 包,以便用户不必build it themselves ?
  • 最佳答案

    JavaFX 是 OpenJDK 的一部分
    JavaFX 项目本身是 open source并且是 part of the OpenJDK project .
    2019 年 12 月更新
    有关如何使用开源 JavaFX 的最新信息,请访问 https://openjfx.io .这包括使用 JavaFX 作为从现有 JDK(例如 Open JDK installation)访问的模块化库的说明。
    JavaFX 的开源代码库位于 https://github.com/openjdk/jfx .
    在链接的源位置,您可以找到开放 JavaFX 的许可证文件(目前此 license 与 OpenJDK 的许可证匹配:GPL+classpath 异常(exception))。
    该项目的 wiki 位于:https://wiki.openjdk.java.net/display/OpenJFX/Main
    如果您想快速开始使用开放式 JavaFX,Bellsoft 的 Liberica JDK发行版提供预构建的 OpenJDK 二进制文件,其中包括适用于各种平台的 OpenJFX。
    对于作为自包含应用程序的分发,Java 14 计划实现 JEP 343: Packaging Tool ,“支持 native 打包格式,为最终用户提供自然的安装体验。这些格式包括 Windows 上的 msi 和 exe,macOS 上的 pkg 和 dmg,以及 Linux 上的 deb 和 rpm。”,用于使用 native 安装程序部署基于 OpenJFX 的应用程序和没有额外的平台依赖项(例如预装的 JDK)。

    随着时间的推移可能会过时的旧信息
    从 OpenJDK 存储库构建 JavaFX
    您可以建立一个 open version of OpenJDK (including JavaFX)完全来自源代码,不依赖于 Oracle JDK 或封闭源代码。
    更新:使用从 OpenJDK 源预先构建的 JavaFX 发行版
    正如对此问题的评论和另一个答案中所述,Debian Linux 发行版提供了基于 OpenJDK 的 JavaFX 二进制发行版:

  • https://packages.qa.debian.org/o/openjfx.html
  • 通过以下方式安装:
    sudo apt-get install openjfx

  • (据我所知,目前这只适用于 Java 8)。
    Open JDK 和 Oracle JDK 在 JavaFX 方面的差异
    以下信息是为 Java 8 提供的。从 Java 9 开始, VP6 encoding is deprecated for JavaFXOracle WebStart/Browser embedded application deployment technology is also deprecated .因此,JavaFX 的 future 版本,即使它们是由 Oracle 分发的,也可能不会包含任何非开源技术。
    Oracle JDK 包含一些无法从 OpenJDK 使用的软件。与 JavaFX 相关的组件:
  • ON2 VP6 视频编解码器归谷歌所有,谷歌尚未开源。
  • Oracle WebStart/Browser Embedded 应用程序部署技术。

  • 这意味着 JavaFX 的开放版本无法播放 VP6 FLV 文件。这不是一个很大的损失,因为很难找到 VP6 编码器或以 VP6 编码的媒体。
    其他更常见的视频格式,例如 H.264 可以在 JavaFX 的开放版本中正常播放(只要您在目标机器上预装了适当的编解码器)。
    缺乏 WebStart/Browser Embedded 部署技术实际上与 OpenJDK 本身有关,而不是与 JavaFX 相关。该技术可用于部署非 JavaFX 应用程序。
    如果开源社区为 Java(和其他软件)开发一种部署技术,完全取代 WebStart 和浏览器嵌入式部署方法,为应用程序分发提供良好的轻量级、低影响的用户体验,那就太好了。我相信已经有一些项目开始为这样的目标服务,但它们还没有达到很高的成熟度和采用水平。
    就我个人而言,我认为 WebStart/Browser Embedded 部署是遗留技术,目前有更好的方法来部署许多 JavaFX 应用程序(例如自包含应用程序)。
    2019 年 12 月更新:
    已开发出适用于 JDK 11+ 的 WebStart 开源版本,可从 https://openwebstart.com 获得。 .
    谁需要创建包含 JavaFX 的 Linux OpenJDK 发行版
    由基于 OpenJDK(例如 Redhat、Ubuntu 等)为 Linux 发行版创建包的人员为包含 JavaFX 的 JDK 和 JRE 创建 RPM。这些软件发行商需要将生成的包放置在他们的标准发行代码存储库中(例如,fedora/red hat network yum 存储库)。目前这还没有完成,但如果 Java 8 Linux 包在 2014 年 3 月发布 Java 8 时不包含 JavaFX,我会感到非常惊讶。
    2019 年 12 月更新:
    现在 JavaFX 已经从大多数二进制 JDK 和 JRE 发行版(包括 Oracle 的发行版)中分离出来,而是作为独立的 SDK、一组 jmods 或作为库依赖项提供,可从 central Maven repository 获得。 (如 https://openjfx.io 所述),标准 Linux OpenJDK 发行版不需要包含 JavaFX。
    如果您想要一个包含 JavaFX 的预构建 JDK,请考虑 Liberica JDK distributions ,适用于各种平台。
    重大应用部署建议
    我建议使用 Java 的 self-contained application部署模式。
    这种部署模式的描述是:

    Application is installed on the local drive and runs as a standaloneprogram using a private copy of Java and JavaFX runtimes. Theapplication can be launched in the same way as other nativeapplications for that operating system, for example using a desktopshortcut or menu entry.


    您可以从 Oracle JDK 发行版或从包含 JavaFX 的 OpenJDK 构建构建自包含应用程序。目前使用 Oracle JDK 更容易做到这一点。
    由于 Java 版本与您的应用程序捆绑在一起,因此您不必关心机器上可能预装了什么版本的 Java、它具有哪些功能以及它是否与您的程序兼容。相反,您可以针对确切的 Java 运行时版本测试您的应用程序,然后将其与您的应用程序一起分发。部署应用程序的用户体验将与在他们的机器上安装 native 应用程序相同(例如,安装了 windows .exe 或 .msi、OS X .dmg、linux .rpm 或 .deb)。
    注意:自包含应用程序功能仅适用于 Java 8 和 9,不适用于 Java 10-13。 Java 14,通过 JEP 343: Packaging Tool ,计划再次从 OpenJDK 发行版中提供对此功能的支持。
    2018 年 4 月更新:有关 Oracle 当前针对 future 发展的政策的信息
  • The Future of JavaFX and Other Java Client Roadmap Updates作者:甲骨文产品管理高级总监 Donald Smith。
  • Java Client Roadmap Update - March 2018 Oracle 白皮书。
  • 关于JavaFX 和 OpenJDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18547362/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com