>>34
The way Java is constructed inhibits many useful optimizations that could eliminate most GC allocations by converting them into manual allocations. From Java's design to its implementation, it's turtles all the way down. For the sake of sanity, I suggest leaving Java out of this discussion.
If you prioritize performance over readability, then what you get is a statically-typed JIT'ed almost-strictly-functional manually-memory-managed language. Some sort of a Haskell-like monstrosity.
If you prioritize readability over performance, then what you get is a dynamically-typed JIT'ed non-strictly-functional GC'ed (with optional manual memory management) language.