How does Java 3D compete with OpenGL when it also depends on it?

Bill Day

As you mention, some implementations of Java 3D do in fact sit on top of underlying OpenGL implementations. (For details, see the related FAQ entry on platforms supporting Java 3D.

The reason it makes sense in some cases to layer Java 3D on top of OpenGL is that Java 3D and OpenGL are optimized for different types of programming. OpenGL is designed for lower level code and programmers that need to tweak every possible bit of performance out of their software and hardware; Java 3D is optimized for higher level, object-oriented programming and ease of use. As a developer, you should look carefully at what you need to do and the programming model and tools you would like to use before determining which approach to take.