为啥感觉没有纯Linux的手机系统呢?不用虚拟机,硬件利用率百分百?
▎➜为啥感觉没有纯Linux的手机系统呢?不用虚拟机,硬件利用率百分百?
纯Linux而不需要虚拟机的手机系统当然有,火狐的FirefoxOS、Ubuntu Touch、三星Tizen操作系统、以及曾经大名鼎鼎的Megoo都是没有虚拟机的。
Android使用虚拟机是因为采用了Java作为核心开发语言,Java足够成熟、生态健全、开发者众多,这是Android早期发展迅速的主要原因,当然Android的高速发展也给了Java第二春。Oracle公司现在又在作死,各种用Java的问题刁难Google,Google推出Flutter框架、扶持Kotlin,以及打造Fuchsia操作系统,就是为了能够找到取代Java甚至直接取代Android的解决方案。
值得提一下的是尽管Megoo系统随着诺基亚的失败而消失了,不过Megoo系统的很多理念到现在还被iOS和Android系统借鉴,现在智能机的主要手势操作基本上全是借鉴Megoo操作系统的设计理念。
Android为什么要用虚拟机
Android诞生之初并不是师出名门,后来被Google收购也算是傍上了大款,Android使用虚拟机的主要原因还是因为Java,因为Java有足够好的凯源生态,更重要的是Java有成熟的开发者生态,最最重要的当然还是Java是第一大编程语言、背后有最多的开发者。
Android诞生之初,跟Java普遍使用JVM家在字节码文件(
.class
),Android的虚拟机是Dalvik虚拟机,每次运行程序,Dalvik负责加载dex/odex文件然后解析成机器码让Android系统调用。2010年5月20日,Google正式向外界发布了版本代号为Froyo冻酸奶的Android2.2版本,这是Android第一个成熟版本,Google在这个版本的虚拟中加入了即时编译、也就是我们通常所说的Just-In-Time Compiler(JIT)编译器,Dalvik使用JIT进行编译,JIT可以对经常使用的dex/odex进行编译和优化,将其翻译成精简的Native Code执行,引入JIT之后Dalvik性能提升了3到6倍。
2013年10月31日,Google正式对外发布代号为Kitkat的Android4.4,Google为了改善Android糟糕的用户体验,开发了全新的虚拟机运行环境,也就是Android Runtime(ART),在这个版本中Google还有了新的编译策略Ahead of time(AOT),不过这时候ART和Dalvik共存,直到2014年10月16日代号为Lollipop棒棒糖的Android5.0版本,ART彻底取代Dalvik,AOT成为了唯一的编译模式,AOT相对于JIT的优点是,JIT是运行时动态编译,每次运行程序的时候都要编译,AOT则是静态编译,应用在安装的时候就已经完成了编译,程序运行的时候不用重新编译,这才是真正的本地应用概念。
ART还对垃圾回收机制进行了改革,ART只有一次垃圾回收暂停、而Dalvik有两次,ART在垃圾回收保持暂停的时候并行处理,ART还优化了垃圾回收的效率,让系统能够及时垃圾回收、及时减少后台内存使用和碎片化问题。
不过在Android7.0之后JIT又重新回归了,AOT/JIT混合编译模式又重新回归了,混合编译当然有优点,不过还是很难解决Android存在的各种问题,毕竟Android的问题一大部分是Java自身的问题,除此之外Android生态本身也比较混乱,这也是Android体验差的重要原因之一。
▎⊱为啥感觉没有纯Linux的手机系统呢?不用虚拟机,硬件利用率百分百?
纯Linux的手机操作系统,没有中间虚拟机不是没有,还挺多的,比如Ubuntu Touch,火狐操作系统,三星Tizen操作系统,还有号称首款真正的Linux智能手机Librem 5。
这些系统发展的并不好,导致很少进入大众的视线,让你觉得好像所有的操作系统都是Android的虚拟机架构。
有些人说为这些没发展起来的手机是因为界面丑,其实不然,Android早期的版本1.0. 2.0也丑的要命,就是它的引入的Java虚拟机,引来了无数Java开发者加入,快速的构建起了Android的开发生态。逐渐发展成今天你们看到的样子。
你们都还看过那些纯Linux的手机操作系统呢?晒出来。
▎︶为啥感觉没有纯Linux的手机系统呢?不用虚拟机,硬件利用率百分百?
单纯的Linux系统很早就有了,很多朋友可能不清楚,早在2010年前,智能手机还没有IOS和安卓时,就分为几个流派,其中Linux就是其中的一个流派。
摩托罗拉在2003年推出了全球第一款内置Linux操作系统的Java手机,随后MOTO退出的A系列机器除了A1000都采用了linux系统,包括著名的A1200r,还有E6等产品也是基于Linux的,所以纯的Linux系统早就有了,而且适配ARM架构的智能手机系统也不是问题。
其实仔细想想也应该知道,Liunx在智能手机种的使用应该毫无问题,因为很多嵌入式软件使用的就是轻量化的Linux系统,而且即使是安卓本身其实也是基于Linux的,因此Linux系统的使用基本上不存在问题。
但是,安卓使用虚机有他本身的优势。虚拟机最大的优势就是屏蔽了底层的硬件差异,无论是JVM还是DVM其实都是类似的思想。这对开发者来说是有优势的,开发者无需考虑适配智能手机复杂的硬件环境,基于统一的JVM就可以开发APP调试上线,甚至可以通过模拟器模拟调试APP的运行,这样开发者的效率是提升的,所以安卓的生态会更好一些。
如果说是Linux缺乏图形化界面,这个问题其实也不存在。因为不管是早前的摩托罗拉,还是曾经昙花一现的Ubuntu,图形化界面都不存在问题,那么主要的问题我觉得就是生态问题,生不逢时导致生态无法建立,最终没有成为主流的智能手机操作系统。
比如在2010年以前,触摸屏手机没有诞生之前,智能手机是塞班的天下,除了Windows Smartphone借助PDA的优势有一点机会。其他智能手机系统根本就没有机会,所以那时摩托罗拉的Linux系统也就是当功能机使用,根本没有开发多任务系统,APP也都是靠Java虚拟机来撑着。
所以那时候NOKIA的塞班一家独大,基于Linux的原生智能系统根本就没有厂家有计划的开发,所以Linux没有生态也没有机会。
那么到了2010年后,好不容易NOKIA的塞班要被颠覆了,但是IOS和安卓又崛起了,Linux原生系统又没抓住机遇,所以再让开发者基于后来的Linux系统开发生态,开发者的成本太高,收效太差,所以Linux也没有土壤。
试想一下,如果那时崛起的不是安卓,而是基于Linux的原生触摸屏系统,那么我觉得Linux原生的触摸屏系统说不定还真有机会。对于OS市场只能容忍1、2家,开发者没那么多成本和精力,错过就错过了。
所以,一方面是安卓架构对开发者天然有优势,另一方面的确是因为时机上,Linux原生系统一直错过了
▎➢为啥感觉没有纯Linux的手机系统呢?不用虚拟机,硬件利用率百分百?
不能说没有纯手机linux系统,ubuntu touch firefoxOS Tizen等等,ubuntu touch可以自行下载刷机,但支持的机型少。不知道 题主是否知道刷机,曾经安卓刷机成风。什么 MIUI CyanogenMod(团队被三星收了)LineageOS 魔趣 乐蛙等等 ,这些第三方安卓系统做到现在留下来的快没了,这些原生硬改的系统都不能支持所有的安卓手机为何?手机型号厂商太多了,硬件都不一样,需要重新开发驱动,界面等。比如一个相机,每台都不一样,你找sony要驱动不给怎么办,就算给了,那cpu端的DSP高通又不给怎么办?以前我的三星 glacier刷三方系统,系统流畅,相机渣渣,驱动无法解决,就算解决了,还要开发者写相机算法。工程很大。再回来说Linux,也一样这么多手机硬件要从底层重新构建,不像苹果一年就出一部手机。软件写好了关键还卖不到钱,Linux本身就是免费的码农们自愿维护的系统,主要用在服务器上,消费端生态比较差,操作容易程度更差,装个软件还要去下各种支持库,一般人哪里懂。所以呵呵,没有个大财团加上几家大手机厂商去推动是非常难的。想想当年Google首发安卓时的厂商阵容,全球大的手机厂商,软件商都来了,Google面子大啊,有钱,而且技术积累深厚。自己程序加支持的开源项目程序员都好几十万人了。所以没有颠覆的系统,现在想插一脚很难的。
▎╣为啥感觉没有纯Linux的手机系统呢?不用虚拟机,硬件利用率百分百?
目测你根本不知道什么是Linux!
------------------
推荐阅读:
出租车、网约车的专职司机每天在车上窝十多个小时以上,长此以往对身体有什么影响?
下一篇: 金陵十二钗正册都有谁?