erlangintegrationerlang-otpjinterface

How to send a message from Java to Erlang?


I'm making a application in Erlang, with a GUI in Java. I've managed to establish a connection between the to languages, but now i need to (i guess) send a message from Java to Erlang, every time I e.g press a button.

Is that the right way to go?

How would such a message look?

I've found a few good sites about this form of integration, but I feel like im not getting everything.

http://www.trapexit.org/How_to_communicate_java_and_erlang


Solution

  • If jinterface is too complicated you might just use the packet option on open_port and use

    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);
    

    To read packets from erlang and to write use:

    System.out.write(out_count);
    System.out.write(out_buf, 0, out_count);
    

    On the erlang side this would match with

    open_port({spawn, "<path-to-java> -cp <classpath> your-java-prog", 
              [{packet, 1}]).
    

    If you need larger packets use {packet, 2} or {packet, 4} and adapt the java. Inside the packets you can run whatever protocol you like on both sides.