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 its 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 its 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 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