移植库时首先要做什么

时间:2016-03-14 10:23:51

标签: java ruby jar porting

我想在Ruby中访问Java库,例如Kafka已经为每个操作提供了jar,如果我想从Ruby中使用它需要做什么?

也许我只需要运行shell命令在Ruby中运行Jar,或者我是否需要在Ruby中移植库?如果它归结为移植库,那么该怎么做呢?

提前谢谢

PS:Java,Ruby或Kafka就是例子。我需要知道的是如何移植图书馆。当然,如果你添加一些代码示例,我也会非常高兴:)

2 个答案:

答案 0 :(得分:1)

我同意Aetherus的说法,最快捷,最便捷的方式就是使用JRuby。但是我相信还有其他选择,而不是与外部Java进程通信。选择什么可能取决于您要调用的代码。我看到至少有两个其他选择。

  • 将要调用的Java代码包装在主程序中,并在命令行中调用它。这将是缓慢的,因为Java需要启动,这需要永远,但在某些情况下可能是一个快速的前进方式。
  • 使用Ruby编译的C代码调用Java代码。这仍然需要加载JVM,但你可能只能使它发生一次。我找到了article概述了如何使用JNI来解决这个问题。

这两条路径都可能会给你带来很大的痛苦,但如果留在MRI上很重要,那么这次旅行可能是值得的。玩得开心!

答案 1 :(得分:0)

使用JRuby,您可以导入jar文件,然后在该jar中包含您需要的类:

require 'java'
require '/path/to/your.jar'

include_class 'com.really.long.ClassName'

但是除了JRuby之外的Ruby实现,你别无选择,只能与外部java进程通信(通过socket,IPC,kill,......)。