如何从Go调用Java代码而无需为每个调用调用JVM?

Sam*_*mpa 5 java go

是否可以从Go调用Java代码(如果可以,建议的方法是什么),而无需为每个函数调用启动JVM?

即,是否有与python的jpype解决方案等效的解决方案,该解决方案允许您一次启动JVM,然后使用已经启动的JVM导入Java类并调用它们?

sky*_*yde 5

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


小智 5

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


Vit*_*ius 0

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