Java 3D is a
scene graph-based
3D application programming interface
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software Interface (computing), interface, offering a service to other pieces of software. A document or standard that des ...
(API) for the
Java platform
Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms fr ...
. It runs on top of either
OpenGL
OpenGL (Open Graphics Library) is a Language-independent specification, cross-language, cross-platform application programming interface (API) for rendering 2D computer graphics, 2D and 3D computer graphics, 3D vector graphics. The API is typic ...
or
Direct3D
Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three-dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware ...
until version 1.6.0, which runs on top of
Java OpenGL
Java OpenGL (JOGL) is a wrapper library that allows OpenGL to be used in the Java programming language. It was originally developed by Kenneth Bradley Russell and Christopher John Kline, and was further developed by the Game Technology Group at Su ...
(JOGL). Since version 1.2, Java 3D has been developed under the
Java Community Process
The Java Community Process (JCP), established in 1998, is a formal mechanism that enables interested parties to develop standard technical specifications for Java technology. Becoming a member of the JCP requires solid knowledge of the Java program ...
. A Java 3D scene graph is a
directed acyclic graph
In mathematics, particularly graph theory, and computer science, a directed acyclic graph (DAG) is a directed graph with no directed cycles. That is, it consists of vertices and edges (also called ''arcs''), with each edge directed from one ...
(DAG).
Compared to other solutions, Java 3D is not only a
wrapper around these graphics APIs, but an interface that encapsulates the graphics programming using a true
object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
approach. Here a scene is constructed using a
scene graph that is a representation of the objects that have to be shown. This scene graph is structured as a tree containing several elements that are necessary to display the objects. Additionally, Java 3D offers extensive
spatialized sound
Spatial music is composed music that intentionally exploits sound localization. Though present in Western music from biblical times in the form of the antiphon, as a component specific to new musical techniques the concept of spatial music (''Raumm ...
support.
Java 3D and its documentation are available for download separately. They are not part of the
Java Development Kit
The Java Development Kit (JDK) is a distribution of Java technology by Oracle Corporation. It implements the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS) and provides the Standard Edition (SE) of the Java ...
(JDK).
History
Intel
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California, and Delaware General Corporation Law, incorporated in Delaware. Intel designs, manufactures, and sells computer compo ...
,
Silicon Graphics
Silicon Graphics, Inc. (stylized as SiliconGraphics before 1999, later rebranded SGI, historically known as Silicon Graphics Computer Systems or SGCS) was an American high-performance computing manufacturer, producing computer hardware and soft ...
,
Apple
An apple is a round, edible fruit produced by an apple tree (''Malus'' spp.). Fruit trees of the orchard or domestic apple (''Malus domestica''), the most widely grown in the genus, are agriculture, cultivated worldwide. The tree originated ...
, and
Sun
The Sun is the star at the centre of the Solar System. It is a massive, nearly perfect sphere of hot plasma, heated to incandescence by nuclear fusion reactions in its core, radiating the energy from its surface mainly as visible light a ...
all had
retained mode scene graph APIs under development in 1996. Since they all wanted to make a Java version, they decided to collaborate in making it. That project became Java 3D. Development was underway already in 1997. A public beta version was released in March 1998. The first version was released in December 1998. From mid-2003 through summer 2004, the development of Java 3D was discontinued. In the summer of 2004, Java 3D was released as a community source project, and
Sun
The Sun is the star at the centre of the Solar System. It is a massive, nearly perfect sphere of hot plasma, heated to incandescence by nuclear fusion reactions in its core, radiating the energy from its surface mainly as visible light a ...
and volunteers have since been continuing its development.
On January 29, 2008, it was announced that improvements to Java 3D would be put on hold to produce a 3D scene graph for
JavaFX JavaFX with 3D support was eventually released with Java 8. The JavaFX 3D graphics functionality has more or less come to supersede Java 3D.
Since February 28, 2008, the entire Java 3D source code is released under the
GPL version 2 license with
GPL linking exception
A GPL linking exception modifies the GNU General Public License (GPL) in a way that enables software projects which provide library code to be " linked to" the programs that use them, without applying the full terms of the GPL to the using program. ...
.
Since February 10, 2012, Java 3D uses
JOGL 2.0 for its hardware accelerated OpenGL rendering. The port was initiated by Julien Gouesse.
Features

