当有多个class文件时,java如何将源代码编译为字节码?

问题描述 投票:0回答:2

我正在学习java。我想了解这个编译过程是如何完成的。 当只有一个文件时,想象一下 java 编译器如何编译是很简单的。它会逐行编译。拥有多个相互依赖的类文件怎么样?编译流程如何。 任何资源都值得赞赏。

java compilation javac
2个回答
0
投票

如果你想编译一个依赖于类B的类A,编译器首先查看B,然后返回A。这也适用于更复杂的情况,其中A依赖于B和C,或者A依赖于B,而B又依赖于B在 C 上。

真正有趣的情况是,A 依赖于 B,而 B 又依赖于 A。 查找“循环依赖”,您将看到大量讨论 - 针对不同的编程语言,或者在 Java 中针对类、jar 等。

示例:


0
投票

编译器不会将源代码逐行翻译为字节码。他们解析源代码,构造一个中间表示,然后多次转换该中间表示(可能需要来自其他类的信息),然后生成字节码。

对于转换阶段,它不需要其他类的整个字节码,只需要有关其他类的结构的信息(具有类型和签名的字段和方法)。该信息可以从类文件中收集,或者通过从其源构建类的中间表示来收集。

https://en.wikipedia.org/wiki/Compiler

© www.soinside.com 2019 - 2024. All rights reserved.