首页 > 编程语言 > 详细

为什么说Java既是编译型语言又是解释型语言

时间:2021-04-07 09:21:03      阅读:23      评论:0      收藏:0      [点我收藏+]

首先我们需要了解Java 程序从源代码到运行的过程:

  Java 程序从源代码到运行一般有下面 3 步:

                                技术分享图片

 

  1、代码书写完成之后,保存成.Java文件。

  2、.Java文件运行时,Java不是直接编译或解释成机器码文件的,它会先通过JDK中的javac.exe编译成Java虚拟机(JVM )可理解的字节码文件,此时,Java使用了编译。

  3、字节码文件之后会被虚拟机JVM逐行解释成机器可执行的二进制机器码,此时,Java使用了解释。

  4、从.class文件到机器码这一步, JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT 编译器,而 JIT 属于运行时编译。

  当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。而我们知道,机器码的运行效率肯定是高于 Java 解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言。

  Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。

 

为什么说Java既是编译型语言又是解释型语言

原文:https://www.cnblogs.com/lsm-boke/p/14624646.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!