选择脚本语言

时间:2011-07-30 07:54:59

标签: java groovy beanshell

我正在尝试在groovy和beanshell之间进行选择,我需要一个正在进行开发,速度适中,可以访问/解释java代码并支持限制它可以在我的内部代码中访问的java类。我不确定beanshell是否仍在积极开发中。请指教我。

谢谢。

3 个答案:

答案 0 :(得分:7)

查看beanshell.org档案,看起来它自2005年以来一直没有真正活跃的开发。developer mailing list自2009年1月以来没有任何流量。这项工作可能已转移到其他地方当然,但我看不到任何明显的目的地......

Groovy肯定正在积极开发中。

(免责声明:作为参与Groovy in Action的人,我有一定的偏见...但我实际上并没有定期使用Groovy;它不像我有一把斧头要研磨:)

答案 1 :(得分:2)

以下是我在groovy和beanshell之间发现的差异

我更喜欢groovy用于我的开发,因为它可以实现我的目的,它可以执行用beanshell编写的脚本。

无论如何,下面是我在评估Groovy 2.0.0时发现的观察结果Beanshell 2.0b4

这两种脚本语言都具有类似于Java的语法。

Groovy

  1. Groovy引擎可以运行为beanshell编写的脚本
  2. 执行环境是java 1.5。在JDK1.5上开发
  3. 使用泛型支持泛型和集合。还支持原始类型     例如> ArrayList str = new ArrayList()

  4. 支持使用变量参数调用方法     例如。 method(int ... i)

  5. 支持像int这样的原始数据类型,以分配4字节的十六进制十进制值     例如。 int i = 0x80018000;
  6. 数组初始化的语法与java有点不同     例如。在java中,数组初始化为int [] array = {1,2,3};         在groovy中,它以int [] array = [1,2,3];
  7. 完成
  8. 支持循环和每个循环等
  9. BeanShell的

    1. Beanshell无法运行为groovy编写的脚本,因为它基于JDK1.4。所以没有通用功能
    2. 执行环境为1.4或更高,但不支持通用
    3. 不支持泛型。仅支持原始类型
    4. 不支持使用变量argumnets编写方法或使用变量arugments调用方法
    5. 不支持将某些十六进制十进制值分配给原始数据类型     例如int i = 0x80018000从beanshell解释器抛出一个异常,说大小很大         在这种情况下将使用BigInteger,这又是乏味的,因为我们必须做这样的事情             BigInteger i = new BigInteger(“0x80018000”);

          This problem occurs even if we declare long i = 0x80018000
      
    6. 数组初始化的语法类似于java。
    7. 支持循环和每个循环等

答案 2 :(得分:0)

似乎Beanshell is under development lately并且将在某些时候集成到J2SE中。我会投票支持Beanshell而不是Groovy,最重要的原因是它更直接,而不是学习Groovy所有独特语法的学习曲线,使其几乎像学习一门新语言。