3

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

谢谢你。

4

3 回答 3

7

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

Groovy 肯定正在积极开发中。

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

于 2011-07-30T07:59:20.317 回答
2

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

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

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

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

时髦的

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

  4. 支持使用可变参数调用方法,例如。方法(int ...我)

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

豆壳

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

        This problem occurs even if we declare long i = 0x80018000
    
  6. 数组初始化的语法类似于 java。
  7. 支持循环和每个循环等
于 2012-11-30T10:21:24.153 回答
0

似乎Beanshell 最近正在开发中,并将在某个时候集成到 J2SE 中。我会投票支持 Beanshell 而不是 Groovy,最重要的原因是它更直接一些,而不是尝试学习所有 Groovy 独特语法的学习曲线,这几乎就像学习一门新语言一样。

于 2011-08-18T21:20:48.750 回答