哪里可以找到java.lang本机方法的源代码?

Ben*_*ons 54 java java-native-interface native

我对JNI非常熟悉,我很想看到java.lang包中某些本机方法的机器特定实现.Thread#currentThread(), 例如.

我在[JDK_HOME]/jre/bin中找到了一堆DLL,但就像我说的那样,我试图找到源代码.

有谁知道可以找到原生源代码的位置?它是否可用,或者它是否被Sun分类(oops我的意思是"我们在其中赢得它"Oracle)?

Tom*_*ine 34

对于JDK6,您可以从java.net下载源代码.对于java.lang故事开始j2se/src/share/native/java/lang/,然后搜索... JDK7稍微重新排列目录结构.

某些方法,例如Object.hashCode,可以通过热点实现,或者通过JNI/Java实现.

JDK6通过Java研究许可证(JRL)和Java内部使用许可证(JIUL)免费许可.JDK7和OpenJDK6在GPL 2下获得CLASSPATH异常许可(粗略地说,您可以链接到它而不会捕获GNU病毒).我不是律师.

(顺便说一句:真正的律师想指出的是,我仍然Sun Microsystems公司的员工.孙英国是没有更多的是的.现在的Oracle).

更新(为Thread.c添加位置):http: //hg.openjdk.java.net/jdk7/jdk7/jdk/file/9b8c96f96a0f/src/share/native/java/lang/Thread.c


Chr*_*ung 11

您可以查看OpenJDK的源代码(使用Classpath ExceptionGPLv2下获得许可).可能是学习JDK实现内部的最佳方法,除非您希望受Java Research License的约束,在这种情况下您可以访问实际的JDK 6源.