Java之”Mozilla Rhino”引擎(二)

在Java中运用Rhino, 能让你使用类似Groovy,
ECMAScript…等等之类的不同动态脚本语言, 其中值得推荐的是ECMAScript,
它是Rhino的默认实现, 同时也在JDK1.6中融为一体了.
采用ScriptEngine的时候, 还有二个接口, 看似不相干, 却是非凡有用.
一个是Invocable, 一个是Compilable,
前者能从Java回调ECMAScript中的Function或者object,
后者能将ECMAScript脚本编译, 从而提升3~4倍性能, 那么些周全不是永恒的,
会随脚本的复杂度成正比.
在写ECMAScript的时候,
(1)存在ScriptContext中的attribute, 可以直接通过name引用.
(2)对于JavaBean的setter/getter可以一直引用property.
(3)对于类, 可以简单new运算符以及package.
但要注意, 像Map, List,
Array那多少个必须非JavaBean的靶子在Script中必须使用get(), put(),
add()之类的不二法门来取存元素. 这令人很不爽,
不可能像EL或者Free马克(Mark)er之类的语法. 但也没怎么,
直接引用方法倒更像Java的语法. 
public static void main(String[] args) throws ScriptException {
  Map<String, Object> params = new HashMap<String,
Object>();
  params.put(“test”, “这是一个很小的测试…”);
  Bindings bindings = new SimpleBindings();
  bindings.put(“params”, params);
  Object result = engine.eval(“println(params.get(‘test’));”, bindings);

  System.out.println(result);
}