1

如何使 G-WAN 的 Ruby 使用 JRuby 而不是 Ruby,这是我尝试过的:

$ which ruby
/usr/bin/ruby
$ cd /usr/bin
$ mv ruby ruby2
$ ln -s `which jruby` ruby
$ ruby --version
jruby 1.7.4 (2.0.0) 2013-05-16 2390d3b on OpenJDK Client VM 1.7.0_40-b31 +indy [linux-i386]
$ ruby2 --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux]

但是当我安装 Ruby 时,会显示此消息(之前没有显示):

test.rb: to use   .rb scripts, install Ruby

目的是让我可以使用 Java 的import api.Gwaninclude_package api.Gwan),因为没有(或者我还没有在文档中找到它)提供给 Ruby 的 API(访问 cookie、访问 KV 等)

编辑:啊,我不认为这会有用-_-”,因为不是在 GWAN 的 Java 上实现的完整 API

package api;
public class Gwan {
  public static native long getReply(long paramLong);
  public static native void xbufCat(long paramLong, String paramString);
  public static native long cycles64();
  public static native long getNs();
  public static native long getUs();
  public static native long getMs();
  public static native void logErr(long paramLong, String paramString);
  public static native void report(long paramLong, int paramInt);
}
4

1 回答 1

1

尝试用 JRuby 替换 Ruby

这不会按原样工作,因为 G-WAN 正在通过调用 ruby​​ 并检查程序回复来检查 ruby​​ 运行时是否可用。

然而,我们可以添加 JRuby 检测。但是使用 Ruby 的正确方法可能是它在 C 中的嵌入接口(如果有的话)。如果您对这样的解决方案感兴趣,请给我们留言,提供适当的信息(代码示例会很棒)。

这就是我们实现 C、C++、D、Objective-C、C# 和 Java 的方式。

关于 Java 和 Scala 的 G-WAN C API 的部分实现,有两个原因:

  • 一旦包裹在 JNI 中,许多 G-WAN 功能将不再快速(带有随之而来的数据转换)

  • 很少有 Java 或 Scala 开发人员正在寻求使用高性能替代众所周知且广泛使用的 Java 库,因此需求很少(至少到目前为止)。

Ruby 和其他一些语言已作为 CGI 实现,要么是因为我们没有找到其他方法,要么是因为像 PHP 一样,我们发现的文档和代码在 G-WAN 的多线程环境中不起作用。

我们欢迎使用我们不掌握的这些语言的经验丰富的用户提供帮助。

于 2013-07-22T18:30:52.667 回答