質問
Javaアプリケーション用のコマンドラインインターフェイスを実装したいと思います。コマンドラインプログラムが別のJava GUIプログラムの状態に影響を与えたい場合を除き、これを行うのはそれほど難しくありません。たとえば、次のように入力できます:
java CliMain arg1 arg2
そして、実行中の別のGUIインスタンスが適切なアクションを実行します。
このようなものを実装する最も簡単な方法は何ですか?
解決
GUIアプリケーションをTCPポート( localhost
インターフェース)でリッスンさせると、CLIアプリケーションがそれに接続します。
これを行う1つの方法は、REST over HTTPを使用することです。
他のヒント
別の方法は、JMXを使用することです。それはあなたにたくさんの「無料」を提供します; (単純な場合、Beanを実装して登録するだけで非常に簡単です)、このタスクに特に適しています。
GUIアプリケーション(エディターなど)をリッスンさせることができます
1)特定のタイプのクリップボードイベント
イベントが興味のあるタイプである場合、クリップボードの内容を取得します。
2)特定のポートのサーバーソケット
サーバーソケットでリッスンします。 CLIプログラムが起動すると、既知のポートでサーバーソケットに接続し、情報を送信して終了します。
3)キュー
CLIプログラムからエンキューし、GUIプログラムからデキューできます。
さらに調査したい場合、emacsのような多くのプロのエディターは同じメカニズムを使用します。 http://www.emacswiki.org/emacs/EmacsClient
最も簡単な方法は、GUIがTCPポートでコマンドをリッスンすることです。コマンドラインはコマンドを送信し、GUIはそれらを解釈します。
名前付きパイプでも同様のことができるかもしれませんが、それをJavaでどのように実装するかはわかりません。