質問

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

アプリケーションは、 RMI で制御できます。アプリケーションは制御インターフェイスを実装し、localhostにサービスを登録します。コマンドラインアプリケーションはrmiプロキシを取得し、目的の制御メソッドを呼び出します...

最初は難しいように見えますが、試してみると、どれほど簡単かがすぐにわかります。また、 SSL 。そのため、セキュリティ関連のデータがオンラインにある場合、データ交換を保護できます。

最も簡単な方法は、GUIがTCPポートでコマンドをリッスンすることです。コマンドラインはコマンドを送信し、GUIはそれらを解釈します。

名前付きパイプでも同様のことができるかもしれませんが、それをJavaでどのように実装するかはわかりません。

scroll top