日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解Java中native方法的使用

瀏覽:40日期:2022-08-24 15:06:15

今天在網(wǎng)上學習時碰到有關于 native修飾符所修飾的方法,上網(wǎng)查了查,覺得很有意思記錄一下

詳解Java中native方法的使用

1、native簡介

簡單地講,一個Native Method就是一個java調(diào)用非java代碼的接口。一個Native Method是這樣一個java的方法:該方法的實現(xiàn)由非java語言實現(xiàn),比如C。這個特征并非java所特有,很多其它的編程語言都有這一機制,比如在C++中,你可以用extern “C”告知C++編譯器去調(diào)用一個C的函數(shù)。

native是與C++聯(lián)合開發(fā)的時候用的!使用native關鍵字說明這個方法是原生函數(shù),也就是這個方法是用C/C++語言實現(xiàn)的,并且被編譯成了DLL,由java去調(diào)用。 這些函數(shù)的實現(xiàn)體在DLL中,JDK的源代碼中并不包含,你應該是看不到的。對于不同的平臺它們也是不同的。這也是java的底層機制,實際上java就是在不同的平臺上調(diào)用不同的native方法實現(xiàn)對操作系統(tǒng)的訪問的。總而言之:

native 是用做java 和其他語言(如c++)進行協(xié)作時使用的,也就是native 后的函數(shù)的實現(xiàn)不是用java寫的。既然都不是java,那就別管它的源代碼了,我們只需要知道這個方法已經(jīng)被實現(xiàn)即可。native的意思就是通知操作系統(tǒng), 這個函數(shù)你必須給我實現(xiàn),因為我要使用。 所以native關鍵字的函數(shù)都是操作系統(tǒng)實現(xiàn)的, java只能調(diào)用。java是跨平臺的語言,既然是跨了平臺,所付出的代價就是犧牲一些對底層的控制,而java要實現(xiàn)對底層的控制,就需要一些其他語言的幫助,這個就是native的作用了。

2、native用法

1.編寫帶有native聲明的方法的Java類(java文件)2.使用javac命令編譯編寫的Java類(class文件)如:javac NativeTest.java3.使用javah -jni ****來生成后綴名為.h的頭文件(.h的文件) 如:javah -jni NativeTest4.使用其他語言(C、C++)實現(xiàn)本地方法5.將本地方法編寫的文件生成動態(tài)鏈接庫(dll文件)

注意:javac NativeTest.java 沒有帶包名,因為我的NativeTest.java不在任何包(package)中。

示例如下:

