It's not the lingual finesses or cool features of them that I miss, because the guys who create them are pretty well knowing what they're doing. No, it's not that.
It's the experience with them from the point of view of the ops. I have hardly found an article telling me how to operate for example a Clojure & Co. app concerning, let's say, the heap strategies. They say, it's the same as Java, but I don't believe it since they do too many things behind the scenes which I would do with Java explicitly - classes etc.
On the other side, the very important design principle "Design for ops" still seems to be secondary. But I think what is actually the case is that these languages, maybe except Groovy, are still elaborating on themselves (lingual and programmatic things) not being ready for the wide
operational acceptance.
Look at the millions of Java language based applications installed all over the world - on clients, servers etc. We know how to operate them, and we have collected this experience all through the years, so we know how we would operate the next one or at least where we would look for operational issues and solutions for all those protocols, web-services, XMLs, heaps etc.
All this knowledge we still don't have around the new languages though they run on the same JVM. Why? Well, please point me to the articles describing in detail how I should optimize the heap for Clojure's first-class functions based upon
existing experience, not pointing me just to the profiler and debugger and telling me to find it out on my own. Exactly.
I am really happy that the JVM enables cool new languages or nice remakes of the old ones to run on it, and some of them I will definitely have to learn next time, but before I will really use them for professional solutions, I want to see the real life experience reports about how to operate the solutions based on them since I'm pretty sure that their behavior for example under high load might be completely different than that of the standard Java apps where I can predict for example the heap usage based on existing experience of how objects get allocated, moved from one heap generation to the other and garbage-collected and which pitfalls I should avoid.
I'm sorry to say that, but through my job I'm seldom an early adopter. I'm more the guy who has to wait for a technology to jump over the first major barrier - become operable and wider accepted, and then take it - still in its early development phase.
I still miss this phase about almost every new JVM language. I might be wrong, but this is my honest opinion. Any corrections and suggestions are, of course, welcome.