Java语言先编译后解释

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/strivenoend/article/details/82588640

1 编译型语言与解释型语言的区别       

 

    计算机是不能理解高级语言,当然也就不能直接执行高级语言了。计算机只能直接理解机器语言,所以任何语言,都必须将其翻译成机器语言,计算机才能运行高级语言编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。

       编译型语言:程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
       解释型语言:程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。
       C/C++ 等都是编译型语言,而Java,C#等都是解释型语言。
       虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是将它编译成字节码(可以理解为一个中间语言)。在运行的时候,由JVM将字节码再翻译成机器语言。 

2 Java语言要先编译后解释

 

Java是一种特殊的高级语言,其既具有编译型语言的特征,又具有解释型语言的特征,因为Java语言要经过先编译、后解释才能被执行。 

前面介绍了编译型和解释型语言,Java语言比较特殊,由其编写的程序需要先编译,但此编译不会生成特定平台的机器语言文件,而是生成一种和平台无关的字节码文件,也就是*.class文件,这种字节码文件不是可执行文件,它必须使用特定平台的解释器来解释执行。

 

先编译成字节码文件,也即*.class文件:程序员使用Java语言编写的*.java源文件,需要使用javac编译器编译成字节码文件,也即*.class文件。注意:该字节码文件与平台无关,可被特定平台的Java解释器执行。

然后根据不同平台的Java解释器,将字节码文件解释成特定平台的机器文件:Java语言中负责解释字节码文件的是Java虚拟机,即JVM(Java Virtual Machine)。不同平台,各自实现了其JVM,JVM向编译器提供相同的编程接口,所以可解释编译器生成的字节码文件,将其解释成特定平台的机器语言文件。

因此java语言的编译系统也是有编译程序和解释程序两部分组成。java-----.class 编译程序

。classs=--====运行(解释程序)

猜你喜欢

转载自blog.csdn.net/strivenoend/article/details/82588640