Javaアプリケーション用のコマンドラインインターフェイスを実装したいと思います。コマンドラインプログラムが別のJavaGUIプログラムの状態に影響を与えるようにしたい場合を除いて、これを行うのはそれほど難しくありません。たとえば、次のように入力できます。
java CliMain arg1 arg2
また、実行中の別のGUIインスタンスが適切なアクションを実行します。
このようなものを実装する最も簡単な方法は何ですか?
GUIアプリケーションに(localhost
インターフェイス上の)TCPポートでリッスンさせることができ、CLIアプリケーションがそれに接続します。
これを行う1つの方法は、RESToverHTTPを使用することです。
もう1つの方法は、JMXを使用することです。これは「無料」で多くのものを提供し(単純な場合は、Beanを実装して登録するだけです-非常に単純です)、このタスクに特に適しています。
最も簡単な方法は、GUI が TCP ポートでコマンドをリッスンすることです。コマンド ラインがコマンドを送信し、GUI がそれらを解釈します。
名前付きパイプでもできるかもしれませんが、それをJavaでどのように実装するのかわかりません。
GUIアプリケーション(エディタなど)をリッスンさせることができます
1) 特定のタイプのクリップボード イベント
が関心のあるタイプの場合、クリップボードの内容を取得します。
2)特定のポート
のサーバーソケットは、サーバーソケットをリッスンします。CLI プログラムが起動すると、既知のポートでサーバー ソケットに接続し、情報を送信して終了します。
3)
CLI プログラムからエンキューし、GUI プログラムからデキューできるキュー。
さらに調査したい場合は、emacs などの多くのプロのエディターが同じメカニズムを使用しています。http://www.emacswiki.org/emacs/EmacsClient
アプリケーションはRMI経由で制御できます。アプリケーションはコントロール インターフェイスを実装し、そのサービスを localhost に登録します。コマンド ライン アプリケーションは rmi プロキシを取得し、必要なコントロール メソッドを呼び出します...
最初は難しそうに見えますが、やってみると簡単にわかると思います。また、 SSLによる暗号化もサポートしています。そのため、セキュリティ関連のデータがオンラインにあれば、データ交換を保護できます。