Java API与JVM的交互方式究竟如何?

时间:2015-12-24 22:02:19

标签: java jvm java-native-interface

我已经使用Java一段时间了,现在我使用了本机方法和JNI。我认为没有本机功能的Java可以只管理它的内存(创建类和字段并将数据从一个方法传递到另一个方法,并声明原始类型),但所有的东西,如线程管理,数据I / O及其东西和更多类似的东西由于本土方法而完成。

现在我知道本机方法(例如:线程启动声明为private native void start0();启动一个新线程)具有相应的库(我不确定但应该)直接与JVM实例或其他系统库通信(OpenGL通过这种方式进行通信)。

上述文字是真的还是还有更多内容?还有一个问题,这些库(API的本机方法使用)在哪里加载?我知道您需要使用自定义本机方法加载库。 API是这样做还是由JVM自动完成?

1 个答案:

答案 0 :(得分:1)

HotSpot / OpenJDK JVM是用C编写的程序。因此,本机方法是用C语言编写的,并且通过共享库加载,其方式与任何其他C程序加载共享库的方式相同。

在大多数情况下,对线程和IO的本机调用是来自系统调用的瘦包装器,即操作系统完成所有实际工作。