How can I call a node.js inside java and save the console.log values in a String variable?
Cant be done. For normal JS you can use Rhino, but for Node you will need to make sure it is in the PATH then call Runtine.exec or a ProcessBuilder with ByteArrayOutputsreams that can later be cinverted to strings. The node code cannot access Java and vice versa.
Check these projects which allow you to run node.js scripts inside the jvm
Yes, It is very eassy to execute and node.js file using java.
import java.io.FileReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class RunScriptFileDemo {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
try {
FileReader reader = new FileReader("yourFile.js");
engine.eval(reader);
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
It is possible for a Java application to communicate with a running Node.JS application. For instance, you can have a Node.JS app running on an available port and the Java app can communicate with it via tcp sockets.
http://nodejs.org/api/net.html
Or you can create an http server and expose a rest service which your Java app can consume.
http://nodejs.org/api/http.html
Or as md_5 says, you can use Runtime.exec and then call getInputStream on the resulting process.
http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html
The ways you can communicate between node.js and Java are no different from other cross application communication that can be done.
It is also possible to invoke Java code from your Node.JS application using something like node-java.
https://github.com/nearinfinity/node-java