atitit.bsh BeanShell 的动态脚本使用java

1.1.BeanShell是一个小巧免费的JAVA源码解释器

,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中。

亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,像JavaScriptperl那样的弱类型、命令式、闭包函数等等特性都不在话下

BeanShell能理解标准的JAVA语句,表达式,和方法宣告。语句和表达式的内容可以是:变量,宣告,赋值,方法调用,循环,条件等。 在 Java程序中你必须严格的使用它们,但在BeanShell中,你可以用宽松类型”(loosely typed)的方式来使用它们。也就是说,你可以在写脚本时偷懒,不进行变量类型的宣告(在原始数据类型和对象都可以)。如果你试着用错变量类 型,BeanShell将会给出一个错误。

作者::绰号:老哇的爪子全名::AttilaxAkbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )汉字名:艾龙,EMAIL:1466519819@qq.com

转载请注明来源:http://blog.csdn.net/attilax

2.运行方式:

界面UI方式 :java bsh.Console

命令行方式 :java bsh.Interpreter

l运行脚本文件:java bsh.Interpreter filename [ args ]

3.BeanShell将成为Java平台上的第三种编程语言

JCP接纳了一个新的技术规范进入标准化进程,这个编号为JSR-274的技术规范将把BeanShell引入为Java平台上支持的又一种编程语言。 JSR- 274http://jcp.org/en/jsr/detail?id=274)是由Patrick Niemeyer提交的技术规范,其目标是将BeanShell脚本语言(http://www.beanshell.org/)规范化为Java虚拟机 平台上支持的第三种编程语言。除了Java之外,Java虚拟机还支持Groovy脚本语言。Doug LeaApacheGoogle三个JCP执委会成员对此规范表示了支持。

