More to the point of using native code vs high(er) level languages, the usual complaint here is garbage collection that takes arbitrary amounts of time and possible stalls the applications. I think the real issue is not language, but compiler design. With current multiprocessor systems threading can cover up a ton of garbage collection and make high(er) level languages APPEAR to be more efficient. Compilers should take care of this for us.
From a developer quality standpoint, the developer that can churn out high quality code (no bugs, does what was intented) in the shortest time is the winner. What language is used or is currently popular depends on speed to develop with and how slow the application can be to still run acceptably. That's whay better compilers and run time libraries are expensive. The rest of us get lowest common denominator systems from M$ and open source, and have slow, memory hogging and leaking applications to show for it. As developers we should be aware of what we are doing, try to use the right tool and bitch like crazy to language and compiler developers that we need better tools.