安卓为什么要用虚拟机,而不直接在Linux系统上运行程序?
因为本来Java在不同架构的CPU、不同操作系统上的开发就具有统一的优势。
Java是语言,Linux是平台,语言一定要依靠于某个平台来工作。
兼容性就是安装了JVM的机器都可以跑Java程序。
Java虚拟机是为每个平台都提供的。也就是说,每一个平台都会编写一个特定的Java虚拟机。
至于为什么其他软件不能运行在其他操作系统上,这个取决于底层的体系结构和接口 Linux和Windows的文件结构都不一样,而且操作系统的架构相差特别多,而且底层的接口也是相差巨大,特别是在库文件方面。
Android系统和Linux发行版的系统根本区别是Android上面只跑了一个Dalvik/ART,而Linux发行版上面跑了很多Dalvik/ART而已。
Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。