如何使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.Gwan
(include_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);
}
尝试用JRuby 取代Ruby
这将无法正常工作,因为G-WAN正在通过调用ruby并检查程序回复来检查ruby运行时是否可用。
然而,我们可以添加JRuby检测。但使用Ruby的正确方法可能是它在C中的嵌入接口(如果有的话)。如果您对这样的解决方案感兴趣,请给我们写一行适当的信息(代码示例会很好)。
这就是我们实现C、C++、D、Objective-C、C#和Java的方式。
关于针对Java和Scala的G-WAN C API的部分实现,发生这种情况的原因有两个:
-
许多G-WAN功能一旦被封装在JNI(以及随之而来的数据转换)中,将不再快速
-
很少有Java或Scala开发人员寻求使用高性能的替代品来替代众所周知且广泛使用的Java库,因此需求很少(至少到目前为止)。
Ruby和其他一些语言被实现为CGI,要么是因为我们没有找到其他方法,要么是像PHP一样,我们发现的文档和代码在G-WAN的多线程环境中不起作用。
我们欢迎经验丰富的用户用我们不掌握的语言提供帮助。