学习java已有一段时间,但是还说摸不清java到底是编译型语言还说解释型语言,然后网上查阅整理之后得到自己对java的认识——Java 是一门编译与解释共存的语言。
首先了解编译与解释的定义:
编译型语言:将做好的源程序一次性编译成二进制代码的可运行程序,然后就可以直接运行这个程序。
解释型语言:将源程序翻译成机器能理解的语言,翻译一句执行一句,直到结束。
java 比较特殊,以上两种方式都有所涉及,所以比较难区分。
java从源代码到运行的流程如下。
java源程序首先要经过一次编译形成字节码文件.class,此字节码文件不面向特定机器,而是面向JVM虚拟机的,具体面向机器的过程交由JVM来完成,不同的操作系统有着不同版本的JVM,这些JVM并不相同,但是他们都能够识别相同的.class字节码文件,将字节码文件翻译成特定机器的二进制码来执行。所以java 的跨平台性就是java源程序编译成的.class文件,在任何操作系统上通过该系统对应的JVM都能够顺利执行,java跨平台不等于JVM跨平台,JVM是非跨平台的!
从java源程序到执行的过程可以看见,这个过程即有了编译步骤也有解释步骤。但是本质上来讲,编译的最终结果也只是.class文件,不是机器码,最终还是需要JVM来统一解释,所以更多的应该将java视为解释性语言。
由于解释性语言性能比较低,后来java引入了JIT编译,某些被频繁执行的方法或者代码块,会被JVM认定为“热点代码”。在运行时JVM会把这些热点代码编译成与本地平台相关的机器码,并且进行各种层次的优化,以提高执行效率。
Java 是编译与解释共存的语言
最新推荐文章于 2024-04-15 21:56:42 发布