javaapijogljava-3d

Java - is there any multiplatform 3D API?


I just want to ask, I am new to Java and I would like to make some real-3D and multiplatform application. From beggining, I only liked java becouse of its multiplatformness. But when it comes to 3D, I tried first JOGL. OK, it has somehow connect to OpenGL drivers, so it cannot be multiplaform, I though. But, I also thought, why there is not any true multiplatform (therefore JVM only dependant) version of 3D API. Than I found Java3D. First, I thought it is the thing I am looking for. But than I found out its also dependand on native libraries.

So, is there any 3D API for java, written purelly in Java? And of course, at least little HW accelerated? I don´t see any reason why JVM could not provide HW accelerated function instead of native code libraries. Thanks.

EDIT: Hi. Well, I read your answers, about there cannot be platform independent way of accelerated 3D graphics. But, why not? I mean, JVM is the thing that should make it platform independent, right? All they need to do is embeded native libraries right into JVM. For example, when JVM does all IO with OS, its platform dependent. When Swing wants to draw, JVM HAS to use native code to access for example WinAPI, X System, etc. So, what I really ask is, what is different about it? For example add OpenGL bindings into JVM ? Just the same way it calls other OS routines? There is NO difference in it.


Solution

  • Well, if you want HW acceleration, it is platform dependent! ..and therefore needs bindings with some native libraries, at least drivers.

    Both JOGL (lower level) and Java3D (higher level) are fine choices in my opinion.

    Edit:

    Each platform has its own JVM implementation. It's the JVM that does the binding between your "java code" and the platform's specificities (hardware/drivers). 3D stuff is not packaged in the standard JVM. Both JOGL and Java3D are platform independent in the sense that they will both automatically bind to the platform's respective native lib.