0

假设有一个简单的java程序:

package pkg;
import java.lang.System;
public class A {
    public static void main(String[] args){
        System.out.println("\nhello, world\n good");
        System.out.println(args.length);
    }
}

编译后,我得到 A.class,字节码文件。我想知道A.class是否包含库函数println?我确定在 C++/C 中 EXE 将包含库函数(不是 DLL 版本)。

一个派生的问题是JVM如何获取函数println?当 JVM 从指定的 JRE 例程中解释相应的语句“System.out.println(...)”时,是否是动态加载。还是只执行 A.class 文件中包含的 println?


编辑:我可以说 JAVA 动态链接标准库吗?——</p>

4

1 回答 1

3

我想知道A.class是否包含库函数println?

不,它没有。如果你有兴趣,可以使用javap命令(或反编译器)查看类文件中的内容。

一个派生的问题是JVM如何获取函数println?

它是从构成您用于运行程序的 JRE / JDK 的一部分的“rt.jar”文件加载的。

这就是为什么您需要安装 JRE/JDK 来运行 Java 代码的原因之一......

于 2013-04-15T13:57:33.880 回答