I haven't programmed in Java but I sometimes read Java source code. I must admit that I like the language which to me is a better C++. However I don't like the way it is used i.e. tooling, libraries and programs. I don't like AbstractProxySingletonFactories, XML configuration files, long method names and lots of other things. That being said I believe that a change in the programming culture surrounding Java may lead to more pleasant programming experience.