how come I haven't seen any good performing games in Java?... how come big software houses are not using it to write their non-casual games?
For the same reason you don't see them writing games in C#, Visual Basic, BlitzMax and a host of other languages which are perfectly viable for game development. Because they have vast quantities of code written in C++ and they don't want the expense ( financial as well as bugs ) of rewriting it all in another language.
I can't speak for java, but in my somewhat limited testing , c# almost always beats b3d/b+ in a big way. Haven't bothered testing with blitzmax.
In what little testing I've done, I've found C# a little bit faster than BlitzMax, but not enough to care about if you prefer to use BlitzMax, as I do. I'd probably wipe out the performance difference with my mediocre C# programming skills.