用Java序列化JRuby CompiledScript

伏地魔

我有一个Ruby脚本,希望在Java程序启动时运行。

当您告诉ScriptEngine第一次评估代码时,需要花费一些时间。我觉得花这么长时间是因为它首先需要编译代码,对吗?

我发现您可以编译Ruby代码,然后再对其进行评估。评估本身是快速的-编译部分是缓慢的部分。我在这里编译:

    jruby = new ScriptEngineManager().getEngineByName("jruby");

    Compilable compilingEngine = (Compilable)jruby;

    String code = "print 'HELLO!'";

    CompiledScript script;
    script = compilingEngine.compile(code);

这个片段是需要一段时间的。稍后当您对其进行评估时,就可以了。

因此,当然,我想知道是否可以将已编译的代码“保存”到文件中,以便将来我可以“加载”它并仅执行它而无需再次编译。

加里·蒂尔尼

正如其他人所说,使用CompiledScript是不可能的。但是,对于JRuby,您还有另一个选择。您可以使用命令行工具jrubyc将Ruby脚本编译为Java字节码,如下所示:

jrubyc <scriptname.rb>

这将产生一个名为scriptname.class的类文件。您可以从命令行运行该类,就好像它是具有main(String [] argv)方法的普通类一样(注意:jruby运行时需要在类路径中),当然您可以在以下位置将其加载到应用程序中运行。

您可以在此处找到有关jrubyc输出的更多详细信息:https : //github.com/jruby/jruby/wiki/JRubyCompiler#methods-in-output-class-file

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章