java - 可以将多种语言组合成一个二进制文件吗?

标签 java c binary jvm

例如,可能有一些 java 字节码与一些 C 混合在一起。Jvm 将执行 java 字节码,如果命中 C 部分,则将执行转交给操作系统。这在技术上或实践中是否可行?

最佳答案

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

我遇到过一些使用这种方法的项目(例如Android系统的一部分,Cloudera Impala等),但是那里的代码过于复杂且难以追踪。可以肯定的是,要使其正常工作需要付出太多努力。有时最好使用具有良好 IPC 和数据序列化(thrift、protobuf)的不同技术运行 2 个进程,或者只使用其中一个进程。

如果您仍然需要同时运行两者,我宁愿在 Java 中构建一个使用 JNI 调用 native 函数的系统,而不是相反。

关于java - 可以将多种语言组合成一个二进制文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38193177/

相关文章:

java - Flex 中的二进制套接字和策略文件

c++ - 我的程序可以在我的电脑上运行,但不能在 CodeEval 上运行

java - 第二次加载后位图大小超出虚拟机预算

c - C 中的外部变量

c - 指针和指针数组的并集是否保证单个指针与数组的第一个元素具有相同的地址?

c - 二维字符数组,像表格一样扫描和打印

java - JAX-RS:如何扩展应用程序类来扫描包?

java - 将非泛型集合安全地转换为同类泛型集合

java - 我想将摩尔斯电码翻译成文字。还有一个小问题

android aapt转储资源没有输出