Clojure on Android
AndroidClojureAndroid Problem Overview
Is it possible to program Android apps in Clojure? Can anybody suggest a good tutorial or book, if it is possible?
Android Solutions
Solution 1 - Android
Yes, here is main project I am aware of: https://github.com/remvee/clojurehelloandroid
And here is a little tutorial http://riddell.us/ClojureAndAndroidWithEmacsOnUbuntu.html though I would not be surprised if this tutorial is outdated, as it was over a year ago when I played with the code following this tutorial, and remvee's code has since been updated.
EDIT: see the update here from Stuart Sierra and the Clojure/core group: http://groups.google.com/group/clojure/browse_thread/thread/876c90d3ae353c61
> "Clojure 1.2.0 works "out of the box" > on Android, but startup time is still > a problem. Some members of > Clojure/core have experimented with > ways to make this better, mostly by > selectively removing stuff that isn't > needed at runtime. > > Follow > http://dev.clojure.org/display/design/Android+Support > for news. The last update was by Aaron > Bedra, a Clojure/core member, in > December 2010. I wouldn't say it's a > high priority right now, but neither > have people lost interest. > > I personally would not recommend > writing an Android app in Clojure if > you intend to release it right away. > But if you're interested experimenting > with Clojure on Android and making it > better, then go for it."
Solution 2 - Android
Clojure benefits greatly from the android 2.2 JIT compiler which greatly improves class load times. Clojure creates lots of small classes which was taking 'forever' to load on previous android versions.
check out this 'in progress' work on a swank plugin for androiding with clojure
Solution 3 - Android
A new option for Clojure on android is ClojureScript.
ClojureScript compiles Clojure into JavaScript which you can then wrap in an app. This bypasses the Dalvik-VM entirely and avoids the load time issues, if your app is suited to javascript. many apps looking for more tight integration with the platform can't use this approach. If your app can live with out tight platform integration this could save you a lot of time.
Solution 4 - Android
I know this is a bit old, but just in case someone stumbles on this, clojure on Android has come a long way since the answers above. The [lein-droid][1] and the [Neko][2] projects do make it a lot easier to write full android programs using clojure from begining to end.
[1]: https://github.com/clojure-android/lein-droid "lein-droid" [2]: https://github.com/clojure-android/neko "Neko"
Solution 5 - Android
This has been answered before. Yes, it is possible with a few minor hacks. However last time I tried it was extremely slow and very memory hungry. This was with Clojure 1.1 and Android 2.1. Things might have been improved since then.
Solution 6 - Android
Search for "Clojure REPL", "Clojure" or "Sattvik Software" in Android Market and you will find an excellent REPL. I've been using it in my XOOM 1 Tablet, first with Android 3 and now with Android 4.0 without any problem.
If you search hard enough you will find programs for Java (Java IDE), Ruby (Ruboto IRB), Python, Lua, Perl, Javascript (SL4J for the last four, also SigmaScript for Lua), ISLisp (tiny-ISLispdroid), OCaml (OCaml Toplevel), Scheme, C, C++, C#, Pascal, Basic and even Forth!
I regret they still don't have one for Scala!