.
to X3D Resources
               

X3D Java Scene Access Interface Library (X3DJSAIL)

               
to Web3D home page

X3D Java Scene Access Interface Library (X3DJSAIL) supports programmers with standards-based X3D Java interfaces and objects, all as open source.

Abstract | Codebase | CLASSPATH and Command Line | Conversions | Design Features | Downloads | Examples | EXI | Javadoc | License | Other Implementations | README | References | Specification Changes | TODO | Utility Methods | Contact


🔖 Abstract to top

X3DJSAIL, the X3D Java Scene Access Interface Library is a set of strongly typed Java application programming interfaces (APIs) providing programmer access to an X3D scene graph. Two open-source Java packages are included that contain X3D SAI interfaces and support the X3D Standards for Java programmers.

Available products include Javadoc documentation, several thousand self-validating Examples, source code, compiled classes build support, run-time jar archives, and draft specification annexes for node interfaces and abstract-node type interfaces.

Goals include making it easy to create an X3D scene graph using Java, while also making it hard to create an incorrect or invalid X3D model.

This library supports multiple uses:


🔖 Codebase Production to top

This work implements the X3D Unified Object Model (X3DUOM) in support of complete current and emerging X3D Specification capabilities.

TODO under active development: the X3DJSAIL library-creation files currently require multiple external assets and local configuration. Ongoing work will combine these and other resources into an independently buildable project.


🔖 CLASSPATH and Command Line to top

Command line invocation is feasible through use of the org.x3d.jsail.CommandLine class.

Note that model validation is always performed as part of X3DJSAIL operations.


🔖 Conversions to top

X3D scene graph run-time capabilities are interoperable and functionally equivalent for all X3D file encodings and programming-language bindings. Current and planned support is shown in the following table.

File load and import
X3D XML encoding .x3d (implemented using DOM) X3D ClassicVRML encoding .x3dv (TODO) X3D VRML97 encoding .wrl (TODO)
Efficient XML Interchange (EXI) compressed .exi
(implemented with EXIficient; OpenEXI to follow)
GZIP-compressed .x3d (implemented) ZIP-compressed .x3d (implemented)
X3D JSON encoding .json (TODO) .stl and .ply geometry import (TODO)
File/stream Export serialization
X3D XML .x3d encoding (implemented) ClassicVRML .x3dv encoding (implemented) VRML97 .wrl encoding (implemented)
X3DOM scene page X3dom.xhtml (implemented) X_ITE scene page (formerly Cobweb) X_ITE.html (implemented) X3D  .json encoding (implemented)
Efficient XML Interchange (EXI) .exi
(implemented with EXIficient, OpenEXI to follow)
GZIP .gz (implemented) ZIP .zip (implemented)
X3D Compressed Binary Encoding (CBE) .x3db (TODO) Efficient X3D Encoding .x3de (proposed) X3DJSAIL .java source using X3dToJava.xslt (implemented)
X3D canonical form (implemented as default output format) XML Canonicalization (C14N) (TODO) Shape Resource Container (SRC) .src
(no longer planned for X3D v4)
XML Signature for authentication (TODO) XML Encryption for confidential access and privacy (TODO)

Conversion capabilities continue to grow through multiple exporters and importers.

🔖 Blender

Blender is an open-source 3D authoring tool that includes support for X3D import/export (FreeBSD Linux, MacOSX, Windows) (download).

🔖 MeshLab

MeshLab is an open source, portable, and extensible system for the processing and editing of unstructured 3D triangular meshes (Win64, MacOS, Linux Snap) (download).


🔖 Design Features to top

Success metric: the X3D information model is sufficient to support round-trip conversion of any X3D scene from one encoding to another.

The following software-architecture principles have influenced codebase design.


🔖 Downloads to top

X3DJSAIL can be used in any Java project by including one of the following jar files in the application CLASSPATH.

X3DJSAIL.3.3.full.jar can be unzipped to create a complete local copy of all source, binaries, documentation and example programs. It is also executable on the Command Line.

X3DJSAIL.3.3.classes.jar can be used by developers for server-side usage or integration in other applications. Further CLASSPATH modifications may be needed to to use it. For full operation, third-party dependency jars found in the lib subdirectory must also be in the application CLASSPATH. Examples are shown under Command Line use.


🔖 Examples to top

Initial codebase development is building out features in a single example "smoke test" program for comprehensive testing.

Long-term plans include creation (and possibly autogeneration) of a unit-test suite to always ensure that capabilities and features remain working.


🔖 Efficient XML Interchange (EXI) Compression to top

Efficient XML Interchange (EXI) is a World Wide Web Consortium (W3C) Recommendation that provides compact, high-performance compression for XML and JSON files.

 

The OpenEXI introduction whitepaper describes how EXI design produces documents that decompress directly into computer memory, with no parsing of decompressed data required.

EXI file compaction and computational performance have been demonstrated to be superior to a variety other compression schemes including gzip, zip, BSON, CBOR, and other compressed file formats.

EXI References


🔖 Other X3D Java Implementations to top


🔖 References and Relevant X3D Specifications to top


🔖 Specification Changes under Consideration to top


🔖 TODO Planned Work to top

TODO: X3dToJava.xslt stylesheet improvements

TODO: X3D Unified Object Model (X3DUOM) issues to top

TODO: X3DJSAIL source code and capability improvements to top


🔖 Utility Methods and Functionality to top

Utility methods provide additional helpful functionality to X3D Java programmers, going beyond the minimalist required interfaces in the X3D Java SAI specification.

Warning: note that, by default, creating or decompressing files may overwrite prior versions. See ConfigurationProperties.isOverwriteExistingFiles() and setOverwriteExistingFiles(newValue) to modify overwrite permissions.


🔖 Contact to top

Updated 23 September 2018.
X3D Java Scene Access Interface Library (X3DJSAIL) deployed release version is available online at
http://www.web3d.org/specifications/java/X3DJSAIL.html
Test programs, results and autogeneration build scripts are available in Sourceforge version control.
Questions, suggestions, additions and comments regarding the X3D Java SAI Library (X3DJSAIL) and X3D Unified Object Model (X3DUOM) design are welcome. Please send them to Don Brutzman (brutzman at nps.edu), John Carlson (yottzumm at gmail.com), and Roy Walmsley (roy.walmsley at ntlworld.com).