Thursday, December 13, 2012

Apache Commons --- BSF

BSF 亦即 bean scripting framework 也就是对 bean 的 scripting language 方面的支持,这个支持主要是通过 BSFManager 来做到的,实现一个语言到这个 framework 里面需要继承 BSFManagerImpl 并 override 掉其中一部分方法,最核心的是 eval。有了每个语言对应的 BSFManager 我们就能用 JVM 来解析各种 scripting language 了。在 scripting language 的 domain 里面存在一个 bsf 对象,通过它可以调用 BSFManager 的方法,比如
  • registerBean
  • lookupBean
拿到了对应的 bean 之后,我们就可以在 scripting language 里面操纵这个 Java 对象。感觉这个跟 PIG 支持 scripting language 的 UDF 非常类似。BSF 可能是比较早的 framework,现在似乎都是使用 javax.scripting 的接口了,PIG 那个似乎是后者。

有一些参考的例子,比如 JDEE 里面带了一个所谓的 beanshell,这个就是 Java 语言自己的 scripting engine。

当然 BSF 其实自己就支持了不少流行的语言,如 jython、groovy、Javascript 之类的,其他的像 JRuby 自带了 BSF 的支持。

另外 BSF 自己有一个已经实现好的命令行工具供我们把玩:
java -cp bsf-2.4.0/lib/bsf.jar org.apache.bsf.Main -in test.py


BSF 现在有 3.x 版本了,似乎也开始使用 javax.scripting 的接口了。

No comments:

Post a Comment