Android和Linux发行版的区别

20161214230337971.jpg
20161214230415387 (1).jpg

上面两幅图展示了Android系统和Linux发行版系统(Ubuntu/Fedora/centos)之间的区别和联系。可以这么说Android本质上还是一个Linux系统,只不过Google对它进行了裁剪和定制,这跟我们定制Linux到自己的嵌入式设备上的做法大同小异,只不过Google做的更多罢了。

上图中也可以看出来,很多人说Android系统的程序只能用Java开发,这么说的说明对Android系统的架构了解的还不是很深入,其实从图上看到,Google自己写了一个叫Dalvik的程序运行在Linux的系统上面,这个程序就是Android的Java虚拟机(JVM),由于效率等问题Android4.4以后改为Android Run Time(ART),但不管是Dalvik还是ART,都是用c/c++开发的,而用Java开发出来的APP其实是运行在Dalvik/ART上面的,皮之不存毛将焉附,没有Dalvik/ART,那些Java开发的APP是根本没法运行的,所以说那些说Android系统不能用c/c++开发的说法是站不住脚的,只要用AOSP(安卓开放源码项目)里面的交叉编译器编译出来的二进制文件在Android上面照样也是可以运行的,而且跟Dalvik/ART属于同一层次的东西,即(都是init进程的子进程),但是一般的Android系统上init进程只有一个子进程即Dalvik/ART,如果非要说Dalvik/ART才算Android的话,那么Android确实不能用c/c++开发,因为Java程序编译出来的是字节码,只能在Dalvik/ART上运行,c/c++编译出来的是二进制机器码直接在CPU中运行,应该说c/c++开发(这里不是说的JNI方式)Android程序无法调用Android的Java类库这样才是正确的。

再看看Linux发行版的做法,Linux发行版一般是在Linux的基础上开发了一套桌面管理系统,比如基于GTK框架的gnome,比如基于Qt框架的LXQT。跟Windows一样,经典的一个桌面系统+N个软件的模式,用c/c++开发出来程序编译成二进制的机器码直接运行在Linux系统上,这些软件全部都是跟Dalvik/ART一个层次的东西,而Linux发行版的程序能不能用Java开发呢?这个问题就跟问Windows上能不能用Java开发一样没水准。毕竟Dalvik/ART本身也是运行在Linux系统上的,你只要把Dalvik/ART移植到Linux发行版甚至Windows上,你手机里的那些APP就可以运行了(当然是不依赖硬件的,如果要打电话肯定是不行了),不然你以为Android模拟器是怎么弄的。

总结起来,Android系统和Linux发行版的系统根本区别是Android上面只跑了一个Dalvik/ART,而Linux发行版上面跑了很多“Dalvik/ART”而已。如果你把gnome或者LXQT部署到Android上,或者把Dalvik/ART部署到Linux发行版上的话,那么二者的区别可能并没你想象的那么大。

20161214230548503.jpg

其实,在Linux上面跑一个软件(虚拟机、解释器),然后再基于这个软件做二次开发的的做法Google的Android并不是第一个这么干的。工控行业的小伙伴对控制器应该很熟悉吧?什么,你不知道控制器?或者说PLC更亲切吧,PLC(可编程控制器)只是一种通用的控制器而已,PLC分为两种,一种是编译型的PLC,我们在学校里学习的什么欧姆龙,三菱,西门子S300都是这种PLC,这种PLC的软件架构很简单,就是一个单片机,然后我们画的梯形图跟我们编译单片机程序一样直接被编译成了机器码,然后烧写到单片机里面执行,这种PLC是没有办法监控运行的,不过我要说的是另外一种PLC,曾经机缘巧合接触过一段时间,那就是软PLC,最常用的软PLC就是codesys,codesys可不止是一个简单的PLC编译工具!它是一个软PLC核!为什么说他跟Android的做法十分相似呢?看看它的架构就知道了,codesys通常被部署在Linux系统上面,开机即运行,然后我们的梯形图程序被codesys编译工具转成梯形图指令保存到内存中,然后codesys内核逐句解析梯形图指令,边解析边执行,而不是像传统的编译型的PLC一样先把所有程序编译成机器码再烧写到flash中,运行的时候再搬到内存里面运行,这跟JVM执行字节码如出一辙,这种PLC可以很方便的实现监控运行。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容