范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

为什么Android开发使用Java而不是C?

  文/小伊评科技
  结论:如果谷歌用C++作为安卓开发语言,安卓早就挂了。
  安卓系统卡顿的根源估计很多人都比较清楚了,最根本最核心的原因就是因为其应用层采用的是Java语言。因为Java是一个跨平台的语言,为了保证跨平台的兼容性,它内置的有Java虚拟机,这个虚拟机的作用就是把应用层的指令解释为机器语言,然后推动硬件去处理,使用者只需要根据平台的不同配置相应的JDK即可,这也就保证了Java的跨平台特性。
  但是正所谓有得必有失,也正是由于虚拟机的存在,用户的指令无法直接经过编译后成为机器码,还需要经过虚拟机的解释才可以,这也就导致了其执行效率是比较低的。
  而反观C++,作为一个偏底层的开发语言,他的指令经过编译后可以直接转化为机器码和硬件进行交互,执行效率就要高很多了。
  举个形象一点的例子,方便大家理解:
  使用Java语言,就像是两个语言不互通的人中间隔着一个翻译官在交流,哪怕这个翻译官的水平再高,翻译的速度再快,他也不可能做到实时的翻译,总需要一个处理的过程,交流成本就比较高,效率也比较低。而采用C++语言则就像两个语言相通的人在对话,一个人说的话可以直接被另外一个人听懂,交流效率大大提升。
  所以,虽然在安卓5.0时代,谷歌虽然给安卓系统做了一次大手术,更换了一个全新的效率更高的ART虚拟机,但是很可惜,就像上文所举得例子那样,谷歌只是换了一个翻译能力更强的翻译官而已,并没有解决最本质的问题。
  看到这,肯定会有人要问了,谷歌为什么要选择Java而不去选择执行效率更高的C++呢?难道谷歌的工程师不知道Java存在执行效率低的问题么?
  当然不是,谷歌这么做也是迫不得已。谷歌的算盘。
  在2005年,谷歌将安卓团队一行人收入囊中之后(也就是安卓之父安迪·鲁宾团队),本来实际上也没有打算完全开源,而是闭门造车了很长时间,不过始终没有什么大的进展。
  然而在2007年1月,苹果公司率先发布了人类历史上第一款具备象征意义的新一代移动操作系统——iPhone runs OS X(也就是后来的IOS),并且还基于这个系统发布了第一代iPhone。
  这个时候,谷歌也嗅到了移动互联网时代即将来临的气息,但是谷歌同时也意识到,单靠自己是不足以和苹果对抗的,因为谷歌本身只是一个互联网企业并不具备像苹果那么强大的硬件基因(苹果本身就是一家硬件公司),他不具备制造硬件设备并且大规模向外推广的能力(没有渠道)。于是,谷歌想了一个方法——"开源共建",把已经开发的基本可用的安卓系统完全开源,供其他有兴趣进入智能手机市场的企业进行二次开发。
  这个操作也吸引了世界上绝大多数除了苹果之外的硬件厂商,毕竟这可是当时第一款完全开源的系统,而且谷歌还邀请了众多业界大拿站台(开放手机联盟)。
  系统有了,那么怎么才能吸引开发者去开发安卓应用呢?谷歌的办法很简单——"尽可能地降低开发安卓应用的门槛",于是,谷歌最终选择了Java作为安卓应用层的开发语言,至于原因主要有两个:
  原因一:Java的从业者众多是一片沃土。
  Java由于其具备良好的跨平台特性,使得其一直以来都是开发行业最炙手可热的一门语言之一,如下图所示,这是目前开发语言的热度排行榜,Java毫无疑问的排在第一位。
  开发人数众多,这也就意味着很多原本做Java的开发者可以几乎毫不费力地转行成为安卓应用的开发者,原本只能开发一些后台程序的Java工程师,突然发现自己也可以利用自己的能力面向C端开发应用程序挣钱了,这确实是一个很好的出路,因为软件工程师本身就是一个对新平台,新事物保持比较高关注度的群体。就这样,安卓的应用体系就在这样的环境下迅速发扬光大。
  而反观C++,C++是一门基于C语言构建而来的语言,而C语言是一门非常古老的语言,更偏向于底层,其整体的开发难度较高,从业者相对比较少,不如Java那么具备活力。
  原因二:Java的开发效率极高,入手难度低。
  Java是一个面向数据结构的语言,能操作的都是设计好的数据结构,每一个都是安全的,在内存和程序员之间,还隔着一个JVM虚拟机,程序员可以肆意地发挥,容错率比较高,对于程序员素质的要求也比较低,所以大家可以看到,很多Java工程师只需要培训两三个月就能自己写东西了,而且就算编程思想再怎么差也无所谓,Java本身就是一个没那么低,上线也没那么高的语言。
  而C++不一样,C++是一个面向内存的编程,它就要求开发者拥有比较扎实的计算机基础,并且还需要拥有比较强大的逻辑设计能力,需要考虑到方方面面的细节,如果一个C++工程师的能力太差,他所编出的程序的执行效率还不一定比用Java开发出得更好,这也就在一定程度上限制了C++这门语言的发展,毕竟想要学好C++,上两三个月培训班可是不行的,所以C++实际上是一个下线非常低,上线非常高的开发语言,上手难度更低。
  另外,Java由于编译器的存在,其开发效率更高,开发者无需关注内存布局,对齐,字节序等细节,只需要写好自己的逻辑代码即可,其他的都可以交给虚拟机来执行,在开发速度上也要更快,而C++的开发效率则比较慢。
  而互联网时代,最重要的就是速度。
  end 希望可以帮到你
  为什么Android开发使用Java而不是C++? 选择Java肯定是google经过深思熟虑的抉择,先说能确定的优势, Java有跨平台优势,手机的硬件可能千差万别,Java软件可以只出一套执行档。而C/C++需要针对机型出专用的编译版。 Java有大量人员优势,几乎不用重复学习就能...河南新华电脑学院
  我开发安卓应用快8年了,这个问题我来说几句。
  首先我要说的就是Java不是一个很好的安卓开发语言,C++比Java更合适。安卓的卡顿Java不是主要问题也脱不了关系。那为什么还用Java呢?
  主要是技术实力与时间不足,安卓一开始不是谷歌的,而是一位叫安迪罗宾的人创建的安卓公司开发的,公司名就是安卓,2005年被谷歌收购,才成为谷歌的产品!
  技术方面,回到安卓创建的2003年,这时候安迪罗宾根本没实力修改C语言的编译器使编译器编织出符合安卓系统的代码,难度跟开发一门编程语言差不多,而Java则没有这个问题,因为Java是运行时语言,只要移植Java虚拟机过去就可以了,编译器什么的根本不需要修改,只要确定虚拟机能运行那Java的代码就能运行,这个可比修改C语言编译器简单多了,本身Java虚拟机就有linux版本,而安卓底层也是linux,不论从技术还是时间上对当时的安迪罗宾Java都是最合适的。
  不要说什么c太难受众太少,这不是问题,苹果的ios用的就是c,oc就是c的一个超集,语法比c更复杂。
  简单总结就是安卓当初是一个小公司创建的,技术实力不行,只想用市面可用的技术整合出一个来赚钱而已,当时2003年的竞争对手是瞄准诺基亚塞班系统,这个公司原本打算弄好后卖给三星公司,因为三星当时是仅次于诺基亚的手机制造商,但是三星看不上。后来2005年卖给了谷歌,2007年苹果ios出现了刺激到安卓团队,又改为支持触屏系统与ios竞争。最开始的安卓系统是按键的,即使后来来到了有钱又技术的谷歌手上,但是之前的系统框架已经是基于Java写的应用写的,谷歌不可能全改掉,只能不断在这基础上改进,不然全改了还花钱买什么直接自己做一个好了。
  劣币驱良币
  最适合机器的语言肯定是C,最难学的语言除了机器语言0101010就是C了。
  Java简单,上手容易,可以跨平台,已经形成了庞大的规模。
  庞大的从业者,庞大的应用软件,各种平台,已经很难掉头了。
  这个我知道,因为安卓之父当初就是这么设计的,并且c++是可以开发安卓的,并且现在大部分开发者都开始用kotlin开发安卓了,用java开发安卓的将会越来越少。
  其实答案很简单。
  1、用人市场
  Android想要大发展,必须选一条足够宽的赛道,首先要考虑的就是开发者受众, 按当时来看,编程语言排位,前两名就是Java和C语言,虽然C语言的受众也很多,但是满足不了简单易上手。C语言虽然语法不难,但是想提高很难,就指针这块想用好就要几年时间。而Java就不一样,首先有JVM直接把指针的问题平滑了,这样开发者就不用担心指针会用不好,因为JVM层面已经给做好了。那么就只有Java这一条路了。
  2、技术本身
  当时2005年Google接手Android的时候,上层大部分实现应该就是用的Java,如果Google换其他语言,成本很大,其实2005-2008年这段时间,Google大量的工作就是修bug和加新功能,我猜测Google也评估过使用其他语言,但是在当时应该没有能替代Java的语言,不然Google也不傻,早就换了,你们说是不?再一个就是成本问题,都替换掉,从时间和金钱投入上,也是不小的开支,索性就一直用吧。但谁知道后面甲骨文杀了出来,说Google侵权,这下Google意识到,想要完整地掌控Android,必须所有的部分都要归Google所有,然后Google就自己开发语言,但最后都没成功,现在依然还在JVM这条路上走,只是形式不太一样了,Google自己研发了ART虚拟机,替代原来的Dalvik,不过思路其实都差不多,只是很多细节优化了。
  总结:Android未来还会进化,我觉得最终像底层的C和C++将来也要被慢慢地替换,可能是rust也可能是别的新语言,最终的形式应该是大一统,就一个语言从上到下解决所有问题。目前Linux好像有一部分功能想用rust重写。我估计随着时间的发展,旧的语言必然会被更先进省时省力的语言替代,这是趋势。
  1.java语言可跨平台
  2.java相比于c++开发成本低,易上手迭代快,参与人就会越多生态会越大。在可接受性能的前提下,java是较好的选择
  因为是开源环境,容错性就非常重要,翻译这个例子举得很好,C++的使用环境更像是本国人交流不需要翻译,开源环境决定了安卓注定是一个多边交流的环境,只用一套规范严谨的语言不现实,也不可取。

