问题

好吧,这真的应该问给Google的某个人,但我只想要其他意见。

即使Android支持Native代码应用程序,主要的开发工具是Java。但为什么?我的意思是,在移动设备上解释代码是不是太慢了?在介绍Froyo时,Google表示新的JIT编译器可以将应用程序的速度提高2-5倍。这意味着,使用Java而非本机代码的速度要慢2倍。

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


#1 热门回答(91 赞)

一些要点:

  • Java是一种已知语言,开发人员知道它并且不必学习它
  • 使用Java比使用C / C代码更难射击,因为它没有指针算法
  • 它在VM中运行,因此无需为每部手机重新编译它并且易于保护
  • 用于Java的大量开发工具(参见第1点)
  • 几款手机已经使用过Java ME,因此Java在业界是众所周知的
  • 速度差异对大多数应用来说不是问题;如果它是你应该用低级语言编码

#2 热门回答(37 赞)

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


#3 热门回答(17 赞)

系统稳定性的提高对于像手机这样的设备非常重要。

安全性更为重要。 Android环境允许用户运行半可信任的应用程序,这些应用程序可能以非常不愉快的方式利用手机而没有出色的安全性。通过在虚拟机中运行所有应用程序,你可以保证没有应用程序可以利用操作系统内核,除非VM实现存在缺陷。反过来,VM实现可能很小,并且具有小的,明确定义的安全性表面。

也许最重要的是,当程序编译为虚拟机的代码时,不必为新硬件重新编译它们。手机芯片的市场多种多样且变化迅速,因此这是一个大问题。

此外,使用Java可以降低人们编写的应用程序本身可以利用的可能性。没有缓冲区溢出,指针错误等...


原文链接