需要通过 javascript 与浏览器通信的 java applet 的替代方案

Posted

技术标签:

【中文标题】需要通过 javascript 与浏览器通信的 java applet 的替代方案【英文标题】:Alternative for java applet which needs to communicate with browser via javascript 【发布时间】:2015-10-02 19:02:17 【问题描述】:

在我们的 Web 应用程序中,我们使用 Java 小程序通过 jacob jar 调用 MS.Word 应用程序,例如Word 打开、编辑、保存时自动上传到服务器。

Google Chrome 将不再支持 NPAPI,所以很快我们就不能再在 Chrome 中运行我们的小程序了。

所以,有任何关于 Java 小程序替代方案的建议。我们希望为用户提供与以前一样的体验。

【问题讨论】:

非网络应用程序。 或者您可以告诉您的用户不要使用 Chrome,但如果他们不是技术人员,这可能比非网络应用程序更让他们烦恼。 也许您应该以不涉及 Word 的方式重新考虑您的应用程序。现在可以拥有完全在浏览器工具(javascript/html5)中实现的非常好的富文本编辑器。而且它是跨平台的,不需要现有的 Office 许可证。 #RealSkeptic 感谢您的回复,我们的应用程序客户端中已经有该选项可以使用编辑器/word 查看/修改他们的文档。但这是强制性的,我们需要实现它(Word)。我们可以使用 Java web start 实现这样的功能吗?但我不知道 JWS 是否可以与我们在浏览器中运行的 javascript 进行通信。 如果您指的是 Jacob COM 库 (sourceforge.net/projects/jacob-project),那么我们谈论的是使用 DLL 来通过 COM 与 Word 进行本机通信。在这种情况下,您不走运 - 目前没有其他选择。在这里查看我的帖子:***.com/questions/31315991/… 【参考方案1】:

我们有同样的问题。使用 Webstart 不再可能进行这种通信。我们将在 webstart 应用程序和浏览器之间使用 Websockets。我们的第一个尝试是在 webstart 中启动一个 websockets 服务器并使浏览器连接到 localhost。如果浏览器中的安全限制无法做到这一点,那么我们将通过网络服务器、浏览器和 webstart 应用程序连接到网络服务器并交换消息来完成。

【讨论】:

第一种方法的结果是什么?【参考方案2】:

我可以看到两种不同的可能性。

    创建一个独立的应用程序,使用electron 等技术“包装”您的Web 应用程序。然后,您可以根据需要将浏览器与桌面集成。这需要在客户端上进行安装。 启动一个 webstart 应用程序(或者它实际上可以是客户端上发生的任何安装)。它需要启动一个网络服务器,或者连接到一个网络服务器并通过 http 进行通信。

我对 Applet 的丢失感到难过。这是一项不容易被取代的技术。而另一种方法似乎有点像“变通办法”。没有简单的跨浏览器方法可以突破浏览器沙箱并访问系统。

对我自己来说,Applet 的丢失仅仅意味着自动化其中一些流程变得过于困难,最好找到实现类似最终结果的替代方法。

小提示:如果您要启动本地网络服务器,请注意安全性。它可以被系统上的其他进程访问。通过向端口发送请求来打开任何人的系统不是很有趣吗!

【讨论】:

以上是关于需要通过 javascript 与浏览器通信的 java applet 的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

功能检测技术 typeOf

Mettler toledo IND780 通过 javascript 读取重量

JavaScript通过更改Web Storage实现页面间通信

JavaScript的单线程与任务队列

PHP入门(18)PHP与Ajax

用于与 C 库通信的 Cordova 插件