Java 3D est une interface de programmation (Application Programming Interface ou API) pour la plateforme Java visant la synthèse d'image 3D basée sur les graphes de scène. Cet API fait appel soit aux fonctions de OpenGL ou Direct3D.
Depuis sa version 1.2, Java 3D est développé sous l'organisation du Java Community Process. De plus, depuis sa version 1.4 (2007), sa spécification est JSR 926 et la version courante est 1.5.1 (juin 2007). Java 3D ne fait pas partie de JDK 6 (JRE et outils de développement de Java version 6), mais on prévoit que ce sera le cas dans une version future.
Comparé aux autres solutions pour la synthèse d'image 3D, Java 3D n'est pas seulement un wrapper pour l'API, mais une interface qui englobe la programmation graphique comme orientée objet.
Une image est composée avec un graphe de scène, qui est une représentation vectorielle des images 3D à être affichées. Ce graphe de scène est structuré en arbre, qui contient les informations nécessaires à l'affichage. On peut s'imaginer un graphe de scène comme un arbre inversé ayant comme racine un nœud (node) nommé Locale qui est relié par une seule série de liens à tout autre nœud de l'arborescence.
Il est possible de créer des graphes de scènes illégaux. Cela a lieu lorsque le graphe ne respecte pas les conditions d'un graphe acyclique orienté. Ces graphes peuvent être compilés, mais provoquent une exception lors d'un rendu.
Les packages inclus dans Java 3D sont javax.media.j3d et javax.vecmath. Les sous-projets du projet Java 3D sont j3d-contrib-utils, j3d-core, j3d-core-utils, j3d-examples, j3d-incubator, j3d-optional-utils, j3d-vrml97, j3d-webstart, j3dfly, skinandbones, vecmath et vecmath-test.
Pour le langage Java uniquement :
Usage général :
Jeux :
Visualisation :