我们知道,现在有很多脚本语言,大家平时使用的比较多的包括Perl,Python,Ruby,Javascript,Groovy,在这里我要介绍的是另外一个对象脚本语言BeanShell(http://www.beanshell.org)。
BeanShell的解释器是用Java写的,开源并且免费的,引用open-open上面的话来说明它的运作方式“它将脚本化对象看作简单闭包方法(simple method closure)来支持,就如同在Perl和JavaScript中的一样。 它具有以下的一些特点:使用Java反射API以提供Java语句和表达式的实时解释执行;可以透明地访问任何Java对象和API;可以在命令行模式、控制台模式、小程序模式和远程线程服务器模式等四种模式下面运行;与在应用程序中一样,可以在小程序中(Applet)正常运行(无需编译器或者类装载器);非常精简的解释器jar文件大小为175k ”。
每一种脚本语言都有它的使用场景,而正是因为其在某些场景的使用而使语言本身得到了发扬光大,比如Ruby正是因为Ruby On Rails这个Web框架的流行而得到开发者的关注,Groovy也一样;BeanShell可不能再有Web框架,Java世界的Web框架已经太多了,够让人头痛的了;BeanShell是Java语法,所以对Java开发者来说,很快就可以上手,BeanShell不能像Ruby,Perl,Ruby一样可以占据一个系统的主体,而只能在一些小的地方发挥“螺丝钉”的作用。
笔者与BeanShell结缘是通过一个开源工作流引擎-OBE(这个鸟东西现在好像没什么声音了),BeanShell被用作流程跳转的Parser,举个例子,比如一个流程A节点的下一个节点是B或者C,如何决定A->B还是A->C呢,我们可以写一段Java脚本放在流程定义里面,一旦A运行完毕,流程会使用BeanShell来Parse这段Java脚本,根据脚本的返回值决定流程下一步的运行方向,脚本在这里虽然用得不多,但是却是非常的重要,我们知道,简单的表达式是远远满足不了流程跳转的判断的,有了脚本就可以满足任何不规则的业务逻辑。
继以上说到的,使用BeanShell可以处理现实中不规则的业务,举个很典型的例子,我们知道,一个保险公司有很多险种,每个险种的投入和收益的算法是很复杂的,无法用规则的关系数据库模型来描述,所以很多保险系统在处理险种的算法都是硬编码,如果要在系统中新加一个险种,是非常麻烦的,重新修改代码,重新发布,这对开发\维护人员和客户都是很痛苦的,有了BeanShell,我们可以从这种痛苦中解脱出来,对每个险种使用不同的脚本,新加的险种我们新配一个脚本,这样既可以满足业务多变的要求,又可以减少工作量,节约成本。
BeanShell的一个特点是动态执行Java代码,脚本文件改变不会影响当前脚本的调用,新脚本将在脚本的下一次调用生效,这不同于配置文件,配置文件改变一般都需要应用重启。
下面举个例子来说明BeanShell的使用(JDK1.5,BeanShell2.04),
调用文件:
import bsh.Interpreter;
public class TestShell
{
public static void main(String[] args) throws Exception
{
Interpreter inter = new Interpreter();
inter.set("inValue",new Integer(1));
inter.source("/D:/tomgether/test/shell/test.bsh");
System.out.println(((Integer)inter.get("outValue")).intValue());
}
}
Shell文件:
System.out.println("hello,in value is "+inValue);
outValue = inValue+1;
结果:
hello,in value is 1
2
分享到:
- 2007-04-04 16:19
- 浏览 4250
- 评论(0)
- 论坛回复 / 浏览 (0 / 8126)
- 查看更多
相关推荐
BeanShell和Mozilla Rhino是两种在Java环境中用于动态执行和脚本化的工具,它们各自具有独特的特性和用途。 BeanShell是一个轻量级的Java代码解释器,它的主要特点是免费、可嵌入和具备面向对象的脚本语言特性。...
Beanshell 是一个轻量级的Java脚本引擎,它允许你在运行时动态执行Java代码,也可以用作一个灵活的测试工具。它不只支持标准的Java语法,还提供了与Perl、Python等脚本语言类似的便利特性,如命令行变量、简单的控制...
- `index.html`:这通常是网页的主入口文件,可能包含了关于BeanShell的一些介绍、教程或者示例代码。 - `WEB-INF`:这是一个标准的Java Web 应用目录结构的一部分,通常包含Web应用的配置文件、类库和Servlet等组件...
【描述】:“本文将详细介绍JMeter的BeanShell组件,包括其使用场景、内置变量和方法,帮助读者掌握如何在接口测试中运用BeanShell进行脚本编写。” 【标签】:“BeanShell Jmeter 接口测试” 【正文】: ...
#### 六、内置命令介绍 - **print()**:用于打印变量的值,类似于`System.out.println()`,但提供更多格式化输出的功能。 - **show()**:开启或关闭显示每行执行结果的功能。 通过以上内容的学习,读者应该能够对...
BeanShell-简单的Java脚本 BeanShell的官方活动项目主页。注意:待发布新版本唯一推荐的版本是master分支的手动构建。...介绍BeanShell是一个小型的,免费的,可嵌入的Java源代码解释器,具有使用Java编写
本文将详细介绍如何通过Spring和Beanshell来实现Java接口的动态实现,这对于那些希望在不编写额外Java类的情况下,快速测试或实现某些功能的开发者来说非常有用。 首先,Beanshell是一种轻量级的、开源的Java脚本...
本文档详细介绍了如何利用 JMeter 结合 BeanShell 脚本进行加密和解密测试,以 RSA 加密算法为例。 首先,进行加密测试。RSA 是一种非对称加密算法,它使用一对公钥和私钥,其中公钥用于加密,私钥用于解密。在 ...
本文将重点介绍BeanShell——一个专为Java应用程序设计的脚本引擎,通过本文的学习,您将能够了解BeanShell的基本功能,并学会如何将其嵌入到您的Java应用程序中。 #### 二、脚本引擎概述 脚本引擎是一种能够解析...
### BeanShell 手册 #### 引言 BeanShell 是一款功能强大且灵活的轻量级脚本语言,它能够动态地执行 Java 代码。BeanShell 的设计初衷是为了弥补传统编程语言与脚本语言之间的差距,它允许用户在运行时编写、修改...
本文将详细介绍8种在Shell脚本中截取字符串的方法,并提供相应的实例代码和操作结果。 1. **# 号截取**:使用`#`运算符,从字符串的左侧开始删除指定模式及其左侧的所有字符。例如,如果我们有一个变量`var=...
本文将详细介绍JMeter中的几种主要逻辑控制器,并探讨它们在性能测试场景设计中的应用。 首先,测试计划的组件执行顺序是理解逻辑控制器工作原理的基础。执行顺序依次为:配置节点、前置处理器、定时器、采样器、...
**Jmeter Bean Shell 介绍** 在性能测试领域,Apache JMeter 是一款广泛使用的开源工具,它支持多种测试组件,其中包括 Bean Shell。Bean Shell 是 JMeter 中的一个重要元素,它允许测试人员通过脚本语言的方式执行...
以上介绍了Java中字符串长度的计算方法、如何访问字符串中的特定字符以及不同数据类型之间的转换。这些是Java编程中非常基础也非常重要的知识点。掌握它们可以帮助开发者更高效地处理字符串和其他数据类型的问题。
本篇文章将详细介绍如何在JMeter中处理JSON数据,以及如何利用BeanShell增强JMeter的测试能力。 一、JMeter与JSON处理 JSON因其轻量级、易读写和高效的特性,成为Web服务间通信的首选格式。在JMeter中处理JSON数据...
内容概要:本文详细介绍了Jmeter高级编程中的内置函数应用,如返回指定ASCII字符、获取本机IP、生成唯一字符串等;讲解了如何使用Jmeter访问MySQL数据库进行连接配置和查询操作;展示了利用Eclipse编译器测试Java...