JavaFX是OpenJDK的一部分
JavaFX项目本身是开源的,并且是OpenJDK项目的一部分。
更新2019年12月
有关如何使用开源JavaFX的最新信息,请访问https://openjfx.io。这包括有关使用JavaFX作为从现有JDK(例如Open JDK安装)访问的模块化库的说明。
JavaFX的开源代码存储库位于https://github.com/openjdk/jfx。
在链接的源位置,您可以找到用于打开JavaFX的许可证文件(当前,此许可证与OpenJDK的许可证匹配:GPL + classpath异常)。
该项目的Wiki位于: https //wiki.openjdk.java.net/display/OpenJFX/Main
如果您想快速开始使用开放JavaFX,请 Belsoft Liberica JDK发行版提供了OpenJDK的预构建二进制文件(当前),该二进制文件包括针对各种平台的开放JavaFX。
为了作为独立的应用程序进行分发,Java 14被计划实现JEP 343:打包工具,该工具 “支持本地打包格式以为最终用户提供自然的安装体验。这些格式包括Windows上的msi和exe,macOS上的pkg和dmg。 ,以及在Linux上的deb和rpm。”,用于通过本机安装程序部署基于OpenJFX的应用程序,而无需其他平台依赖项(例如预安装的JDK)。
较旧的信息可能会随着时间而过时
从OpenJDK存储库构建JavaFX
您可以完全从源代码构建OpenJDK的开放版本(包括JavaFX),而无需依赖Oracle JDK或封闭的源代码。
更新:使用从OpenJDK源预构建的JavaFX发行版
如对这个问题的评论和另一个答案中所述,Debian Linux发行版提供了基于OpenJDK的JavaFX二进制发行版:
(据我所知,目前这仅适用于Java 8)。
关于JavaFX,Open JDK和Oracle JDK之间的区别
为Java 8提供了以下信息。从Java 9开始,JavaFX不推荐使用VP6编码,甲骨文Webstart的/浏览器嵌入应用程序部署技术也已过时。因此,即使JavaFX的未来版本由Oracle分发,也可能不会包含任何非开源技术。
Oracle JDK包括一些无法从OpenJDK使用的软件。与JavaFX相关的主要组件有两个。
- Google拥有的ON2 VP6视频编解码器尚未公开。
- Oracle WebStart / Browser嵌入式应用程序部署技术。
这意味着JavaFX的开放版本无法播放VP6 FLV文件。这并不是很大的损失,因为很难找到VP6编码器或用VP6编码的媒体。
其他更常见的视频格式(例如H.264)可以使用开放版本的JavaFX正常播放(只要您在目标计算机上预先安装了适当的编解码器)。
缺少WebStart / Browser嵌入式部署技术实际上与OpenJDK本身有关,而不是与JavaFX有关。该技术可用于部署非JavaFX应用程序。
如果OpenSource社区开发了一种Java(和其他软件)部署技术,该技术可以完全替代WebStart和Browser Embedded部署方法,从而为应用程序分发提供良好的轻量级,低影响的用户体验,那就太好了。我相信已经有一些项目开始实现这一目标,但尚未达到很高的成熟度和采用率。
我个人认为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在2014年3月发布时Java 8 Linux软件包不包含JavaFX,我会感到非常惊讶。
更新,2019年12月:
现在,JavaFX已与大多数二进制JDK和JRE发行版(包括Oracle的发行版)分离,并且可以作为独立SDK,jmod集合或可从中央Maven存储库获得的库依赖项(概述为:https://openjfx.io),因此不需要标准Linux OpenJDK发行版即可包含JavaFX。
如果要使用包含JavaFX的预构建JDK,请考虑为各种平台提供的Liberica JDK发行版。
有关大量应用程序部署的建议
我建议使用Java的独立应用程序部署模式。
此部署模式的说明为:
应用程序安装在本地驱动器上,并使用Java和JavaFX运行时的专用副本作为独立程序运行。可以使用与该操作系统的其他本机应用程序相同的方式来启动该应用程序,例如使用桌面快捷方式或菜单项。
您可以从Oracle JDK发行版或包含JavaFX的OpenJDK构建中构建独立的应用程序。当前,使用Oracle JDK更容易做到这一点。
由于Java版本与您的应用程序捆绑在一起,因此您不必担心计算机上可能已预安装了哪个Java版本,它具有什么功能以及它是否与您的程序兼容。相反,您可以针对确切的Java运行时版本测试应用程序,并将其与您的应用程序一起分发。部署应用程序的用户体验将与在其计算机上安装本机应用程序的体验相同(例如,安装了Windows .exe或.msi,OS X .dmg,Linux .rpm或.deb)。
注意:独立的应用程序功能仅适用于Java 8和9,不适用于Java 10-13。计划通过JEP 343:打包工具 Java 14 再次从OpenJDK发行版提供对此功能的支持。
2018年4月更新:有关Oracle当前针对未来发展的政策的信息