我的项目有一个重要且孤立的部分,用ruby(兼容jruby)编写。它是一个命令行应用程序,我们在终端中运行它并为其提供各种选项标志。
我的客户希望使用此工具,但只有在java类包装时才愿意使用它。我使用jrubyc --javac A.rb
将ruby代码转换为java时遇到了很多麻烦。检查转换后的.java文件,它调用Ruby Runtime来执行ruby脚本。像这样:
org.jruby.Ruby.getGlobalRuntime().executeScript(stringBuiltFromARubyFile, 'path')
我的问题是性能明智,这不仅仅是将create包装为runnable jar,用一个带有某些参数的java类包装它,并通过Runtime.getRuntime().exec("java -jar A.jar args")
执行jar吗?
应用程序A.rb使用多线程。我使用jruby-gradle插件引入了ruby依赖项(gems)。
我可以探索哪些其他选项?
提前致谢。
答案 0 :(得分:0)
您使用的方法可能无效。您正在ruby上下文中启动JVM;你被要求的是在JVM环境中启动你的一些ruby代码。
我会看C到Ruby绑定,然后使用Java到C(JNI)接口从C层启动所需的Ruby代码。如果这样的事情不切实际,因为您的Ruby更像是一个常设服务而不是CLI流程,我会考虑建立一组Java库来通过网络调用来调用该流程。