我对 JNI 有点熟悉。 ,并且我很想看到 java.lang 包中某些 native 方法的特定于机器的实现。 Thread#currentThread()
,例如。
我在 [JDK_HOME]/jre/bin 中找到了一堆 DLL,但就像我说的那样,我正在尝试查找源代码。
有谁知道在哪里可以找到 native 源代码?它甚至可用,还是被 Sun 分类(哎呀,我的意思是“我们在它中赢得它”Oracle)?
最佳答案
对于 JDK6,您可以从 java.net 下载源代码.对于java.lang
,故事从j2se/src/share/native/java/lang/
开始,然后搜索……JDK7稍微重新排列了目录结构。
一些方法,例如Object.hashCode
,可以通过热点代替或补充通过JNI/Java实现。
JDK6 通过 Java Research License (JRL) 和 Java Internal Use License (JIUL) 免费获得许可。 JDK7 和 OpenJDK6 在 GPL 2 下获得许可,但带有 CLASSPATH 异常(exception)(粗略地说,您可以链接到它而不会感染 GNU 病毒)。我不是律师。
(顺便说一句:真正的律师想指出,我仍然是 Sun Microsystems 的员工。 Sun UK 已不复存在。它是现在 Oracle。)
更新(为 Thread.c 添加位置): http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/9b8c96f96a0f/src/share/native/java/lang/Thread.c
关于java - 在哪里可以找到 java.lang native 方法的源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2292629/