Java的编译方式
来源:互联网 发布:朝鲜第六次核爆 知乎 编辑:程序博客网 时间:2024/06/04 19:59
Java主流编译体系采用了前端编译+JIT编译的方式:
1、前端编译
把Java源码文件(.java)编译成Class文件(.class)的过程;
也即把满足Java语言规范的程序转化为满足JVM规范所要求格式的功能;
优点:
许多Java语法新特性(”语法糖”:泛型、内部类等等),是靠前端编译器实现的,而不是依赖虚拟机;
编译成的Class文件可以直接给JVM解释器解释执行,省去编译时间,加快启动速度;
缺点:
对代码运行效率几乎没有任何优化措施;
解释执行效率较低,所以需要结合下面的JIT编译;
前端编译器:Oracle javac、Eclipse JDT中的增量式编译器(ECJ)等;
2、后端编译/即时(JIT)编译
通过Java虚拟机(JVM)内置的即时编译器(Just In Time Compiler,JIT编译器);在运行时把Class文件字节码编译成本地机器码的过程;
优点:
通过在运行时收集监控信息,把”热点代码”(Hot Spot Code)编译成与本地平台相关的机器码,并进行各种层次的优化;
3、前端编译+JIT编译(Hotspot虚拟机)
前端编译+JIT编译方式的运作过程大体如下:
1、首先通过前端编译把符合Java语言规范的程序代码转化为满足JVM规范所要求Class格式;
2、然后程序启动时Class格式文件发挥作用,解释执行,省去编译时间,加快启动速度;
3、针对Class解释执行效率低的问题,在运行中收集性能监控信息,得知”热点代码”;
4、JIT逐渐发挥作用,把越来越多的热点代码”编译优化成本地代码,提高执行效率;
阅读全文
1 0
- Java的编译方式
- java的debug和release编译方式
- Java的三种编译方式
- java的debug和release编译方式
- 同一java文件的不同方式的编译结果
- java中不带package和带package的编译运行方式
- java中不带package和带package的编译运行方式
- java中不带package和带package的编译运行方式
- Java实现动态编译的两种方式
- java中不带package和带package的编译运行方式
- java中不带package和带package的编译运行方式
- 模块的编译方式
- Cython的编译方式
- GRPC编译工具protoc-gen-grpc-java编译proto文件的方式
- 编译方式和解释方式的区别
- .NET 的JIT编译方式
- 编译framework的正确方式
- Java CMD方式编译并执行带包路径的Java文件
- php+crontab+shell方案实现的秒级定时发起异步请求回调方案
- leetcode-349. Intersection of Two Arrays
- TensorFlow Lite 正式发布,谷歌移动端深度学习框架
- Spring框架之基础类—AnnotatedBeanDefinition接口
- 1-2 输出N个数的平方和立方值
- Java的编译方式
- Maven项目 混合编译Java和Scala
- opencv-使用GrabCut提取背景图像
- LeetCode717. 1-bit and 2-bit Characters 解题
- 【Android】Android防止过快点击造成多次事件执行(防止按钮重复点击)
- 架构师考试经验总结
- Timing相关
- oracle中range/rows的区别
- 线程练习