Java Compilation Process
来源:互联网 发布:龙与地下城 知乎 编辑:程序博客网 时间:2024/06/05 20:36
Java是半解释语言,不同于C/C++的编译过程。一方面因为java程序运行在JVM上,另一方面原因是它不同于纯解释性语言,它有一个中间编译过程,java代码没有被直接编译为机器码,而是被编译为中间字节码,字节码运行在JVM上。
下图为java代码编译和执行过程。
compile: java要求每个类都被存放在以类名命名的.java文件中(不包括内部类),编译时每个类(包括内部类)都被编译为一个独立的.class字节码文件,字节码文件的数量至少 和.java文件一样多。假如正在编译的类依赖于另一个类,而另一个类未被编译或编译后进行了修改,java编译器将为你编译这些额外的类,这不同于gcc/g++,有些 类似make,但实际没有相似之处。
loader:类加载和字节码校验是java区别于C/C++的两个独特过程。类加载器负责加载每一类的字节码,开发者可以实现自己的类加载器,可以加载任何位置的类。当JVM需要加载某个类时,the loadClass(String name, boolean resolve)方法将被调用,如果找到了name命名的字节码文件则读入内存并传给defineClass,否则将加载任务转给父加载类或在本地寻找系统类。
verifier:JVM规范没有详细描述字节码校验何时如何进行,但我们可以推断出是由defineClass完成的校验工作,校验是为了保证虚拟机可以安全地执行字节码文件。
字节码文件容易被反编译,例如使用工具jad
源:http://althing.cs.dartmouth.edu/local/www.acm.uiuc.edu/sigmil/RevEng/ch02.html
- Java Compilation Process
- Examining the Compilation Process
- The compilation process of C
- Loadrunner java vuser多台机器运行报错 Error: Compilation process failed解决方法
- How does the compilation/linking process work?
- 使用loadrunner Java Vuser协议进行性能测试时场景中报Error: Compilation process failed.解决方法
- Conditional Compilation In Java @ JDJ
- Java 条件编译 Conditional Compilation
- java process
- JAVA PROCESS
- java process
- Java Process
- java Process
- java Process
- Error:java: Compilation failed: internal java comp
- java: Compilation failed: internal java compiler error
- Java Process.waitFor() & Process.exitValue
- Java Process.exitValue & Process.waitFor()
- 如何用OpenCV训练自己的分类器
- android 动画切换效果
- UITableView and presentViewController takes 2 clicks to display
- android View的一些学习记录
- Redis在windows下的安装使用
- Java Compilation Process
- 【ThinkPHP学习】ThinkPHP的模块绑定与域名部署
- js混淆加密工具
- IOS如何选择图片加载方式:imageNamed和imageWithContentsOfFile的区别
- POJ1321 棋盘问题
- Co-prime
- hdu Crixalis's Equipment
- jQuery导航菜单防刷新
- 终端和控制台的区别