>>1
Are you really surprised? Java is restricted seeples + GC. It's the most inexpressive high level language in existence. You'd have to be really incompetent to not get good performance with that.
Java cannot be faster than Haskell because they are languages. What you meant is: some code produced by some implementations of Java (compiler + VM + libraries) is faster than some code that does similar things written in Haskell and compiled with some implementations of Haskell, on some particular input data.