本地方法接口

本地方法接口和本地方法库

所处的位置:注意区别运行时数据区的本地方法栈

这里讲的是本地方法接口和本地方法库

本地方法接口和本地方法栈 - 图1

  1. 什么是本地方法?

    • 本地方法就是Native Method,该方法的实现由非Java语言实现

    • 在本地方法中并没有实现体,因为方法的实现是在非Java语言实现的

    • 本地方法接口就是:一个Java调用非Java代码的接口

      比如Thread类中的方法

本地方法接口和本地方法栈 - 图2

native不能和abstract公用,因为native的方法并不是没有方法体,而abstract抽象实现是没有方法体的

  1. 为什么需要本地方法

    1. 与Java环境外交互:有时Java应用需要与Java外面的环境交互。这是本地方法存在的主要原因,你可以想想Java需要与一些底层系统如操作系统或某些硬件交换信息时的情况
    2. 与操作系统交互:用本地方法实现与操作系统的交互
    3. Sun’s Java:Sun的解释器是C语言实现的,使用本地方法可以像C一样与外部交互

本地方法栈

  • 本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别只是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的本地(Native)方法服务

    本地方法接口和本地方法栈 - 图3

  • 与虚拟机栈一样也会在栈深度溢出或者栈扩展失败的时候抛出StackOverflowError和OutOfMemoryError异常。

  • 《Java虚拟机规范》对本地方法栈中方法使用的语言、使用方式与数据结构并没有任何强制规定,因此具体的虚拟机可以根据需要自由实现它,甚至有的Java虚拟机(譬如Hot-Spot虚拟机)直接就把本地方法栈和虚拟机栈合二为一