Erlang Central

How to communicate java and erlang

From ErlangCentral Wiki



Thilani Abeysinghe <a.thilani at>


The purpose of this tutorial is to illustrate how to use jinterface for communicating with an Erlang backend.Here discussed how RPC Calls(Remote Procedure Calls) are made from java.

The reader is also encouraged to read the mailing list question.It's about 'Strategies to connect from Java' Refer Erlang Manual for more details on jinterface


This tutorial demonstrates how to communicate with an Erlang process (node) using a Java program For this example java 1.5.0_07 and Erlang OTP12B distribution is used.

PartOne : Erlang Backend

First we need to have a erlang process (node)to communicate with Java program. If we are going to connect to an existing erlang node. we need to know the name of the Erlang node and the cookie. Otherwise we can create an Erlang node. In windows we can create a erlang node by using the command prompt try the command.

    werl -sname enode -setcookie  erlang

For Linux

    erl -sname enode -setcookie  erlang

PartTwo : Connect Using Java

Let's connect to Erlang node 'enode' using java program


public class ErlConnection {

	private static OtpConnection conn;
	 public OtpErlangObject received;
	 private final String peer;
	 private final String cookie;
	 public static void main(String []args){
		 new ErlConnection("enode","erlang");

	  public ErlConnection(String _peer, String _cookie) {
		  peer = _peer;
		  cookie = _cookie;

           /*Do Calls to Rpc methods and then close the connection*/


	  private void connect() {
	   System.out.print("Please wait, connecting to "+peer+"....\n");

	   String javaClient ="java";
	   try {
	     OtpSelf self = new OtpSelf(javaClient, cookie.trim());
	     OtpPeer other = new OtpPeer(peer.trim());
	     conn = self.connect(other);
	     System.out.println("Connection Established with "+peer+"\n");
	   catch (Exception exp) {
	     System.out.println("connection error is :" + exp.toString());


	 public void disconnect() {
	   if(conn != null){
	   System.out.println("Successfuly Disconnected");


You need to have OtpErlang.jar in your class path.Which comes with Erlang distribution. Now Compile and run the class.You will see a output like

Please wait, connecting to enode....
Connection Established with enode

Successfuly Disconnected