代码之家  ›  专栏  ›  技术社区  ›  B.Gen.Jack.O.Neill

为什么Android使用Java?[关闭]

  •  111
  • B.Gen.Jack.O.Neill  · 技术社区  · 14 年前

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

    尽管Android支持本机代码应用程序,但主要的开发工具仍然是Java。但为什么呢?我是说,在移动设备上解释代码不是太慢了吗?在引入Froyo时,Google说新的JIT编译器可以实现2-5倍的速度。这意味着,在本机代码上使用Java要慢2倍。

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

    9 回复  |  直到 4 年前
        1
  •  100
  •   josefx    10 年前

    一些要点:

    1. Java是一种已知的语言,开发人员知道它,不必学习它

    2. 用java来射击自己比用C/C++代码更难,因为它没有指针算法。

    3. 它运行在一个虚拟机,所以不需要重新编译它的每一个手机在那里,很容易安全

    4. 大量Java开发工具(见第1点)

    5. 一些移动电话已经使用了javame,因此Java在业界是众所周知的

        2
  •  39
  •   David Thornley    14 年前

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

        3
  •  21
  •   PeterAllenWebb    14 年前

    非常重要 在手机这样的设备上。

    安全 更重要的是。Android环境允许用户运行半可信的应用程序,在没有良好安全性的情况下,这些应用程序可以以真正令人不快的方式利用手机。通过在虚拟机中运行所有应用程序,可以保证没有任何应用程序可以利用操作系统内核进行攻击,除非虚拟机实现中存在缺陷。反过来,VM实现可能很小,并且有一个小的、定义良好的安全表面。

    而且,使用Java使得人们编写的应用程序本身不太可能被利用。没有缓冲区溢出、指针错误等。。。

        4
  •  13
  •   Plo_Koon    11 年前

    本机代码并不一定比Java代码快。您的配置文件数据在哪里显示本机代码可以运行得更快?

    为什么是Java?

    • 有大量的开发人员已经精通Java。

    • Java允许他们创建沙盒应用程序,并创建一个更好的安全模型,这样一个坏的应用程序就不能破坏整个操作系统。

        5
  •  7
  •   erickson    14 年前

    其次,我从1995年就没有见过Java字节码解释器。

    你能用一些实际的基准来支持你的性能推测吗?鉴于你提供的背景资料不准确,你的假设范围似乎不合理。

        6
  •  4
  •   Pablo Santa Cruz    14 年前

    Java对于Google在Android中使用它有一个非常有说服力的论点:它拥有庞大的开发者基础。所有这些开发者都准备好为他们的移动平台开发。

    请记住,从技术上讲,Android不使用 纯净的 爪哇。

        7
  •  4
  •   JulesLt    14 年前

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

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

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

        8
  •  1
  •   Ben Weiss    14 年前

    新的JIT运行应用程序的速度是旧的dalvikVM(都是JAVA)的2-5倍。因此,比较不是C对JAVA,而是JIT对vm。

        9
  •  1
  •   Colin Hebert    14 年前

    即使性能不是最好的,因为它是对字节码的一种解释,android也将整个java社区作为潜在的开发人员。更多的应用程序,更多的客户端等。

    最后,没有什么性能不是那么差,这就是为什么java被用在更小的设备上(见JavaMe)。