在哪里可以找到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?