理论上,Dalvik 可以执行任何虚拟机字节码,例如使用以下编译器生成的字节码:
- AspectJ
- ColdFusion
- Clojure
- Groovy
- JavaFX Script
- JRuby
- Jython
- Rhino
- Scala
除了 Java 以外,还有其他语言的字节码编译器可以在 Dalvik 上运行吗?
在推出时,Java
是唯一官方支持的用于构建可分发第三方Android软件的编程语言。
Android Native Development Kit(Android NDK)允许开发人员使用C
和C++
构建Android软件组件。
除了提供对本地代码的支持外,Google还扩展了Android以支持流行的动态脚本语言。本月早些时候,Google推出了Android Scripting Environment(ASE),该环境允许第三方开发人员使用perl
,JRuby
,Python
,LUA
和BeanShell
构建简单的Android应用程序。有关ASE的想法和用法,请参阅此示例链接。
我刚刚参考了一篇此处文章,其中包含以下有用信息:
(C# .net-Mono等)
。LUA
,Perl
,Python
,BeanShell
等。我刚刚阅读了Google发布“简单”Android编程语言的第二篇文章。有关此示例,请参考此处。
刚刚(2010年8月2日),我阅读了一篇关于“Frink编程语言和Android计算工具”的文章,请参阅这些链接 链接-1 , 链接-2
在2010年8月4日,我发现了关于RenderScript
的信息。基本上,它被称为用于高性能图形编程的类似于C的语言,可帮助您轻松地在Android应用程序中编写高效的视觉效果和动画。由于尚未完成,因此尚未发布。
Scala非常优秀。
我正在使用Scala编写我的Android应用程序项目(中文网站并带有一些截图,GitHub上的源代码),而且不使用IDE,在使用SBT作为构建工具的情况下设置环境相当容易。
它可以访问Android SDK中的每个API,因此您在Java中能够做的任何事情,在Scala中也可以实现。
您可以查看这篇博客文章,了解如何使用Scala和SBT构建Android应用程序。
Kawa是Scheme的一个变体,存在已久且鲜为人知,可以在JVM和Dalvik上本地运行。因此,它的输出不包含额外的VM,仅包括明确导入的库。对于最终程序员来说,这意味着Kawa的性能和可执行文件大小几乎与标准Java相同(无需使用ProGuard)。
Kawa还包括许多宏(包括一些特定于Android API的宏),使得语法更加简洁(假设你不排斥括号),并在Scheme的基础上添加了一些有趣的功能,如“promises”(延迟求值和未来值合二为一)。该语言非常强大且文档齐全,自Java早期以来就一直得到积极维护和发展。
Java Advent Calendar用一些有用的例子和链接总结了Kawa的优点。
Mercury 在 Android 上也可以使用其 Java 后端。我编写了一个简单的应用程序,可以帮助某些人入门(还有其他几个示例),以及mercury-android-helper 也是为此目的而编写的(尽管在这个确切的时刻,它缺少一些提交。并且两者都没有使用 ProGuard,因此 .apk
的大小令人震惊)。
虽然这里的其他帖子对于 Scala-on-Android 感到高兴,但 Scala 论坛的发帖人更关心 Scala 突破 Dalvik 的一些限制的能力,而使用它的人说他们将其保留用于非生产代码。(关于 Scala 的问题有一些讨论在这里。)
我还不能确定 Mercury 是否具有自己与 Dalvik 相关的问题,但我已经暂时从 Scala 切换到了它。
动态类型的语言在Dalvik支持JIT(即时编译)之前是不可能实现的。我相信在实验性的Eclair分支中有JIT支持,但它还没有在Android中得到官方的支持。
1) Angular + NativeScript
2) React Native
WebView
中使用HTML和JavaScript语言,甚至有JavaScript框架和SDK可用。 - Shelby Moore III