Javac编译器

http://download.java.net/openjdk/jdk8/

http://cdn.parleys.com/p/5148922b0364bc17fc56c995/1355320983023.pdf

\openjdk\langtools\src\share\classes\com\sun\tools\javac\parser\JavacParser.java

protected StringBuilder foldStrings(JCTree tree)

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

http://www.compileroptimizations.com/category/constant_propagation.htm

http://www.cs.wustl.edu/~cytron/cs531/Resources/Papers/cprop.pdf

http://www.compilerbooks.com/

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

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

https://www.amazon.com/Engineering-Compiler-Second-Keith-Cooper/dp/012088478X/ref=pd_cp_14_2?_encoding=UTF8&psc=1&refRID=F2MCCGKF2WA34HFAJX4N

时间: 2024-12-20 10:43:09

Javac编译器的相关文章

Javac编译器早期优化

Java的早期(编译器)优化 1. Javac编译器 1.1 编译步骤 编译过程可分为3个步骤: 解析与填充符号过程 插入式注解处理器的注解处理过程 分析与字节码生成过程 1.2 解析与填充符号表 解析步骤包含了词法分析和语法分析两个过程. 1.2.1 词法.语法分析 词法分析是将源代码的字符流转变为标记(Token)集合,标记是编译过程的最小元素. 语法分析是根据Token序列构建抽象语法树的过程. 抽象语法树是一种用来描述程序代码语法结构的树形表示方式,语法树中的每一个节点都代表着程序代码中

早期(编译器)优化--javac编译器

java语言的"编译期"其实是一段"不确定"的操作过程,可能是指一个前端编译器把.java变成.class的过程,也可能是指虚拟机的后端运行期编译器(JLT)把字节码转变成机器码的过程,也有可能是使用静态提前编译器(AOT)直接把.java文件直接编译成本地机器代码的过程.现在讨论的是第一种编译器. Javac编译器 ①javac的源码与测试   运行com.sun.tools.javac.Main的main()方法来执行编译,与命令行中使用javac的命令没什么区

javac 编译器原理

Javac 是什么 javac 是一种编译器,能讲一种语言规范转化成另外一种语言规范.如C,C++都是将源码直接编译成目标机器码,这个目标机器码是CPU直接执行的指令集合. 这些指令集合也就是底层的一种语言规范,机器能够直接识别这种语言规范,但是人不可能直接去写目标机器码. 从某种意义来说,有了编译器才有了程序语言的繁荣,因为编译器是人类和机器沟通的一个纽带.javac 的编译器也是将JAVA 这种对人非常友好的编程语言编译成对所有机器都非常友好的语言. javac 的任务就是将Java源码编译

对openjdk的javac编译器扩展了一个语法糖

我的扩展功能描述如下: 在java的现有语法中加入var来声明变量,并且可以根据初始化数据来自动类型推导. 举两个例子: 例一: 如下JAVA代码(注意这里的var是新语法): import java.util.*; public class TestHello { private var i = new ArrayList<List<?>>(); } 在用我修改的编译器编译之后,再用反编译工具反编译之后会看到如下形式的代码: import java.util.ArrayList;

JVM系列五(javac 编译器).

一.概述 我们都知道 *.java 文件要首先被编译成 *.class 文件才能被 JVM 认识,这部分的工作主要由 Javac 来完成,类似于 Javac 这样的我们称之为前端编译器: 但是 *.class 文件也不是机器语言,怎么才能让机器识别呢?就需要 JVM 将 *.class 文件编译成机器码,这部分工作由JIT 编译器完成: 除了这两种编译器,还有一种直接把 *.java 文件编译成本地机器码的编译器,我们称之AOT 编译器. 二.javac 的编译过程 首先,我们先导一份 java

Question20180104 对比编译器、解释器与Javac编译原理

编译器与Javac编译原理 在前文我们知道了Java是一种编译语言和解释语言,它的源代码经过编译器Javac编译为能够被JVM识别的二进制语言,然后JVM将其解释为能够被平台识别的机器语言.那么什么是编译器呢?编译器的作用是什么呢?Javac又是如何进行工作的?下面我们一一来认识了解. 1 编译器(Compiler ) 简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序.一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (

Knowledge Point 20180303 对比编译器、解释器与Javac编译原理

编译器与Javac编译原理 在前文我们知道了Java是一种编译语言和解释语言,它的源代码经过编译器Javac编译为能够被JVM识别的二进制语言,然后JVM将其解释为能够被平台识别的机器语言.那么什么是编译器呢?编译器的作用是什么呢?Javac又是如何进行工作的?下面我们一一来认识了解. 1 编译器(Compiler ) 简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序.一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (

Javac编译和JIT编译

编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现.很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地解释执行,如JavaScript),而下面的那条分支就是传统编译原理中从源代码到目标机器代码的生成过程. 如今,基于物理机.虚拟机等的语言,大多都遵循这种基于现代经典编译原理的思路,在执行前先对程序源码进行词法解析和语法解析处理,把源码转化为抽象

【深入Java虚拟机】之七:Javac编译与JIT编译

转载请注明出处:http://blog.csdn.net/ns_code/article/details/18009455 编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现.很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地解释执行,如JavaScript),而下面的那条分支就是传统编译原理中从源代码到目标机器代码的生成过程. 如今,基于物理机