我相信我在某个时候读到,由于 Android 在 Dalvik VM 上运行,JVM 的动态语言(Clojure、Jython、JRuby 等)很难在 Dalvik(以及因此在 Android)上获得良好的性能。如果我没记错的话,原因是在幕后,为了实现动态类型,对 java 字节码进行了相当多的摆弄,而 bytecode->dalvik 翻译不会轻易接受这一点。
那么,如果我想为 Android 开发,我应该避免使用动态 JVM 语言吗?
编辑:我想我应该提供更多的上下文。我正在考虑使用 Clojure 为 Android 开发应用程序。我考虑使用 Clojure 有几个原因:
我想学FP
我真的不在乎学习Java
Clojure 似乎有一些非常有趣的语言概念(例如 STM)。
然而,当我尝试在 Clojure 中为 Android 编写应用程序时,我发现存在一个无法接受的性能问题。但我发现一篇博客文章说动态类型语言(例如 Clojure)会因为获取动态类型所需的字节码操作而出现问题。所以我在寻找独立的确认,这是真的还是不是。我应该知道,在这个特定问题中,所有动态类型的 JVM 语言都可以被视为相同的假设。我想我确实问了一个相当广泛的问题,所以我想我不应该对人们不太明白我在问什么感到惊讶。