可以将多种语言组合成一个二进制文件吗?
Can one combine multiple languages into one binary?
例如,可能有一些 java 字节代码与一些 C 代码混合在一起。如果 C 部分,Jvm 将执行 java 字节代码并将执行转移到 OS被击中。这在技术上或实践中可行吗?
通常,您可以编写创建 JVM、执行 (execve) 提供的字节码的 C 代码,并且 运行 它们在单独的线程中与某些 IPC 之间或使用 JNA/JNI 交换数据,或者使操作并等待完成。
我遇到了一些使用这种方法的项目(例如 Android 系统的一部分,Cloudera Impala 和其他一些),但是那里的代码过于复杂且难以追踪。可以肯定的是,要使其正常工作需要付出太多努力。有时 运行 2 个进程使用具有良好 IPC 的不同技术和数据序列化(thrift、protobuf)或仅使用其中一个更好。
如果您仍然需要 运行 两者,我宁愿在 Java 中构建一个系统,使用 JNI 调用本机函数而不是相反。
例如,可能有一些 java 字节代码与一些 C 代码混合在一起。如果 C 部分,Jvm 将执行 java 字节代码并将执行转移到 OS被击中。这在技术上或实践中可行吗?
通常,您可以编写创建 JVM、执行 (execve) 提供的字节码的 C 代码,并且 运行 它们在单独的线程中与某些 IPC 之间或使用 JNA/JNI 交换数据,或者使操作并等待完成。
我遇到了一些使用这种方法的项目(例如 Android 系统的一部分,Cloudera Impala 和其他一些),但是那里的代码过于复杂且难以追踪。可以肯定的是,要使其正常工作需要付出太多努力。有时 运行 2 个进程使用具有良好 IPC 的不同技术和数据序列化(thrift、protobuf)或仅使用其中一个更好。
如果您仍然需要 运行 两者,我宁愿在 Java 中构建一个系统,使用 JNI 调用本机函数而不是相反。