首页 文章

JavaFX和OpenJDK

提问于
浏览
77

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

  • OpenJDK中的JavaFX支持是否仍然如此糟糕?

  • 如果是这样,是否有任何Linux发行版已经提供OpenJFX包,所以用户不必build it themselves

6 回答

  • 6

    JavaFX is part of OpenJDK

    JavaFX项目本身是open source,是part of the OpenJDK project .

    Building JavaFX from the OpenJDK repository

    您可以完全从源构建open version of OpenJDK (including JavaFX),它不依赖于Oracle JDK或封闭源代码 .

    Update: Using a JavaFX distribution pre-built from OpenJDK sources

    正如对这个问题的评论和另一个答案所述,Debian Linux发行版提供了基于OpenJDK的JavaFX二进制分发:

    sudo apt-get install openjfx
    

    Differences between Open JDK and Oracle JDK with respect to JavaFX

    为Java 8提供了以下信息 . 从Java 9开始,VP6 encoding is deprecated for JavaFXOracle WebStart/Browser embedded application deployment technology is also deprecated . 因此,JavaFX的未来版本,即使它们由Oracle分发,也可能不包括任何非开源技术 .

    Oracle JDK包含一些OpenJDK无法使用的软件 . 有两个与JavaFX相关的主要组件 .

    • 由谷歌和谷歌拥有的ON2 VP6视频编解码器尚未开源 .

    • Oracle WebStart / Browser嵌入式应用程序部署技术 .

    这意味着JavaFX的开放版本无法播放VP6 FLV文件 . 这不是一个很大的损失,因为很难找到VP6编码器或VP6中编码的媒体 .

    其他更常见的视频格式,例如H.264,可以使用JavaFX的开放版本进行播放(只要您在目标计算机上预先安装了相应的编解码器) .

    缺乏WebStart / Browser Embedded部署技术实际上与OpenJDK本身有关,而不是与JavaFX有关 . 此技术可用于部署非JavaFX应用程序 .

    如果OpenSource社区开发了一种用于Java(和其他软件)的部署技术,它完全取代了WebStart和Browser Embedded部署方法,那将会很棒,从而为应用程序分发提供了轻量级,低影响的用户体验 . 我相信已经有一些项目开始实现这一目标,但它们还没有达到很高的成熟度和采用水平 .

    就个人而言,我认为WebStart / Browser Embedded部署是传统技术,目前有更好的方法来部署许多JavaFX应用程序(例如自包含应用程序) .

    Who needs to create Linux OpenJDK Distributions which include JavaFX

    根据OpenJDK(例如Redhat,Ubuntu等)为Linux发行版创建包的人员可以为包含JavaFX的JDK和JRE创建RPM . 那些软件分发者然后需要将生成的包放在他们的标准分发代码库中(例如fedora / red hat network yum repositories) . 目前尚未完成,但如果2014年3月Java 8发布时,Java 8 Linux软件包不包含JavaFX,我会感到非常惊讶 .

    Advice on Deployment for Substantial Applications

    我建议使用Java的self-contained application部署模式 .

    此部署模式的说明如下:

    应用程序安装在本地驱动器上,并使用Java和JavaFX运行时的私有副本作为独立程序运行 . 可以使用与该操作系统的其他本机应用程序相同的方式启动应用程序,例如使用桌面快捷方式或菜单项 .

    您可以从Oracle JDK发行版或包含JavaFX的OpenJDK版本构建自包含的应用程序 . 目前使用Oracle JDK更容易实现 .

    由于Java的一个版本与您的应用程序捆绑在一起,您不必关心机器上预安装的Java版本,它具有哪些功能以及它是否与您的程序兼容 . 相反,您可以针对确切的Java运行时版本测试应用程序,并将其与您的应用程序一起分发 . 部署应用程序的用户体验与在其计算机上安装本机应用程序相同(例如,安装了Windows .exe或.msi,OS X .dmg,Linux .rpm或.deb) .

    Update, April 2018: Information on Oracle's current policy towards future developments

    产品管理高级总监唐纳德史密斯

  • 64

    对我来说这很有效 .

    sudo apt-get install openjfx

  • 1

    作为一种快速解决方案,您可以复制JavaFX运行时JAR文件以及从Oracle JRE(JDK)引用的文件或任何使用JavaFX的自包含应用程序(例如JavaFX Scene Builder 2.0):

    cp <JRE_WITH_JAVAFX_HOME>/lib/ext/jfxrt.jar     <JRE_HOME>/lib/ext/
    cp <JRE_WITH_JAVAFX_HOME>/lib/javafx.properties <JRE_HOME>/lib/
    cp <JRE_WITH_JAVAFX_HOME>/lib/amd64/libprism_*  <JRE_HOME>/lib/amd64/
    cp <JRE_WITH_JAVAFX_HOME>/lib/amd64/libglass.so <JRE_HOME>/lib/amd64/
    cp <JRE_WITH_JAVAFX_HOME>/lib/amd64/libjavafx_* <JRE_HOME>/lib/amd64/
    

    只是make sure你有gtk 2.18或更高

  • 43

    试试obuildfactory .

    需要修改这些脚本(包含错误,并没有完全按照要求做的“事情”),我将在未来几天上传从obuildfactory分叉的我的脚本 . 所以我也会相应地更新我的答案 .

    直到那时享受,先生:)

  • 3

    还回答了这个问题:

    Where can I get pre-built JavaFX libraries for OpenJDK (Windows)

    在Linux上它不是一个真正的问题,但在Windows上它并不那么容易,特别是如果你想分发JRE .

    你可以在Windows上使用OpenJFX和OpenJDK 8,你只需要自己组装:

    从这里下载OpenJDK:https://github.com/AdoptOpenJDK/openjdk8-releases/releases/tag/jdk8u172-b11

    从这里下载OpenJFX:https://github.com/SkyLandTW/OpenJFX-binary-windows/releases/tag/v8u172-b11

    从JDK顶部的OpenFX zip复制所有文件,瞧,你有一个带JavaFX的OpenJDK .

  • 2

    根据Oracle OpenJDK和javaFX的集成将于2014年第一季度开始(参见路线图:http://www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html) . 所以,对于第一个问题,答案是你必须等到那时 . 对于第二个问题,没有别的办法 . 那么,现在用java swing或者启动javaFX并等待

相关问题