可以将多种语言合并为一个二进制文件吗

时间:2016-07-04 23:02:15

标签: java c binary jvm

例如,可能会有一些java字节代码与一些C混合在一起。如果C部分被命中,Jvm将执行java字节代码并将执行转移到OS。这在技术上是可行的还是在实践中?

1 个答案:

答案 0 :(得分:2)

通常,您可以编写创建JVM的C代码,执行(execve)提供的字节码,并在不同的线程中运行它们,在某些IPC之间或使用JNA / JNI交换数据,或者进行操作并等待完成。

我遇到了一些使用这种方法的项目(例如Android系统的一部分,Cloudera Impala和其他一些项目),但是那里的代码过于复杂,难以追溯。当然,为了让它正常工作,它花了太多精力。有时候,使用不同的技术运行2个流程,使用具有良好IPC的数据序列化(thrift,protobuf)或仅使用其中一个流程,它会更好。

如果你仍然需要同时运行它们,我宁愿用Java构建一个用JNI调用本机函数而不是相反的系统。