为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不为每次调用调用 JVM 的情况下从 Go 调用 Java 代码?

如何在不为每次调用调用 JVM 的情况下从 Go 调用 Java 代码?

Go
冉冉说 2021-07-08 13:00:03
是否可以(如果可以,推荐的方法是什么)从Go调用 java 代码,而无需为每个函数调用启动 JVM?即,是否有任何等效于 python 的 jpype 解决方案,它允许您启动 JVM 一次,然后使用已经启动的 JVM 导入 Java 类并调用它们?
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

使用cgo调用使用JNI 调用 API创建 JVM 实例的 C 代码,并使用 JNI 接口调用 Java 代码。由于 goroutine 在技术上可以在本机线程之间切换,因此在进入和退出 Go 代码和/或使用本机线程库(如 pthreads)进行补充时,您可能必须非常小心地测试、附加和分离线程到 JVM。


查看完整回答
反对 回复 2021-07-12
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

将您的 Java 代码捆绑在“服务器”中,并使用“rest/soap/thrift”之类的 RPC 调用它并保持服务器运行。我不知道有任何系统可以为您自动执行此操作。


查看完整回答
反对 回复 2021-07-12
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您可以在 Java 中创建一个 Java 管理类,它能够与您的 Go 程序对话,并且您运行一次,并在您的 Go 程序要求时对其他 Java 代码进行适当的调用。


查看完整回答
反对 回复 2021-07-12
  • 3 回答
  • 0 关注
  • 261 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信