那不就是Linux手机?很多厂商做过,不了了之。安卓要不是傍上JAVA,也不会有如今的局面。JAVA开发者比C/C++多太多了。WP就死在这上面。IOS要不是有硬件支撑,也早死了。 安卓起初的时候是要做一套跨平台的移动系统,事实上以前也出现过X86和MIPS的手机,只不过后来被ARM一统天下,才会让人觉得这个JVM是个累赘。 这两款系统使用的开发语言不同。 安卓系统的底层建立在Linux系统上。采用的是虚拟机运行机制。 IOS是基于UNIX系统,IOS采用的是沙盒运行机制。 两者后台制度也不同。IOS中任何第三方程序都不能在后台运行。安卓中任何程序都能在后台运行,直到没有内存才会关闭。 所以安卓为了保证能流畅运行。不得不把内存提的更高。才能稳定流畅运行。就像目前市面上苹果4G的运行内存非常流畅。然而安卓已经达到6G,8G甚至12G的运行内存了。 安卓在运行内存足够的情况下,与系统的UI优化。流畅性相当的高。运行处理,操作速度已经与苹果iOS系统相差无几。甚至有些方面已经超越了苹果iOS系统。 这个问题的答案我前面有一篇关于三星销量全球第一的文章中曾经提到过,这里我再说一下。 在正式说这个事之前,让我们回忆华为被谷歌关闭GMS事件。可能绝大部份看官对GMS是什么都不清楚,但引发的后果很多人还是很清楚的,那就是华为手机基本退出了海外市场,换句话说,华为手机在国外没人买了。一个GMS关闭为什么会让华为丧失海外市场呢?这就需要我们了解一下安卓系统到底怎么用。 很多人说安卓开源,IOS闭源,也对也错。安卓系统适配全球绝大多数品牌的手机,从这个角度来看,它是开源的,但涉及到具体的运行,其实安卓和iOS并没有太大的区别。 在国外,所有的安卓手机安装软件,大多数途径都是经过谷歌商店下载。这个谷歌商店就有点类似于苹果的App Store,都是经过审核的。所以在国外的安卓手机,你不管是购买收费软件,还是在游戏内充值内购,谷歌公司都会提成,提成率和苹果差不多。而谷歌要做的,就是对这些软件进行把关。未经过用户同意,后台自启,后台下载甚至安装推广其他软件,有这种行为的软件在谷歌商店中是无法上架的。这就意味着国外在谷歌商店的把控下,各软件商的行为是没那么离谱的。没有后台启动,没有默认安装,安卓系统,特别是三星这类旗舰机的使用时间还是不错的,穷一点的,用个三五年,没什么问题。而华为被谷歌关掉GMS,也就意味着国外的华为手机用户无法通过谷歌商店下载应用软件,你可以想象一下一部苹果手机如果不能用App Store下载软件,这就意味着一部智能手机变成了一部功能机,只能接打电话,收发短信。那我要这部苹果手机做什么?正是因为这样,华为在海外手机市场瞬间清零,没人要了。 通过这个事情可以看出,安卓系统的软件在国外并不是无法无天,有谷歌商店把关,安卓系统的流畅程度是不弱于IOS的,这也是为什么三星手机售价不低于苹果的前提下,他的销量也始终和苹果不相上下,更多时候甚至是压苹果一头。 可这种情况在国内就完全不一样了。 由于谷歌公司从2008年开始就退出了中国,导致中国手机虽然可以使用安卓系统,但软件上架的权利却不在谷歌,也没有谁对软件把控,致使安卓软件在中国的手机软件市场野蛮发展,无论一个什么软件,要通讯录,要照片权限,要相机权限。整个就是一无法无天。而我们在使用安卓手机的时候,各种默认安装,各种后台自启,谁扛得住?也就是现在的新手机普遍使用6+128配置,才让卡顿好一些。以前的安卓根本就用不到一年就要人命,这还不分品牌。说到底,这不是手机厂商的问题,也不是安卓系统的问题,是手机软件无人监管的问题。 但这个问题是只有中国的安卓才特有的问题,其他地方的安卓用得都杠杠的,人家谷歌公司都退出中国了,凭什么管我们这边呢?所以我们这边的安卓机就只能继续卡了。 这是因为安卓系统采用了Java编程语言,所有的APP都是用Java语言编写的,而Java语言离不开虚拟机。 Java语言 Java语言是1995年5月发布的,有一个很重要的特性就是跨平台 ,借助虚拟机机制解释源代码调度硬件资源。用Java编写的代码,首先需要将源代码转换成字节码,然后在设备上运行时,再将字节码编译或者解释成硬件能够听得懂的01机器码。 也就是说,从Java的字节码到机器码,需要两样东西: 1)虚拟机 ,实现硬件资源的调度,也是实现跨平台的关键因素,屏蔽不同硬件平台的差异。 2)解释器或者编译器 ,将java字节码编译成01机器码,不过编译器实现代码的一次编译,形成二进制文件;解释器是执行一句翻译一句。可以看出编译器的效率要高很多。 Android系统的演变 Android系统诞生于2003年,早期是为数字相机开发的系统,后来发现用处不大,加上智能手机的快速发展,于是android系统成为一款面向智能手机的操作哦系统。直到2005年7月,android被google收购,才真正的被发扬光大,goolge联合84家硬件制造商,成立开放手持设备联盟,共同推动android系统的发展,才成就了今天的android系统,成为全球第一大智能手机操作系统。 我们来看一下android系统的不同版本: Android 1.0 ,2008年推出,采用了一个名为Dalvik的虚拟机,集成了一个解释器,app运行时,调用这个解释器,对代码逐行解释,执行效率低,速度很慢; Android 2.2 ,2010年推出,引入了JIT(Just In Time)机制,即时编译机制,当app运行时,直接编译成01这样的机器码,不用一句一句的翻译。当出现不常用的功能时,再调用解释器翻译,加快了运行速度,但是启动app时,每次都要重新编译,不能一劳永逸; Android 5.0 ,2014年推出,将虚拟机Dalvik换成了ART(Android Run Time),同时将JIT的编译器换成了AOT(Ahead of Time),这样App安装到手机的同时,代码预先编译成01机器码,不太好翻译的代码,仍然用解释器翻译,从此每次打开app时,不需要重新编译了,但是app的安装时间有点儿长,占用手机存储空间比较多; Android 7.0, 2017年推出,采用了混合编译的机制,安装时先不编译成中间代码,而是用户空闲时,将能够编译成机器码的部分,通过AOT编译成静态代码,不能编译的,调用JIT+解释器。 可以看出,google一直在对android系统的解释器、编译器进行优化,提升执行效率。但是无论是编译器,还是解释器,都是在虚拟机上打补丁,本质上仍然没有彻底摆脱虚拟机。 华为"方舟编译器" 我们看一看华为的方舟编译器是如何解决这个问题的。首先,方舟编译器不是一蹴而就的,而是从2009年就开始了研究了,同年华为也开始了5G技术的研究,直到10年后,也就是2019年4月,华为才正式推出方舟编译器。 方舟编译器,绕过了android操作系统app运行时必须依赖的虚拟机,将java、C、C++等混合代码一次编译成机器码,可以直接运行在机器上,没有JNI开销,最终也提升了手机的流畅度。 严格说,方舟编译器是一个编译运行系统,需要开发环境和智能手机终端的配合 ,华为的EMUI 9.0以上的系统都支持方舟编译器,经方舟编译器编译的app,提升了运行效率,直观体验就是手机更加流畅。 如果觉得对你有帮助,可以多多点赞哦,也可以随手点个关注哦,谢谢。 要回答好这个问题,首先要明白什么是虚拟机,以及虚拟机能干啥? 我们都知道,不是所有的程序都能在所有的电脑上运行,程序分为多种版本,拿最常用的微信来说,就有Mac版、iOS版、安卓版和Windows版。 大家可能看出来,应用程序的不同版本是按不同的操作系统划分的,由于不同的操作系统和不同的硬件结合在一起,比如安卓和ARM处理器,Windows和英特尔、AMD处理器,iOS和A系列处理器等等。也就是说,应用程序能否运行,取决于操作系统和它背后的硬件,这在软件行业里有一个说法叫:应用程序的运行环境=操作系统+硬件。 其中,硬件对应用程序运行环境的影响因素更大一些,因为CPU只能解释其固有的机器语言,不同的CPU能解释的机器语言(本地代码)自然不同,然后带来操作系统的不同,最终导致不同的运行环境。 应用程序为了能在不同的运行环境下跑起来,就需要开发不同版本的应用程序。 这是一个让应用程序开发商头大的问题,因为开发不同版本的应用程序,需要雇佣一定数量的程序员,租用相应的办公场所,花费一定的时间,这些都增加了软件开发商的运营成本。为了解决这个问题,软件行业想出办法:利用虚拟机获得其它操作系统环境,也就是让同样的源代码写成的应用软件,能在不同的硬件和操作系统上运行。 比较著名的虚拟机软件有微软出品的"Virtual PC for Mac",有了它,苹果的Macintosh用户也能在Mac操作系统上运行Windows应用了,把苹果电脑用出PC的感觉。 2006年,微软终止"Virtual PC for Mac"的开发,因为苹果电脑换"芯"了,从PwoerPC换成英特尔的CPU,软件运行环境变了。 安卓也有自己的虚拟机,它叫Java虚拟机,简称JavaVM(Java Virtual Machine)。 Java虚拟机是个神奇的存在,它把过去复杂的软件运行环境简化了,不同的Java虚拟机(见下图)对应不同的操作系统和CPU,使程序员不用关注操作系统和CPU的差异,只要你的源代码是用Java语言写成,就可以在所有具有Java虚拟机的操作系统上运行。 虚拟机的另一大好处是,写应用程序和操作系统的编程语言可以不相同,甚至风马牛不相及。iOS和安卓操作系统的源代码都是用C语言写成,而C语言是较早出现的高级编程语言,入门门槛较高,而安卓的应用程序是用Java编程,是一种更高级的编程语言(iOS的应用程序编写语言是swift),入门门槛较低,掌握的难度较低,方便吸引大量人员进入应用程序编程行业。从这里可以看出,Java虚拟机是应用程序能够在安卓系统运行的前提,它创造了应用程序运行的环境,没有它,应用程序根本就跑不起来。 iOS是基于Unix系统开发,而Unix系统的FreeBSD中有作用类似虚拟机的机制,名叫Ports,它能够结合当前运行的硬件环境(包括CPU、内存、输入输出设备等),把应用程序的源代码编译成可以运行的机器语言。 换句话说,不管是安卓的虚拟机,还是iOS的Ports机制,都是为了给应用程序提供一个可以运行的环境,不存在谁优谁劣的问题。 众所周知,安卓是基于linux内核,通过现有的内核实现对硬件的控制,文件系统,网络通信,进程管理等工作。 那么为什么选择虚拟机,很好理解,一个操作系统想要获取成功,各种应用的数量与质量十分关键,这就是生态圈。你制作一个操作系统,却没有第三方应用是万万不行的,那么选择已经获得广泛支持的JAVA,便是一个捷径。所以,安卓自研发时,便引入了JAVA虚拟机的机制。虽然虚拟机效能比不过原生应用,但是可以通过编译技术的改进,硬件性能的提高,从而满足性能需求。 那么回到楼主的话题,为什么不放弃虚拟机机制,安卓发行这么久,放弃虚拟机等于和过去所有的应用说再见,这是不可接受的。另外由于安卓对Linux内核进行针对性的精简,没有Linux运行库及图形界面,也无法运行原生Linux应用。原生linux多数是个pc适配,即便允许在手机上运行,也不适用。 除非另辟蹊径,另外研发高效能虚拟编译机制,但是软件得推倒重来,全部重写,为了获得广泛兼容,也保留原有java的支持,这点也是华为鸿蒙系统的设计思路。 打个比方:安卓现在的系统版本是11,你现在把新系统12里面的虚拟机去掉,那么你这个系统就不能向下兼容。以前手机厂家花个上百万就可以改改安卓系统,以更好的兼容自家的产品,现在去掉虚拟机之后要花上亿的钱去做新系统跟自己产品的兼容,手机利润才多少?这么做不会亏死?就算做了,如果反响不好不得被喷死?就算不被喷,但是以前的老用户就用不了新系统,老用户不喷你?所以你还得搞一个维护老用户系统的团队,但是成本又增加了,你还有多少利润?亏不死你才怪。 众所周知,苹果手机使用的是IOS系统,其速度、流畅度都要比国产机的Android系统高,其实Android系统不能不能提高速度和流畅度,比如华为自研了"方舟编译器"就能大幅度的解决这一问题,它可以绕过虚拟机机制,提高安卓设备的运行速度,但因为Android系统是属于美国谷歌公司的,而谷歌公司又中断(制裁)了与华为公司的合作,所以华为不能使用GMS,因此Android系统自身的流畅度一直并未得到明显的改变,只不过是因为手机处理器的性能越来越高了以后,而显得"速度快"了而已! 还有,Android系统和ios系统的开发语言是不同的,这就迫使了安卓系统必须要使用虚拟机机制,这是无法改变/无法割除的,所以只能"曲线救国",采取别的方法来提高运行速度,而华为公司在这方面做的就不错,它们自主研发了HMS,可以让APP绕开虚拟机,因此流畅度要比原始的Android系统快60%左右,咱们就拿支付宝和微信这两大支付软件来举例吧: 支付宝支持华为的方舟编译器 ,所以打开速度快,并且长按图标以后,还会出现快捷支付的选项,比如"收钱""付钱""扫一扫"等等 微信就不支持了 ,所以打开速度、支付速度都没支付宝快,长按图标也只是出现卸载的选项,并没有快捷支付的功能! 安卓有ARMv7/v8版、X86/x64版、MIPS版、RISK-V版、SPARC版,而ios只有一个ARMv8版,v7都不支持的你说哪个效率更高。所以谷歌又搞了一个针对上网本的ChromeOS和Fuchsia,这俩货 就 只 支持 ARM和 x86了 ,性能 比 安卓 有所 提升 。 两个字版权,linux内核是开源的!而且是最Nb 的GPL!凡是引用修改衍生这个协议的软件,必须也是开源的,遵从GPL的!所以安卓也是开源的遵从GPl的!同理所有在安卓上开发的应用也必须遵从!(你必须使用API之类的库接口吧?),你可以脑补一下二马家的都开源,这会导致APP开发商抵制,于是乎就有了虚拟机这个思路,所以APP运行在vm中可以避开GPL 当然还有其他优点,但这个最重要!所以说乌班图这类的手机系统我不大看好,毕竟开源不是money 人人爱