Android上的Java替代方案

11

我刚买了一个安卓手机,非常想开始在上面进行编码!但是我并不是很喜欢Java语言。虽然我可以用它,但我想知道是否有合理的替代安卓虚拟机的语言选择?

我曾使用Clojure完成过一个中等规模项目,但从我所读的评论来看,在安卓上运行时速度非常慢。那Scala怎么样?我读到有些人在安卓上进行了一些实验,它的速度足够快吗?学习曲线有多陡峭?

谢谢, Ze Maria


这个链接:https://dev59.com/S3RB5IYBdhLWcg3w4bOv 看起来很有趣。 - Alex
7个回答

4

有NDK可以让你使用C或C++编写程序的部分

还有ASE可以让你使用Python和其他语言编写脚本。虽然你可能听说过,但没有Python编译器。

我读过一些关于Scala的东西,但由于我并不是很感兴趣,所以没有注意。


1
目前 NDK 只生成针对 ARM 架构的代码。因此,使用其他 CPU 的设备将被忽略,比如 WeTab。 - stesch

4

有很多人在用Scala进行Android开发。特别值得注意的是,甚至有一个插件可以为Scala项目的首选构建工具SBT提供针对Android的目标。

至于学习曲线,我不能代表Android开发本身发表意见,因为我没有做过。至于Scala,你可以非常快速地提高生产力,但学习语言的所有细节需要时间。你不需要学习所有细节-我看到有些人几乎没有经验就写出了非玩具程序-但有些人无法忍受不知道他们正在使用的语言的某些内容。

此外,许多Scala代码都是非常声明性的。例如,如果您查看SBT构建文件,则大多数都是声明性的。出于某种原因,有些人对此感到非常沮丧。

我猜我想说的是,这主要取决于你如何适应Scala。

关于速度,Scala 代码可以像 Java 代码一样快,尽管这可能需要避免更高级别的抽象以换取更丑陋但更快的代码。这很大程度上取决于您正在进行什么类型的计算。

3

Android 2.2在VM中增加了jit,这应该使加载Clojure程序更加高效。Clojure生成许多小类,在android程序启动时加载需要一段时间。虽然现在还不是无法忍受的,但这将在新版Android中得到缓解。


4
Clojure 代码依赖于良好的垃圾回收(GC),而 Dalvik 无法提供。无论是JIT还是非JIT。 - stesch

1

1

JRuby也有一个移植版适用于Android,我玩过并且觉得很有趣。http://ruboto.org/


0
“足够快” - 您正在手机上运行应用程序,这些应用程序与您期望的功能有关。
此外,Java 的性能已经在这些年中得到了提高。但是,您只是在编写 Java 代码。谷歌创建了一个工具,将 Java 字节码转换为 .dex(Dalvik 可执行文件)。Dalvik 是 Java 使用的 VM 实现,针对该平台进行了优化。这意味着您可以使用高级语言(如 Java)进行编程,它提供了许多辅助类,这意味着您将更加高效。
他们确实有一个 NDK,但我认为您仍然需要一个 Java 前端,并在必要时调用您的 Java 代码来调用 NDK 代码。您几乎只想在真正需要优化时编写本机代码。许多 Java 类(如 Java NIO 和 OpenGL 类)只是低级调用的包装器,直接使用硬件资源。
我可能有点过度回答了您的问题。

0

还有Lua,你可以在Corona SDK中使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接