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

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

我在[JDK_HOME] / jre / bin中发现了一堆DLL,但就像我说过的,我试图找到源代码。

有谁知道本地源代码可以找到的地方? 它是否可用,还是被Sun分类(哎呀我的意思是“我们就是为了赢得它”Oracle)?


对于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的雇员,Sun UK不在了,现在是Oracle。)

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


您可以查看OpenJDK的源代码(在带有Classpath Exception的GPLv2下许可)。 可能是研究JDK实现内部机制的最佳方法,除非您希望受到Java Research License的约束,在这种情况下,您可以访问实际的JDK 6源代码。

链接地址: http://www.djcxy.com/p/92127.html

上一篇: Where to find source code for java.lang native methods?

下一篇: What is a native implementation in Java?