Saturday, April 11, 2015

Java 8 example: call between Java and Javascript

This example show how to call Javascript function from Java, and call Java method from Javascript.


JavaTryJavaScript.java
package javatryjavascript;
import java.io.FileNotFoundException;
import java.io.FileReader;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class JavaTryJavaScript {
 
 final static String myJavascript = "/home/pi/testJS/newjavascript.js";
 public static void main(String[] args) 
 throws FileNotFoundException, ScriptException, NoSuchMethodException {
 ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
 ScriptEngine nashornEngine = scriptEngineManager.getEngineByName("nashorn");
 
 FileReader fileReader = new FileReader(myJavascript);
 nashornEngine.eval(fileReader);
 
 Invocable invocable = (Invocable)nashornEngine;
 invocable.invokeFunction("testJavaScript1", "Hello from Java");
 
 }
 
 public static void JavaCalledFromJS(String s){
 System.out.println("Java method called from JavaScript: " + s);
 }
 
}

The Javascript in a separated file, /home/pi/testJS/newjavascript.js
var testJavaScript1 = function(a){
 print('testJavaScript1, called from Java: ' + a);
 testJavaScript2();
 return;
}
var testJavaScript2 = function(){
 print('testJavaScript2');
 var javaClass = Java.type("javatryjavascript.JavaTryJavaScript");
 javaClass.JavaCalledFromJS("message from JavaScript");
 return;
}

No comments:

Post a Comment

Subscribe to: Post Comments (Atom)

AltStyle によって変換されたページ (->オリジナル) /