在哪里可以找到java.lang原生方法的源代码?[已关闭]

2022-08-31 15:58:28

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

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

有谁知道在哪里可以找到原生源代码?它甚至可用,还是按Sun分类(哎呀,我的意思是“我们在它里赢得它”甲骨文)?


答案 1

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

某些方法(如 )可以通过热点代替实现,也可以通过 JNI/Java 进行补充。Object.hashCode

JDK6 通过 Java 研究许可证 (JRL) 和 Java 内部使用许可证 (JIUL) 自由许可。JDK7 和 OpenJDK6 在 GPL 2 下获得许可,但有 CLASSPATH 例外(粗略地说,您可以在不捕获 GNU 病毒的情况下链接到它)。我不是律师。

(BTW:真正的律师想指出,我仍然是Sun Microsystems的员工。Sun UK已不复存在。它现在是甲骨文。

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


答案 2

您可以查看OpenJDK的源代码(在GPLv2下许可,具有类路径异常)。这可能是研究JDK实现内部结构的最佳方式,除非你想受到Java研究许可证的约束,在这种情况下,你可以访问实际的JDK 6源代码


推荐