Java脚本语言引擎接口
来源:互联网 发布:如何自学seo 编辑:程序博客网 时间:2024/05/29 14:28
JSR 233 为 Java 设计了一套脚本语言 API。这一套 API 提供了在 Java 程序中调用各种脚本语言引擎的接口。任何实现了这一接口的脚本语言引擎都可以在 Java 程序中被调用。在 Mustang 的发行版本中包括了一个基于 Mozilla Rhino 的 JavaScript 脚本引擎。
通过jdk6以后提供的脚本引擎,java语言和脚本语言可以非常方便的交互,给我们进行 软件架构 带来新的思路。
import javax.script.*;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.Reader;import java.util.HashMap;import java.util.Map;/** * Created by wangpl on 1/16/15. */public class Test { public static void main(String[] args) throws ScriptException, FileNotFoundException, NoSuchMethodException { ScriptEngineManager manager = new ScriptEngineManager(); // 打印所有的脚本引擎 for (ScriptEngineFactory factory : manager.getEngineFactories()) { System.out.println(factory.getEngineName()); } ScriptEngine engine = manager.getEngineByName ("JavaScript");// ScriptEngine engine = manager.getEngineByExtension ("js");// ScriptEngine engine = manager.getEngineByMimeType ("application/javascript"); System.out.println(engine.getFactory().getEngineName()); // 直接执行脚本 engine.eval("print ('Hello World')"); // 绑定java方法,供脚本使用 HelloWorld hello = new HelloWorld(); engine.put("script_hello", hello);//绑定 engine.eval("script_hello.sayHello('Li Sir')");//在脚本中使用,也可以直接写在外部js文件中调用 // 执行脚本文件 engine.eval(new FileReader("/home/wangpl/mine/WORK_SPACE/idea_work/Eden/jse/src/main/java/HelloWorld.js")); // 脚本函数 调用 String script = "function say(first,second) { print(first +' '+ second); }"; engine.eval(script); Invocable inv = (Invocable) engine; inv.invokeFunction("say", "Hello", "Tony"); //到目前为止,我们的脚本全部都是解释执行的,相比较之下编译执行将会获得更好的性能。这里将介绍 ScriptEngine 的另外一个可选接口 —— Compilable, //实现了Compilable接口的脚本引擎支持脚本的编译执行。下面这个例子实现了一个判断给定字符串是否是 email 地址或者 ip 地址的脚本: String myScript = "var email=/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]" + "+(\\.[a-zA-Z0-9_-]+)+$/;"; myScript += "var ip = /^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])" +"(\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])){3}$/;"; myScript += "if(email.test(str)){println('it is an email')}" + "else if(ip.test(str)){println('it is an ip address')}" + "else{println('I don\\'t know')}"; engine.put("str", "email@address.tony"); Compilable compilable = (Compilable) engine; CompiledScript compiled = compilable.compile(myScript); compiled.eval(); }}
js文件内容:
print ('I am from HelloWorld.js')script_hello.sayHello('JS Sir')
其它:
Apache BSF 提供了一个脚本语言交互框架, 具有更多功能。
http://www.ibm.com/developerworks/cn/java/j-lo-mustang-script/
http://www.ibm.com/developerworks/cn/web/wa-aj-javaee/
0 0
- Java脚本语言引擎接口
- Java动态调用脚本语言Groovy,完善接口配置
- L脚本语言图形接口
- jdk7 新特性-Java语言的动态性-脚本语言支持api-脚本引擎01
- L脚本语言Windows平台解释引擎
- Java调用脚本语言(JavaScript)
- “Java脚本语言”Groovy
- java执行脚本语言demo
- Java 的 脚本语言支持
- JAVA运行脚本语言(Scripting)
- Groovy – Java的脚本语言
- 选择合适的java脚本语言
- 脚本语言正在威胁Java吗?
- 选择合适的java脚本语言
- Groovy – Java的脚本语言
- Java趋势:脚本语言引领风骚
- 选择合适的java脚本语言
- 在Java中使用脚本语言
- Q2.2 Find the kth to last element of a singly linked list
- Windows 最佳化(現已不適用)
- atitit.安全的签名摘要 算法attilax总结
- 获得文件夹内所有文件的文件名列表
- windows系統目錄功能
- Java脚本语言引擎接口
- codevs1253 超级市场
- 面试Android工程师遇到的面试题
- 多文件上传 iOS
- atitit.seo 发帖关键词以及链接的制作.doc
- 用express命令创建项目
- 淘宝mysql技术分享
- Android Studio 快捷键
- Atitit.网页爬虫的架构总结