Clojure on Android

AndroidClojure

Android 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!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJaneNYView Question on Stackoverflow
Solution 1 - AndroidrplevyView Answer on Stackoverflow
Solution 2 - AndroidArthur UlfeldtView Answer on Stackoverflow
Solution 3 - AndroidArthur UlfeldtView Answer on Stackoverflow
Solution 4 - AndroidrolandView Answer on Stackoverflow
Solution 5 - AndroidMaurits RijkView Answer on Stackoverflow
Solution 6 - AndroidBruno AlessiView Answer on Stackoverflow