gpt4 book ai didi

java - Java应用程序的典型构建过程

转载 作者:搜寻专家 更新时间:2023-11-01 01:28:21 24 4
gpt4 key购买 nike

作为 Java 的新手,我无法理解从源代码到硬件特定二进制文件的完整构建过程。基本上我正在使用 Eclipse for java 并且想知道从源代码(.java)到二进制文件的所有转换发生了什么,所有文件都是使用一些链接器,预处理器等链接的。

如果您能为我指出一些提供 java 完整构建过程详细信息的链接,我将不胜感激。我已经搜索过这个论坛,但没有得到详细信息。

谢谢

已编辑:

所以更准确地说,我正在寻找与 C 中的以下构建过程等效的 Java:我在谷歌上搜索了很多但没有收获!像下图这样的图不是必须的(尽管是首选),但是如果您可以编写完整的 Java 构建过程中涉及的“n”个顺序/并行步骤,那将不胜感激。虽然@Tom Anderson 提供的很多信息对我来说非常有用。

enter image description here

最佳答案

首先要理解的是,您的问题包含一个错误的假设。您询问“从源代码到硬件特定二进制文件的完整构建过程”——但正常的 Java 构建过程从不生成特定于体系结构的二进制文件。它到达与体系结构无关的字节码,然后停止。在大多数情况下,字节码确实会被翻译成要执行的 native 代码,但该步骤发生在运行时,在 JVM 内部,完全在内存中,并且不涉及二进制文件的生成 - 它是 不是构建过程的一部分。

也有异常(exception) - 编译器如 GCJ可以生成 native 二进制文件,但很少有人这样做。

因此,作为构建过程的一部分发生的唯一实质性步骤是编译。编译器读取源代码,执行通常的解析和解析步骤,然后发出字节码。没有以任何方式指定该过程;像往常一样,language specification定义语言的元素是什么,以及它们的含义,但没有定义如何编译它们。输出格式指定什么:字节码以class files的形式打包, 每个类(class)一个,又可以在 jar files 中组合在一起为了便于分发。

当类文件开始执行时,在执行之前还需要进一步的步骤。这些在关于 loading, linking, and initializing 的章节中有详细说明。在 JVM 规范中。但是,正如我所说,这些实际上并不是构建过程的一部分。

在构建过程中可能会发生一些其他步骤,通常在编译之前:可能会解析和下载依赖项,可能会复制资源并在字符集之间进行转换,并且可能会生成代码。但这都不是标准的,所有这些都是通过各种构建工具添加到核心编译过程中的东西。

关于java - Java应用程序的典型构建过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10497905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com