JVM的最佳沙盒表达式语言

时间:2010-10-26 00:22:00

标签: java expression

我想要一种在JVM上运行的表达式语言,并且包含对

的支持
  • 数学表达式,包括运算符优先级
  • 字符串表达式,如子字符串等
  • 支持命名函数
    • 这使我可以精确地装饰和控制谁可以执行哪些功能。
  • 读取/写入“无类型”变量/允许以受控方式进行类型转换。
  • 不允许使用任何java scriptlet。
    • 不应该包含像新的Someclass()
    • 这样的结构
    • 无法执行任意静态或其他方法
  • 不允许任何类似OGNL的表达式。
  • 我只希望我映射的功能可用。
  • 支持控制结构,如果这是当时可选的。
  • 必须是可嵌入的。

previous stackoverflow question类似,但是:

  • 并没有像上面那样回答“如何”或“什么”,
  • 允许java对象表达式,从SecurityManager抛出异常来停止方法执行,这是令人讨厌和错误的。
  • 像表达式这样的java对象在解析时应该是一个错误。

jexel似乎是最接近的可能匹配,但许可证有点可怕(GPL /商业)。

1 个答案:

答案 0 :(得分:0)

如果您只希望脚本输出文本,那么Apache Velocity非常适合您的约束。它运行的环境只能访问您提供的对象,但可以执行基本数学等操作。

Apache license也比GPL友善一点。