Java is a great language. I learned a lot about design patterns and OOP while professionally working with it. Things I did not understand while playing around with C++, which contains so much bloat. Yes, Java can be efficient and it can perform great, but the standard SDKs and JREs are not supposed to perform great on a rather lightweight platform as we have with the Pi (no pun intended).
Java is – to a certain extend – a beautiful OOP language, but it is not the holy grail of computer languages. When it was designed and implemented some shortcuts have been taken. There's primitive data types that are not classes themselves. Convenient if you look at it from a C perspective, but not a pure OOP approach.
Smalltalk, which served as role model for Java, did not make such compromises. Everything in ST is a class, can be extended at runtime, there are no private classes or variables.
Objective-C shares a lot of the OOP purity with Smalltalk and yet it is a fully K&R compatible breed of C. NeXT took some great design decisions with NeXTStep, the grandfather of Mac OS X and iOS and I'm glad it survived.
I therefore don't comply to SN's aversion to languages that don't compile to machine code. Technically every programming language somehow translates to machine code, they just have different approaches.
I'm glad the Foundation chose to go with Python as 'official' language. It usually is not compiled to machine code (but it can), but the Python devs take pride in designing a rather pure OOP language, not sharing the bloat mentality of others who for ages have been dragging all the old APIs and language features with them for years for compatibility's sake.
Python is good for teaching and learning. It may not be that good in teaching low level programming and concepts. That's the domain of C and Assembler and I can hear (and understand) the critics, that say that all the higher languages have too many abstractions from hardware and therefore make it hard to use graduates as developers in mission critical software, let's say for rockets, satellites, airplanes, cars, … But Python is a good starting point for devs.
Java is widely used, but not so powerful per line of code as Python or Ruby and it's rather hard to teach Java to newcomers, having to introduce lines of code that are necessary to get your program compiled, but are rather unnecessary to learn about programming. The best IDEs like Netbeans and Eclipse are very powerful, but hungry for ressources, especially RAM.
I don't think it's necessary for the Pi to be a good host for Java development. There's better alternatives to teach different programming and language concepts and no, you don't have to bring everything under the dictate of the market. The Pi's aim is to make people fitter, not to create another generation of bots that know nothing of what happens under the hood.