This really doesn't make a lot sense. Java is also easy to bind to C / C++ and its performance is better than Ruby or Python. The logic behind that seems to be ... that scaling in memory usage is important but not CPU usage? I'm not really a Java apologist, but it just seems another one of those languages that people bash because it's cool to bash.
In sensible hands, you can exchange Java for C++ and get very similar performance for a lot less hassle, and (increasingly) lean on scripting the same way you would with python/ruby. Of course that means ignoring the way "enterprises" mostly use java (which is just silly), and using it more the way google does.
Please note I mentioned memory. Java is OK on bare language algorithm implementation speed, but if you have a look at all the benchmarks in the language shootout its memory needs are up to 108 times better. A conservative consideration would be 10 times better in the average algorithm.
That is compounded with the typical architecture of Java frameworks. Also finding issues sometimes feels like occult magic on modern JVMs. And then, running with compatibility issues on JVM versions and all that.
Java failed in the browser and now it will probably have a crash at the server. There is no more budget for multimillion dollar datacentres everywhere. But thanks for all the jobs! :)
Why do you seem to think that java requires more servers?
It's a language.
Maybe specific crappy jsp frameworks require more servers, but that's not java.
It's no proof, but real life shows something even worse than that against Java. For example the one thread per connection model everywhere or the XML web services throwing away objects faster than the GC can handle.
>For example the one thread per connection model everywhere or the XML web services throwing away objects
Hence my statement:
> ignoring the way "enterprises" mostly use java (which is just silly)
Of course the thread per connection model is long gone (at least what I have heard, but software tends to not die) and the XML beast is dying... but that it more how people abuse it.
but if its memory you want, you can't do better then using the OS to its full power via C/C++, which is what you are doing when you are using C/C++. Using anything that is a full VM (like jvm, or if you think that is opaque - give erlang a try !) then you kind of tell the OS to "go away" and the VM becomes an OS etc...