使用Java语言编写应用程序最大的优点在于“一次编译,处处运行”,然而这并不是说所有的Java程序都具有Java跨平台的特性,
事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的。
Java字节码的两种执行方式:
1.即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。
2.解释执行方式:解释器通过解释一段执行一段的方式来完成Java字节码程序的全部操作。
Java程序执行和C++程序执行的对比分析:
Java源代码就好比C++源代码
Java源代码编译后的字节码就好比C++源代码编译后的80x86机器码(二进制程序文件)
JVM虚拟机好比80X86计算机系统
Java解释器好比80X86的CPU
真正的80X86CPU上运行的是机器码
而在Java解释器上运行的是字节码
可以把Java解释器想象成运行了“Java字节码”的“CPU”,
但该“CPU”不是通过硬件实现的,而是用软件实现的。
Java解释器实际上就是特定的平台下的一个应用程序。
只要特定平台实现了Java解释器程序,Java字节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本。
当然,并不是在所有的平台下都有相应Java解释器程序,这也是Java并不能在所有的平台下都能运行的原因,它只能在已经实现了Java解释器程序的平台下运行。
机器码(machine code)是一种机器指令的集合,有时也被称为原生码(Native Code),是计算机的CPU可直接解读的数据。