删除的文件怎么恢复?误删文件恢复,就使用这些方法!电脑里面保存着很多文件,为了让电脑更整洁,我们一般都会定期清理不必要的数据。在清理过程中,出现文件被误删,我们该怎么办?误删文件恢复,方法就看下面三个注册表恢复回收站恢复软件恢复。让老电脑再次飞起来!更换这四个部件,即可提升旧电脑性能现在的工作生活,每个人都离不开电脑,可是随着使用时间越来越长,电脑各方面的性能会慢慢降低,导致读取数据的速度慢了等等。即便是买的时候性能优越,也难逃此劫。于是,不少用户就想给老电脑鸽子从祁连山飞来诗意中国作者吴莉经过军马二场七队时,有人突然大喊起来,快看,那是什么风景,好像是鸽子。车子停下,所有的摄影镜头举起来,镜头里的风景让人吃惊,四五间瓦房的顶上落满了鸽子。鸽子比房瓦更芦苇荡听雪早上,床上,耳根似有滋滋的声音,非常清浅,非常绵远,谛听才能有感觉。起来开门,看见了天空,天空正在落雪。雪花如荠菜的花瓣,小巧灵动,在眼前横着飘拂了几下,最后才落地,一落地就看不见行天道,自强不息站在两个不同立场,看问题就会产生不同的观点。你比如说,站在两个对立的立场。,看同一个东西,毒品鸦片,一个吸毒成瘾的人的立场,(邪恶的立场),你夺他手中的毒品,就是害他,剥夺了他生存为什么有的人宁愿忍耐,也不愿捍卫自己的利益?其实当别人和自己有博弈和对抗的资本,人会默认自己的忍耐是小利益的损失,而不忍耐则有极高的几率受到大的利益损失时,人往往不会捍卫自己的正当利益。最简单的例子,就是人对不礼貌之人的制止红糖流心包,制作简单暄软香甜,看见就想咬一口,个个都流心大家好,我是小秋。今天跟大家分享一个红糖流心包做法,暄软香甜,特别好吃。做这个流心包的馅料需要冷藏之后才能用,所以我们先来调馅。碗里加150克红糖,100克白糖,50克面粉和30克朋友圈中售卖的手机靓号可以买吗?业内人士透露暗藏三大风险极目新闻记者兰莎彰显身份地位奇货可居升值空间大特殊礼物暖心精致今年春节,不少人的微信朋友圈里都收到了这样的手机靓号销售广告。这些手机靓号多是连号或是有规律的数字组合以及带有68等吉芯片出口不香了,韩国去年四季度经济负增长,拖累全年GDP增速本文来源时代周报作者马欢全球经济的金丝雀发出预警。韩国央行日前发布的数据显示,2022年第四季度,韩国GDP环比下降0。4,这是近3年来首次出现下滑。至于2022年全年,数据显示,团结奋斗创造新的历史伟业纪念宋庆龄同志诞辰130周年宋庆龄同志是中华人民共和国的缔造者之一,是全国各族人民港澳台同胞和海外侨胞衷心敬爱的卓越领导人,是中国共产党领导的统一战线事业的积极推动者人民政协事业的杰出领导者。在近70年的革命孩子眼神不对家长需要重视孩子常斗鸡眼对眼斜白眼是不讲礼貌吗?家长们先不要训斥孩子,这可能是一种眼疾。天津市儿童医院眼科医生提醒家长,斗鸡眼指的是双眼黑眼球向中间靠拢的形态,看起来就像两只鸡斗架时候的样子。
通过什么样的办法可以规避微信提现的手续费呢?平常我们在微信上抢个红包转个账,钱都会进入微信钱包,可是钱存在微信里也不是个事儿,咱还是的去出来,而现在,微信转账取现是要收手续费的,如果微信钱包数额太大,拿转账确实有点划不来,有乒乓球为什么越来越小众化了?噢?这可是个很奇特的问题。为什么乒乓球越来越小众化了?一个把乒乓球称为国球的並以此为荣的国度,如今却面临着乒乓球越来越小众化的尴尬局面。所谓小众化,无非是指某项运动参与的人很少,或为啥有人乒乓球水平不咋地,不喜欢练球而是热衷于打分记局?首先,小编觉得问题提出的非常典型。并且,不论什么种类运动,最终的目的都是为自己提高比赛能力。有人会说,锻炼身体,比不比赛不重要。但小编认为,往往运动中的快乐,就是在比赛中产生的。就酱香白酒好还是浓香白酒好?酱香首选我喜欢做回神仙!主要看个人喜好,一般来说酱香白酒酒质会更好一些,毕竟是纯粮酿造,所以口感回味会有一点酱油和醋的味道,度数基本都在52度以上的高度酒,其代表有茅台郎酒,习酒,无锡三天怎么安排好游玩顺序?如果你有三天时间来无锡游玩,时间上是比较充足的。你说你想去灵山大佛梵宫和拈花湾,看来你对无锡的景点还是挺了解的,有可能你以前曾经来过无锡,已经去过鼋头渚等传统景点。下面,我根据自己去青海玩没有高原反应可以去西藏吗,注意什么?去过西藏也去过青海,从个人的情况来看,两地高原反应是不一样的。去过两次青海,第一次是跟团游,第二次是自驾游,该吃就吃该睡便睡,没有一点高原反应的感觉。去西藏是7年前,跟旅游团坐火车如果KIC8462852这个恒星真的被科学观测严谨的确定有戴森球,那么会对人类产生什么影响?如果KIC8462852这个恒星被确定有戴森球,那是一个里程碑式的意义,因为这说明2点,第一,宇宙中确实存在地外文明,宇宙不仅仅只有人类,而且他们具备了极高的科学技术水平。第二,对大家使用了coloros12有什么感受?我国庆趁着平台优惠换了oppo新机,搭载了新系统coloros12。coloros的自由浮窗真的爽滋滋,大小随意调节,可以一边看电视剧的时候和朋友聊天,或者逛逛微博,刷网课同理哈哈初中数学老师都是怎么补课的?如果我是数学老师,我是不会告诉你数学老师是怎么补课的因为这既是生意经,也是潜规则。但是,我不是数学老师,我可以告诉你一些数学老师补课的方式方法!我曾经去冒充一个孩子的家长(没有恶意大一的绩点排名已经大致确定分水岭了吗?你好,很高兴能够回答你的问题。作为一名大二的学姐,我想和你说的是大一的绩点也不能完全的确定分水岭,即便题主认为可以造成分水岭,也并非是一件坏事,因为分水岭也可以分为成绩和才能的分水2021年一个月后结束,你对2022年的投资方向有什么建议?2021将过,一年忙忙碌碌没挣多少钱,2022怎么赚钱,投资方向是什么?2021年,我真的不敢休息,上班全勤,无奈一线工人工资低,坚持了一年的自媒体,想挣钱吗?想!但不能养家糊口,