如何从Go调用java代码而不为每次调用调用JVM?

时间:2013-12-09 17:41:33

标签: java go

Go调用java代码是否可能(如果是这样,建议使用什么方式),而不需要为每个函数调用启动JVM?

即,是否有与python的jpype解决方案相同的东西,它允许你启动JVM一次,然后使用已经启动的JVM导入java类并调用它们?

3 个答案:

答案 0 :(得分:3)

将您的java代码捆绑在“服务器”中,并使用RPC调用它,如“rest / soap / thrift”,并保持服务器正常运行。我不知道有什么系统可以为你自动化。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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