public class NativeTest { public native void hello(String name); static{ System.loadLibrary('wittdong');//wittdong和生成動態(tài)鏈接庫的 wittdong.dll名字一致 } public static void main(String[] args){ new NativeTest().hello('jni'); }}

詳解Java中native方法的使用

打開 javah 編譯出 后綴名為 .h 的文件圖:

詳解Java中native方法的使用

4、用C語言實現(xiàn)本地方法(hello),生成 NativeTestImpl.c 格式文件

#include <jni.h>#include “NativeTest.h”#include <stdio.h>JNIEXPORT void JNICALL Java_NativeTest_hello(JNIEnv *env,jobject obj, jstring name){printf(“hello world”);}

5、生成動態(tài)鏈接庫

一種方式:cl -I %java_home%include -I%java_home%includewin32 -LD NativeTestImpl.c -Fe wittdong.dll

另一種方式:用VC++6.0編譯一下在debug文件夾中就生成好了dll文件。

將dll放到生成.h的那一級文件夾中,就可以進行native本地方法調(diào)用。在Eclipse執(zhí)行時,需把dll文件拷貝到C:WindowsSystem32

3、補充資料

c語言中.c和.h文件關系以及區(qū)別:

本質(zhì)上沒有任何區(qū)別。 只不過一般:.h文件是頭文件,內(nèi)含函數(shù)聲明、宏定義、結構體定義等內(nèi)容

.c文件是程序文件,內(nèi)含函數(shù)實現(xiàn),變量定義等內(nèi)容。而且是什么后綴也沒有關系,只不過編譯器會默認對某些后綴的文件采取某些動作。你可以強制編譯器把任何后綴的文件都當作c文件來編。

這樣分開寫成兩個文件是一個良好的編程風格。

而且,比方說 我在aaa.h里定義了一個函數(shù)的聲明,然后我在aaa.h的同一個目錄下建立aaa.c ,aaa.c里定義了這個函數(shù)的實現(xiàn),然后是在main函數(shù)所在.c文件里#include這個aaa.h 然后我就可以使用這個函數(shù)了。 main在運行時就會找到這個定義了這個函數(shù)的aaa.c文件。

這是因為:

main函數(shù)為標準C/C++的程序入口,編譯器會先找到該函數(shù)所在的文件。

假定編譯程序編譯myproj.c(其中含main())時,發(fā)現(xiàn)它include了mylib.h(其中聲明了函數(shù)void test()),那么此時編譯器將按照事先設定的路徑(Include路徑列表及代碼文件所在的路徑)查找與之同名的實現(xiàn)文件(擴展名為.cpp或.c,此例中為mylib.c)(應該是跟java的import一樣),如果找到該文件,并在其中找到該函數(shù)(此例中為void test())的實現(xiàn)代碼,則繼續(xù)編譯;如果在指定目錄找不到實現(xiàn)文件,或者在該文件及后續(xù)的各include文件中未找到實現(xiàn)代碼,則返回一個編譯錯誤.其實include的過程完全可以'看成'是一個文件拼接的過程,將聲明和實現(xiàn)分別寫在頭文件及C文件中,或者將二者同時寫在頭文件中,理論上沒有本質(zhì)的區(qū)別。

到此這篇關于詳解Java中native方法的使用的文章就介紹到這了,更多相關java 中native方法使用內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲18在线| 不卡中文一二三区| 日韩精品首页| 日韩综合一区二区三区| 免费久久精品| 日韩三区在线| 999精品在线| 欧美精品1区| 亚洲精品在线国产| 日本va欧美va精品发布| 喷白浆一区二区| 国产传媒av在线| 国产精品二区不卡| 国内一区二区三区| 日韩精品第一区| 91视频一区| 国产粉嫩在线观看| 四虎影视精品| 久久精品亚洲欧美日韩精品中文字幕| 精品视频黄色| 伊人久久在线| 欧美日韩视频免费观看| 国产精品免费精品自在线观看| 欧美在线看片| 日韩高清一区二区| 国产无遮挡裸体免费久久| 亚洲一区有码| 视频一区日韩精品| 国产精品最新| 精品久久久久中文字幕小说| 99久久亚洲精品蜜臀| 婷婷成人基地| 蜜桃tv一区二区三区| 亚洲深夜av| 免费人成精品欧美精品| 日本午夜精品一区二区三区电影 | 精品一区二区三区中文字幕在线| 国产精品第十页| 精品一区视频| 日韩影院二区| 色88888久久久久久影院| 欧美aa国产视频| 欧美福利专区| 色8久久久久| 国产美女撒尿一区二区| 国产精选在线| 激情综合网五月| 亚洲精选久久| 国产精品网站在线看| 国产精品久久久久久久久久白浆 | 精品国产中文字幕第一页| 久久精品五月| 久久精品国产99国产| 久久精品午夜| 久久伊人久久| 久久精品一区二区不卡| 亚洲欧洲免费| 日本欧美韩国一区三区| 国产视频久久| 精品中国亚洲| 国产伦理一区| 麻豆国产欧美一区二区三区| 亚洲人成高清| 欧美韩一区二区| 国产专区精品| 久久精品国产一区二区| 精品日产乱码久久久久久仙踪林| 91av亚洲| 欧美成人综合| 精品久久中文| 欧洲av一区二区| 色综合视频一区二区三区日韩| 国产精品a级| 亚洲综合电影| 热久久国产精品| 国产一区一一区高清不卡| 99在线|亚洲一区二区| 久久99蜜桃| 久久午夜影视| 国产日产一区| 精品捆绑调教一区二区三区| 麻豆久久久久久| 蜜臀av亚洲一区中文字幕| 美女性感视频久久| 日韩精品欧美| 日韩欧美2区| 欧美性感美女一区二区| 精品国产一区二区三区av片| 亚洲激情社区| 91国内精品| 亚洲欧美日韩精品一区二区 | 免费人成黄页网站在线一区二区 | 91精品国产成人观看| 国产精品一级在线观看| 午夜免费一区| 久久精品凹凸全集| 99视频一区| 日韩电影免费网址| 久久av免费看| 在线观看一区| 夜夜精品视频| 高清久久一区| 久久国内精品自在自线400部| 亚洲精品人人| 欧美精品一区二区久久| 欧美天堂在线| 美女日韩在线中文字幕| 日韩在线视频精品| 国产精品一卡| 亚洲精品裸体| 国产精选在线| 欧美极品一区二区三区| 日韩在线一二三区| 久久中文亚洲字幕| 国产在线一区不卡| 日韩av中文字幕一区| 国产一级一区二区| 涩涩av在线| 久久在线91| 久久国产精品久久久久久电车| 麻豆视频在线观看免费网站黄| 亚洲精品欧洲| 日韩在线精品| 成人污污视频| 欧美激情三区| 国产精品久av福利在线观看| 亚洲精品免费观看| 香蕉久久夜色精品国产| 91精品国产调教在线观看| 精品一区二区三区视频在线播放 | 麻豆视频在线观看免费网站黄| 你懂的国产精品永久在线| 日韩欧美在线精品| 亚洲人www| 鲁大师影院一区二区三区| 亚洲黑丝一区二区| 色婷婷色综合| 97精品国产一区二区三区| 免费精品一区| 欧美一区=区三区| 日本va欧美va瓶| 久久不卡国产精品一区二区| 国产精品成人3p一区二区三区| 国产丝袜一区| 国产欧美一区二区三区精品观看| 午夜一级久久| 丝袜脚交一区二区| 免费视频久久| 亚洲综合精品| 久久福利毛片| 亚洲精品美女| 亚洲精品一区二区在线播放∴| 国产亚洲电影| 麻豆国产精品视频| 日韩不卡一区| 91精品国产乱码久久久久久久 | 麻豆久久一区| 精品在线网站观看| 香蕉视频成人在线观看| 亚洲免费福利一区| 日本欧美韩国一区三区| 精品一二三区| 成人日韩在线| 亚洲一区欧美| 亚洲免费福利一区| 亚洲理论在线| 精品一二三区| 久久蜜桃资源一区二区老牛| 免费在线观看不卡| 日本不卡在线视频| 国产精品男女| 黄色网一区二区| 麻豆精品蜜桃视频网站| 欧美激情视频一区二区三区免费 | 成人国产精品久久| 精精国产xxxx视频在线野外| 蜜桃视频一区二区三区| 久久福利影视| 国产乱子精品一区二区在线观看 | 狠狠躁少妇一区二区三区| 免费国产自久久久久三四区久久 | 久久福利精品| 日韩一级精品| 日韩欧美中文字幕电影| 国产精品一区毛片| 国产丝袜一区| 一区二区三区视频免费观看| 国产视频久久| 欧美天堂在线| 欧美日中文字幕| 亚洲精品影院在线观看| 日韩国产激情| 美国三级日本三级久久99| 色综合五月天| 日韩视频在线一区二区三区| 日韩精品高清不卡| 久久在线免费| 日韩毛片网站| 欧美精品一区二区三区精品| 日本va欧美va欧美va精品|