java培训
搜索分类

java编译方式怎么查?Java有几种编译方式?

赋能网 2023-05-09 97

java程序代码需要编译后才能在虚拟机中运行,并且还要保证java代码的正确性才能顺利进行java代码运行,那java编译方式怎么查?接下来我们就来给大家讲解一下java编译方式查询方式!

java编译方式通过编译文件可以查看。

Java有几种编译方式?

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)编译成与本地平台相关的机器码,并进行各种层次的优化;

可以大大提高执行效率;

缺点:

收集监控信息影响程序运行;

编译过程占用程序运行时间(如使得启动速度变慢);

编译机器码占用内存;

JIT编译器:HotSpot虚拟机的C1、C2编译器等;

另外,JIT编译速度及编译结果的优劣,是衡量一个JVM性能的很重要指标;

所以对程序运行性能优化集中到这个阶段;

也就是说可以对这个阶段进行JVM调优;

3、静态提前编译(Ahead Of Time,AOT编译)

程序运行前,直接把Java源码文件(.java)编译成本地机器码的过程;

优点:

编译不占用运行时间,可以做一些较耗时的优化,并可加快程序启动;

把编译的本地机器码保存磁盘,不占用内存,并可多次使用;

缺点:

因为Java语言的动态性(如反射)带来了额外的复杂性,影响了静态编译代码的质量;

一般静态编译不如JIT编译的质量,这种方式用得比较少;

静态提前编译器(AOT编译器):JAOTC、GCJ、Excelsior JET、ART (Android Runtime)等;

Java编译方式就是前端编译、即时编译以及静态提前编译,我们需要了解其编译方式的优点以及缺点,然后再根据实际情况去选择合适的编译方式!最后大家如果想要了解更多初识java知识,敬请关注赋能网。


发表评论
0评