*Multithreaded
scene graph structure
*
Cross-platform
Within computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several Computing platform, computing platforms. Some ...
*Generic
real-time API, usable for both visualization and gaming
*Support for
retained, compiled-retained, and
immediate mode rendering
*Includes hardware-accelerated
JOGL,
OpenGL
OpenGL (Open Graphics Library) is a Language-independent specification, cross-language, cross-platform application programming interface (API) for rendering 2D computer graphics, 2D and 3D computer graphics, 3D vector graphics. The API is typic ...
, and
Direct3D
Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three-dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware ...
renderers (depending on platform)
*Sophisticated virtual-reality-based view model with support for stereoscopic rendering and complex multi-display configurations
*Native support for
head-mounted display
A head-mounted display (HMD) is a display device, worn on the head or as part of a helmet (see helmet-mounted display for aviation applications), that has a small display optic in front of one (monocular HMD) or each eye (binocular vision, bi ...
*
CAVE
Caves or caverns are natural voids under the Earth's Planetary surface, surface. Caves often form by the weathering of rock and often extend deep underground. Exogene caves are smaller openings that extend a relatively short distance undergrou ...
(multiple screen projectors)
*
3D spatial sound
*Programmable shaders, supporting both
GLSL
OpenGL Shading Language (GLSL) is a high-level shading language with a syntax based on the C programming language. It was created by the OpenGL ARB (OpenGL Architecture Review Board) to give developers more direct control of the graphics pipe ...
and
CG
*
Stencil buffer
A stencil buffer is an extra data buffer, in addition to the ''color buffer'' and '' Z-buffer'', found on modern graphics hardware. The buffer is per pixel and works on integer values, usually with a depth of one byte per pixel. The Z-buffe ...
*Importers for most mainstream formats, like
3DS,
OBJ,
VRML,
X3D,
NWN, and
FLT
Competing technologies
Java 3D is not the only high-level API option to render 3D in Java. In part due to the pause in development during 2003 and 2004, several competing Java scene graph technologies emerged:
General purpose:
*
Ardor3D
*
JavaFX
Gaming:
*
jMonkeyEngine
*Espresso3D
Visualization:
Jreality
In addition to those, many other C or C++ scene graph APIs offer Java support through
JNI.
At a lower level, the
JOGL (JSR 231) OpenGL bindings for Java are a popular alternative to scene graph APIs such as Java 3D.
LWJGL is another such binding.
See also
*
Project Looking Glass (Experimental 3D Desktop using Java 3D)
*
Open Wonderland (Virtual workspace environment using Java 3D and Project Darkstar)
References
External links
Harvey presents the current state of Java3D "I’m not Dead!" at SIGGRAPH 2013Java 3D est de retour (Java 3D is back): Java3D preview setup introductionCurrent releases (Java 3D 1.7)Previous official sitean
JSR 926(Java 3D 1.5)
JSR 912(Java 3D 1.3)
Previous foruman
Wikifor Java 3D - Places for collaboration; includes lists of books and users, FAQ, and knowledge base
java3d.org Tutorial, examples and information
Lecture- from Siggraph for beginners
*Game Programmin
in Java 3D (chapters as pdf-files and sourcecode)
Plugin for Eclipse hosted by SourceForgeExample visualisation applets using Java 3D- A 3D anatomical structure explorer with embedded 2D section made by Guangjie Feng
{{DEFAULTSORT:Java 3d
3D graphics software
3D scenegraph APIs
Cross-platform software
Java APIs
3D
1998 software