首先我们来说一下跨平台性的概念:跨平台性是指不依赖操作系统,不依赖硬件环境
平台我们可以理解为:CPU+OS(操作系统),当然还有其他的一些硬件,我们把这些硬件和CPU统称为硬件环境。首先我们来谈下操作系统
对于操作系统,我们常见的有Windows、Linux、Mac,手机端还有Android,iOS等,就拿Java来说,不同的操作系统对应不同的JVM,由这些不同的JVM将不同的操作系统抽象为一个对于字节码文件统一的接口,也可以说是,JVM封装了这些不同平台的差异,给字节码文件一个统一的接口。使Java程序的执行不依赖于操作系统和硬件环境
我们经常存在一个误区:认为源程序能在不同的平台上运行就是跨平台,这种说法其实是不对的。所谓语言的跨平台性不是指源文件的跨平台性,而是编译后生成的文件的跨平台性。例如C语言源文件可以在Windows系统上运行,也可以在Linux系统上运行,但是在Windows编译后生成的exe文件放在Linux平台上就不能运行,它就需要在Linux系统上重新编译,生成能在Linux系统上执行的程序。