计算机程序语言按程序的执行方式可分为编译型语言和解释性语言。
编译型语言是指使用专用的编译器,针对某操作系统将高级语言源代码一次性地翻译成可被该系统硬件执行的机器码(包括机器指令和操作数),并包装成该系统所能识别的可执行程序的格式。 可执行程序可脱离开发环境,在该系统上独立运行。
解释型语言是指使用专门的解释器直接对源程序逐行解释成特定系统的机器码并可立即执行的语言。
C/C++是编译型语言。编译过程如下:
在windows上最终生成PE文件(.exe),在Linux上生成ELF文件。
可分别在各自系统直接执行,但不能跨系统执行。
而且同一份代码由于操作系统的不同,以及一些类库和规范不同,有可能无法跨平台编译。
Java是半编译型,半解释性语言。编译执行过程如下:
Java 编译器(javac)先将java源程序编译成Java字节码(.class), JVM负责解释执行字节码文件。
字节码文件具有平台无关性,只面向JVM。
JVM是Java程序跨平台的关键部分。 不同系统有不同的JVM, 相同的Java字节码通过不同的JVM解释成不同系统上可执行的指令,并执行。