Если jinterface слишком сложен, вы можете просто использовать опцию пакета в open_port и использовать
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.Внутри пакетов вы можете запустить любой протокол с обеих сторон.