今天在Java基礎(chǔ)類庫的源代碼的時候翎承,遇到了一個關(guān)鍵字:native蛉鹿。
什么是Native Method取劫?
簡單地講巷帝,一個用Native關(guān)鍵字修飾的方法就是一個java調(diào)用非java代碼的接口忌卤;
native關(guān)鍵字說明其修飾的方法是一個原生態(tài)方法,方法對應(yīng)的實現(xiàn)不是在當前文件楞泼,而是在用其他語言(如C和C++)實現(xiàn)的文件中驰徊,這個特征并非java語言所特有笤闯,很多其它編程語言都有這一機制,比如在C++中棍厂,你可以用extern "C"告知C++編譯器去調(diào)用一個C的函數(shù)颗味;
由于該方法的并非由java語言實現(xiàn),所以在源代碼中是沒有實現(xiàn)體的牺弹。浦马。Java語言本身不能對操作系統(tǒng)底層進行訪問和操作,但是可以通過JNI接口調(diào)用其他語言來實現(xiàn)對底層的訪問张漂。
JNI的書寫步驟如下:
1晶默、編寫一個類:
2、在類文件所在路徑航攒,打開cmd 執(zhí)行編譯命令javac HelloWorld.java
3磺陡、生成.h文件 javah -classpath "D:\test" HelloWolrd
classpath后的是編譯的class文件所在路徑;
導出類的.h文件出錯漠畜,參考下面的鏈接:
用javah 導出類的頭文件仅政, 常見的錯誤及正確的使用方法 - CSDN博客
生成的文件內(nèi)容如下:
4圆丹、c的實現(xiàn)
5、生成一個動態(tài)鏈接庫
Windows下的生成方式躯喇;要安裝Visual Studio
cl -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win64" -LD Hello.c -FeHello.dll
6辫封、直接運行
java HelloWorld