How to call R from Java using Rserve

In today’s data-driven world, combining the power of different programming languages is essential for tackling complex analytical tasks. Integrating R, a popular language for statistical computing and graphics, with Java, a universal language for building applications, can unlock new possibilities. One effective way to bridge the gap between R and Java is by utilizing Rserve—a server-based interface for R.

What is Rserve?

Rserve is a package in R that allows other programs to communicate with an R session over a network. It provides a flexible and efficient means for leveraging R’s capabilities from external languages like Java.

Example

Here’s an example demonstrating how to call R from Java using the Rserve package.

import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;
import org.rosuda.REngine.REXPMismatchException;

public class RserveInJava {
    public static void main(String[] args) throws RserveException,
        REXPMismatchException {     
        // Establish a connection to the Rserve server
        RConnection connection = new RConnection();
        System.out.println("The connection has been established with Rserve.");
        // Execute the R code
        String rCode = "X <- c(2, 4, 6, 8, 10); mean(X)";  // R code to calculate the mean of a vector
        double result = connection.eval(rCode).asDouble();
        System.out.println("Result from R: " + result);
        // Close the connection
        connection.close();
        System.out.println("Disconnected from Rserve.");
    } 
}
Example code for Rserve

Explanation

Let’s look at the code explanation below:

  • Lines 1–3: We use the org.rosuda.REngine.Rserve.RConnection class from the Rserve package to establish a connection to the Rserve server.

  • Line 9: The RConnection object represents the connection to the Rserve server. We create an instance of RConnection and establish a connection.

  • Line 12: We define the R code we want to execute. In this case, we calculate the mean of a vector X using the mean() function.

  • Lines 13–14: We use the eval() method of the RConnection object to execute the R code. The result is returned as an REXPBasic class representing an object of any type in R. object, and we can extract the value using the appropriate method based on the expected data type. In this example, we use asDouble() to retrieve the result as a double value.

  • Line 16: Finally, we close the connection using the close() method of the RConnection object to release the resources.

Free Resources

Copyright ©2025 Educative, Inc. All rights reserved