Yes you can create your own javascript engine in Java. This is a cool feature I never knew existed. I don’t know how long it’s been around, I’m guessing Java 6.
Basically, you can do something like this:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class JavaJS {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String script =
"function sayHello(name) {"
+ " print('Hello ' + name);"
+ "}"
+ "sayHello('tom');";
engine.eval(script);
}
}
And it will print Hello tom.
You can even mix and match Java and Javascript, here’s how to have Java calling the Javascript function above:
Invocable invocable = (Invocable) engine;
invocable.invokeFunction("sayHello", "Jim");
Cool eh? Read more about this on the Oracle’s Java Scripting Programmer Guide or google JSR-223.