I don't want to put professional qualities of Google engineers under doubt, but could someone explain to me why it's so complicated to remove GIL in Unladen Swallow? As far as I remember, UnSw targets LLVM which is an advanced VM with JIT compilation (i.e. not fully interpreted). Jython does (I'm not a Jython developer, so may not know the details) nearly the same, but targets the JVM and Jython does not have GIL as a result. What's the key difference between LLVM and JVM in this regard?
One other potential difficulty is that Jython doesn't aim to be 100% compatible with existing C extensions. Unladen swallow does. Plus, I believe Unladen Swallow is essentially a branch of the CPython source code while Jython was written from scratch.
Well, the JVM is a high quality, mature, very fast, cross platform runtime. However, I'm always slightly concerned that letting the JVM in through the front door might open the back door to the kind of SOP (Soviet Oriented Programming) exemplified by Java EE. JSR hell is lurking behind the most innocent-looking serverside library :-)
Java suffers from JSR approval hell just because it tries to stadardize everything. This is the requirement to perform well in the enterprise world, along with the programmers certification mechanism and inclusion of the top industry players in the standards approval.
If your language is just a hackers' toy (Clojure and Scala are exactly that) then why do you care about JSRs in the first place? The JSRs don't mention JVM usually, only the libraries or Java language extensions.
I agree with you that it should be possible to avoid much of the complexity of Java EE if you just use the JVM.
But one motivation for using a JVM based language in the first place is that so many libraries are available on that platform. Unfortunately, many of them suffer from excessive complexity and some of that complexity is due to the JCP.
Ruby community has its own traits. The "gem for Java" probably does not exist because not too much people need it (otherwise it would have been written already). In pure Java it's hard to use REPL, and you have to build your project anyway before running it, so maven suits better here.
Removing the GIL is easy if you remove compatibility requirements with C extensions. A lot of complex C extensions rely on the exact python ref counting semantics. That's why unladen swallow is interesting in the first place.