Given by Lukasz Beca at Tango Group Internal Technology Seminars on Spring 99. Foils prepared May 19 99
Outside Index
Summary of Material
Collaborative computing |
JSDT background |
JSDT functionality, components and architecture |
JSDT basic concepts |
TANGO vs JSDT |
JSDT distribution |
Outside Index Summary of Material
Lukasz Beca |
NPAC, Syracuse University |
Collaborative computing |
JSDT background |
JSDT functionality, components and architecture |
JSDT basic concepts |
TANGO vs JSDT |
JSDT distribution |
Application Sharing |
Multi-User Application Toolkits |
Interactive Desktop Conferencing |
Distributed Presentations over the Net |
People Objects |
Awareness |
Virtual Worlds |
Workflow |
Computer-Augmented Meeting Rooms |
Group Decision Support System |
JDK1.1 event model
|
ITU-T Recommendation T.122
|
RMI
|
Generic framework for creating synchronous collaboration applications |
Support for interactive, collaborative applications |
Abstraction of session |
Full-duplex multipoint communication among arbitrary number of connected applications |
Multicast message communications |
Sequenced messages |
Token-based distributed synchronization mechanism |
Shared byte arrays |
Common interface for general multiparty communication; possibly implemented using various technologies |
Registry, stores information about:
|
JSDT server application
|
JSDT application
|
Host A |
Host B |
Registry |
JSDT Server |
JSDT Application |
Communication with other applications |
Naming Services |
Naming Services |
Registry |
Client |
Session |
Channel |
Data |
ByteArray |
Token |
Manageable Object |
Manager |
Listener and Event |
Sessions: |
jsdt://scarecrow.npac.syr.edu:3355/socket/Session/chatSession |
jsdt://scarecrow.npac.syr.edu:3355/socket/Session/audioSession |
jsdt://scarecrow.npac.syr.edu:3356/socket/Session/controlSession |
Clients: |
jsdt://scarecrow.npac.syr.edu:4477/socket/Client/FrankClient |
jsdt://scarecrow.npac.syr.edu:4488/socket/Client/SteveClient |
Registry |
Storage of information about sessions and clients |
Must be installed on the host where JSDT servers run |
Uses default port to communicate with JSDT applications |
Can be started separately or from the JSDT server
|
Various implementations
|
FrankClient1 |
FrankClient2 |
FrankClient3 |
Application |
Part of a JSDT application |
Participant in an instance of multiparty communications |
Related Clients can transfer data in point-to-point or multipoint fashion |
Used for authentication, necessary for interaction with Manager objects |
Object must implement Client interface to become JSDT Client |
FrankClient1 |
Application A |
SteveClient2 |
Application B |
chatSession |
SteveClient1 |
FrankClient3 |
FrankClient2 |
Collection of related Clients which can exchange data via defined communications paths |
Session maintains the state that describes Clients participating in Session and associated communication paths |
Interacts with Session Manager - object that implements defined session management policy |
JSDT application can have multiple Client objects associated with the same Session object |
Creating a Session
|
Joining a Session
|
Leaving a Session
|
FrankClient1 |
Application A |
SteveClient2 |
Application B |
chatSession |
FrankClient2 |
textChannel |
SteveClient1 |
Specific instance of a communication path between two or more Clients within a given Session |
Channels are created within given Session
|
Joining modes
|
All Clients connected to given channel will receive Data objects sent on that Channel |
Any Client that possesses an object reference to a Channel can send Data objects on the given Channel |
Channel can be used to:
|
Channel Consumer - Client that registered its interest in receiving Data sent over given Channel, used for asynchronous data receive |
Synchronous receive
|
Client name: Steve |
Channel: textChannel |
Priority: Channel.TOP_PRIORITY |
Length value: 40 |
Array of bytes: |
Data Object |
Discrete unit of data that is sent by a Client over a Channel to all of the Clients which currently registered an interest in receiving data on the given Channel |
Any type of object can be sent using Java serialization capabilities |
Sending methods
|
Sequencing of Data sent from one sender on one Channel at one priority is maintained identically at all receivers |
FrankClient2 |
PeterClient1 |
AnnClient2 |
chatSession |
textByteArray |
Object containing data that is permanently available to Clients within a Session |
Global data can be written to a ByteArray object by a Client and new value is immediately available to be read by other Clients |
ByteArray objects are created within given Session |
ByteArray can be used to:
|
Arbitrary objects can be stored in ByteArray using Java serialization capabilities |
FrankClient2 |
SteveClient1 |
AnnClient2 |
whiteboardSession |
drawingToken |
Synchronization object that provides a unique distributed atomic operations |
Can be used to implement various application-level synchronization mechanisms |
Provide means to implement exclusive access |
Token objects are created within given Session |
Token can be used to:
|
Token states
|
JSDT Manageable Objects
|
Manager object can be associated to control the operations |
Manageable objects can be used to:
|
Sequence diagram for session join operation |
Client |
Session |
SessionManager |
join |
authenticate |
sessionRequest |
Object that encapsulates some management policy for a Manageable object |
Only one Manager can be associated with a managed object |
Access to Session, ByteArray, Channel or Token can be controlled by assigning a Manager to it at creation time |
Authentication takes place when:
|
Listener - object that has registered its interest in being notified about changes in state of some other given JSDT object |
Session Listener receives notifications about
|
Channel Listener receives notifications about operations on Channel: join, leave, invite, expel, add consumer, remove consumer |
ByteArray Listener receives notifications about operations on ByteArray: join, leave, invite, expel, change value |
Token Listener receives notifications about operations on Token: join, leave, give, request, grab, release, invite, expel |
Client Listener receives notifications about operations on Client: ByteArray/Channel/Session/Token invite and expel |
Mechanisms + policy implementation |
Session model:
|
No shared variables |
Synchronization and floor control: master status |
TCP/IP sockets |
Pure mechanisms, no policy implemented |
Session model:
|
Shared variables available |
Synchronization and floor control: tokens |
Support for various protocols |
Support for Java applets, Java Script and arbitrary standalone applications |
Manager built into the system, it is enough to implement the application |
Registry distributed and replicated |
Bottom line: Complete collaboration system with possibility of adding new components |
Support for Java applets and applications |
Session management, server and applications must be implemented |
Registry centralized |
Bottom line: Framework for creating various types of collaboration systems |
Version 1.4, Generic Installation - $99.00 |
http://www.sun.com/software/jsdt/index.html |
Evaluation version available with restrictions:
|
For LRMP implementation additional classes necessary: ftp://ftp.inria.fr/INRIA/Actions/webcanal |
Java Shared Toolkit User Guide by Rich Burridge, Sun Microsystems, Inc. |
ITU-T Recommendation T.122 - Multipoint Communication Service for Audiographics and Audiovisual Conferencing Service Definition |
http://www.sun.com/software/jsdt/index.html |
http://tango.npac.syr.edu/tango |