BSF
Java应用程序内调用脚本语言
Bean Scripting Framework(BSF)是一个支持在Java应用程序内调用脚本语言 (Script),并且支持脚本语言直接访问Java对象和方法的一个开源项目。有了它 , 你就能在java application中使用javascript, Python, XSLT, Perl, tcl, ……等一大堆scripting language. 反过来也可以,就是在这些scripting language中调用任何已经注册过了的JavaBean,java object。它提供了完整的API实现通过Java访问脚本语言的引擎。
含义
Bean Scripting Framework(BSF)是一个支持在Java应用程序内调用脚本语言 (Script),并且支持脚本语言直接访问Java对象和方法的一个开源项目。有了它 , 你就能在java application中使用javascript, Python, XSLT, Perl, tcl, ……等一大堆scripting language. 反过来也可以,就是在这些scripting language中调用任何已经注册过了的JavaBean,java object。
它提供了完整的API实现通过Java访问脚本语言的引擎。BSF 支持以下几种脚本语言
Javascript (using Rhino ECMAScript, from the Mozilla project)
NetRexx(an extension of the IBM REXX scripting language in Java)
Python (using Jython)
Tcl (using Jacl)
XSLT Stylesheets (as a component of Apache XML project's Xalan and Xerces)
另外,也支持以下的这几种语言通过他们自身的BSF引擎来实现(下面提到的各个脚本语言的引擎都可以在其官网下载到)。
Java (using BeanShell, from the BeanShell project)
Groovy
JLog (PROLOG implemented in Java)
JRuby
JudoScript
ooRexx (Open Object Rexx), using BSF4Rexx.
BSF最初是IBM的Alpha工作组的项目后来贡献给了Apache,这个项目的目的就是为使得在脚本语言的环境下访问JavaBean的内容。相信使用过这个Apache项目的朋友应该不多。但是这是一个很好的idea。可以使得Java能够更好的于各种流行脚本语言整合,实现不同语言之间的交互作用。随着Groovy, Ruby等脚本语言的走红。这个项目可能会有更大的发挥余地。试想一下,使用Java来编写模块,使用脚本来排列组合各个模块。并且可以通过bsf来统一管理运行多种不同脚本,这样也算是不错的想法。当然具体运用它还要看实际项目的需要。
安装
把bsf.jar文件当做class library来安装.另外一个非常重要的包是js.jar(假如你用javascript的话),也要装进来,否则会找不到javascriptEngine。
三、如何使用?
在JSP中使用BSF:
省略
在servlet / formBean / java application中使用BSF:
Step 1. import BSF class
例如: 这些包都是要用到的.
import org.apache.soap.util.IOUtils; (这个包用于把javascript文件给变成String,才能扔进BSF引擎中处理)
import org.apache.bsf.*; (BSF引擎就在这里)
import org.apache.bsf.engines.javascript.*;
import java.io.*;
import java.util.*;
Step 2. initiate BSFManager object
例:
Step 3.使用BSFManager.eval(….) 或 BSFManager.exec(…) 就可以执行javascript了.
例:
Object obj = bsfmgr.eval( “javascript”, XX, YY, ZZ, script ) : 返回script的值,以object的形式.
bsfmgr.exec( “javascript”, XX, YY, ZZ, script): 执行这script.返回空!
第一个参数javascript可以换成其它如perl, python, tcl……
XX: The name of the input source (typically a filename; here, it's always simply Evaluator),没有什么用,任何string都行.
YY: The line number, 通常为0,
ZZ: The character position of the given script in the input source (these arguments are for error reporting), 通常为0最后一个参数是要执行的script语句, 是String就行了.
Step 4:
常用的method参考:
其他
太阳能电池中用于减少反射、增加电池转换效率的背面反射场。
参考资料
最新修订时间:2024-05-21 16:24
目录
概述
含义
参考资料