2011-08-11 42 views
5

如何使用RProtoBuf在R和其他语言(在我的情况下是Java)之间进行通信是不完全明显的。使用RProtoBuf(协议缓冲区)从R调用Java函数

RprotoBuf开发人员开发的东西仍然在这里 - https://r-forge.r-project.org/scm/viewvc.php/java/?root=rprotobuf,但它似乎很过时。我不确定这是否应该走。以下是RProtoBuf的作者可能与理解代码帮之间的两次谈话 -

http://lists.r-forge.r-project.org/pipermail/rprotobuf-yada/2009-December/000116.html

http://lists.r-forge.r-project.org/pipermail/rprotobuf-yada/2009-December/000119.html

看来,他们开始使用Java的工作,然后被遗弃在C++的青睐!

有没有人使用R-RProtoBuf-Java组合?你怎么做呢?有教程或例子吗?

我对Java的曝光非常有限。我想用一些用Java编写的程序。

编辑: 为了澄清,我想我想看到一个RRP客户端与RProtobuf一起使用的例子。指向Java RPC服务器的指针将受到欢迎。如Dirk指出的,第一个链接实际上指向一些文档生成器代码。

+1

作为一个观点; protobuf本身没有定义任何特定的RPC细节(只有序列化格式) - 所以如果你在说RPC,你还必须看到什么RPC可用于“另一端”(或自己做一些简单的事情) –

+1

不,Java目录只是为了文档生成器。 protobuf是*语言不可知的*但Java是由Google实现支持的。 –

+0

对不起,我的错。我读了对话,然后假定该文件夹必须有代码。那么这个代码在任何地方都可用我真的很想看到一个例子/ tutorail/walk-through某处。 R是否有RPC客户端? cran没有透露任何信息。 – Soumendra

回答

1

我不知道RProtoBuf,但如果你只是想从R调用Java,那么你可能会对rJava感兴趣。

它不过时,并有例子(在主页上的权利,请参阅链接)。

+0

我被告知,在rJava的帮助下,我必须让自己的双手沾满更多细节,而不是我想要的(即它的水平低)。在我投入自己的一个之前,我正在四处寻找所有可能的解决方案。 – Soumendra

+0

@Soumendra这听起来很合理。实际上我不知道从R调用Java是多么困难。我只使用rJava(JRI)从Java调用R到目前为止。 JRI是低层次的,但我会说直截了当。 –

0

我们最近在arXiv上发表了一篇关于使用RProtoBuf的更多示例的JSS论文的预印本,其中包括向远程Web服务发送RPC请求。有关R和其他语言与RProtoBuf共享数据的更多说明,请参阅RProtoBuf: Efficient Cross-Language Data Serialization in R

您可以使用RProtoBuf和任何传输机制,如文章中所述 - 您可以将序列化的协议缓冲区保存到其他语言编写的应用程序读取的文件中,也可以通过连接/套接字或其他语言更高级别的RPC系统。 Protocol Buffers广泛用于从Sony Playstation到大型Web服务的所有应用,但它们不包含RPC系统 - 您可以将它们用作您的序列化格式,无论您使用的是什么传输系统。