Java3D .... performance.....
If you need the fastest spinning cube in the world, Java3D is not your friend. If you do things like
this, Java3D also won't give you maximum performance.
Java3D is highly biased due it's goal of being scalable. The more complex it grows, the less the bias is noticable. So if you have a 'full' environment with terrain engine, hierarchical objects, animations, collision detection, lighting, LOD, picking, sorting, many textures, transparencies here and there ... the more Java3Ds mechanisms get hold.
'Doing it right' in Java3D is not that difficult, bc. a scenegraph is a well understood architecture. Of course there are KO things that shouldn't be done or things that are slow regardless how you do it.
At the end of the day, Java3D isn't a top-performer. It's a generic, well-behaved, multipurpose 3D engine without cutting-edge features. Stable (well....ok), reliable, scalable.
This might not sound highly attractive in the first place, bc. gamers always tend to look for the latest stuff first, but I feel that there are a lot of things that can be done before reaching Java3Ds limits.