理论上,Dalvik执行任何虚拟机字节代码,例如使用
的编译器创建Dalvik的字节码编译器的工作版本是否可用于Java以外的其他语言?
答案 0 :(得分:61)
答案 1 :(得分:24)
Scala非常适合。
我正在使用Scala(Website written in Chinese with some screenshot,source code @ GitHub)编写我的Android应用程序项目,并且很容易设置evnviroment(没有IDE,使用SBT作为构建工具)。
它可以访问Android SDK中的每个API,所以你可以用Java做任何事情,你也可以在Scala中做。
您可以查看此blog entry,了解如何使用Scala和SBT构建Android应用程序。
答案 2 :(得分:6)
Kawa是一个可爱但鲜为人知的Scheme变体,已经安静存在多年,并且在JVM和Dalvik上运行,本地。因此,其输出不包含额外的VM,仅包含显式导入的库。对于最终程序员来说,这意味着Kawa的性能和可执行文件大小几乎与标准Java相同(不需要ProGuard)。
Kawa还包含许多宏(包括一些特定于Android API的),这些宏形成了一个很好的干净语法(假设一个人不反对括号),并在Scheme之上添加一些好吃的东西,比如“promises”(懒惰) eval和期货一)。该语言非常强大且文档齐全,自Java早期以来一直在积极维护和发展。
The Java Advent Calendar总结了Kawa的优点以及一些信息性的例子和链接。
答案 3 :(得分:3)
我没玩过它,但我知道Scala有效。
答案 4 :(得分:3)
答案 5 :(得分:1)
Mercury也适用于Android,使用其Java后端。我写了一个simple app来帮助某人开始(还有其他几个例子),mercury-android-helper也是为了这个目的(虽然在这个时刻,它只是一些提交。正在使用ProGuard,因此.apk
大小令人震惊。)
虽然这里的其他帖子对于Scala-on-Android很开心,但Scala论坛中的海报更关注Scala能否克服Dalvik的一些限制,而使用它的人说他们为非生产代码保留了它。 (关于Scala问题的一些讨论here。)
我还不能说水星是否有与Dalvik有关的问题,但我暂时从Scala切换到它。
答案 6 :(得分:0)
在Dalvik支持JIT(Just In Time)编译之前,动态类型语言是不可能的。我相信在其中一个实验性Eclair分支中有JIT支持,但它尚未在Android中正式提供/支持。
答案 7 :(得分:0)
1)Angular + nativeScript
2)反应性