Java 3D
{{Short description|Java 3D graphics API}}
{{Infobox software
| name = Java 3D
| logo =
| screenshot =
| caption =
| developer = Sun Microsystems & [https://jogamp.org/ JogAmp Community]
| released =
| latest_release_version = 1.7.0
| latest_release_date = {{Start date and age|2020|01|25}}
| latest_preview_version = -
| latest_preview_date = -
| operating_system = Cross-platform
| genre = 3D computer graphics software (library/API)
| license = GPL version 2+GPL linking exception
| website = [http://forum.jogamp.org/java3d-f3728156.html JogAmp's Java3D Continuation forum]
}}
Java 3D is a scene graph-based 3D application programming interface (API) for the Java platform. It runs on top of either OpenGL or Direct3D until version 1.6.0, which runs on top of Java OpenGL (JOGL). Since version 1.2, Java 3D has been developed under the Java Community Process. A Java 3D scene graph is a directed acyclic graph (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 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 support.
Java 3D and its documentation are available for download separately. They are not part of the Java Development Kit (JDK).
History
Intel, Silicon Graphics, Apple, and Sun 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 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{{cite web
| url= http://www.java.net/node/674071
| title= ANNOUNCEMENT: Java 3D plans
| publisher= Sun Microsystems
| date= 2008-01-29
| access-date= 2011-05-11
| archive-url= https://web.archive.org/web/20120310231138/http://www.java.net/node/674071
| archive-date= 2012-03-10
| url-status= dead
}} JavaFX with 3D support was eventually released with Java 8.{{cite web
| url=http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html
| title= What's New in JDK 8
| publisher= Oracle Corporation
| date= 2014-03-18}} 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.{{cite web
| url= http://forums.java.net/jive/thread.jspa?messageID=261477&tstart=0#261477
| title= ANNOUNCE: GPL open source release
| publisher= Sun Microsystems
| date= 2008-02-28
| accessdate= 2008-02-29
| archive-url= https://web.archive.org/web/20080324111722/http://forums.java.net/jive/thread.jspa?messageID=261477&tstart=0#261477
| archive-date= 2008-03-24
| url-status= dead
}}
Since February 10, 2012, Java 3D uses JOGL 2.0 for its hardware accelerated OpenGL rendering. The port was initiated by Julien Gouesse.{{cite web
| url=http://forum.jogamp.org/Java3D-now-works-with-JOGL-2-0-td3732206.html
| title= Java3D now works with JOGL 2.0
| publisher= Julien Gouesse
| date= 2012-10-02
| accessdate= 2012-10-02}}
Features
File:Java3DStarSystemScreenShot.png
- Multithreaded scene graph structure
- Cross-platform
- Generic real-time API, usable for both visualization and gaming
- Support for retained, compiled-retained, and immediate mode rendering
- Includes hardware-accelerated JOGL, OpenGL, and Direct3D 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
- CAVE (multiple screen projectors)
- 3D spatial sound
- Programmable shaders, supporting both GLSL and CG
- Stencil buffer
- 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:
Gaming:
- jMonkeyEngine
- Espresso3D
Visualization:
- [http://www3.math.tu-berlin.de/jreality/jrealityStatic/index.php 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
{{Portal|Computer programming}}
- Project Looking Glass (Experimental 3D Desktop using Java 3D)
- Open Wonderland (Virtual workspace environment using Java 3D and Project Darkstar)
References
{{Reflist|2}}
External links
- [https://www.youtube.com/watch?v=X3Id2VGR1Ik&t=307 Harvey presents the current state of Java3D "I’m not Dead!" at SIGGRAPH 2013]
- [https://gouessej.wordpress.com/2012/08/01/java-3d-est-de-retour-java-3d-is-back/ Java 3D est de retour (Java 3D is back): Java3D preview setup introduction]
- [https://jogamp.org/deployment/java3d/ Current releases (Java 3D 1.7)]
- [https://web.archive.org/web/20121022074250/http://java3d.java.net/ Previous official site] and [https://web.archive.org/web/20130109170653/http://java3d.java.net/binary-builds.html releases]
- [http://www.jcp.org/en/jsr/detail?id=926 JSR 926] (Java 3D 1.5), [http://www.jcp.org/en/jsr/detail?id=912 JSR 912] (Java 3D 1.3)
- [http://forum.jogamp.org/java3d-f3728156.html Current forum (Java 3D 1.6)]
- [https://web.archive.org/web/20090611150009/http://forums.java.net/jive/forum.jspa?forumID=70 Previous forum] and [https://web.archive.org/web/20051215031051/http://wiki.java.net/bin/view/Javadesktop/Java3D Wiki] for Java 3D - Places for collaboration; includes lists of books and users, FAQ, and knowledge base
- [http://www.java3d.org/ java3d.org]. Tutorial, examples and information
- [https://opengl.j3d.org/tutorials/index.html OpenGL.J3D Java 3D Tutorials]
- [http://www.sdsc.edu/~nadeau/Courses/Siggraph99/ Lecture] - from Siggraph for beginners
- Game Programming [http://fivedots.coe.psu.ac.th/~ad/jg/] {{Webarchive|url=https://web.archive.org/web/20130309004617/http://fivedots.coe.psu.ac.th/%7Ead/jg/ |date=2013-03-09 }}, [http://fivedots.coe.psu.ac.th/~ad/jg2/] {{Webarchive|url=https://web.archive.org/web/20130609154457/http://fivedots.coe.psu.ac.th/~ad/jg2/ |date=2013-06-09 }} in Java 3D (chapters as pdf-files and sourcecode)
- [https://java3d-eclipse.sourceforge.net/ Plugin for Eclipse hosted by SourceForge]
- [http://www.navgen.com/ Example visualisation applets using Java 3D]
- [http://www.emouseatlas.org/emap/home.html EMAP, The e-Mouse Atlas Project] - A 3D anatomical structure explorer with embedded 2D section made by Guangjie Feng
{{Java (software platform)}}
{{Java desktop}}
{{DEFAULTSORT:Java 3d}}