`

Javac编译器的工作过程

阅读更多

       

        javac的任务是将Java源代码语言先转化成JVM能够识别的一种语言,然后由JVM将JVM语言再转化成当前这个机器能够识别的机器语言。

 

        Javac主要有四个模块,分别是词法分析器、语法分析器、语义分析器、代码生成器。

 

一、词法分析器

        当编译器要读取源代码,一个字节为一节地读进来,找出在这些字节中有那些是我们定义的语法关键词,这个步骤就是词法分析器。词法分析的结果就是从源代码中找出一些规范化的Token流。

 

二、语法分析器

        找出Token流后,检查这些关键词组合在一起是不是符合java语言规范,就是语法分析,结果就是形成一个符合java语言规范的抽象语法树。

 

三、语义分析器

        语义分析主要是把一些难懂的、复杂的语法转换成更加简单的语法。

        这个过程就是将语法分析后生成的抽象语法树在进行一些处理,如,给类增加默认的构造函数,检查变量在使用前是否经过初始化,将一些常量进行合并处理,检查操作变量类型是否匹配,检查所有的操作语句是否可达,检查checked exception异常是否已经捕获或抛出,接触java的语法糖(如将java中foreach转换成for循环结构。)

 

四、代码生成器

        最后一步是通过字节码生成器生成字节码,根据经过注解的抽象语法树生成字节码,结果也就是生成符合java虚拟机规范的字节码了。

1
2
分享到:
评论

相关推荐

    javac 编译器源代码

    Java 编译器 javac 是 Java 语言的核心组成部分,它将程序员编写的源代码转换成计算机可以理解的字节码,使得 Java 应用能在不同的平台上运行。深入了解 javac 的源代码,对于 Java 开发者而言,是提高技术水平、...

    java编译器源码-javac:javac编译器源代码

    这个名为"javac-master"的压缩包很可能是包含了javac编译器的开源源代码。 Java 编译器源码分析: 1. **源代码结构**:通常,javac的源代码会包含多个模块,如解析器、语法分析器、语义分析器和代码生成器等。这些...

    jdk9_javac.rar

    《深入理解JDK9中的javac编译器》 在Java开发中,javac是核心的编译器,它负责将源代码转换为字节码,使得Java虚拟机(JVM)能够执行。JDK9作为Java的重要版本,对javac进行了一系列改进和优化,提升了开发效率和...

    Using the ant javac adapter

    总结来说,"Using the ant javac adapter"的主题涵盖了Ant构建工具的使用,特别是如何利用Ant的`<javac>`任务与Javac编译器进行交互,以及可能涉及的Eclipse JDT插件如何支持这个过程。理解这些知识点对于任何Java...

    Java编译器源代码

    在"langtools-d176cbb923aa"这个压缩包中,包含了Javac编译器的源代码,可能还包括其他与语言工具相关的组件。这些源代码可以帮助开发者深入理解编译器的工作原理,例如,如何处理异常、接口、泛型、反射等高级特性...

    Java编译器源码初析示例

    Java编译器源码初析示例主要涉及的是对Java编程语言的核心编译器——Javac的理解与分析。在Java开发中,Javac是官方提供的标准编译器,负责将源代码(.java文件)转换为字节码(.class文件),使得虚拟机(JVM)能够...

    javac1.7源代码(完全版,可运行)

    本资源提供的"javac1.7源代码"是一个完全版,包含了OpenJDK 1.7版本中的javac编译器的源代码。OpenJDK是一个开源实现的Java平台标准版(Java SE),它提供了Java虚拟机(JVM)、类库以及Java语言编译器等关键组件。 ...

    Java的编译器可以编译各种语言写成的程序

    Javac编译器首先将源代码编译成与平台无关的字节码,然后这些字节码可以在任何安装了对应版本JVM的系统上运行。这种设计使得Java程序具有高度的可移植性。 Java编译器的使用非常简单,通常在命令行环境下,通过指定...

    javac 源码 javac 源码

    Java 编译器 javac 是 Java 语言的核心组成部分,它将程序员编写的源代码(`.java` 文件)转换成可执行的字节码(`.class` 文件),使得 JVM(Java 虚拟机)能够运行这些程序。了解 javac 的源码对于深入理解 Java ...

    java编译器

    1. 安装JDK:首先,你需要在计算机上安装Java Development Kit,其中包含Javac编译器。 2. 编写Java源代码:使用文本编辑器创建.java文件,遵循Java语言规范编写程序。 3. 使用命令行编译:打开命令行窗口,导航到....

    javac 的 源 代 码

    Java 编译器,javac,是 Java 语言的核心组成部分之一,它负责将开发者编写的源代码转换成可执行的字节码。深入理解javac的源代码对于Java程序员来说,不仅能帮助理解编译过程,还能提升编程技能和优化代码的能力。...

    gui.rar_java 编译器

    3. **Java编译原理**:了解Javac编译器的工作流程,包括词法分析、语法分析、语义分析和代码生成,以及如何自定义一个编译器来实现类似的功能。 4. **包管理**:学习如何组织和命名Java代码,以便于管理和重用。 5...

    C#写的java编译器

    此外,它还具有编译和执行Java文件的功能,这表明它包含了一个Java源码到字节码的转换过程,类似于Oracle的Javac编译器。 在学习这个项目的过程中,开发者可以深入理解以下知识点: 1. **C#基础**:熟悉C#语法、...

    javac源码免费下载

    学习javac源码对于Java开发者来说,不仅可以提升对Java编译过程的理解,还能帮助开发自定义编译器插件或理解JDK内部机制。通过分析源码,我们可以了解到如何处理复杂的语法结构、如何进行类型检查,以及如何生成高效...

    javac源代码,java具体编译步骤

    通过阅读`javac`的源代码,开发者可以更清晰地了解编译器的工作原理,从而更好地调试和优化自己的程序。在实际编程中,还可以借助类似Javassist、ASM这样的字节码操作库,实现动态代码生成和修改,增强程序的功能。

    java编译器源代码

    在本篇文章中,我们将探讨Java编译器的核心组成部分及其工作原理。 1. **javac的基本结构**: Java编译器(javac)是一个命令行工具,其主要任务是解析源代码文件(.java),进行词法分析、语法分析、语义分析,...

    javac源码和运行说明文件.zip

    Java编译器(javac)是Java开发工具包(JDK)的核心组件,负责将Java源代码转换为可执行的字节码。本压缩包"javac源码和运行说明文件.zip"包含了与javac相关的源码以及环境搭建的说明,非常适合对Java编译器有深入...

    java编译器源代码.rar

    这个压缩包“java编译器源代码.rar”很可能包含了JDK(Java Development Kit)中的Javac编译器的源代码。Javac是Java的标准编译器,用于将.java源文件编译成.class字节码文件。下面将深入探讨Java编译器的相关知识点...

    BC&TC;编译器

    BC&TC编译器是一个专为初学者设计的简单编译器,它可能包含了基本的编译功能,便于学习和理解编译过程。然而,值得注意的是,由于其版本较为老旧,不支持64位Windows 7操作系统,这表明它可能没有得到持续的更新和...

    javac.jar

    `javac.jar` 是 OpenJDK 中 `javac` 编译器的源码包,它揭示了 Java 编译过程的内部工作原理,对于学习 Java 编译器的工作机制、优化代码性能以及进行自定义编译器开发具有重要意义。 在 OpenJDK 的 `javac1.7` ...

Global site tag (gtag.js) - Google Analytics