计算机的高级语言可以分为编译型和解释型两类。编译型语言是指使用专门的编译器,针对特定的平台将高级语言代码一次性的翻译成平台硬件所执行的机器码,象c,c++就属于这类的语言。而解释型语言可以认为逐行解释成特定平台的机器码。
每次执行解释型语言的程序必须进行一次编译,其效率因此会受到影响,同时它不能脱离解释器。但这种类型的语言有一种明显的优势——跨平台比较容易。
下面来具体分析java语言的特点,java编译后不会生成特定平台的机器码而是生成一种与平台无关的字节码(.class文件),而生成的这种字节码必须使用java解释器执行。基于以上分析java既是编译型语言也是解释型语言。这里不得不提到解释执行字节码文件的java虚拟机(jvm),它是怎么做到使java做到跨平台的呢?这里我们为了理解jvm,我们可以将它理解为一个转换器。它提供向上和向下的两种接口,而向下提供的接口在不同平台上是完全相同的它对应的是编译生成的字节码文件,但向上的接口对于不同的平台则是不一样的。因此我们只要选择对于特定平台的jvm解释执行就可以做到跨平台。