-
BSF
鎖定
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
BSF含義
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安裝
把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
例:
bsfmgr = new BSFManager();
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:
在java class 中註冊一個javaBean, mgr.declareBean("PS", ps, ps.getClass()), “PS” 和 ps(一個javaBean的 instance) 綁定在一起了. 以後在 javascript文件中,直接用 PS就可以找到這個javaBean了.
如果你用另外一種註冊方法: mgr.registerBean("PS",ps) , 那麼在javascript文件中,用PS = bsf.lookupBean("PS") 來在BSFManager中找到PS這個javaBean. Bsf就代表BSFManager.
常用的method參考:
BSFManager() - the BSFManager constructor · eval() - used to evaluate a script and return its value · exec() - used to execute a script · loadScriptingEngine() - used to return a BSFEngine for the desired scripting language · registerBean() - adds an object to BSF’s object registry · lookupBean() - retrieves an object from BSF’s object registry · declareBean() - creates an implicit object in the context of any loaded scripting language, which does not have to be accessed via lookupBean()
BSF其他
太陽能電池中用於減少反射、增加電池轉換效率的背面反射場。