BeanShell是一个小型的、免费的、可嵌入使用Java编写的具有对象脚本语言特性的Java源码解释器。BeanShell动态执行标准的Java语法并且扩展了诸如弱语言类型、指令以及像Perl和JavaScript的方法闭包的通用脚本。
    你可以使用交互式的BeanShell实现Java实验和调试,也可以使用新的方法扩展应用程序。脚本式Java使应用程序更加多样化,快速建模、用户脚本扩展、规则引擎、配置、测试、动态部署、嵌入式系统还有Java训练。
    BeanShell具有小型以及可嵌入的特征,所以你可以从你的应用程序中调用BeanShell在程序运行的时候来动态执行Java代码或者提供应用程 序的可扩展性。你可以使用独立的BeanShell脚本操作Java应用程序;动态地与java对象和API一起工作,二者选一。既然BeanShell 使用Java编写而且与你的应用程序运行在同一台虚拟机上,你可以自由地给脚本传递“实时”的对象并且作为结果返回。
    总之,BeanShell是动态解析的Java,加上脚本语言以及灵活的环境所有这一切组成一个完整的包。
功能摘要

  • 动态执行所有Java语句、Java代码片段以及弱类型Java和附加的脚本的便利
  • 透明地访问所有Java对象和API
  • 四种运行模式:命令行、控制台、Applet、远程会话服务
  • 可以在受安全限制的环境下工作,不需要类加载器或者绝大多数功能的字节码生成器
  • 程序只有大约150K的Jar文件
  • 纯Java
  • 免费

Java的求值功能:
    对所有的Java源码类和独立的Java方法、声明和表达式进行动态求值。
脚本功能:

  • 可选类型的变量
  • 可选类型的参数和返回值的脚本方法
  • 脚本对象(方法闭包)
  • 脚本接口和事件处理
  • 使用JavaBean属性,哈希表以及原始的包装类型这些便利的语法
  • 自动分配变量来模拟Java属性文件
  • 可扩展的公共程序集以及类似shell的命令
  • 动态的classpath管理包括重装微粒类
  • 动态的加载命令和用户命令路径
  • 复杂的命名空间以及堆栈调用管理
  • 详细的错误报告

BeanShell的使用:

  • 交互式的Java——尝试对象功能,API以及GUI小部件——“亲身实践”
  • 应用程序脚本扩展——允许你使用直观而且简单的方法通过脚本扩展应用程序
  • 宏语言——作为宏来生成脚本并且在你的虚拟机中容易得执行
  • 教育——亲自教授Java,在在线的环境下
  • 科学、金融应用程序和规则引擎的表达式求值者——通过条件和循环求出复杂的表达式的值
  • 远程调试——在你的应用程序中只要几行代码嵌入一个实时、远程访问的shell/命令
  • 声名式地使用BeanShell来代替属性文件和启动配置文件,(这些配置文件)完全使用Java语法处理执行复杂的初始化以及启动的脚本