Rhino:
rhino是使用java代码实现的javascript解释器,它实现了javascript的核心,符合Ecma-262标准。
例如使用java代码执行javascript如下:
public static void main(String[] args) {
Context ctx = Context.enter();
Scriptable scope = ctx.initStandardObjects();
scope.put("x", scope, new Integer(20));
scope.put("y", scope, new Integer(30));
try {
ctx.evaluateString(scope, "var result=x+y", "", 1, null);
System.out.println(scope.get("result", scope));
} finally {
Context.exit();
}
}
这样就能打印20+30的结果了。
rhino执行该代码的过程:
1.先设置环境,生成各种javascript的本地对象,如:Object,Function
2.使用语法分析对字符串进行分析生成ast。
3.然后再使用IRFactory类将ast转换中间表示形式。
4.然后再将该中间表示形式转换为二进制代码。
5.然后执行该代码得出结果。
Rhino的包结构:
org.mozilla.javascript包:
该包内的对象是实现javascript的主要对象。
org.mozilla.javascript.ast包:
rhino中语法分析器生成的ast表示类都在该包内。
org.mozilla.javascript.debug包:
该包实现了javascript的debug功能。
org.mozilla.javascript.optimizer包:
该包实现了javascipt生成代码的代码优化。
org.mozilla.javascript.regexp包:
该包实现了javascript正侧表达式的功能。
以上就为Rhino的主要包。