我正在一个沙箱中运行代码,该沙箱几乎不允许所有内容(反射/类加载/等)。我仍然可以运行 Rhino Javascript,因为它(在很大程度上)不做任何这些事情。然而,我能找到的关于 JRuby/Jython 的一切都指向他们的 JIT 编译器或 AOT 编译器。
这些项目是否有一个愚蠢的“我会在进行时解释 AST”模式?我很乐意接受数量级的性能打击(这不是密集的),让它在受限环境中运行。
欧海;)
看看JRuby GitHub wiki 页面,我们有
# Set compilation mode. JIT = at runtime; FORCE = before execution.
# Options: [JIT, FORCE, OFF, OFFIR], Default: JIT.
compile.mode=JIT
Jython 目前没有纯解释模式。有一个基于 python 字节码的开始(它可能是纯内存并避免所有 java 字节码问题),但它还不能使用。