Android不利动态语言

时间:2009-06-10 02:01:50

标签: android dynamic clojure jvm

我相信我在某些时候读过,由于Android在Dalvik VM上运行,JVM(Clojure,Jython,JRuby等)的动态语言很难在Dalvik上获得良好的性能(因此在Android上也是如此) )。如果我没记错的话,理由是在引擎盖下,为了实现动态类型,java字节码有很多小问题,字节码 - > dalvik翻译不会轻易地解决这个问题。

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


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

  • 我想学习FP

  • 我真的不在乎学习Java

  • Clojure似乎有一些非常的 有趣的语言概念(STM 例如)。

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

5 个答案:

答案 0 :(得分:17)

丹·博恩斯坦给了presentation on Dalvik at Google I/O。一般来说,了解系统是值得的,包括您关心的约束。在Q& A中出现了编译成Java字节码的非Java语言的具体问题。

Remco van 't Veergithub project,他修补Clojure在Android上工作。 Tim Riddell撰写了tutorial on how to use it

如@sean所述,有时候问题不仅仅是表现。当被问及Jython时,Dan Bornstein在~54:00 in video.讨论它。目前不支持动态语言,它们即时生成字节码,(因为字节码转换在运行时不可用)。

答案 1 :(得分:3)

Android只是got scripting

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:2)

鉴于手机运行的相对简陋的硬件,你可能应该只针对java而不用担心动态的jvm语言。它们在jvm上的动态语言不会像我理解的那样高效。

除了Android SDK非常合理且易于编写之外,我认为使用其他东西不会带来很多好处。

答案 4 :(得分:1)

  

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

动态语言难以获得良好的性能,期限。如果您想要性能,请使用静态类型语言,如Java(或C#,F#等)。