77

去年我对 JavaFX 做了一些研究,甚至用它构建了一些基本的桌面应用程序。

它被描述为用于创建 RIA(富 Internet 应用程序)。

http://en.wikipedia.org/wiki/Javafx

但它真的可以通过网络浏览器部署吗?我只通过一个可执行的 JAR 文件部署了它。

通过网络浏览器部署有多容易?它有效吗?有人对此有经验吗?

http://docs.oracle.com/javafx/2/deployment/deployment_toolkit.htm

4

4 回答 4

77

2018 年 3 月 Java 客户端路线图更新

我鼓励对此问题感兴趣的读者查看以下 Oracle 白皮书:

上述文件概述了 Oracle 对相关技术 (JavaFX/Swing/AWT/Applets/WebStart) 的官方立场、打算支持这些技术的日期以及打算将哪些技术过渡到独立于开源开发项目的开源开发项目。 JDK 和 JRE。

Java 9 更新,2017 年 10 月

根据Java 9 发行说明

Java Applet 和 WebStart 功能,包括 Applet API、Java 插件、Java Applet 查看器、JNLP 和 Java Web Start(包括 javaws 工具)在 JDK 9 中均已弃用,并将在未来的版本中删除。

因此,对于 Java 9+,使用 Java 插件在浏览器中部署 JavaFX 只能使用已弃用的技术。Java 9 发行说明的另一部分中的 Oracle说明:

在 Oracle 的 JDK 9 版本中弃用 Java 插件和相关的小程序技术。虽然在 JDK 9 中仍然可用,但将考虑在未来的版本中从 Oracle JDK 和 JRE 中删除这些技术。嵌入网页的小程序和 JavaFX 应用程序需要 Java 插件才能运行。考虑将这些类型的应用程序重写为 Java Web Start 或自包含应用程序。

注意:Java Web Start 并不是真正的替代方案,因为它也已被弃用(无论如何,它与嵌入并呈现在浏览器页面中的应用程序不同)。还要注意那些希望使用 Web Start 的人,即使它现在已从 Oracle JDK 11+ 中删除,它仍可作为开源使用,有关此信息的信息位于OpenWebStart

作为提供类似功能的替代方案,请考虑类似jpro的东西,它在没有 Java 插件的浏览器中部署 JavaFX 应用程序(jpro 目前仅处于封闭测试阶段,因此截至 2017 年 10 月它不是一个可行的解决方案,但也许有一天会在未来...)。

目前,我建议部署 JavaFX 应用程序的最佳方式是作为独立应用程序,在浏览器之外运行。


Java 7 和 8 的先前答案

JavaFx - 它真的可以部署在浏览器中吗?

是的,可以部署 JavaFX 应用程序,以便它们在 Web 浏览器托管的 html 网页中运行。

允许这种情况发生的技术是Java Plugin。该插件目前是一个基于NPAPI的浏览器插件解决方案。Java 插件随Oracle Java 7 运行时标准环境一起提供。

并非所有浏览器都受支持,仅支持 JavaFX 支持的配置页面上列出的浏览器。

通过网络浏览器部署有多容易?

在 Web 浏览器中部署 JavaFX 项目的最简单方法是:

  1. 在 NetBeans 中创建一个新的 JavaFX 项目
  2. 开发一个简单的 HelloWorld 应用程序
  3. 按照部署您的第一个 JavaFX 应用程序的说明进行操作。

这并不难(在我看来)。

或者,按照部署 JavaFX 应用程序(或使用 3rd 方工具)的详细参考说明进行操作。对于许多项目,使用 NetBeans IDE 以外的工具执行打包是一种更好的方法。但是,让 NetBeans IDE 为您处理部署打包任务通常更容易。


以下内容与回答原始问题无关,但提供了对此答案的评论中要求的一些意见和信息。

一些忠告

在浏览器中部署 Java 存在缺陷。我鼓励你对这个主题进行自己的谷歌研究。

在我看来,基于当前的 JavaFX 2.x 部署模型,对于大多数需要浏览器作为主要运行时容器的应用程序类型,使用 JavaFX 不是一个合适的解决方案。

检查应用程序的部署和运行时要求。根据您的要求以及对基于 JavaFX 浏览器的执行模型的了解,确定使用 JavaFX 技术的基于浏览器的部署是否适合您的应用程序。

浏览器嵌入式 JavaFX 应用程序的几个潜在困难

一些重要的浏览器(例如Internet Explorer 10iOS Safari和即将推出的Desktop Chrome)不允许使用 Java 浏览器插件当前使用的 NPAPI 执行插件 => 您的一些目标用户可能无法使用您的应用程序。

使用浏览器嵌入式应用程序,您无法完全控制应用程序执行的运行时(浏览器 + Java 运行时 + 插件接口)=> 首次安装时工作的应用程序可能会在更新后停止按预期运行运行时组件。

部署方案

如果基于浏览器的部署模型不适合您的应用程序,还有其他方法可以部署 JavaFX 应用程序(例如 WebStart、独立 jar 和自包含应用程序)。

于 2013-09-30T20:24:24.713 回答
47

JavaFX - 它真的可以部署在浏览器中吗?

没有了,不会再有了。

答案曾经是肯定的,正如在这个答案中给出的那样,尽管即使在 2013 年写这篇文章的时候,文字也写在了墙上。然而,在 2016 年,答案是否定的,它不能。现代浏览器基本上不再支持 NPAPI(Firefox 支持 Java,但只到年底),并且 Java 插件需要 NPAPI。

于 2016-10-03T15:50:24.270 回答
13

截至 2016 年,您可以在没有任何浏览器插件的情况下使用jpro 。它甚至可以在手机上运行。

编辑 1:该项目对非商业或开源项目是免费的。在这里可以找到一个“hello world”

于 2016-11-29T07:48:05.147 回答
1

我在这里偶然找到了解决方案。我的网络项目中缺少什么。

我必须将此添加到 web.xml 文件中:

 <mime-mapping>
    <extension>jnlp</extension>
    <mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>
于 2015-12-02T16:51:54.477 回答