java
Hello,me第一次试水写博客!在很多小白(包括我,正宗小小白)刚开始学java的时候都会遇到一个问题,那就是java到底是编译型 还是 解释型。
下面就让小小白和大家分享一下吧!
先上结果:java语言比较特殊,它既不是纯粹的编译型语言,也不是纯粹的解释型语言。
讨论这个问题,那我们就必须先从根本出发,编译型和解释型的区别!
一、编译型:
编译型语言是指使用专门的编译器,针对特定的操作系统将某种高级语言源代码一次性"翻译"为可被平台硬件执行的机器码(机器指令、操作数,汇编语言中会学到),并包装成平台所能识别的可执行性程序的格式。(这种转换的过程就叫编译) 由此我们可以看出编译生成的可执行性程序可以脱离开发环境,在特定的平台上独立运行。
常见的编译型语言有:C、C++、Pascal
二、解释型:
解释型语言是指使用专门的解释器对源程序逐行进行解释成特定平台的机器码并立即执行的语言。解释型语言相当于把编译型语言的编译和执行过程糅合在一起。
我们可以认为:每次执行解释型语言的程序都需要进行一次编译(无论代码之前有没有被执行过),所以解释型语言的程序运行效率较低,而且不能脱离解释器独立运行。但它具有跨平台容易的特点,只需要提供特定平台的解释器即可。
常见的解释型语言:Python
三、java???
文章开头提到java特殊,那就一起来揭开她神秘的面纱!
java语言编写的程序需要先经过编译步骤,但这个编译步骤并不会生成特定的平台机器码,而是生成与平台无关的字节码(.class文件)。Of course,这种字节码是不可执行的,必须使用java解释器来解释执行。(还记得二中提及的解释型的优点吗?)
java 中负责解释执行字节码文件的是java虚拟机,即JVM(java Virtual Machine)。JVM是可以运行java字节码文件的虚拟计算机。所有平台上的JVM向编译器提供相同的编程接口,而编译器只需要面向虚拟机。