因此gcc或任何C编译器都会将您的源代码编译为x86或您自己的汇编语言,然后将程序集组装成二进制文件,然后将其链接以创建可执行文件。我的问题是java编译器是否包含汇编程序?意思是有一个中间停止,因为我理解字节码不是机器代码,但它存储为二进制文件,也不是纯文本。我假设它只是以二进制格式存储的基于文本的字节码,但我真的不知道。
答案 0 :(得分:7)
就像你说的,Java编译器会生成字节码。然后,这个字节码进入Java虚拟机,神奇地“使代码发生”。由于JVM是一个具有多个实现的规范,因此这个神奇的部分可以是Just In Time编译或简单解释。相关问题here。
所以回答你的问题,不,java编译器不包含汇编程序。 JVM可能包含一个但不强制,因为它的实现细节。
答案 1 :(得分:3)
Java编译器以二进制格式生成字节代码,然后由Java虚拟机(JVM)在运行时将其转换为机器代码。重要的是,此步骤在运行时发生,因为这允许Java程序在多个平台上运行而无需重新编译。
您可以使用javap
实用程序观察类文件中的字节码,该实用程序是Java开发工具包(JDK)的一部分。您可以使用 Jasmin, Java汇编程序等实用程序来组装自己的字节码。