Java6.0操作脚本语言基础

Java6.0操作脚本语言基础,第1张

Java6.0操作脚本语言基础,第2张

Java6.0增加了一个非常实用的包:javax.script,这是一个新的Java操作脚本包。有了它,我们可以操作脚本语言,如修改或调用,与Java语言进行交互。如果我们利用好了,就可以用它来实现一些经常变化的部分,这样就可以把一些算法写入js文件,然后在运行时读取出来执行,这样就省去了一些改动。

让我们看一个例子,看看如何在Java代码中操作脚本和调用方法。

/*
* test . Java
*
*创建于2007-9-19,15:28:49
*
*若要更改此模板,请选择“工具”|“模板”
*并在编辑器中打开该模板。
*/

打包lbf.script

导入Java . io . filereader;
导入Java . util . ArrayList;
导入Java . util . list;
导入javax . script . bindings;
导入javax . script . invokable;
导入javax . script . script context;
导入javax . script . script engine;
导入javax . script . script engine manager;
导入javax . swing . jframe;

/* *
*
* @ author hadeslee
*/
公共课测试{

public static void main(string[]args)throws exception {
/根据js
脚本引擎的后缀名生成一个用于解析JS的脚本解析引擎engin = new script engine manager()。GetEngineByExtension(" JS ");
//检查这个引擎是否实现了下面的实用接口
system . out . println(invokable的engin实例);
//声明两个对象并传入JS
JFrame JF = new JFrame(" test ");
List List = new ArrayList();
//获取指定的键值对象,将当前的两个JAVA对象放入
bindings binding = engin . create bindings();
bind.put("jf ",JF);
bind.put("list ",列表);
//将键值对象放在“”下,范围是当前引擎的范围
engin.setBindings(bind,ScriptContext。ENGINE _ SCOPE);
//使用引擎执行JS文件中编写的一段代码
object obj = engin . eval(new filereader(" test . JS "));
//此时当然返回值为null
system . out . println(obj);
//强制当前引擎可调用,这样就可以调用JS文件中定义的函数
invokable in =(invokable)engin;
//获取JS
list l = (list) in返回的对象。调用函数(" getnames ");
system . out . println(l);
//调用JS中定义的另一个函数
in . invoke function(" test JS ");
//最后调用一个函数,可以显示我们前面
在. invokeFunction("doSth ")中定义的表单;
}
}

下面是test.js中定义的内容

函数doSth(){
jf.setSize(500,300);
JF . set visible(true);
JF . setdefaultcloseoperation(JF。EXIT _ ON _ CLOSE);
}
function getNames(){
list . add(" doSth ");
list . add(" getNames ");
返回列表;
}

函数testJS(){
print(' Hello world!');
}

我们可以看到JAVA运行后,表单会显示出来,我们可以接收JS解析引擎返回的数据。当然,我们也可以调用一个很常见的JS函数。试想一下,如果我们把程序运行的一些对象设置成绑定,我们的JS岂不是有了很大的自由度?因为我们的Java对象也可以在JS中操作,而且我们可以像ava编程一样编写JS,不用编译马上就可以运行。灵活性不是更高吗?

过几天写一个用Java解析JS提高编程灵活性的例子,以此来说明这个包的用处。但是JS的缺点是执行速度慢,比Java代码慢很多。但是,一些初始化的东西,或者一些设置的东西,我们可以从我们定义的JS文件中读取,而不必将它们死写在程序中。毕竟,为了那些只执行一次的方法的高灵活性,牺牲一点点效率是值得的。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Java6.0操作脚本语言基础

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情