簡單來說,一個Native Method就是一個java滴啊用非java代碼的接口,一個Native Method 是這樣一個java方法:該方法的實現由非Java語言實現,好比C。這個特徵並不是java特有,不少其餘的編程語言都有這一機制,好比在C++ 中,你能夠用extern 「C」 告知C++ 編譯器去調用一個C的函數。
在定義一個native method時,並不提供實現體(有些像定義一個Java interface),由於其實現體是由非java語言在外面實現的。
本地接口的做用是融合不一樣的編程語言爲java所用,它的初衷是融合C/C++程序。
標識符native能夠與其餘全部的java標識符連用,可是abstract除外。java
/**
* 本地方法
*/
public class IHaveNatives {
//abstract 沒有方法體
public abstract void abstractMethod(int x);
//native 和 abstract不能共存,native是有方法體的,由C語言來實現
public native void Native1(int x);
native static public long Native2();
native synchronized private float Native3(Object o);
native void Native4(int[] array) throws Exception;
}
複製代碼
java使用起來很是方便,然而有些層次的任務用java實現起來不容易,或者咱們對程序的效率很在乎時,問題就來了。git
目前該方法的是用愈來愈少了,除非是與硬件有關的應用,好比經過java程序驅動打印機或者java系統管理生產設備,在企業級應用已經比較少見。由於如今的異構領域間的通訊很發達,好比可使用Socket通訊,也能夠是用Web Service等等,很少作介紹。github
【代碼】
github.com/willShuhuan…
【筆記】
JVM_01 簡介
JVM_02 類加載子系統
JVM_03 運行時數據區1- [程序計數器+虛擬機棧+本地方法棧]
JVM_04 本地方法接口
JVM_05 運行時數據區2-堆
JVM_06 運行時數據區3-方法區
JVM_07 運行時數據區4-對象的實例化內存佈局與訪問定位+直接內存
JVM_08 執行引擎(Execution Engine)
JVM_09 字符串常量池StringTable
JVM_10 垃圾回收1-概述+相關算法
JVM_11 垃圾回收2-垃圾回收相關概念
JVM_12 垃圾回收3-垃圾回收器算法