"Scala works very well with existing Java frameworks. Android is, of course, one big Java framework and we were going to have to interface with it a lot. A number of people asked, given the above, why not use Clojure--this is why."
Since when does Clojure not work well with existing Java frameworks? I wouldn't advocate Clojure or Scala one way or the other since I have little idea of what they're doing, but the above doesn't strike me as sound reasoning.
Using Java classes and interfaces from Clojure is straightforward. Instantiating objects is easy. Implementing Java interfaces is easy. Both are fluid and feel idiomatic.
On the other hand, extending an existing Java class is quite awkward, requiring the use of gen-class, and does not (IMHO) feel idiomatic. I found the gen-class facility poorly documented. It also has a potentially small performance penalty due to an extra dereference (though in my testing I could not measure a meaningful difference between a gen-class object and a native Java implementation).
So Clojure is nice for using Java stuff from Clojure, however it becomes awkward for using Clojure stuff from Java.
I've never found it to be that awkward to extend existing classes from java. Part of the problem in clojure are there are so many different ways to do it, all with different shortcomings.
For simple adding of a protocol to a class you can always just use (extend-class)
Proxies are simple and work well in other cases.
the gen-class documentation is a bit confusing, it helped me to look @ some examples. I used a different site that I can't find now, but this one seems helpful.
I wrote the post and to clarify, I didn't mean to suggest that interfacing with Android was impossible with Clojure, simply that is was easier with Scala. As rickmode points out, there are some things that make Clojure more difficult.
When I developed the application for my talk on non-Java development for Android [1], I found that Scala performed as quickly as plain Java. However, it does use a bit more heap.
That paper explains that the Scala engineer performed numerous algorithmic improvements, whereas the Java one "refused" to (he reported somewhere else, on a mailing list? that he wasn't told it was for a paper). The paper also explains that using Scala idiomatic for-comprehensions produced very slow results.
Since when does Clojure not work well with existing Java frameworks? I wouldn't advocate Clojure or Scala one way or the other since I have little idea of what they're doing, but the above doesn't strike me as sound reasoning.