问题: 软件的运行环境指的是什么? Windows的应用程序能够在Linux运行吗? Java虚拟机是什么原理? 1.软件的运行环境指的是什么? 软件的运行环境是指在什么操作系统下运行、需要什么样的硬件配置等。 那么什么是操作系统呢? 在操作系统出来之前,一般的软件只是针对于某一台电脑而编写的,因为在别的电脑上可能不能运行。基于这些问题,此时,我们伟大的操作系统就出现了,微软出现 ms-dos 操作系统,最开始的这个系统相当于一个软件,相当于一个壳,我们只需要写符合这个壳的规则的软件,那么就能在每一台电脑里来运行这个程序,这个时候,伟大的操作系统就诞生了。它克服了电脑之间的差异,让我们能够更好地驾驭我们的软件,我们只需要关心和这个壳之间的通信,而不用关心与硬件先关的东西。 操作系统具有以下特点 它克服了硬件差异 提供了统一接口(标准化 统一的API) 伪装平台(比如Java,因为它有Java虚拟机) BIOS及引导 BIOS存储在主板里面,主要进行硬件检测,以及对磁盘进行引导。为什么要进行引导呢?因为操作系统也是一个软件,它也是需要有人把它给运行起来才能工作,我们可以设置BIOS在哪个磁盘开始引导,那么它会在这个磁盘开始加载需要启动的操作系统,从而达到开机就运行我们的操作系统的目的。BIOS及指引导(开机时,会有硬件自检,还会对硬盘进行引导,从磁盘中加载需要启动的操作系统) 2.Windows的应用程序能够在Linux运行吗?答案是否定的,因为: 目前的操作系统:Windows、Linux、Mac 这三个操作系统实现的功能是一样的,但是它们又各自有各自的API,如果想让我们的代码在三种平台下运行,那么我们要进行三次编译。 3.Java虚拟机的原理是再次对不同的操作系统进行封装。 跨平台原理: 一种办法是,一次编写,处处编译,再运行(可以先获取操作系统信息,根据不同的操作系统来执行对应的代码) 另一种方法是,在三种操作系统的基础上,再加一层,把各个操作系统的API给封装起来,来达到一次编译,处处运行的目的,但是这样的跨平台是一种伪跨平台,并不是真正的跨平台。比如Java和c#。