【发布时间】:2017-12-03 18:13:29
【问题描述】:
JVM 如何将API 转换为它在 JVM 中的实现?
它类似于“Linux Kernel syscall”实现吗?如果是这样,这些接口在哪里?希望能看到源码。
图来自https://www.artima.com/insidejvm/ed2/introarch4.html
例如,
任何 Java 虚拟机实现都必须注意将 ClassLoader 类的这些方法连接到内部类加载器子系统。
【问题讨论】:
-
你的问题一点都不清楚。您是在问如何将 Java 编译到 JVM 指令集,如何解释这些指令,“本机”方法如何使 Java API 适应系统相关的实现,或者 JIT 编译如何生成特定于体系结构的优化? OpenJDK 是开源的。您可以亲眼看看这一切是如何在最常用的 JRE 中完成的。
-
@erickson 感谢您构建和完善我的问题。由于我不太了解这部分,所以我的问题是“模糊的”而不是复杂的。如果我理解它,我可以提出一个明确的问题。这两部分相辅相成……
-
您似乎在询问JNI,您可以直接查找,或者解释器如何工作,这太宽泛了。还不清楚。这不是一个图表,因为它完全忽略了解释器的存在。
-
JVM 规范故意模糊了这应该如何工作,因为他们希望将其留给 JVM 实现者来设计这些低级细节。 JVM 通过 JNI 提供对 C 方法的调用。反过来,这些 C 方法可以按照 C 进行这些调用的正常方式进行系统调用。
标签: java jvm jvm-hotspot hotspot