代码之家  ›  专栏  ›  技术社区  ›  Onorio Catenacci

Android对动态语言不利

  •  30
  • Onorio Catenacci  · 技术社区  · 6 年前

    我相信我在某个时候读到,由于Android在Dalvik VM上运行,JVM的动态语言(Clojure、Jython、JRuby等)将很难在Dalvik上获得良好的性能(因此在Android上也是如此)。如果我没记错的话,原因是为了实现动态键入,在后台对java字节码进行了大量的修改,字节码->dalvik翻译公司不会轻易接受这一点。

    所以,如果我想为Android开发,我应该避免使用动态JVM语言吗?


    编辑:我想我应该提供更多的上下文。我正在考虑使用Clojure为Android开发应用程序。我考虑使用Clojure有几个原因:

    • 我真的不想学Java

    • 例如)。

    然而,当我试图在Clojure中为Android编写应用程序时,我发现存在一个无法接受的性能问题。但我发现一篇博文说,动态类型语言(例如Clojure)会出现问题,因为需要对字节码进行操作才能获得动态类型。所以我在寻找独立的证据来证明这是真的还是假的。我应该知道,在这个特定的问题上,所有动态类型的JVM语言都可以被视为相同的,而不是假设。我想我确实问了一个相当广泛的问题,所以我想人们不太明白我在问什么,我不应该感到惊讶。

    5 回复  |  直到 8 年前
        1
  •  17
  •   Flow Matt McDonald    11 年前

    丹·伯恩斯坦做了一个演讲 presentation on Dalvik at Google I/O

    Remco van 't Veer 有一个 github project 他给Clojure打了补丁,让他在Android上工作。 Tim Riddell tutorial on how to use it .

    正如@sean在这里提到的,有时存在比性能更大的问题。当被问及关于Jython时,Dan Bornstein在 ~54:00 in video. 目前不支持动态语言动态生成字节码(因为字节码转换在运行时不可用)。

        2
  •  3
  •   Javier    15 年前

    安卓只是 got scripting

        3
  •  2
  •   Sean McCauliff    15 年前

    有一些补丁可以让clojure工作。

    http://riddell.us/tutorial/clojure_android/clojure_android.html

    我认为真正的问题是某些动态语言使用字节码生成器;它们不会为Davlik VM生成字节码。因此,eval将不起作用。

        4
  •  2
  •   Jeremy Wall    15 年前

    考虑到运行的手机硬件相对来说比较狭窄,您可能应该只针对java,而不必担心动态jvm语言。据我所知,jvm上的动态语言不会像java那样高效。

        5
  •  1
  •   j d    9 年前

    JVM的动态语言将很难在Dalvik上获得良好的性能