Java 适用于JVM的最佳沙盒表达式语言

Java 适用于JVM的最佳沙盒表达式语言,java,expression,Java,Expression,我想要一种在JVM上运行的表达式语言,包括对 数学表达式,包括运算符优先级 字符串表达式,如子字符串等 支持命名函数 这使我能够精确地修饰和控制可以执行的功能 “无类型”的读/写变量/允许以受控方式进行类型转换 不允许任意的java脚本。 不应该包括像newsomeclass()这样的构造 无法执行任意静态或其他方法 不允许任何类似OGNL的表达式 我只希望映射的函数可用 对控件构造的支持,如“如果这样,那么那就暂时是可选的” 必须是可嵌入的 这是相似的,但: 没有像上面那样回答“

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

  • 数学表达式,包括运算符优先级
  • 字符串表达式,如子字符串等
  • 支持命名函数
    • 这使我能够精确地修饰和控制可以执行的功能
  • “无类型”的读/写变量/允许以受控方式进行类型转换
  • 不允许任意的java脚本。
    • 不应该包括像newsomeclass()这样的构造
    • 无法执行任意静态或其他方法
  • 不允许任何类似OGNL的表达式
  • 我只希望映射的函数可用
  • 对控件构造的支持,如“如果这样,那么那就暂时是可选的”
  • 必须是可嵌入的
这是相似的,但:

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

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

如果您只想让脚本输出文本,那么它非常适合您的约束。它运行在一个环境中,在这个环境中,它只能访问您提供给它的对象,但可以执行基本数学之类的操作


它也比GPL友好一点。

我讨厌velocity,如果我回忆起它的错误/异常处理糟糕/糟糕的话。