计算机是不能直接理解高级程序语言的,它只能理解机器语言,所以高级程序语言想在计算机上运行,都需要转化成计算机语言,也就是机器码,这种转化方式有两种:
1.编译
2.解释
区别在于编译型语言的源程序在编译后即可在该平台运行,解释性语言的源程序通常在运行期间才编译,所以前者的执行效率快,后者的跨平台性好。
| 编译型语言 | 解释性语言 |
简介 | 使用专门的编译器,在指定平台运行,将高级程序源代码一次性编译成可被该平台执行的机器码,并包装被该平台所能识别的可执行程序的格式。 | 使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行,在执行时才被解释器逐行动态翻译和执行,而不是在执行前就完成翻译。 |
特点 | 在执行之前,需要将源代码编译成机器语言的文件,如exe格式的文件,以后再运行时,直接运行exe文件,只需要编译1次,以后运行不需要编译,执行效率高。 | 执行之前不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只需要某一平台提供相应的解释器即可,跨平台性好。 |
总结 |
|
|
关于java
Java和其他的语言不太一样。因为java针对不同的平台有不同的JVM,实现了跨平台。所以Java语言有一次编译到处运行的说法。
1.你可以说它是编译型的:因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。
2.你可以说它是解释型的:因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。
3.但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。