to the dogma propagated by the C++ now Java people that statically type checked strictly compiled languages with lots of boilerplate code are required to get reliability and performance.

Dynamic languages are more productive - that's the reason all the innovation is happening over there.

Java is a fairly specialized tool in that it only allows one kind of brute force programming approach to all problems. Yet its type model is anything but simple. The complexity (which is growing along the lines of C++) is in all the wrong places. Plus its boring.

I think 1.5 is just complicated enough with generics to have pushed it beyond the threshold where its costs outweigh its benefits.