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


72

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

它被描述为用于创建RIA(Rich Internet Application)。

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

但是它真的可以通过Web浏览器进行部署吗?我只通过可执行的JAR文件部署了它。

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

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


为什么要在浏览器中使用JavaFX?只需坚持使用通常的堆栈即可。

提示:要以类似于JavaFX / Swing的方式使用Java构建Web应用程序用户界面,请考虑Vaadin Flow
罗勒·布尔克

Answers:


75

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项目的最简单方法是:

  1. 在NetBeans中创建一个新的JavaFX项目
  2. 开发一个简单的HelloWorld App
  3. 请遵循有关部署第一个JavaFX应用程序的说明

这并不困难(我认为)。

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


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

一些忠告

在浏览器中部署Java有一些陷阱。我鼓励您对这个问题进行自己的Google研究。

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

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

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

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

对于浏览器嵌入式应用程序,您无法完全控制应用程序的运行时运行时间(浏览器+ Java运行时+插件接口)=>首次安装时正在运行的应用程序可能会在更新这些应用程序后停止运行运行时组件。

部署替代方案

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


4
非常感谢您的评论。我认为,如果您仅列出有关在浏览器中使用JavaFX的前2-3条投诉,那对每个人都会大有帮助。
2013年

4
好的,更新的答案有几个潜在的困难(不是抱怨)。
jewelsea

@jewelsea我想在andorid上运行javafx。我在这里阅读了bitbucket.org/javafxports/android/wiki/…,但无法实现。给我一些建议吗?
Anshul Parashar 2014年

@anshul我从未使用过Android,所以我不知道。提出一个新的问题胜于评论一个不同的问题。在您的问题中,您可以描述您尝试过的操作以及问题所在,然后人们可以更好地理解困难并从解决方案中学习。
jewelsea

我最近尝试过JPro。尽管存在一些问题,但它已经超出beta版本,并且运行良好,您可以在其网站上阅读有关问题。
LuminousNutria

46

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

没有了,不会再有了。

就像答案中给出的那样,答案曾经是肯定的,尽管即使是在2013年撰写该说明时,也仍然存在。但是,在2016年,答案是否定的,不是。现代浏览器基本上不再支持NPAPI(Firefox支持Java,但直到年底才支持),并且Java插件需要NPAPI。


有趣的...对我来说是个奇怪的消息
Alexander Mills

13

从2016年开始,您无需任何浏览器插件即可使用jpro。它甚至可以在手机上运行。

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


1
我在哪里可以了解到这个@KIC

2
它是Stil Beta,您可以订阅它的可用通知,或者(我想)要求Beta访问。
KIC

1
有人可以展示有关该技术的实际工作项目吗?
user2602807

jpro是否不是包含付费许可的商业产品?
好奇的编码者

@CuriousCoder它说:jpro的非商业用途是免费的。
KIC

1

我在这里偶然找到了解决方案。我的Web项目中缺少的内容。

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

 <mime-mapping>
    <extension>jnlp</extension>
    <mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>

JNLP在JDK 9中已弃用,因此不建议使用此技术。这里检查JDK 9官方文档:oracle.com/technetwork/java/javase/...
好奇编码器
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.