WEB开发网
开发学院软件开发Java 关于 Java Scripting API 您不知道的 5 件事,Jav... 阅读

关于 Java Scripting API 您不知道的 5 件事,Java 平台上更简单的脚本编写方法

 2010-09-15 00:00:00 来源:WEB开发网   
核心提示: 2. 从脚本访问 Java 对象能够编写 JavaScript/ECMAScript 代码是非常好的,但是我们不希望被迫重新编译我们在 Java 语言中使用的所有代码 — 这是违背我们初衷的,关于 Java Scripting API 您不知道的 5 件事,Java 平台上更简单的脚

2. 从脚本访问 Java 对象

能够编写 JavaScript/ECMAScript 代码是非常好的,但是我们不希望被迫重新编译我们在 Java 语言中使用的所有代码 — 这是违背我们初衷的。幸好,所有使用 Java Scripting API 引擎的代码都完全能够访问整个 Java 生态系统,因为本质上一切代码都还是 Java 字节码。所以,回到我们之前的问题,我们可以在 Java 平台上使用传统的 Runtime.exec() 调用来启动进程,如清单 3 所示:

清单 3. Runtime.exec() 启动 jmap

var p = java.lang.Runtime.getRuntime().exec("jmap", [ "-histo", arguments[0] ]) 
p.waitFor() 

数组 arguments 是指向传递到这个函数参数的 ECMAScript 标准内置引用。在最顶层的脚本环境中,则是传递给脚本本身的的参数数组(命令行参数)。所以,在清单 3 中,这个脚本预期接收一个参数,该参数包含要映射的 Java 进程的 VMID。

除此之外,我们可以利用本身为一个 Java 类的 jmap,然后直接调用它的 main() 方法,如清单 4 所示。有了这个方法,我们不需要 “传输” Process 对象的 in/out/err 流。

清单 4. JMap.main()

var args = [ "-histo", arguments[0] ] 
Packages.sun.tools.jmap.JMap.main(args) 

Packages 语法是一个 Rhino ECMAScript 标识,它指向已经 Rhino 内创建的位于核心 java.* 包之外的 Java 包。

3. 从 Java 代码调用脚本

从脚本调用 Java 对象仅仅完成了一半的工作:Java 脚本环境也提供了从 Java 代码调用脚本的功能。这只需要实例化一个 ScriptEngine 对象,然后加载和评估脚本,如清单 5 所示:

清单 5. Java 平台的脚本调用

上一页  1 2 3 4 5  下一页

Tags:关于 Java Scripting

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接