war 文件是否等同于 c 中的可执行文件或目标文件?

Is war file equivalent to executable or object file like in c?

war文件是在链接之后还是链接之前生成的? 它是否在服务器上的部署阶段进行链接?

有点模糊的问题。

一些积分

1) WAR 文件应该是独立的。所以如果我们延伸类比,它就像一个静态链接的二进制文件。

2)当然还是需要应用服务器(以及JVM本身)来运行

3) 所有 class 加载(这可能是 Java 中最接近 "linking" 的)发生在 运行 时间,当 class 首先需要。在部署期间会有一些一致性检查,但它不会检查是否所有 classes 都存在,例如。所以没有 "linking during deployment",真的。

4) WAR 文件作为构建过程的一部分生成。这发生在编译之后,但它是一个简单的 zip 归档操作。那里没有多少 "linking" 逻辑。所以也没有"linking during building"。

5) WAR 文件可以是 runnable/executable(尽管这在 JAR 文件中更常见)。即使不是,它也几乎从不用作其他程序的 "library"(这在 JAR 文件中很常见)。