Program/ Example of Nashorn Javascript (js) Engine in Java 8 - call java methods from javascript (js) file - call java method from javascript to pass Employee object in java and print all its fields - Use ScriptObjectMirror >
package nashorn10_CallJavaMethodsFromJs3;
import java.util.Arrays;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import jdk.nashorn.api.scripting.ScriptObjectMirror;
/**
* How to call java methods from javascript (js) file
* Use jdk.nashorn.api.scripting.ScriptObjectMirror class to store javascripts's Employee in java
*
*/
public class CallJavaMethodsFromJs {
public static void main(String[] args) throws Exception {
System.out.println("In java - START");
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval("load('E:/pocJmse/myNashornJavaScript.js')");
System.out.println("In java - FINISH");
}
/**
* This method will be called from Javascript (js) -
* Method will print javascript's Employee Object Details In java
* Use jdk.nashorn.api.scripting.ScriptObjectMirror class to store employee in java
*
*/
public static void printEmployeeObjectDetailsMethodInjava(ScriptObjectMirror employee) {
System.out.println("In java - In printEmployeeObjectDetailsMethodInjava ");
//Get all the keys in employee object
String stringArray[] = employee.getOwnKeys(true);
//Display stringArray[]
System.out.print("In java - Display all keys in employee object > ");
System.out.println(Arrays.toString(stringArray));
System.out.println("\n"+"In java - Display all values corresponding to keys in employee using getMember() method > ");
System.out.println("name = "+ employee.getMember("name")); //Or
// employee.getMember(stringArray[0])
System.out.println("city = "+ employee.getMember("city")); //Or
// employee.getMember(stringArray[1])
System.out.println("\n"+"In java - Display all values corresponding to keys in employee using callMember() method > ");
System.out.println("name = "+ employee.callMember("getName"));
System.out.println("city = "+ employee.callMember("getCity"));
}
}
/*OUTPUT
In java - START
In myNashornJavaScript.js
In js - Create employee
In js - Pass employeeObject in java
In java - In printEmployeeObjectDetailsMethodInjava
In java - Display all keys in employee object > [name, city, getName, getCity]
In java - Display all values corresponding to keys in employee using getMember() method >
name = Sam
city = Paris
In java - Display all values corresponding to keys in employee using callMember() method >
name = Sam
city = Paris
End myNashornJavaScript.js
In java - FINISH
*/
|
E:/pocJmse/myNashornJavaScript.js looks like this >
print('In myNashornJavaScript.js');
var CallJavaMethodsFromJs =Java.type('nashorn10_CallJavaMethodsFromJs3.CallJavaMethodsFromJs');
print('In js - Create employee');
var employeeObject = new Employee("Sam", "Paris");
function Employee(name, city) {
this.name = name;
this.city = city;
this.getName = function() {
return this.name;
}
this.getCity = function() {
return this.city;
}
}
print('In js - Pass employeeObject in java');
CallJavaMethodsFromJs.printEmployeeObjectDetailsMethodInjava(employeeObject);
print('End myNashornJavaScript.js');
|
Having any doubt? or you you liked the tutorial! Please comment in below section.
Please express your love by liking JavaMadeSoEasy.com (JMSE) on facebook, following on google+ or Twitter.