Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* *************************** JavaScriptInJava.java *************************** */
- package test.test;
- import javax.script.Bindings;
- import javax.script.Compilable; // Require Java 8 !!!
- import javax.script.CompiledScript; // Require Java 8 !!!
- import javax.script.Invocable;
- import javax.script.ScriptEngine;
- import javax.script.ScriptEngineManager;
- import javax.script.ScriptException;
- import javax.script.SimpleBindings;
- public class JavaScriptInJava {
- public static void main(String[] args) throws ScriptException, NoSuchMethodException {
- ScriptEngineManager manager = new ScriptEngineManager();
- ScriptEngine engine = manager.getEngineByName("JavaScript");
- /* ----------------------------------------------------------------------- */
- // Put (string) param to JavaScript.
- engine.put("testString", "Hello, world!");
- engine.eval("print(testString)");
- // Put (string) param to JavaScript.
- /* ----------------------------------------------------------------------- */
- // Find max number in int array with JavaScript:
- int[] array = { 3, 6, 2, 56, 32, 5, 89, 32 };
- engine.put("arr", array);
- String script =
- "var largest = arr[0]; "
- + "function maxNumber(arr) { "
- + " for (var i = 0; i < arr.length; i++) { "
- + " if (largest < arr[i] ) { "
- + " largest = arr[i]; "
- + " } "
- + " } "
- + " return largest; "
- + "} "
- + "maxNumber(arr); ";
- Number result = (Number) engine.eval(script);
- System.out.println("Max=" + result.longValue());
- // Find max number in int array with JavaScript.
- /* ----------------------------------------------------------------------- */
- // Work with Java class from JavaScript:
- String userScript =
- "user1.setName(\"Test User\"); "
- + "print( user1.getName() ); ";
- Bindings bindings = new SimpleBindings();
- User u = new User();
- bindings.put("user1", u);
- engine.eval(userScript, bindings);
- // Require Java 8 !!!
- // Compile JavaScript (faster):
- if (engine instanceof Compilable) {
- System.out.println(" Compiling...");
- Compilable compEngine = (Compilable) engine;
- CompiledScript cs = compEngine.compile(userScript);
- cs.eval(bindings);
- } else {
- engine.eval(userScript, bindings);
- }
- // Compile JavaScript (faster).
- // Require Java 8 !!!
- // Work with Java class from JavaScript.
- /* ----------------------------------------------------------------------- */
- // Use JavaScript function in Java code:
- String math =
- "function addition(a, b) { "
- + " return a+b; "
- + "} "
- + " "
- + "function substraction(a, b) { "
- + " return a-b; "
- + "} "
- + " ";
- engine.eval(math);
- Invocable inv = (Invocable) engine;
- int a = 10;
- int b = 5;
- System.out.println("A=" + a + " B=" + b);
- Object aPlusB = inv.invokeFunction("addition", a, b);
- System.out.println("A+B = " + aPlusB);
- Object[] inputParams = {
- new Integer(10),
- b
- };
- Object aMinusB = inv.invokeFunction("substraction", inputParams);
- System.out.println("A-B = " + aMinusB);
- int x = (Integer) aPlusB + 1;
- System.out.println("aPlusB + 1 = " + x);
- // Use JavaScript function in Java code.
- /* ----------------------------------------------------------------------- */
- }
- }
- /* *************************** User.java *************************** */
- package test.test;
- public class User {
- private String name;
- public User() {
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment