How can I call a node.js inside java and save the console.log values in a String variable?
5 Answers
Check these projects which allow you to run node.js scripts inside the jvm
- https://github.com/apigee/trireme (Apigee)
- http://nodyn.io/ (Redhat)
- https://avatar-js.java.net/ (Oracle)
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.
3 Comments
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();
}
}
}
1 Comment
Check out https://github.com/caoccao/Javet, you can embed a node.js runtime inside a java application and share variables between both.