JavaFX和OpenJDK

我试图决定是否可以切换到JavaFX的Java应用程序的用户界面。 我的大多数用户将使用现在已经集成了JavaFX的Oracle JRE。 但是,有些正在使用OpenJDK(在Linux上)。 这个 (老)的问题表明,OpenJDK与JavaFX交易非常糟糕。 根据这个问题,OpenJFX的替代版本只能在版本9中完全集成到OpenJDK中。所以我的问题是双重的:

  • OpenJDK中的JavaFX支持仍然如此糟糕?
  • 如果是这样,是否有任何已经提供OpenJFX软件包的Linux发行版,用户不必自行构build它 ?

JavaFX是OpenJDK的一部分

JavaFX项目本身是开源的 ,是OpenJDK项目的一部分 。

您可以完全从源代码中构build一个OpenJDK(包括JavaFX)的开放版本,该版本不依赖于Oracle JDK或封闭的源代码。

目前还没有Linux发行版已经提供了OpenJFX包,所以用户不必自己构build它。

打开JDK和Oracle JDK之间关于JavaFX的差异

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

  1. Google和Google拥有的ON2 VP6video编解码器还没有开源。
  2. Oracle WebStart / Browserembedded式应用程序部署技术。

这意味着JavaFX的开放版本无法播放VP6 FLV文件。 这不是一个很大的损失,因为很难find在VP6中编码的VP6编码器或媒体。 其他更常见的video格式,例如H.264,只要您在目标机器上预先安装了相应的编解码器,就可以使用JavaFX的开放版本进行播放。

WebStart / Browserembedded式部署技术的缺乏实际上与OpenJDK本身,而不是JavaFX有关。 这项技术可以用来部署非JavaFX应用程序。

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

就个人而言,我认为WebStart / Browser Embedded部署是传统技术,现在有更好的方法来部署许多JavaFX应用程序(例如独立应用程序)。

谁需要创build包含JavaFX的Linux OpenJDK发行版

创build基于OpenJDK的Linux发行包(例如Redhat,Ubuntu等)的软件包为包含JavaFX的JDK和JRE创buildRPM。 那些软件分销商则需要将生成的软件包放在标准的分发代码库(例如Fedora /红帽networkingyum软件仓库)中。 目前这还没有完成,但是如果Java 8 Linux包在2014年3月发布Java 8时没有包含JavaFX,我会感到非常惊讶。

关于部署实质性应用程序的build议

我build议使用Java 独立的应用程序部署模式。

这种部署模式的描述是:

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

您可以从Oracle JDK发行套件或包含JavaFX的OpenJDK版本构build自包含的应用程序。 目前使用Oracle JDK更容易。

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

对我来说这工作。

sudo apt-get install openjfx

作为一个快速解决scheme,您可以复制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/ 

只要确保你有gtk 2.18或更高

尝试obuildfactory 。

有需要修改这些脚本(包含错误,不要完全做“所需的东西”),我将在未来几天上传从obuildfactory派生的我的脚本。 所以我也会相应地更新我的答案。

在此之前,先生:)

根据甲骨文整合OpenJDK&javaFX将在2014年第一季度(见路线图: http : //www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html )。 所以,第一个问题的答案是,你必须等到那个时候。 对于第二个问题,没有别的办法。 所以,现在去与java swing或启动javaFX并等待