安卓上的Clojure

78

是否可以使用Clojure编写Android应用程序? 如果可能的话,有人能推荐一些好的教程或书籍吗?

6个回答

29

是的,这里是我知道的主要项目:https://github.com/remvee/clojurehelloandroid

还有一个小教程http://riddell.us/ClojureAndAndroidWithEmacsOnUbuntu.html,尽管我不会感到惊讶如果这个教程已经过时了,因为当我按照这个教程的代码进行实验时,已经过去了一年多时间,并且remvee的代码已经更新。

编辑:请参阅 Stuart Sierra 和 Clojure/core 团队在此处的更新:http://groups.google.com/group/clojure/browse_thread/thread/876c90d3ae353c61

"Clojure 1.2.0 在 Android 上可以“开箱即用”,但启动时间仍然是一个问题。Clojure/core 的一些成员通过有选择地删除在运行时不需要的东西来试图改进这一点。

关注http://dev.clojure.org/display/design/Android+Support以获取最新动态。最后更新是由 Clojure/core 成员 Aaron Bedra 在 2010 年 12 月进行的。我不会说现在这是一个高优先级的问题,但人们也没有失去兴趣。

如果你打算立即发布应用程序,我个人不建议使用 Clojure 编写 Android 应用程序。但如果你有兴趣在 Android 上尝试 Clojure 并使其变得更好,那就去试试吧。"


17

由于Android 2.2的JIT编译器极大地改善了类加载时间,Clojure受益匪浅。Clojure创建了许多小类,在先前的Android版本中加载这些类需要很长时间。

查看这个正在进行中的工作,使用Clojure构建一个swank插件(链接)以在Android上运行。


3
我以为这里的“swank”只是另一个形容词。 - Matthew
3
我明白了,我会尝试找到它被转移到了哪里。虽然 404 错误页面挺酷的 :) - Arthur Ulfeldt

14

在Android上使用Clojure的新选择是ClojureScript

ClojureScript将Clojure编译成JavaScript,然后您可以将其包装在应用程序中。如果您的应用程序适合JavaScript,则可以完全绕过Dalvik-VM并避免加载时间问题。许多需要更紧密与平台集成的应用程序无法使用此方法。如果您的应用程序可以在没有严格平台集成的情况下运行,这可以为您节省大量时间。


很遗憾,你不能使用ClojureScript脚本化Java。 - gtrak

8

我知道这个问题有点过时了,但是以防万一,提供一下现在Clojure在Android上的情况。自从上面的回答以来,lein-droidNeko项目已经显著地改进了在Android平台上使用Clojure编写完整应用程序的难度。


7

这个问题之前已经被回答过了。是的,通过一些小技巧是可以实现的。但是上次我尝试时非常缓慢且占用内存很多。当时使用的是Clojure 1.1和Android 2.1。自那时以来可能已经有所改进。


13
每次问这个问题时,答案似乎都会更好 :) (也就是说答案更接近“是的,它有效”,而不是“它可能在某天有效”)。也许下一次问起时,我们将得到一个真正“好”的答案。 - Arthur Ulfeldt

1
在Android市场中搜索“Clojure REPL”、“Clojure”或“Sattvik Software”,您会发现一个非常好的REPL。我一直在我的XOOM 1平板电脑上使用它,先是在Android 3上,现在在Android 4.0上使用也没有任何问题。
如果你足够努力地搜索,你会找到Java(Java IDE)、Ruby(Ruboto IRB)、Python、Lua、Perl、Javascript(最后四个为SL4J,也有Lua的SigmaScript)、ISLisp(tiny-ISLispdroid)、OCaml(OCaml Toplevel)、Scheme、C、C++、C#、Pascal、Basic甚至Forth的程序!
我很遗憾他们仍然没有Scala的程序!

3
这个问题并不是“我怎样在Android设备上运行Clojure代码”的问题,而是“我怎样用Clojure编写Android应用程序”。 - anon

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