|
说起虚拟机我们很容易想起VMWARE,但之前还有个概念叫JAVA虚拟机,然而这2种虚拟机本质上是大不相同的。那么什么叫虚拟机呢?“虚拟机”这个概念在实际应用中有两种语境。第一种是“虚拟主机”的概念,第二种是“运行环境”的概念。这两种概念是不同的。
1、虚拟主机:,指的是操作系统内安装另一个操作系统。你如在Windows里,你可以装一个VMWare,然后在VMWare里安装一个Ubuntu Linux。这就是虚拟主机。Windows是一个操作系统,是装在硬件上的。VMWare是个软件,它模拟了一个和硬件相似的环境,让另一个操作系统可以安装运行在这个环境上。我们看Windows和Ubuntu Linux的关系,它们都是操作系统,是一个级别的。这种关系就像妈妈肚子里怀的宝宝,宝宝生活在妈妈的肚子里,妈妈和宝宝都是人,是一种寄生关系。
2、运行环境:“虚拟机”在做“运行环境”讲的时候,指的是操作系统被安装一个支持其他软件包运行的软件。最明显的例子就是“Java虚拟机”。所谓“Java虚拟机”是一个安装在操作系统上的软件,用于支持用Java编程语言编写的软件包的运行。它负责给java程序分配资源,帮助java程序做一些底层的工作,让java程序在它搭建的环境里运行。这时Java虚拟机也是操作系统上的一个软件,其他java如阿健要依赖它才能运行。它是一个底层的支持环境。微软有个仿照java架构的开发环境,即.NET work。这里就没有使用“Virtual Machine(虚拟机)”这个术语,而是用了“work(框架)”。这两个词实际的意义是一样的,都是Runtime Environment(RE,运行时环境),但是可能work更容易理解。它就是一个框架,其他程序可以在这个框架的支持下运行。现在除了技术界,Java官方对公众也尽量使用JRE(Java Runtime Environment),而不是JVM(Java Virtual Machine)的概念了。
Android的架构是第二种“虚拟机”。Android最底层是Linux操作系统,在这个操作系统上安装了一个叫Davilk的Java虚拟机。用Java编写的各种应用在Davilk的支持下运行。
云OS的架构也是第二种“虚拟机”。云OS最底层是Linux操作系统,在这个操作系统上安装了一个阿里的Java虚拟机。用Java编写的各种应用在该虚拟机的支持下运行。
可见,Android和云OS下运行的都是JAVA程序,可以互相兼容。
声明:本文仅代表笔者技术层面的见解,若对某公司的产品描述有误,请及时提出。