程序的运行环境 = 操作系统 + 具体硬件
硬件核心考虑参数为CPU,不同的 CPU 指令集不同,能解释的机器语言种类也不同,其只能解释自身的机器语言,也就是常说的cpu指令集
常见的有: x86、MIPS、SPARC、PowerPC
本地代码: 通过将源代码进行编译后生成的机器语言的程序成为本地代码(机器直接运行的代码)
源代码: 通过文本编辑工具书写的各类语言代码(高级代码,人更容易理解编写)
windows 应用程序的本地代码,通常是 exe 文件及 dll 文件等形式,CPU 负责解析并运行从源代码编译而来的本地代码
不同的操作系统 API 不同:
由于不同的操作系统所提供的 API 路径调用方式等不同,因此应用软件必须根据不同操作系统来做开发,将程序移植到其它操作系统时,需要重写应用中利用到 API 的部分,(像键盘输入,鼠标输入,显示器。文件等外围输入输出设备都是通过操作系统 API 提供的)
相同操作系统下:
API 调用方式一致,因而针对某特定类型操作系统开发的应用,在任何安装改操作系统的硬件上都可以运行
通过源代码分发实现克服 CPU 差异:
通过结合当前运行的硬件环境来编译应用的源代码,生成本地代码,实现克服 CPU 差异
通过虚拟机克服 CPU 差异:
例如使用 java 虚拟机,将 java 源代码编译成字节码后进行分发,在不同的操作系统上安装相适应的java虚拟机,在程序运行时,java 虚拟机在将字节码解释成本地代码进行运行,实现了一次编译到处运行,但也存在在影响运行速度的缺点(因为运行时需要去将字节码解释成本地机器码)