我想为 Java 应用程序实现一个命令行界面。这不会太难做到,除非我希望命令行程序影响另一个 Java GUI 程序的状态。例如,我可以输入:
java CliMain arg1 arg2
另一个正在运行的 GUI 实例将执行适当的操作。
实现这样的事情的最简单方法是什么?
您可以让 GUI 应用程序侦听 TCP 端口(在localhost
接口上),然后 CLI 应用程序将连接到它。
一种方法是使用 REST over HTTP。
另一种方法是通过 JMX。它“免费”为您提供了很多东西(在简单的情况下,您只需实现一个 bean 并注册它——非常简单),并且特别适合这项任务。
您可以让 GUI 应用程序(如编辑器)监听
1) 特定类型的剪贴板事件
如果该事件是您感兴趣的类型,则获取剪贴板内容。
2)某个端口
上的服务器套接字侦听服务器套接字。当 CLI 程序启动时,它连接到已知端口的服务器套接字,发送信息并退出。
3) 队列
你可以从 CLI 程序入队和从 GUI 程序出队。
如果你想进一步调查,许多像emacs这样的专业编辑器使用相同的机制。http://www.emacswiki.org/emacs/EmacsClient
最简单的方法是让 GUI 监听 TCP 端口上的命令。命令行会发送命令,而 GUI 会解释它们。
也许您也可以使用命名管道来做到这一点,但我不确定您将如何在 Java 中实现它。