2018年3月Java客户端路线图的更新
我鼓励对这个问题感兴趣的读者阅读以下Oracle白皮书:
上面的文章概述了Oracle在相关技术(JavaFX / Swing / AWT / Applets / WebStart)上的官方立场,打算支持这些技术的日期以及打算过渡到开源开发项目之外的其他技术(与JDK和JRE。
Java 9更新,2017年10月
根据Java 9发行说明:
JDK 9中已弃用Java Applet和WebStart功能,包括Applet API,Java插件,Java Applet Viewer,JNLP和Java Web Start(包括javaws工具),并将在以后的版本中将其删除。
因此,对于Java 9+,只有使用过时的技术才能在使用Java插件的浏览器中部署JavaFX。Oracle在Java 9发行说明的另一部分中进行了说明:
不推荐使用Oracle JDK 9构建中的Java插件和相关的applet技术。尽管这些技术仍在JDK 9中可用,但将来的发行版中将考虑从Oracle JDK和JRE中删除这些技术。嵌入在网页中的Applet和JavaFX应用程序需要Java插件才能运行。考虑将这些类型的应用程序重写为Java Web Start或独立的应用程序。
注意:Java Web Start并不是真正的替代方案,因为它也已弃用(无论如何,它与嵌入并呈现在浏览器页面中的应用程序不同)。另请注意,对于那些希望使用Web Start的人,即使现在已经从Oracle JDK 11+中删除了Web Start,它也可以作为开放源代码使用,有关此信息,请访问OpenWebStart。
作为提供类似功能的替代方案,请考虑使用诸如jpro之类的东西,它可以在没有Java插件的浏览器中部署JavaFX应用程序(jpro目前仅处于封闭测试版,因此截至2017年10月,它不是一个可行的解决方案,但也许在某天)未来...)。
就目前而言,我建议部署JavaFX应用程序的最佳方法是在浏览器外部运行的自包含应用程序。
Java 7和8的先前答案
JavaFx-它真的可以部署在浏览器中吗?
是的,可以部署JavaFX应用程序,使其在Web浏览器托管的html网页中运行。
允许这种情况发生的技术是Java Plugin。该插件当前是基于NPAPI的浏览器插件解决方案。Java插件随Oracle Java 7 Runtime Standard Environment一起提供。
并非所有浏览器都受支持,只有JavaFX支持的配置页面上列出的浏览器受支持。
通过网络浏览器部署有多容易?
在Web浏览器中部署JavaFX项目的最简单方法是:
- 在NetBeans中创建一个新的JavaFX项目。
- 开发一个简单的HelloWorld App。
- 请遵循有关部署第一个JavaFX应用程序的说明。
这并不困难(我认为)。
或者,按照有关部署JavaFX应用程序的详细参考说明进行操作(或使用第三方工具)。对于许多项目,使用NetBeans IDE以外的工具执行打包是一种更好的方法。但是,通常让NetBeans IDE为您处理部署打包任务会更容易。
接下来的内容与回答原始问题无关,但提供了一些对此评论的意见中要求的观点和信息。
一些忠告
在浏览器中部署Java有一些陷阱。我鼓励您对这个问题进行自己的Google研究。
我认为,基于当前的JavaFX 2.x部署模型,对于大多数需要使用浏览器作为主要运行时容器的应用程序类型,使用JavaFX是不合适的解决方案。
检查您的应用程序的部署和运行时要求。根据您的要求以及对基于JavaFX浏览器的执行模型的了解,确定使用JavaFX技术的基于浏览器的部署对于您的应用程序是否是正确的机制。
浏览器嵌入式JavaFX应用程序的一些潜在困难
一些重要的浏览器(例如Internet Explorer 10,iOS Safari和即将推出的Desktop Chrome)不允许使用Java浏览器插件当前使用的NPAPI执行插件=>一些目标用户可能无法使用您的应用程序。
对于浏览器嵌入式应用程序,您无法完全控制应用程序的运行时运行时间(浏览器+ Java运行时+插件接口)=>首次安装时正在运行的应用程序可能会在更新这些应用程序后停止运行运行时组件。
部署替代方案
如果基于浏览器的部署模型不适合您的应用程序,则可以使用其他方法来部署JavaFX应用程序(例如WebStart,独立jar和独立的应用程序)。