It probably isn't the same issue that is causing the Leiningen slowdown, but as near as I can tell the really slow startup time is the main reason Clojure on Android isn't currently a viable option. Which is too bad, because I'd love to see the Clojure community's take on Android development. I can imagine a UI framework spiritually similar to Facebook's ReactJS appearing and making everything so much cleaner. And with a Lisp like Clojure there would no longer be any reason to use XML for layout and Java for logic -- it could all be unified into one cohesive language. Maybe I'm dreaming too big, but that would be an exciting future.
I'd be careful about introducing more caching to the ClojureScript build process - I've been getting some really strange errors occasionally, the kind that leave garbled errors in the js that the source maps can't decypher, that disappear after a full clean & rebuild.<p>I just released a site based on Clojure + Clojurescript, with the front end written in Reagent, and it was a pretty good experience overall. The above was my main issue with the setup.<p>I've written more about the experience here (it seems there's not much interest in the site here, but at least the writeup should be interesting to those reading this post):<p><a href="https://news.ycombinator.com/item?id=8791129" rel="nofollow">https://news.ycombinator.com/item?id=8791129</a><p>(Edit: it has since got a few upvotes, only to be killed by I guess the voting ring detection. C'est la vie.)
I wish leiningen wouldn't take so long to run. The only real trouble with Clojure is how unbearably _slow_ the tools are. I can deal with the runtime taking its time to get going (mostly), but the tooling...
It's not actually that JVM startup time is slow, it's Clojure startup time in particular. See:<p><a href="https://nicholaskariniemi.github.io/2014/02/11/jvm-slow-startup.html" rel="nofollow">https://nicholaskariniemi.github.io/2014/02/11/jvm-slow-star...</a><p>And the other articles here:<p><a href="https://nicholaskariniemi.github.io/" rel="nofollow">https://nicholaskariniemi.github.io/</a>
Hmmm. I bumped my clojurescript to 0.0-2511, and I get the following:<p>$ lein trampoline run -m clojure.main<p>Exception in thread "main" java.io.FileNotFoundException: Could not locate cljsbuild/compiler__init.class or cljsbuild/compiler.clj on classpath: , compiling:(.../target/66ddb53f4f237c7eb26e49c2637097e7cd8567d9-init.clj:1:4)
...<p>Everything else works fine.<p>Do we have a more complete example project that I can check mine against?
As cool of a language as clojure might be, bad tooling is bad UX. Bad UX makes for a bad product. I don't care how many amazing features a language has, without great tools, it sucks.<p>PHP is a terrible language in terms of design, but deploys are ridiculously easy, and refreshing a page is near instantaneous. There are plenty of other things to complain about with PHP, but part of its popularity is the relatively pleasant experience with the main tools.
Leining is a very useful tool. Starting up Clojure indeed is noticeable. I wonder how much of the performance is due to Maven, and if gradle would do better. Gradle is a newer project with a custom DSL based on Groovy.