这篇写得比较好,而且条例很清晰
点击这里可以查看
摘要整理:
1.C/C++ 等都是编译型语言,而Java,C#等都是解释型语言。
2.编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。
所以编译型语言快,但是缺点是跟平台关联性强。
3.虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是将它编译成字节码(可以理解为一个中间语言)。
在运行的时候,由JVM将字节码再翻译成机器语言
解释性语言相比之下多了一个“字节码”的间接环节,所以慢点,但好处是跨平台性强。
4.脚本语言是一种解释性的语言,例如vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以编译成二进制代码,以可执行文件(文本形式存在,类似于一种命令)的形式存在.
脚本语言不需要编译,可以直接用,由解释器来负责解释。
疑问:脚本如果也是一种解释性的语言,又不需要编译,那么,是否可以猜测,其就是一个“字节码”的可执行文件,只需要解释器将其转化为机器语言即可?哎,这么说来,脚本语言不仅快,而且跨平台能力又强咯?
ps:
名词解释:
1.JVM
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。