实践总结:在 Java 中调用 Go 代码

2020-08-08 15:51:23 +08:00
 lcj2class
https://liujiacai.net/blog/2020/08/08/go-meet-java/
4395 次点击
所在节点    Go 编程语言
13 条回复
kalista
2020-08-08 17:04:18 +08:00
想知道为什么不通过 rpc 通信的方式,和 cgo 调用优劣在哪,我个人比较倾向前者
Jirajine
2020-08-08 18:16:40 +08:00
写成接口出来调用比较合适,两个带 GC 的语言之间根本没法共享内存,相互调用麻烦且低效。
sunny352787
2020-08-08 18:20:46 +08:00
有没有碰到线程问题?我在 Unity 的 C#中调用 go 的时候发现在 go 中开 goroutine 会卡死,以及各个平台传递数据的方式是不太一样的,具体使用方式在 https://github.com/sunny352/Example_Unity_Plugin_Go
xcstream
2020-08-08 18:50:06 +08:00
走管道吧 或者网络也行
supermoonie
2020-08-08 20:36:53 +08:00
rpc 吧,简单方便
wangxiaoaer
2020-08-08 20:57:44 +08:00
借楼问一下,以前一直一位 RPC 跟 API 请求没啥两样,刚搜了下,好像还不太一样。

API 不限语言,RPC 需要 client 跟 server 开发语言一致? 而且感觉 RPC 的话 client 跟 server 有大量重复代码(定义接口之类),是不是更麻烦些?
lcj2class
2020-08-08 21:39:14 +08:00
@kalista #1 看依赖服务的情况吧,如果就依赖一两个功能,JNA 方便些。rpc 调用的话, 相当于整条链路上多了一跳,服务的治理、维护、升级都是不小的问题
labulaka521
2020-08-08 22:56:40 +08:00
@wangxiaoaer rpc 服务端客户端语言可以不一样吧
magicdu
2020-08-08 22:59:25 +08:00
grpc
huanghe314
2020-08-09 02:39:48 +08:00
@wangxiaoaer 当然可以不一样了,只要 rpc 是一套协议就行
tairan2006
2020-08-09 09:09:47 +08:00
@wangxiaoaer RPC 也是一种 API
wangxiaoaer
2020-08-09 09:37:08 +08:00
@tairan2006 那我感觉没啥大的区别啊。

或者说借助一些 rpc 库可以实现自动 http 调用,跟本地调用一样?而 API 需要自己手动调用?
GoLand
2020-08-09 10:13:05 +08:00
@wangxiaoaer 两个层面的东西,HTTP 接口也可以看做 RPC 的一种,只不过具体是用 HTTP 协议来实现的。RPC 是一个很宽泛的概念。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696710

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX