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.