×

安卓开发语言

大型的app都是用什么编程语言编写的?为什么Android开发使用Java而不是C++

admin admin 发表于2022-07-30 00:50:01 浏览89 评论0

抢沙发发表评论

谷歌最终选择了Java作为安卓应用层的开发语言,为什么Android开发使用Java而不是C++文/小伊评科技结论:如果谷歌用C++作为安卓开发语言,谷歌为什么要选择Java而不去选择执行效率更高的C++呢,因为目前安卓程序大多还是采用Java进行开发,虽然Kotlin已经被宣布成为安卓开发的第一语言,他所编出的程序的执行效率还不一定比用Java开发出得更好,那么可以推断方舟编译器多半是一个将程序源码编译为本机机器代码的这么一个编译器了,因为Java是一个跨平台的语言。

大型的app都是用什么编程语言编写的

你好,我来回答这个问题,我有9年多的IT从业经验,负责过一个大型App的前后端架构设计,以及多个小型App的架构编码工作。

大型App的开发,具体用什么编程语言,这个要分场景来说:

①追求用户体验的C端App:

这类面向普通大众、追求良好体验的App,例如微信、支付宝、今日头条等,则建议使用原生代码来开发。即Android使用Java或Kotlin,iOS使用swift语言。

使用原生语言开发,可以充分发挥出App的所有优势,你可以使用任何API提供的功能,而不像混合开发那样有着种种限制。此外,原生代码开发的App的运行速度也是非常流畅的。对于考虑兼容性广、适配所有机型的App来说,原生开发几乎是唯一的选择。-安卓开发语言

这类开发的弊端是研发成本较高,因为同样的业务逻辑需要在Android和iOS上分别来实现。

②追求迭代效率的B端App:

一些公司内部使用的大型App,由于使用范围仅限于某一个组织内部,不需要追求极致的用户体验以及广泛的机型适配,而追求的是系统版本的功能开发,问题处理的便捷性,更重要是降低App的研发成本。

对于这类App,适合采用混合开发的模式来做,例如Flutter、Ionic、Cordova等,这类开发的优势是一次开发,处处运行。无需再单独为Android和iOS分别开发代码,可有效降低企业的研发成本,也提高了App的版本迭代速度。此外,之前需要高薪聘请Android和iOS工程师,现在只需要会Web开发的人员即可。-安卓开发语言

这类App的弊端是流畅性较低,兼容性弱,无法开发大型游戏等对性能要求较高的场景。

以上就是目前App开发的两大分类,均占有一定的市场。所以你这个问题不能一概而论,需要分上述两个情况来决策,希望可以帮助到你!

为什么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 希望可以帮到你

开发鸿蒙App需要什么编程语言,什么时候开发工具

估计鸿蒙应该会以之前华为已经公布的方舟编译器为应用生态的核心,即将所有安卓程序编译为本机代码。所以题主的问题会转变为“方舟编译器支持编译什么语言”?

之前华为公布的方舟编译器提出的主要特色就是不再“一边运行一边翻译”,流畅度可以提升60%,那么可以推断方舟编译器多半是一个将程序源码编译为本机机器代码的这么一个编译器了。那么对于一个编译器来说,主要要讨论的有输入和输出两个方面。-安卓开发语言

输入猜测:方舟编译器可能支持编译哪些输入代码?

  • 方舟编译器至少应该包含一个JAVA编译器,因为目前安卓程序大多还是采用Java进行开发,现有大量的Java遗产代码支撑起了安卓的生态(还包括部分Java生态)。

  • 方舟编译器也应该包含一个Dalvik字节码编译器,如此还可以将已经编译好的DEX字节码程序编译为本机代码,既然对Java编译器都已经搞定,搞定字节码编译也并不难。

  • 虽然Kotlin已经被宣布成为安卓开发的第一语言,但开发社区转向Kotlin还需要时日,方舟编译器未来应该也要考虑对Kotlin的支持。

  • 此外借道Xamarin的C#也能开发安卓程序,但是使用者寥寥,如果方舟编译器也能支持编译Xamarin的.net字节码库,那未来可以把Windows生态也拉入到鸿蒙的阵营。

输出猜测:方舟编译器可以支持输出哪些指令集的编译结果?

  • ARM指令集,这是必须的了,因为华为自己的麒麟芯就是基于ARM8做出来的。所以方舟编译器首先会确保编译出来的程序能够在ARM芯片上运行,并且方舟编译器可能还会支持华为自己的指令扩展包括对麒麟芯内部AI单元的指令。这将是近期策略,毋庸置疑。-安卓开发语言

  • X86指令集,考虑到美国的打压,微软可能停止向华为提供Windows系统授权,那么华为需要在自己未来的X86 PC上部署自己的操作系统,那么可能也需要从基础上支持X86指令集。再考虑到INTEL,AMD等X86 CPU供应商也可能掣肘。那么还有国内获得了X86授权的国产CPU,他们这两年也逐渐将产品性能赶上来了。到时候华为如果不用Intel和AMD的芯片,还可以用国产CPU,性能问题随着摩尔效应收窄,和国产工艺迎头赶上,加上市场空间的转移,国产CPU会大有所为。所以华为的方舟编译器也要扶持这部分生态。-安卓开发语言

  • RISC-V指令集:RISC-V是可以与ARM媲美的开源硬件平台,这很可能是未来中国完全摆脱ARM和X86限制的途径之一。因此如果华为要完全解决受制于人的发力很可能会考虑在未来,将成熟的RISC-V指令集加入方舟编译器的支持。-安卓开发语言

至于开发环境

估计方舟编译器是可以与现有的主流开发环境协同使用的,就像一个插件,将原有的安卓开发工具包替换为方舟编译器工具包即可,或者两者并存。估计Eclipse,Android Studio以及IntelliJ等都可以支持。当然华为要像AliOS那样推出自己的开发环境(AliOS Studio)甚至自己的开发语言 也不是不可以。-安卓开发语言