Java IPC:GUI 和命令行

Posted

技术标签:

【中文标题】Java IPC:GUI 和命令行【英文标题】:Java IPC: GUI and Command Line 【发布时间】:2008-10-30 01:40:01 【问题描述】:

我想为 Java 应用程序实现命令行界面。这不会太难做到,除非我希望命令行程序影响另一个 Java GUI 程序的状态。例如,我可以输入:

java CliMain arg1 arg2

另一个正在运行的 GUI 实例将执行适当的操作。

实现这样的事情最简单的方法是什么?

【问题讨论】:

【参考方案1】:

您可以让 GUI 应用程序侦听 TCP 端口(在 localhost 接口上),然后 CLI 应用程序将连接到它。

一种方法是使用 REST over HTTP。

【讨论】:

这是一个非常强大的技术。这还允许您为程序提供 HTTP 接口,这对于立即使您的应用程序网络可访问很有用。【参考方案2】:

另一种方法是通过 JMX。它“免费”为您提供了很多东西(在简单的情况下,您只需实现一个 bean 并注册它——非常简单),并且特别适合这项任务。

【讨论】:

【参考方案3】:

您可以让 GUI 应用程序(如编辑器)监听

1) 某种类型的剪贴板事件 如果事件属于您感兴趣的类型,则获取剪贴板内容。 2) 某个端口上的服务器套接字 监听服务器套接字。当 CLI 程序启动时,它会连接到已知端口的服务器套接字,发送信息并退出。 3) 排队 您可以从 CLI 程序入队并从 GUI 程序出队。

如果你想进一步调查,许多像 emacs 这样的专业编辑器使用相同的机制。 http://www.emacswiki.org/emacs/EmacsClient

【讨论】:

【参考方案4】:

您的应用程序可以通过RMI 进行控制。应用程序将实现一个控制接口,在 localhost 上注册其服务,命令行应用程序将获得一个 rmi 代理并调用所需的控制方法...

一开始看起来很难,但当你尝试过之后,你很快就会发现它是多么容易。它还支持通过SSL 进行加密。因此,如果在线有安全相关数据,您可以保护您的数据交换。

【讨论】:

【参考方案5】:

最简单的方法是让 GUI 监听 TCP 端口上的命令。命令行会发送命令,而 GUI 会解释它们。

也许您也可以使用命名管道来实现,但我不确定您将如何在 Java 中实现它。

【讨论】:

以上是关于Java IPC:GUI 和命令行的主要内容,如果未能解决你的问题,请参考以下文章

IPC 还是命令行?

JAVA GUI 事件监听事件 详解 和 案例.

C# 应用程序 GUI 和命令行

java之GUI

命令行程序增加 GUI 外壳

Java GUI