在Java 6中,内置了脚本引擎支持.例如,
// Create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// Create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// Evaluate JavaScript code from String
engine.eval("print('Hello, World')");
你为什么要用一个?一些原因:
>您有一个脚本语言库,您想在Java中使用(例如,您可以通过Jython运行的Python库)
>您希望为客户提供可配置的编程机制,以便他们可以提供简短的代码片段.例如,我过去已经完成了这项工作,允许客户使用JavaScript编写过滤器(例如x< 2&y> 5&z> 10?).
>您可以通过直接在配置文件中编写脚本,在Ant等工具中实现更复杂的逻辑
>您可以使用更适合该域的语言实现解决方案(例如,通过Clojure使用lambdas),但要保持对JVM的依赖.
实现包括Rhino(Javascript的Java实现),Jython(Java Python)等等.