【问题标题】:Java applets are no longer supported - what's the alternative? (File manipulation - shell commands)不再支持 Java 小程序 - 有什么替代方案? (文件操作 - shell 命令)
【发布时间】:2016-01-26 19:37:29
【问题描述】:

我有一个关于如何从浏览器操作文件的问题,目前我们正在使用 java 小程序。要创建一些文件夹,请替换/删除保存一些文件/文件夹并执行带参数的 shell 命令。我们知道 Chrome 不再支持 npapi 和 java 小程序,FireFox 很快就会跟进,我猜 IE 不会永远落后。

所以实际的问题是最好的方法是什么? 我们是否应该考虑创建插件(但这应该适用于所有主流浏览器 - 很多工作)

或者你推荐安装一个外部程序,我们可以在用户系统上启动什么?例如通过关联一个特定的扩展,或者通过添加一个 url 方案?

这个 Java Web Start 怎么样?这是否允许我们与 domino api 进行通信?

还有其他更好的技术吗?

我们正在构建的网站使用的是 IBM Domino 9.0.1 XPages (JSF)。

【问题讨论】:

  • 为什么要触摸客户端系统上的文件?
  • 你可以使用 HTML5 File Api caniuse.com/#feat=fileapi 如果你想把它保存在浏览器中。对于 shell 命令,我不知道任何解决方案。否则将您的小程序转换为独立的应用程序(更便宜的解决方案)。
  • @Ferrybig 我们正在通过网络提供我们的 Lotus Notes 文档管理系统,同时我们正试图摆脱 Lotus Notes 客户端......
  • 在 Sametime、Whatsapp 或 Skype 上联系我。我将引导您完成解决方案
  • 你应该看看 Electron:electron.atom.io

标签: java shell applet xpages file-management


【解决方案1】:

回答您的用例:内容管理系统。

对于添加文件,HTML5 文件 API 应该可以满足您的所有需求。有很多例子,包括多文件上传。

当您想要提供往返编辑体验时,它会变得更加棘手。就像您单击某些内容并打开 Word、Excel、Impress、Photoshop 并进行编辑一样。保存后,所有内容都会返回到 Domino。

这里的解决方案是 wevDAV。您甚至可以将 Domino 视图公开为 Explorer / Finder / Nautilus 中的文件夹。

对于 Domino,OpenNTF 上有一个项目,它为 Domino 上的文档/附件实现 WebDAV(我编写了它)。这可能是你最好的选择。

【讨论】:

  • 感谢这个,非常有趣 - 完全忘记了 WebDav!这确实使我们朝着好的方向前进。我们需要的不止于此。但是使用的技术是我正在寻找的。我将创建一个使用 url 方案/协议的应用程序。助手是一个好的开始,但最后,我们需要做很多事情......所以恐怕不仅仅是编辑。如何从这个外部程序将文件发送回我的 domino 数据库?或者甚至访问 domino 文档,这样我就可以在不使用 Lotus Notes 客户端 dll 的情况下返回一些消息和附件?可能是 WebService,对吧?
  • @Kraeven:那是 domino 客户端/服务器编程,我想你比我们更擅长,因为你负责移植 domino 应用程序......
  • 问题谬误:要求详细步骤而不说明目的。 Web 应用程序将在服务器端完成大部分操作。因此,您可能需要重新构建您的解决方案,以免陷入使用 HTML 而非 Web 应用程序/陷阱来使用 Notes 客户端的陷阱:第一个想要在移动设备上使用它的用户
  • 我并没有在寻找“还”的详细描述,但我更好奇的是替代方案可能是什么。 :-) 确实,我看到了混乱,让我详细说明一下……这是一个用 LS/公式(> 15 年)编写的现有应用程序,仅在文件操作范围内用于我们公司的 Windows 机器上。现在可以通过 XPages(也在移动设备上)完成简单的文件下载/上传和一些元数据编辑。要摆脱 notes 客户端,我们需要为他们提供基于 Web 的解决方案(仅限 Windows),他们可以在该解决方案上进行文件操作、使用公司宏启动应用程序等等
  • 它分解为:打开一个文件。执行该文件中的宏。保存文件回来?因此,您可以与 Apache POI 交朋友,将宏放入 office 文件中,其余的工作由 WebDAV 完成。