按照Java最初的设计思路,有很多语言都可以在JVM上 运行(详细列表参见http://en.wikipedia.org/wiki/List_of_Java_scripting_languages), 但这些语言大多没有流行起来。直到2004年为止,Java平台事实上只有一种编程语言,也就是Java20043月,GroovyJSR- 241)成为了Java平台上的第二种编程语言。

3.1.Define  method

3.2.Scripted Methods

You can declare and use methods in BeanShell just as you would in a Java class.

int addTwoNumbers( int a, int b ) {

return a + b;

}

sum = addTwoNumbers( 5, 7 );  // 12

Bsh methods may also allow dynamic (loose) argument and return types.

add( a, b ) {

return a + b;

}

foo = add(1, 2);            // 3

foo = add("Oh", " baby");   // "Oh baby"

3.3.Implementing Interfaces

Note: implementing arbitrary interfaces requires BeanShell be run under a Java 1.3 or higher environment.

You can use the standard Java anonymous inner class syntax to implement an interface type with a script. For example:

ActionListener scriptedListener = new ActionListener() {

actionPerformed( event ) { ... }

}

You don't have to script all of the methods of an interface. You can opt to script only those that you intend to call if you want to. The calling code will simply throw an exception if it tries to invoke a method that isn't defined. If you wish to override the behavior of a large number of methods - say to produce a "dummy" adapter for logging - you can implement a special method signature: invoke(name, args) in your scripted object. The invoke() method is called to handle any undefined method invocations:

ml = new MouseListener() {

mousePressed( event ) { ... }

// handle the rest

invoke( name, args ) { print("Method: "+name+" invoked!");

}

4.Refe

BeanShellJAVA源码解释器)_百度百科.htm

BeanShell快速入门---Java应用程序脚本引擎- Love program - BlogJava.htm

Quick Start.htm

Embedding BeanShell in Your Application.htm

BeanShell Commands Documentation.htm

atitit.bsh BeanShell 的动态脚本使用java相关推荐

  1. 用BeanShell实现公式管理-使用Java脚本构建强大、灵活的公式管理系统[转]

    在很多中大型的应用中,如SCM(供应链管理).CRM(客户关系管理)和ERP(企业资源计划)等,使用者往往要根据自身的需求,灵活的对某一些参数值进行变更,使得按照某固定公式计算的结果符合目前的情况.如 ...

  2. Java 如何实现动态脚本?

    简介:在平台级的 Java 系统中,动态脚本技术是不可或缺的一环.本文分享了一种 Java 动态脚本实现方案,给出了其中的关键技术点,并就类重名问题.生命周期.安全问题等做出进一步讨论,欢迎同学们共同 ...

  3. JMeter工具:常用协议脚本开发(BeanShell Sampler, Debug Sampler, FTP/Java/JDBC请求, JUnit request, SOAP/XML-RPC)

    目录 1. BeanShell Sampler 1.1 BeanShell Timer:BeanShell定时器 1.2 BeanShell PreProcessor:BeanShell前置处理器 1 ...

  4. Atitit onvif协议获取rtsp地址播放java语言 attilx总结

    Atitit onvif协议获取rtsp地址播放java语言 attilx总结 1.1. 获取rtsp地址的算法与流程1 1.2. Onvif摄像头的发现,ws的发现机制,使用xcf类库1 2. 调用 ...

  5. Atitit.获取approot api 应用根路径 java c#.net php asp

    Atitit.获取approot api 应用根路径 java c#.net php asp 1. 如果根路径返回empty,否则返回/app,兼容getContextPath() <scrip ...

  6. 使用Roslyn脚本化C#代码,C#动态脚本实现方案

    来源:https://www.cnblogs.com/7tiny/p/10279349.html [前言] Roslyn 是微软公司开源的 .NET 编译器. 编译器支持 C# 和 Visual Ba ...

  7. fortify+DVWA靶场和动态IAST审计JAVA靶场

    工具下载地址 Fortify介绍 Fortify 其实是Micro 公司开发的一款AST(应用程序安全测试)产品,它包括: Fortify Static Code Analyzer 可以成为静态代码分 ...

  8. java简单手机脚本编写,Java认证:Java平台上更简单的脚本编写方法

    本文向各位介绍一下Java性能监控小技巧:"JDK附带分析器.远程连接进程.跟踪统计.为离线分析创建一个堆转储.JConsole并不是高深莫测的." 现在,许多 Java 开发人员 ...

  9. activiti 5.15.1 动态手动通过java编码方式,实现创建用户任务,动态指定个人,用户组,角色,指定监听的实现...

    因为我们的业务需要,最近一直在搞动态动过java程序实现为用户任务绑定监听程序.碰了很多壁,查看了API文档,最后终于在找到解决办法,所以贴出来,希望能够留个底,也能帮助有需要的人. -------- ...

  10. JS动态加载脚本及对动态脚本内方法的调用

    JS动态加载脚本及对动态脚本内方法的调用 摘要 JS动态加载脚本及对动态脚本内方法的调用 JS 动态 添加脚本 按需加载 首先我们需要一个被加载的js文件,我在一个固定文件夹下创建了一个package ...

最新文章

  1. Python-OpenCV运动物体检测
  2. C#帮助类:MD5加密
  3. 两个软件相互交换数据_面试需要知道的六种数据结构
  4. 分享几点Android 开发中的小技巧吧。不知道算不算?
  5. se是什么职位_女皇大学PSE&SE 独家解析!
  6. PHP目前比较常见的五大运行模式
  7. 基于Matlab的跨孔CT胖射线追踪算法(五)
  8. 几张图说明男女之间的秘密(ZT)
  9. Redis集群生产环境高可用方案实战过程
  10. text-align 属性,输入框数字向右靠
  11. 一键卸载MSSQL_1.2 Beta版
  12. 嵩天python笔记_嵩天Python学习笔记-01
  13. Halcon教程八:简单的语法介绍
  14. 随机生成手机号的java代码
  15. 两个次序统计量的联合密度函数
  16. 计算机网络 --- IP地址的详细分类
  17. 解决方案 | 解决Adobe Acrobat 2020安装报错的一些问题,如无法打开键
  18. nginx 403错误
  19. 说说各种手机输入法的体验
  20. 农用旋涡泵行业调研报告 - 市场现状分析与发展前景预测

热门文章

  1. vs code html插件_VS插件CodeRush全新发布v20.1.7|支持HTML
  2. 2. Windows编程基础
  3. NGINX 4xx 5xx 状态码构造
  4. ali 媒体转码签名生成-php
  5. Jquery 学习笔记一
  6. webuploader插件使用分析
  7. ASP.NET TreeView操作实例
  8. 【Linux 应用编程】进程管理 - 进程、线程和程序
  9. [Bzoj2039][2009国家集训队]employ人员雇佣(最小割)
  10. Eclipse下配置Tomcat内存