我們知道在java中查看java源碼時(shí)看到native方法在java層面上就到頭的境钟,如果還想繼續(xù)往下看就需要看jdk是如何實(shí)現(xiàn)的供璧,今天就分享一下如何查看java中native方法灸姊。
1.先去http://hg.openjdk.java.net/下載openJDK源碼
如果不知道如何下載可查看openJDK源碼下載.
2.解壓下載的openJDK源碼
解壓后我們可以看到目錄結(jié)構(gòu)如下(這里的代碼就是OpenJDK里的大部分類庫(kù)的實(shí)現(xiàn))辑甜。
src/
share/ 平臺(tái)無(wú)關(guān)的實(shí)現(xiàn)
classes/ 平臺(tái)無(wú)關(guān)的Java代碼實(shí)現(xiàn)
native/ 平臺(tái)無(wú)關(guān)的native代碼實(shí)現(xiàn)(主要是C)
進(jìn)入到相應(yīng)的目錄我們可以看到classes與native目錄的結(jié)構(gòu)就跟Java的包目錄結(jié)構(gòu)一樣哈肖,兩邊是對(duì)應(yīng)的受啥。知道這個(gè)關(guān)系就能很快找到JDK類庫(kù)中Java聲明為native的方法在C里的實(shí)現(xiàn)函數(shù)窿侈。
如:
java.lang.System類中的registerNatives方法炼幔,對(duì)應(yīng)的就是src\share\native\java\lang目錄下System.c文件中Java_java_lang_System_registerNatives方法了。我們很容易可以看出它的對(duì)應(yīng)規(guī)則是Java_包名(其中.用代替)類名_方法名史简。
然后就可以盡情的在C的世界查看它是如何實(shí)現(xiàn)的了乃秀,朋友們趕快開啟你的本地方法查看之旅吧。