首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Android使用Java?

为什么Android使用Java?
EN

Stack Overflow用户
提问于 2010-08-25 04:56:17
回答 5查看 100.2K关注 0票数 118

好吧,这真的应该问谷歌的人,但我只是想要其他的意见。

尽管Android支持原生代码应用程序,但主要的开发工具仍然是Java。但是为什么呢?我的意思是,在移动设备上解释代码是不是太慢了?在介绍Froyo时,谷歌表示,新的JIT编译器可以实现2-5倍的应用程序速度。这意味着,在原生代码上使用Java的速度要慢2-x倍。

是的,我知道使用托管代码应用程序在系统稳定性方面更安全,因为虚拟机可以更好地控制程序执行,但尽管如此,这种性能下降仍然很大,我看不出为什么要使用它。

EN

回答 5

Stack Overflow用户

发布于 2010-08-25 05:01:23

在字节码级别,Android不使用Java。源代码是Java,但它不使用JVM。

票数 41
EN

Stack Overflow用户

发布于 2010-08-25 05:04:34

首先,根据谷歌的说法,Android没有使用Java。这就是甲骨文起诉谷歌的原因。甲骨文声称Android侵犯了一些Java技术,但谷歌称这是Dalvik。

其次,自1995年以来,我还没有见过Java字节码解释器。

你能用一些实际的基准来支持你的性能猜测吗?考虑到你提供的不准确的背景信息,你的假设范围似乎是不合理的。

票数 7
EN

Stack Overflow用户

发布于 2010-08-25 05:47:33

正如在其他地方提到的,主要问题是Android被设计为一个可移植的操作系统,可以在各种各样的硬件上运行。它还建立在许多现有移动开发人员熟悉的框架和语言之上。

最后,我要说的是,这是对未来的押注--无论存在什么性能问题,随着硬件的改进,都将变得无关紧要--同样,通过让开发人员针对抽象进行编码,Google可以更容易地拆分和更改底层操作系统,而不是开发人员使用POSIX/Unix API编码。

对于大多数应用程序来说,使用基于VM的语言而不是原生语言的开销并不是很大(使用web服务的应用程序的瓶颈,比如Twitter,主要是网络)。Palm也证明了这一点--它使用JavaScript而不是WebOS作为主要语言。

考虑到几乎所有VMs都会向下编译为本机代码,因此原始代码速度通常与本机速度相当。与其他因素(复杂对象运行时、通过边界检查检查内存访问的“安全性”等)相比,许多由高级语言引起的延迟与VM开销关系不大。

还要记住,无论使用哪种语言编写应用程序,许多实际工作都是在较低级别的API中完成的。顶层语言通常只是将API调用链接在一起。

当然,这条规则也有很多例外--游戏、音频和图形应用程序突破了手机硬件的极限。即使在iOS上,开发人员也经常选择C/C++来获得这些方面的速度。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3560963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档