问题:
软件的运行环境指的是什么?
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#。