Java の GUI を使用して、Erlang でアプリケーションを作成しています。言語間の接続を確立することができましたが、ボタンを押すたびに Java から Erlang にメッセージを送信する必要があります (おそらく)。
それは正しい方法ですか?
そのようなメッセージはどのように見えますか?
この形式の統合に関するいくつかの優れたサイトを見つけましたが、すべてが得られていないように感じます.
Java の GUI を使用して、Erlang でアプリケーションを作成しています。言語間の接続を確立することができましたが、ボタンを押すたびに Java から Erlang にメッセージを送信する必要があります (おそらく)。
それは正しい方法ですか?
そのようなメッセージはどのように見えますか?
この形式の統合に関するいくつかの優れたサイトを見つけましたが、すべてが得られていないように感じます.
OTP jinterface を介した従来の Java-Erlang 通信に加えて、次のような方法を調査できます。
- thrift
- ice from zeroC (no official erlang binding)
- maybe two http servers on both sides (I like this approach)
- protocol buffers (rather not, it is better for larger data transfers)
トラフィックの形状を学習し、最適なソリューションを選択する必要があります。Jinterface はそれほど悪くない.. (公式ドキュメントはこちら: http://www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html )
jinterface が複雑すぎる場合は、open_port で packet オプションを使用して、
byte[] in_buf = new byte[256];
byte[] out_buf = new byte[256];
int in_count = System.in.read ();
int offset = 0;
do
{
int c = System.in.read (in_buf, offset, in_count-offset);
offset += c;
}
while (offset < in_count);
erlang からパケットを読み込んで書き込むには:
System.out.write(out_count);
System.out.write(out_buf, 0, out_count);
Erlang 側では、これは次のように一致します。
open_port({spawn, "<path-to-java> -cp <classpath> your-java-prog",
[{packet, 1}]).
より大きなパケットが必要な場合は、{packet, 2} または {packet, 4} を使用し、Java. パケット内では、両側で好きなプロトコルを実行できます。
私はあなたと同じようなアプリケーション、C++GUIとErlangサーバーに取り組んでいます。私はTCPソケットを使用してGUIとサーバー間でメッセージを交換し、Erlangサーバーパターンを使用して要求を処理します(同時に複数のGUIをサーバーに接続している場合があります)。