安卓为什么一定要java虚拟机 安卓为什么要用虚拟机,而不直接在Linux系统上运行程序
大家好,关于安卓为什么一定要java虚拟机很多朋友都还不太明白,今天小编就来为大家分享关于安卓为什么要用虚拟机,而不直接在Linux系统上运行程序的知识,希望对各位有所帮助!
安卓为什么要用虚拟机,而不直接在Linux系统上运行程序
1.
因为本来Java在不同架构的CPU、不同操作系统上的开发就具有统一的优势。
2.
Java是语言,Linux是平台,语言一定要依靠于某个平台来工作。
3.
兼容性就是安装了JVM的机器都可以跑Java程序。
4.
Java虚拟机是为每个平台都提供的。也就是说,每一个平台都会编写一个特定的Java虚拟机。
5.
至于为什么其他软件不能运行在其他操作系统上,这个取决于底层的体系结构和接口
Linux和Windows的文件结构都不一样,而且操作系统的架构相差特别多,而且底层的接口也是相差巨大,特别是在库文件方面。
6.
Android系统和Linux发行版的系统根本区别是Android上面只跑了一个Dalvik/ART,而Linux发行版上面跑了很多Dalvik/ART而已。
7.
Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。
安卓系统是运行在java虚拟机上的这句话 什么意思
安卓底层是C写的,即linux内核,应用层是java语言写的,而我们都知道,java程序是运行在虚拟机上的,安卓程序也是java程序,它也是运行在虚拟机上,这个虚拟机就是安卓的应用层驱动程序
所谓的非智能机(Feature Phone)的系统本身并不是Java的,它只是能够运行Java开发的程序而已。而现在的智能机(Smart Phone),对于安卓系统来说,在App层,它基于Java开发出了一整套运行环境(再次强调,对于App层面来说是这样)。
Android可以对上层应用的开发提供各种API,一方面降低开发难度,另一方面也可以实现更强悍的功能。而以前的FP,只是能够运行Java的程序而已,其本身不对程序做任何支援。
安卓系统为什么一定要借助虚拟机来达到不同cpu的通用目的
借助虚拟机,最大的好处是简化了开发,比如安卓运行在x86之上和arm之上,只要安卓大版本一样,那么app的开发就是完全一样的(除了个别用到具体硬件特性的功能),这对于开发人员非常有利,因为不需要考虑不同硬件带来的差异,高通和华为海思这种同为arm的就更不在话下;
适配不同的硬件,主要问题是驱动程序的问题,这是在虚拟机这一层之下的,不至于说系统全部重写,但你可以了解一下编写驱动的难度,能写驱动的人水平跟在虚拟机写app的人的水平完全不在一个等级;
你的问法有问题,应该说是适配不同硬件,cpu只是其中一种硬件,其他的零部件都要去适配,就是2里面说的写驱动,安卓=linux内核+java虚拟机,不借助虚拟机也可以做到适配不同硬件,但是,第一,这就不是安卓了,第二,无法做到app快速简洁开发了,而且,安卓的体积会很恐怖,因为需要集成常见硬件的驱动,这个就好比是现在的windows,也是因为驱动不同,所以不同厂商,甚至同厂商不同型号手机的rom是无法通用的。
为什么JAVA运行要用到JAVA虚拟机,而 C 语言不用呢
我跟你清除点说,java是一次编译到处运行的,听说过这句话吧。其实java这个到处运行的特性被java虚拟机来完成了,所以java必须要虚拟机。从另一个角度,java程序首先被编译成*.class文件,然后,虚拟机在将*.class文件编译成本地机器能执行的机器语言,这步是由java虚拟机完成的;与c不同,c编译时一步到位,被直接编译成本地机器语言,所以一般来说c的执行速度要比java快,因为它少了一次编译。当然,c语言也就不可能实现一次编译到处运行这种特性了。
OK,本文到此结束,希望对大家有所帮助。