每日一得

不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速开发
最近关心的内容:SSH,seam,flex,敏捷,TDD
本站的官方站点是:颠覆软件

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  220 随笔 :: 9 文章 :: 421 评论 :: 0 Trackbacks
key words : beanShell ,动态脚本

原来第一次是在osworkflow中听说过beanShell,最近又碰到,感觉还是挺有用的,比如对于我来说我就想有一些class文件拿过来直接调用看看,但有不想搭建一个麻烦的环境,而beanshell就可以满足我这个需求。

假设我欲调用的java为MyShit
package com.app;

public class MyShit
{
    
static{
        System.out.println(
"this is in static blog");
    }

    
public static void main(String[] args){
        System.out.println(
"this is in main method : hello shit");
    }

    
public void shit(){
        System.out.println(
"hello shit!!!");
    }


    
public static void haha(){
        System.out.println(
"this is static method haha");
    }

}


javac ...
java ..

在dos中设置classpath,指向该class文件

set classpath=%classpath%;c:\beanshell

编写一个 bsh的bat文件,便于dos直接调用beanshell脚本
 
java bsh.Interpreter %1


编写一个test.bsh脚本
//mytest
import com.app.*;

print(
"hello,it's a beanShell test");

List list  
= new ArrayList();
list.add(
"111");
list.add(
"222");
list.add(
"333");

print(
"the list = " + list);

Date date 
= new Date();
print(
"the date = " + date);

//method test

add( a, b ) 
{
    
return a + b;
}


foo 
= add(12);            // 3
print("foo = " + foo);
foo 
= add("Oh"" baby");   // "Oh baby"
print("foo = " + foo);

//about object
foo() {
    print(
"foo");
    x
=5;

    bar() 
{
        print(
"foo's method bar()");
    }


    
return this;
}


myfoo 
= foo();    // prints "foo"
print( myfoo.x ); // prints "5"
myfoo.bar();      // prints "bar"

MyShit shit 
= new MyShit();
shit.shit();
shit.main(
null);
print(
"do you shit");

//MyShit.haha();


在dos下运行 bsh test.bsh就OK了

另外,beanshell作为动态脚本语言可以结合 spring2.0的新特性,你新写的业务类可以直接修改而不用重新发布,怎么样,是不是比较方便,详细操作请参考Springframework 2.0 与 ZK 混合开发实例

试一试!

详细使用请参考官方文档
posted on 2007-01-09 20:01 Alex 阅读(6500) 评论(7)  编辑  收藏 所属分类: beanshell

评论

# re: beanShell不错 2007-01-09 21:00 123steel
beanshell作为动态脚本语言可以结合 spring2.0的新特性,你新写的业务类可以直接修改而不用重新发布? 这里说的“不用重新发布”?是何意  回复  更多评论
  

# re: beanShell不错 2007-01-10 12:37 Alex
比如ServiceImplBsh.bsh是IService的实现,如果是java的实现你修改完后必须重新编译,重新部署,动态脚本则可以无需编译,类似于php。 其实也是spring的一个定式刷新而已。

如果你愿意,其实java自己也可以采用动态刷新,只不过没有什么人这么做。  回复  更多评论
  

# re: beanShell不错[未登录] 2009-02-09 16:37 test
直接groovy?  回复  更多评论
  

# re: beanShell不错 2009-04-14 00:03 lxy
那么这个会提高开发效率,不过我想知道未来系统上线,是不是真的就在支持beanshell的服务器上发布这些bsh文件?还是仅仅作为开发时候提高效率的工具,正式发布的时候改成标准class文件(这种修改量也是不小)?一方面应用服务器可能不认识.bsh文件,另一方面用这个的人毕竟少,后续的维护工作显得难度比较大  回复  更多评论
  

# re: beanShell不错 2009-10-13 14:47 淡淡的
垃圾  回复  更多评论
  

# re: beanShell不错 2009-11-15 21:10 no1
beanshell很不错,可以快速验证一些Java代码,不用开IDE,不用编译;
但如果要动态加载的话,开发阶段,还是JRebel更好。  回复  更多评论
  

# re: beanShell不错 2009-11-15 21:11 no1
beanshell相对于groovy、scala等有一个特点就是启动飞快;  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: