那不就是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,提升了运行效率,直观体验就是手机更加流畅。
如果觉得对你有帮助,可以多多点赞哦,也可以随手点个关注哦,谢谢。