【解决方案2】:

我认为我们应该在这里做出区分:

  • 可以使用 HTML5 文件访问来完成文件访问等操作,但是
  • 本地管理之类的事情绝对不是需要或不应该在浏览器中完成的事情。

事实上,我一直讨厌 Java 建议用户“不需要安装任何软件”来在他们的机器上执行此操作,这是一个直截了当的谎言,考虑到他们下载了 Java 软件,必须告诉他们的 Java 策略框架相信这一点,然后该软件就能够进行本地更改。这与下载任何(签名的)可执行文件并让您的用户执行它一样不安全。

Java 的可移植性¹ 似乎不适用于您的用例; “执行 shell 命令”听起来是不可移植的。因此,最终,您要么只有一个平台,要么每个平台都有一个解决方案,在这种情况下,由于相同的 Java 可执行文件可以在所有 JRE 上运行(即使是这种情况),您也无法获得可移植性.

我想说:现在是让 Java for Desktops 消亡的好时机,尤其是因为您似乎没有在应用程序中做任何 Java 擅长的事情²。

听起来,一般的安装程序框架可以在不编写任何代码的情况下执行您想要的操作。那里有很多,尤其是对于 Windows,您似乎正在解决这些问题;以微软的.MSI 为例。您最终会得到一个两次点击、可签名、可信赖、可更新的解决方案,完全不需要用户保持 JRE 的安装或安全。

澄清:我真的不讨厌 Java;我不认为它是最伟大的语言或拥有最好的生态系统,但无论怎样让你的应用程序工作都很好。

现在,你提到:

明确地说,我们正在创建一个文档管理系统,它曾经位于 Lotus Notes 客户端上,并且我们正在尝试将其移植到 Web。

这听起来确实像是选择任何浏览器并嵌入它可能是个好主意。事实上,Firefox“只是”一个围绕浏览器核心的应用程序,您可能只是修改它(例如通过编写扩展程序)以满足您的需求。这样,它并不是真正的“Web 应用程序”,但它可以满足您与 Web 应用程序集成和本地管理访问的要求。我还建议您对需要在本地运行的 shell 脚本三思而后行——也许它们的工作可以更容易地被另一个程序甚至是“网络兼容”的东西代替,而不是从您的网络应用程序中以本地权限调用它们。


¹(这在当时是一件大事,但老实说,如今的 Java 应用程序与桌面操作系统上基于 .Net 或 Qt 的普通应用程序一样可移植,但从来没有完全像家一样 - 这就像 可移植性丑妹妹,如果你是可移植的,但在每个平台上只提供功能和外观的最小公共子集)

² ...不管是什么!

【讨论】:

  • 是的,这也是我的猜测,我们需要在本地 Windows 客户端上安装一个能够以本地管理员权限执行这些操作的程序。明确地说,我们正在创建一个文档管理系统,它曾经位于 Lotus Notes 客户端上,并且我们正试图将其移植到 Web。我知道这不是为浏览器而构建的,事实上一个好的浏览器不应该允许这样的事情。话虽如此,让我们的应用程序可以从 Web 访问是一个真正的需求。
  • 漫谈你多么不喜欢 Java 对这个问题没有帮助。但它确实具有娱乐价值
猜你喜欢
  • 1970-01-01
  • 2016-05-04
  • 2022-08-13
  • 1970-01-01
  • 2013-04-01
  • 2023-03-04
  • 1970-01-01
  • 2016-06-14
  • 2023-02-18
相关资源
最近更新 更多