Well… my pretty much unoptimized engine rendering outdoor terrain is doing around 500k triangles per frame with fairly complex multi-texture fragment shaders (dynamic lighting, multiple texture scales, fog, etc). This is 500k triangles actually sent to the graphics card. i.e., after culling (in fact, very little culling happens right now, which is why I’m sending so many triangles).
I’m getting 35-40 frames/second on a dual 2GHz Mac G5 with an ATI Radeon 9700.
This is using LWJGL, so it isn’t directly comparable to JOGL, but it should be similar since both are thin interfaces on native OpenGL calls.
The things you do to get high performance rendering in C/C++ with OpenGL or DirectX are pretty much the same things you do in Java with LWJGL or JOGL. Things like using VBOs, display lists, optimized geometry like triangle strips, minimizing OpenGL state changes, etc. are far more important than whether the driving code is in C++ or in Java.