本文目录
为什么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 希望可以帮到你
Google花了11亿美元收购HTC手机业务,值不值
既然能达成协议,那么对于双方都认为是值得的。
在2017年9月下旬,Google和HTC宣布达成一项协议,根据协议HTC手机部门的Pixel团队将会加入Google,而HTC可以继续推出自己的手机品牌,另外Google还会获得HTC部分专利技术授权,为此Google将支付11亿美元给HTC,现今Google正式宣布这项交易已经完成,HTC的部分员工已经加入到Google中,帮助后者发展硬件业务。-谷歌收购安卓
图片来源:igyann
这项交易将加强Google硬件部门的实力,这个部门是前Moto CEO Rick Osterloh在2016年成立的。对HTC来说,在财务出现困难时获得11亿美元的现金能缓解公司面临的资金压力,同时此举也会削减HTC的研发成本,这次加入到Google的技术人员有2000多名,接近研发部门的一半,这2000多名员工的曾研发了Google Pixel,Google Pixel XL和Google Pixel 2,在加入到Google后会对Google手机有更多的话语权,并深度整合Pixel系列的硬件和软件产品。-谷歌收购安卓
在2017年发布的新一代Pixel手机是由两家公司制造的,分别是HTC和LG,但今年可能不会出现这种状况了,Google Pixel 3和Google Pixel 3 XL应该都会交由HTC制造,这对产品的质量有更好的保证,品控也会更加统一。-谷歌收购安卓
Rick Osterloh表示HTC Pixel团队是一支很有才华的团队,相信这支团队能在未来几年内开发更好,更具创新性的产品。随着交易的结束,现在台北是Google在亚太地区最大的工程基地。
安卓是开源系统,为什么还要谷歌授权
安卓是基于Linux开发的,而Linux一直都是开放源代码的,所以安卓从知识产权角度来说,只能开源了。而谷歌收购安卓后,又花大力气(资本),投入大量时间、精力研发改良了Android系统。改良后的Android系统实用性更强、更稳定,而且可持续更新。从这个角度出发,大家也认可谷歌的授权管理模式了!-谷歌收购安卓
安卓既然是开源的,为什么还需要谷歌授权
感谢邀请!
要回答这个问题,只需了解安卓系统的来龙去脉,就会非常清晰了!
(1)首先,必须明确安卓系统(Android)并不是谷歌公司自己开发的,是谷歌公司收购过来的。
(2)Android是一种基于Linux的自由及开放源代码的操作系统,最初由安迪·鲁宾(Andy Rubin)等人开发制作 ,当时开发这个系统的目的是创建一个数码相机的先进操作系统;但是后来发现市场需求不够大,加上智能手机市场快速成长,于是Android被改造为一款面向智能手机的操作系统。-谷歌收购安卓
(3)Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。inux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。1991年的10月5日,创始人林纳斯·托瓦兹在comp.os.minix新闻组上发布消息,正式向外宣布Linux内核的诞生(Freeminix-like kernel sources for 386-AT)。-谷歌收购安卓
(4)2005年8月美国科技企业Google收购安卓系统(Android)。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商成立开放手持设备联盟来共同研发改良Android系统.。随后,Google以Apache免费开源许可证的授权方式,发布了Android的源代码。 -谷歌收购安卓
从上述的来龙去脉,就可以很清楚的晓得了,安卓是基于Linux开发的,而Linux一直都是开放源代码的,类似感觉已经属于全社会的感觉。所以安卓从根本的知识产权角度来说,哈哈,只能开源了,否则侵权全人类了!同时,谷歌收购安卓后,又花大力气(资本),投入大量时间、精力研发改良Android系统。实用性更强大、更稳定,而且可持续更新。从这个角度出发,大家也认可谷歌的授权管理模式了!-谷歌收购安卓