jdk源碼中有一些native修飾的方法,比如unsafe.class,只能看見方法聲明,但是具體的邏輯看不到。可以通過下載Openjdk來解決。openJDK上有完整的JDK源代碼,JDK源代碼由C++、Java、C、匯編 這四種語言組成。JVM主體是C++寫的,JNI部分是C,工具類是Java寫的,JVM里混有匯編代碼。看不到實現是因為,JDK是閉源的。而要看到NATIVE方法必須要SUN受權現在只有OPENJDK組織是被SUN授權的。
native方法是沒有提供源碼的。
Java中要做到跨平台處理,肯定是要和本地的硬件聯系,這個方法的作用就是與硬件層面結合,所以不同的平台的話,native執行都不一樣。
下載OpenJdk過程,可以參考:http://www.cnblogs.com/linzhanfly/p/9474173.html ,它的查看可以通過查看share下面的native等等文件,但是有時候找不全。
另一種方法,在線查看:
查看過程:參考博客https://blog.csdn.net/losingcarryjie/article/details/78244823
1 登錄AndroidXRef網站
2 選擇SDK版本
3 進入搜索界面
4. 查看Native
直接在3中的搜索頁面Full Search中輸入“getDlWarning”,右邊的In Projects選擇“select all”,接着點擊“search”,從搜索結果中找到后綴名帶有c的文件(.cpp,.cc等等)即可
note:方法名前面加了static修飾,用上面方法直接搜,如果沒加,就需要類名_方法名形式。比如:Unsafe_compareAndSwapInt. 可以看到這是一個C++寫的代碼。