Java Shared Data Toolkit (JSDT)

Provides an abstract model of the network, designed specifically to support collaborative applications

Provides different modes of transportation

Pure Java, and hence 100% portable

Not specifically designed for 3D simulations and virtual environments
not tuned for high performance or low latency

Java Media Framework.

Allows you to manage audio and video streams within a Java program

Issue : most of the "real" work is done in native code (not portable).

Although not specifically designed for 3D simulations and virtual environments, JSDT is part of the Java Media APIs developed by Javasoft and provides real-time sharing of applets and/or applications. JSDT provides many facilities such as tokens that can be used for coordinating shared objects. It also provides different modes of transportation including a reliable socket mode, RMI mode which uses Remote Method Invocation, and a multicast mode that makes use of the Lightweight Reliable Multicast Protocol (LRMP) and is useful for shared application with a large number of participants.

Java and the Network...

Java and it’s associated media streaming and networking packages represent an alternative basis for developing collaborative virtual environments. The core class libraries provide socket and distributed object (RMI) models of communication. In addition, there are a number of standard Java extensions that provide specialised data distribution mechanisms. Two extensions are especially relevant to the task of building collaborative virtual environments: the Java Shared Data Toolkit and the Java Media Framework.

The Java Shared Data Toolkit (JSDT) provides an abstract model of the network, designed specifically to support collaborative applications.

"The JavaTM Shared Data Toolkit software is a development library that allows developers to easily add collaboration features to applets and applications written in the Java programming language."

"This is a toolkit defined to support highly interactive, collaborative applications written in the Java programming language."

The fundamental abstraction used in the JSDT is that of a shared byte buffer. These buffers are un-typed blocks of data, but with the use of Java object serialisation can be used to replicate complete graphs of objects. Buffer replication can be performed over a range of different network transports, including a reliable multicast system as well as RMI, sockets and even http. A great strength of JSDT is that it is pure Java, and hence 100% portable. The main limitation is that it is not tuned for high performance or low latency, so it’s suitability for building collaborative VEs is an open question. If object serialisation is used then JSDT will also have problems inter-operating with non-Java clients.

The second relevant extension is the Java Media Framework.

"The Java Media Framework (JMF) is an application programming interface (API) for incorporating time-based media into Java applications and applets."
"The Java Media Framework API specifies a unified architecture, messaging protocol and programming interface for playback, capture and conferencing of compressed streaming and stored timed-media including audio, video, and MIDI across all Java Compatible platforms."

Essentially, JMF allows you to manage audio and video streams within a Java program. The crucial point about JMF is that most of the "real" work is done in native code. Native platform codecs are used throughout which means that performance is excellent, but compatibility is harder to achieve.
The combination of the core Java networking classes, JSDT, JMF, a portable execution format (the Java class file) and automatic platform neutral serialisation mechanism make Java a very attractive base on which to build collaborative VEs. As with Java3D the principle concern is the runtime performance of Java. However, experiments conducted by the authors with early implementations of Java indicate that network bandwidth is a more common cause of performance bottlenecks : even a simple interpreted JVM can saturate a 155Mbit ATM network. Interoperability problems not-withstanding, Java should be considered an excellent environment for networking applications.

Texte extract from a non published paper by Sam Taylor and Hugh Fisher