为啥感觉没有纯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\u002Fodex文件然后解析成机器码让Android系统调用。
2010年5月20日,Google正式向外界发布了版本代号为Froyo冻酸奶的Android2.2版本,这是Android第一个成熟版本,Google在这个版本的虚拟中加入了即时编译、也就是我们通常所说的Just-In-Time Compiler(JIT)编译器,Dalvik使用JIT进行编译,JIT可以对经常使用的dex\u002Fodex进行编译和优化,将其翻译成精简的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\u002FJIT混合编译模式又重新回归了,混合编译当然有优点,不过还是很难解决Android存在的各种问题,毕竟Android的问题一大部分是Java自身的问题,除此之外Android生态本身也比较混乱,这也是Android体验差的重要原因之一。
-----
网友解答:
纯Linux的手机操作系统,没有中间虚拟机不是没有,还挺多的,比如Ubuntu Touch,火狐操作系统,三星Tizen操作系统,还有号称首款真正的Linux智能手机Librem 5。
这些系统发展的并不好,导致很少进入大众的视线,让你觉得好像所有的操作系统都是Android的虚拟机架构。
有些人说为这些没发展起来的手机是因为界面丑,其实不然,Android早期的版本1.0. 2.0也丑的要命,就是它的引入的Java虚拟机,引来了无数Java开发者加入,快速的构建起了Android的开发生态。逐渐发展成今天你们看到的样子。
你们都还看过那些纯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系统,ubuntu touch firefoxOS Tizen等等,ubuntu touch可以自行下载刷机,但支持的机型少。不知道 题主是否知道刷机,曾经安卓刷机成风。什么 MIUI CyanogenMod(团队被三星收了)LineageOS 魔趣 乐蛙等等 ,这些第三方安卓系统做到现在留下来的快没了,这些原生硬改的系统都不能支持所有的安卓手机为何?手机型号厂商太多了,硬件都不一样,需要重新开发驱动,界面等。比如一个相机,每台都不一样,你找sony要驱动不给怎么办,就算给了,那cpu端的DSP高通又不给怎么办?以前我的三星 glacier刷三方系统,系统流畅,相机渣渣,驱动无法解决,就算解决了,还要开发者写相机算法。工程很大。再回来说Linux,也一样这么多手机硬件要从底层重新构建,不像苹果一年就出一部手机。软件写好了关键还卖不到钱,Linux本身就是免费的码农们自愿维护的系统,主要用在服务器上,消费端生态比较差,操作容易程度更差,装个软件还要去下各种支持库,一般人哪里懂。所以呵呵,没有个大财团加上几家大手机厂商去推动是非常难的。想想当年Google首发安卓时的厂商阵容,全球大的手机厂商,软件商都来了,Google面子大啊,有钱,而且技术积累深厚。自己程序加支持的开源项目程序员都好几十万人了。所以没有颠覆的系统,现在想插一脚很难的。
-----
网友解答:
目测你根本不知道什么是Linux!
-----
网友解答:
使用Linux发行版的手机系统
目前使用Linux的手机系统并不常见,国内几乎没有人谈论,而在国外却有一点点热度,所以介绍一点我了解的几款Linux手机系统。相对来说,比较成熟的、接近桌面Linux(指没有大刀阔斧地定制,如Android)的几个Linux手机系统大概有
Pure OS
、
Plasma mobile
和
Ubuntu Touch
三个。
介绍之前先说一下目前Linux手机系统共同的特点吧,省得大家觉得太长不想看。
目前基于Linux开发的手机系统几乎都是Linux桌面的开发团队同时开发的,所以比较的“原汁原味”
和桌面Linux系统类似,
系统本身
对硬件资源的要求不是很高,很多Linux手机系统都可以流(bu)畅(ka)地运行在5、6年的旧手机上
可用软件和Linux桌面环境中的几乎一样。也就是:移动端软件稀缺,传统桌面的软件无需任何多余步骤,可以像在电脑上一样运行
Pure OS
Pure OS是由Purism,一家专注开发Linux系统和硬件的公司,所开发的Linux移动端操作系统。Pure OS的界面是基于Linux的最常用的一种桌面环境Gnome开发而来的,Purism也做到了将一些(dian)桌面应用适配到手机的小屏幕上。不过由于整个Linux平台对移动软件的开发人力不像其他国际手机大厂充足,目前的移动版应用在可用性和性能优化上仅处于可用阶段(不过由于它就是一个Linux系统,桌面版应用可以完全正常的跑起来)。Purism没有为现有的手机做适配,而是自己发布了配套的手机硬件——Librem 5手机。两句话总结这个手机就是:安全至上,浑身的硬件开关;百元机的配置卖出了高端旗舰的价格。
版权:purism官方网站
版权:purism官方网站
Plasma mobile
Plasma mobile是基于Linux上另一个常用、华丽且功能强大的桌面环境KDE开发而来的,并且开发团队就是KDE的开发者们,可以说也是很正宗的Linux系统了。不过我对这个系统不太了解,几乎每看过相关的介绍视频,所以不说太多了。官方主要为Google的Nexus 5\u002F5X手机做适配,适配现有手机这一点不得不说比Purism良心多了。
版权:plasma-mobile官方网站
Ubuntu Touch
了解过一点Linux的都知道Ubuntu,Ubuntu Touch是Ubuntu的公司Canonical发布的基于Ubuntu的手机系统。不过由于不赚钱,Canonical后来放弃了系统的维护,现在转由社区维护。在我自己看来,这款系统是这里介绍的几个系统中开发最久、人力也最充足的(虽然现在是社区维护了),所以也相对稳定一些。不过它上面的软件也不算多,大多数社交软件还是靠网页版来撑场面的,并且由于沿用使用了Ubuntu已经淘汰的unity桌面环境的设计语言,接下来的维护和适配前景有些未可期啊。这个系统适配了极多的手机,比如一加1,好几款BQ的手机平板,Google的Nexus4\u002F5等等,所以大家尝“鲜”还是很容易的。
版权:ubuntu-touch官方网站
-----
网友解答:
操作系统是一层一层搭起来的,Linux打桩,Java虚拟机做地基,Android是楼层框架,各种UI是装修,这才有了你看到的漂亮的楼房。
不知楼主要的纯Linux是不是命令行界面的Linux内核。
按照这个要求,装了第三方应用,没有编译进内核的系统都不能算是纯的Linux。楼主连打电话拨号都要自己写代码才能实现了。
-----
网友解答:
我理解的楼主意思是,android中间有个java虚拟机,而linux没有,那么有没有手机可以采用linux,让操作系统或者app直接与硬件之间进行操作,以求效率更高?
楼主理解错了,linux也有虚拟机的。看图:
当然从图中可以看出,两者都有虚拟机。
当然,从linux架构图可以看到有个“程序 n”以及“程序2”是直接通过机器码操作内核的,那么问题来了,既然可以通过程序直接操作内核,为什么android要把这一块裁掉,不直接让程序操作内核呢?主要有以下几个方面:
1.程序兼容性,众所周知java是个跨平台语言,不依赖cpu指令集,这样就能保证兼容性。android在历史的演变过程中,运行在多种平台上,例如:arm,mips,x86,x64,arm-64等等,这个传统来自于linux,曾经linux运行的平台更多,例如:x86,x64,mips,arm,ibm-power,hp,motorala等等。
2.方便移植,作为后来者,android出现的时代,已经有了智能手机或者设备和对应的操作系统,例如:palm os,windows mobile,motorala linux,还有索尼爱立信和nokia主导的symbian os等等,android如果要生存下来必须要让开发者很方便的将他们为其他系统开发的软件移植到android上,而java虚拟机是最好的选择。
3.无奈之选,开发一个新的系统,绝不是吹几句牛,埋头苦干就能行的,那么只能站在巨人的肩膀之上,但是当时没有人愿意公开自己的系统,windows mobile作为微软的产品,虽然可以兼容多种不同品牌手机,但是不开源,palm和黑莓以及苹果是软硬件全是自家,更不可能开源,motorala虽然采用linux但是软件封装却是自成一派,在这样情况下,android只能采用开源的linux,所以形成了这样的架构。
-----
网友解答:
你问出这样的问题,说明你完全不理解啥是操作系统。
操作系统分系统内核和应用程序,其中有一类特殊的应用程序,就是人机交互界面,也叫shell.
人机界面是我们人类控制电脑的接口,一个操作系统必须得有一个人界面,否则看起来和没有一样.
linux系统内核,可以运行各种个样的界面,比如最常用的命令行界面,这个通常是由bash这个程序提供的.
除此之外,还有图形化界面,比如KDE,GNOME,这些都是不同的界面.Linux可以自己选择安装你喜欢的界面.
但是上面说的都是面向电脑的界面,这些界面很显然是不能用于手机了。
所以,当你用Linux作为手机操作系统的时候,你就的制作一个符合手机操作习惯的界面,对于安卓系统,这个界面就是安卓桌面,也就是尼进系统能看到的一切.
你所谓的虚拟机,是指jvm,并不是你电脑上win系统下面装一个Linux虚拟机的那个虚拟机,jvm根本是两码事。
并不是说安卓是用虚拟机跑在Linux系统上的另外一个系统,这纯属不懂技术的人胡说八道.
jvm作用是为程序员编写的程序提供运行环境的,并不是一个系统.
为什么要用jvm?这是因为计算机程序要想运行,必须通过编译器编译成机器码。
但是,对于手机程序来说,程序直接编译的话太麻烦了,因为编译过程直接喝计算机硬件相关,但是手机硬件千差万别,这种各样,程序员就必须给每一个型号的手机开发一个人独立版本,这个工作量是不可想象的.
如果头条以编译方式直接编译成app,程序员恐怕一次得编译几十甚至上百个版本,简直不是人干的事情.
这时候就需要jvm,只要把jvm在不同的机器上编译好,做好适配,然后应用程序都通过jvm来运行,这样就避免程序员反复编译听一个程序,升级,解决bug也方便多了.
所以,不管任何系统,采用这种方式来管理应用程序才合理,才具有实用性,不用这种方式,就不可能有安卓上成千上万得app的,程序员绝对不会闲的没事干整天编译各种app玩.一套源码,多处运行是最基本要求.
当然,除了jvm,还有一种runtime的解决方案,其实本质上runtime也是一个类似jvm的虚拟机,只不过实现的方法不同,效率要比jvm高。
5.0以上的安卓已经支持了android runtime 也就是art.
-----
网友解答:
以前moto 出过几款,开发效率太低,开发者寡,很快就淡出了。
-----
网友解答:
主要是为了通过java虚拟机适配五花八门的手机品牌和硬件。
iPhone的iOS就是以unix系的Darwin作为内核,也没使用虚拟机。
-----
------------------
推荐阅读:
上一篇:手机屏幕最佳的尺寸究竟是多少?
下一篇: 经常眼睛干涩怎么办?