A) the game is made in java (not known for graphical prowess)
A terrible misconception.
I don't know about that... I've never played a java game that actually managed good 3d graphics with decent FPS... Minecraft and Wurm are both poor performers for instance.
I would say it is pretty well known that heavy graphical games are not best on a java platform. Stafarer does very well on it given the 2d engine..
:edit: Please ignore any duplication with Alex's reply above - this post was authored simultaneously.
Why do you consider Minecraft & Wurm to be examples of poor performance?
Yes, they're both graphically very primitive, neither utilizing many of the 'fancy' gpu features seen in modern titles.
However poor visuals shouldn't be equated to poor language/compiler performance. The vast majority of the eye candy seen in modern AAA games is handled predominantly by the GPU, as such the language/compiler used for instructing the CPU is of nominal importance.
As for Starfarer, I guess you realize that for rendering it uses lwjgl; a lightweight wrapper for opengl - a native code rendering library.
The most demanding logic the Java code will have to deal with is probably collision detection, and without knowing whether the game uses a bespoke or off-the-shelf library, I wouldn't be surprised if this too were delegated to native code.
Ultimately it's about using the right tool for the right job.
You could write an entire game in assembly.... and when performance was paramount most developers did!
However today it's the performance of the programmer (lines per hour!) not the code (instructions per second) that matters most.
Traditional AAA games typically execute the core engine in native code (C/C++) and the game logic in various bespoke managed high level scripting languages.
It's a small step to do what Alex (and others) have done to write the game in a managed language (such as Java/C#), and then delegate the performance critical sections to native code.
Given the geometric growth in development time for AAA games I strongly suspect we'll see this become the norm when the next generation of consoles are released.
On a side-note managed higher level languages such as Java, C# and others make programming for multiple cores significantly easier - a common failing found in most current-generation AAA titles - Crysis included!