java 可执行文件到底是什么,它有什么作用,我在哪里可以找到它的源代码?
What exactly is the java executable, what does it do and where can I find the sources for it?
我的问题是关于 java
可执行文件,您用于 运行 一个 Java 程序的那个,以及 Linux 上的那个,例如在 /usr/bin/java
.
我一直在做一些实验,因为我想了解幕后发生的一切,比如字节码是如何加载的,实际 Java 程序的执行是如何开始的,以及其他细节可能没那么简单
直到现在我已经查看了 strace
的执行并发现创建了一个新线程并且该线程是 Java 程序实际执行的线程(来自另一个问题我已经发布)。据我了解,java
可执行文件是某种启动器,但我不了解幕后发生的所有操作。
那么,java
可执行文件到底是什么?有什么地方可以找到它的源代码(这对我很有帮助)?
当前开发中启动器的主要源文件JDK可以在这里找到:https://github.com/openjdk/jdk/blob/master/src/java.base/share/native/libjli/java.c
如您所见,它很短并且将大部分工作委托给了其他代码段,但作为起点应该很有用。
如果您想查看其他 JDK 版本的源代码(这基本上是未来 Java 版本的主要开发库),您需要查看 appropriate repository。
我的问题是关于 java
可执行文件,您用于 运行 一个 Java 程序的那个,以及 Linux 上的那个,例如在 /usr/bin/java
.
我一直在做一些实验,因为我想了解幕后发生的一切,比如字节码是如何加载的,实际 Java 程序的执行是如何开始的,以及其他细节可能没那么简单
直到现在我已经查看了 strace
的执行并发现创建了一个新线程并且该线程是 Java 程序实际执行的线程(来自另一个问题我已经发布)。据我了解,java
可执行文件是某种启动器,但我不了解幕后发生的所有操作。
那么,java
可执行文件到底是什么?有什么地方可以找到它的源代码(这对我很有帮助)?
当前开发中启动器的主要源文件JDK可以在这里找到:https://github.com/openjdk/jdk/blob/master/src/java.base/share/native/libjli/java.c
如您所见,它很短并且将大部分工作委托给了其他代码段,但作为起点应该很有用。
如果您想查看其他 JDK 版本的源代码(这基本上是未来 Java 版本的主要开发库),您需要查看 appropriate repository。