Java applications don't scale. They don't. It's a fact, and it's not even up for debate, although many in the Java community are unwilling to admit it. But it's true. After all, why would there be a need for all of these polyglot programming languages that promote their scalability if there wasn't some severe scalability issues with Java. After all, you don't invest brobdingnagian amounts of time and energy fixing a problem that doesn't exist, do you? And just think about how much time and energy has gone into languages like Scala and Clojure? If we use that as a yardstick to measure how bad things are in the Java ecosystem, then the only conclusion is that when it comes to scalability, Java is at DEFCON ONE.
Why won't the Java programming language scale, and why is there this huge need to introduce a bunch of new programming languages to fix the problem? The reasons are pretty basic and pretty fundamental, but there are very few resources that pontificate on the issue well. If you want to know why Java won't scale, here's why:
Josh Suereth's Scala in Depth on Amazon.com
Cay S. Horstmann's Scala for the Impatient
Martijn Verburg's The Well-Grounded Java Developer
NoSQL Distilled by Martin Fowler
Java SE 7 Programming Essentials by Michael Ernest