文档章节

漫谈安卓和ios,mac os x

斯多葛先生
 斯多葛先生
发布于 2016/07/04 15:27
字数 992
阅读 48
收藏 0

为什么安卓机普遍卡,普遍慢? 可以先参考一下这篇文章。 而我认为这篇文章疏忽了一点,那就是安卓的应用层和虚拟机。 首先我们来看看安卓系统的架构图安卓系统架构 它的最底层是linux内核,而它的应用层却是要用java来做,而java的特性就是跨平台,“一次编译,处处运行”,java跨平台的原理java工作原理。 看到了吗?它跨平台的原因是因为它内置了一个“虚拟机”!!!它先用一个“编译器”把JAVA代码编译成“字节码”,然后虚拟机再负责把这些字节码解释,翻译给CPU听,这就相当于你所有的软件都是跑在一台虚拟的电脑上的!而在性能比手机更强劲的PC上,你跑一个虚拟机看看资源的占用,hehe。 这就是为什么安卓手机普遍卡慢的另一个重要原因。 我们再来看看ios/mac os x的架构mac os x系统架构虽然是mac os x,但也和ios八九不离十。 mac os x(以下简称x)系统的架构的最底层则是unix系的freebsd作为内核,另和mach内核混合(mach兼容posix标准,而freebsd则是unix另一支正朔,所以称x为unix-like并无不妥)的darwin内核darwin架构而x的应用层实现却是用c/objective-c/swift纯编译性语言实现,效率自然高出不少。 话又说回来了,为什么同样可以跨平台,为什么安卓不用c做应用层???而是选择了java???要知道C也是同样可以跨平台的啊! C的跨平台方式是“一次编写,处处编译。”而java刚才说过是“一次编译,处处运行”。C语言的编译方式是“C语言代码先经过预处理,然后编译成汇编语言,然后再从汇编编译成二进制文件,然后再由二进制文件链接生成可执行文件”。那么问题来了,安卓操作系统是面向嵌入式设备的,不光是给手机,还要给机顶盒,平板,上网本,电视机,飞行器,路由器网关,智能家居balabala一大堆设备用,这么多设备,即便都是arm,也未必是同一个公司的芯片,这么多硬件平台,如果用C语言做APP,那就真得跟x一样分为“iphone版”和“ipad版”,而且你以为这就完了?不!同样的程序从手机编译移植到ipad,能不能用还不一定!还得去重新测试,去维护......这都是人力啊,这都是物力啊,这都是财力啊!而安卓的“一次编译,处处运行”的方式,编译生成的.apk包我可以同时给平板和智能手机用!而大多数情况不会出错(避免了依赖硬件,因为运行在虚拟机上)!这样给公司节省了多少人力物力? 反观ios平台,ipad版上废弃了不少工程,不少公司为了兼顾ipad和iphone不得不两头跑,甚至开启两个项目组分头维护,更多公司更是“只有iphone,没有ipad”也是让人无语到不行,但是要做跨平台就要浪费更多的人力物力。然而硬件依赖方面,做ios系统的厂商目前只有apple一家,所有的设备包括ipad,iphone,iwatch,机顶盒硬件标准都是统一的,这个问题就没有安卓那么严重,安卓光手机一块就有多少厂家在做?每家硬件平台都不一样,如果拿C实现应用层,最后又要跟unix世界一样打的分崩离析,相同的程序在这家安卓机上没问题在另一家就出问题,再找一家压根跑不起来。。。。 2333333.。。。。

© 著作权归作者所有

斯多葛先生
粉丝 4
博文 53
码字总数 18145
作品 0
私信 提问
LuaScriptCore v1.2.1,移动端 Lua 桥接框架

LuaScriptCore旨在能够在多种平台上方便地使用Lua。其提供了与各种平台的功能交互(目前支持iOS、Android以及OS X),让开发者无须关心Lua与各个平台之间是实现交互的细节,只需要根据自己的...

vimfung
2016/11/25
939
0
报告称苹果iOS操作系统份额超Linux

iOS的市场份额已经超越Linux 北京时间9月2日上午消息,据国外媒体报道,网络分析机构Netmarketshare的最新数据显示,iPhone手机的操作系统iOS的市场份额已经超越Linux。 Netmarketshare的数据...

李心陽 字(恪明)
2010/09/02
350
1
Intel 推多操作系统引擎,安卓应用可移植 iOS 平台

对于应用开发者而言,iOS平台和安卓平台往往需要兼顾,这样往往在开发了针对其中一个平台的应用后还需重新着手开发另一个平台的应用。不过现在,Intel的多操作系统引擎可能会帮助广大的Java开...

oschina
2015/08/09
4.2K
16
Xamarin开发Anroid应用介绍

第1章 Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年,而针对这些智能手机的软件开发也变得异常火热。但是在Android平台下只能使用Java开发,iOS平台下也只能使用Objective-C或S...

大学霸
2015/04/07
0
0
(转)直接拿来用!最火的iOS开源项目(一)

AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目。AFNetworking是一个轻量级的iOS、Mac OS X网络通信类库,现在是GitHub上第三大Objective-C库。它建立在...

孙启超
2013/06/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

进程命令ps

命令ps 用途: 显示当前系统的进程状态 语法: ]# ps [选项] 常用选项: aux = 列出正在运行的所有进程; a 显示现行终端机下的所有程序,包括其他用户的程序 u 以用户为主...

迷失De挣扎
33分钟前
3
0
聊聊spring cloud的CachingSpringLoadBalancerFactory

序 本文主要研究一下spring cloud的CachingSpringLoadBalancerFactory CachingSpringLoadBalancerFactory spring-cloud-openfeign-core-2.2.0.M1-sources.jar!/org/springframework/cloud/o......

go4it
昨天
4
0
一篇文章搞定——JDK8中新增的StampedLock

一、StampedLock类简介 StampedLock类,在JDK1.8时引入,是对读写锁ReentrantReadWriteLock的增强,该类提供了一些功能,优化了读锁、写锁的访问,同时使读写锁之间可以互相转换,更细粒度控...

须臾之余
昨天
3
0
Android Camera原理之CameraDeviceCallbacks回调模块

在讲解《Android Camera原理之openCamera模块(二)》一文的时候提到了CameraDeviceCallbacks回调,当时没有详细展开,本文我们详细展开讲解一下。 CameraDeviceCallbacks生成过程: 《Android...

天王盖地虎626
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部